]> asedeno.scripts.mit.edu Git - 1ts-debian.git/blob - zephyr/zwgc/new_memory.h
f10ac9caf154cc9aa0b6d746472591d8f79efa0b
[1ts-debian.git] / zephyr / zwgc / new_memory.h
1 /* This file is part of the Project Athena Zephyr Notification System.
2  * It is one of the source files comprising zwgc, the Zephyr WindowGram
3  * client.
4  *
5  *      Created by:     Marc Horowitz <marc@athena.mit.edu>
6  *
7  *      $Id$
8  *
9  *      Copyright (c) 1989 by the Massachusetts Institute of Technology.
10  *      For copying and distribution information, see the file
11  *      "mit-copyright.h".
12  */
13
14 /* This entire module goes out the window in saber */
15 #if !defined(SABER) && (defined(DEBUG) || defined(DEBUG_MEMORY))
16
17 #ifndef memory_MODULE
18 #define memory_MODULE
19
20 extern char *memory__malloc();           /* PRIVATE */
21 extern char *memory__realloc();          /* PRIVATE */
22 extern char *memory__calloc();           /* PRIVATE */
23 extern void memory__free();              /* PRIVATE */
24
25 #ifdef DEBUG_MEMORY
26
27 #define  CHECK_FIELD_VALUE     0xe5e7e3e9
28
29 typedef struct _memory_block_header {
30     unsigned size;
31     char *creating_module;
32     int line_number_in_creating_module;
33     unsigned int check_field;
34 } memory_block_header;
35
36 #define  memory__size_of_header    (sizeof(struct _memory_block_header))
37
38 #define  memory__get_header(block) \
39   ((struct _memory_block_header *)((block)-memory__size_of_header))
40
41 #define  memory__on_heap_p(block)  \
42   (memory__get_header(block)->check_field==CHECK_FIELD_VALUE)
43
44 #else
45
46 #define  memory__size_of_header     0
47
48 #define  memory__on_heap_p(block)   1
49
50 #endif
51
52 /*
53  *    int string_Length(string s):
54  *        Effects: Returns the number of non-null characters in s.
55  */
56
57 #ifndef memory__PROVIDER
58 #ifdef  DEBUG_MEMORY
59
60 extern char *current_module;
61 extern void set_module();
62
63 #define  malloc(size)               (set_module(__FILE__,__LINE__),\
64                                      memory__malloc(size))
65 #define  realloc(ptr, size)         (set_module(__FILE__,__LINE__),\
66                                      memory__realloc((char *) ptr, size))
67 #define  calloc(nelem, elsize)      (set_module(__FILE__,__LINE__),\
68                                      memory__calloc(nelem, elsize))
69 #define  free(ptr)                  (set_module(__FILE__,__LINE__),\
70                                      memory__free((char *) ptr))
71 #else
72
73 #define  malloc(size)               memory__malloc(size)
74 #define  realloc(ptr, size)         memory__realloc((char *) ptr, size)
75 #define  calloc(nelem, elsize)      memory__calloc(nelem, elsize)
76 #define  free(ptr)                  memory__free((char *) ptr)
77
78 #endif  /* DEBUG_MEMORY */
79
80 #endif  /* memory__PROVIDER */
81
82 #endif  /* memory_MODULE */
83
84 #endif  /* SABER */