source: git/Singular/mmemory.h @ cc94b0a

spielwiese
Last change on this file since cc94b0a was a1601d, checked in by Olaf Bachmann <obachman@…>, 26 years ago
* declared _memcpyW for DO_DEEP_PROFILE git-svn-id: file:///usr/local/Singular/svn/trunk@1031 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 4.1 KB
Line 
1#ifndef MMEMORY_H
2#define MMEMORY_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id: mmemory.h,v 1.5 1998-01-16 12:40:02 obachman Exp $ */
7/*
8* ABSTRACT
9*/
10#include <stdlib.h>
11#include "structs.h"
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17#include "mod2.h"
18 
19#ifdef DO_DEEP_PROFILE
20extern void _memcpyW(void* p1, void* p2, long l);
21#define  memcpyW(p1, p2, l) _memcpyW((void*) p1, (void*) p2, (long) l) 
22#else                                                                   
23#define memcpyW(p1, p2, l)                      \
24do                                              \
25{                                               \
26  long _i = l;                                  \
27  long* _s1 = (long*) p1;                       \
28  const long* _s2 = (long*) p2;                 \
29                                                \
30  for (;;)                                      \
31  {                                             \
32    *_s1 = *_s2;                                \
33    _i--;                                       \
34    if (_i == 0) break;                         \
35    _s1++;                                      \
36    _s2++;                                      \
37  }                                             \
38}                                               \
39while(0)
40#endif
41 
42
43void mmSpecializeBlock( size_t );
44
45int mmMemReal( void );
46int mmMemUsed( void );
47
48#define mstrdup mmStrdup
49/* char * mstrdup(char *s); */
50
51size_t mmSizeL( void* );
52
53#ifdef MM_STAT
54void mmStat(int slot);
55#endif
56#ifndef MDEBUG
57
58void * mmAllocBlock( size_t );
59void * mmAllocBlock0( size_t );
60
61void mmFreeBlock( void*, size_t );
62
63void * mmReallocBlock( void*, size_t, size_t );
64
65void * mmAllocSpecialized( void );
66
67void mmFreeSpecialized( void* );
68
69void * mmAlloc( size_t );
70
71void * mmRealloc( void*, size_t );
72
73void mmFree( void* );
74
75char * mmStrdup( const char* );
76
77#define mmTest(A,B) TRUE
78#define mmTestL(A) TRUE
79#define mmTestP(A,B)
80#define mmTestLP(A)
81#define Free mmFreeBlock
82#define Alloc mmAllocBlock
83#define Alloc0 mmAllocBlock0
84#define ReAlloc mmReallocBlock
85#define FreeL mmFree
86#define AllocL mmAlloc
87
88#else /* MDEBUG */
89
90void * mmDBAllocBlock( size_t, char*, int );
91void * mmDBAllocBlock0( size_t, char*, int );
92
93void mmDBFreeBlock( void*, size_t, char*, int );
94
95void * mmDBReallocBlock( void*, size_t, size_t, char*, int );
96
97void * mmDBAllocSpecialized( char*, int );
98
99void mmDBFreeSpecialized( void*, char*, int );
100
101void * mmDBAlloc( size_t, char*, int );
102
103void * mmDBRealloc( void*, size_t, char*, int );
104
105void mmDBFree( void*, char*, int );
106
107char * mmDBStrdup( const char * s, char *fname, int lineno);
108
109BOOLEAN mmDBTestBlock( const void* adr, const size_t size, const char * fname, const int lineno );
110
111BOOLEAN mmDBTest( const void* adr, const char * fname, const int lineno );
112
113#define mmAllocBlock(size) mmDBAllocBlock(size,__FILE__,__LINE__)
114
115#define mmFreeBlock(adr,size) mmDBFreeBlock(adr,size,__FILE__,__LINE__)
116
117#define mmAllocSpecialized() mmDBAllocSpecialized(__FILE__,__LINE__)
118
119#define mmFreeSpecialized(adr) mmDBFreeSpecialized(adr,__FILE__,__LINE__)
120
121#define mmAlloc(size) mmDBAlloc(size,__FILE__,__LINE__)
122
123#define mmFree(adr) mmDBFree(adr,__FILE__,__LINE__)
124
125#define mmReallocBlock(adr,oldsize,newsize) mmDBReallocBlock(adr,oldsize,newsize,__FILE__,__LINE__)
126
127#define mmStrdup(A) mmDBStrdup(A,__FILE__,__LINE__)
128
129#define mmTest(A,B) mmDBTestBlock(A,B,__FILE__,__LINE__)
130#define mmTestL(A) mmDBTest(A,__FILE__,__LINE__)
131#define mmTestP(A,B) mmDBTestBlock(A,B,__FILE__,__LINE__)
132#define mmTestLP(A) mmDBTest(A,__FILE__,__LINE__)
133#define Alloc(size) mmDBAllocBlock(size,__FILE__,__LINE__)
134#define Alloc0(size) mmDBAllocBlock0(size,__FILE__,__LINE__)
135#define Free(adr,size) mmDBFreeBlock(adr,size,__FILE__,__LINE__)
136#define mmAllocSpecialized() mmDBAllocSpecialized(__FILE__,__LINE__)
137#define mmFreeSpecialized(adr) mmDBFreeSpecialized(adr,__FILE__,__LINE__)
138#define AllocL(size) mmDBAlloc(size,__FILE__,__LINE__)
139#define FreeL(adr) mmDBFree(adr,__FILE__,__LINE__)
140#define ReAlloc(adr,oldsize,newsize) mmDBReallocBlock(adr,oldsize,newsize,__FILE__,__LINE__)
141
142void mmTestList();
143
144#endif /* MDEBUG */
145#ifdef __cplusplus
146}
147#endif
148
149#endif
Note: See TracBrowser for help on using the repository browser.