home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / g77-0.5.15-src.tgz / tar.out / fsf / g77 / f / malloc.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  5KB  |  160 lines

  1. /* malloc.h -- Public #include File (module.h template V1.0)
  2.    Copyright (C) 1995 Free Software Foundation, Inc.
  3.    Contributed by James Craig Burley (burley@gnu.ai.mit.edu).
  4.  
  5. This file is part of GNU Fortran.
  6.  
  7. GNU Fortran is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2, or (at your option)
  10. any later version.
  11.  
  12. GNU Fortran is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with GNU Fortran; see the file COPYING.  If not, write to
  19. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  
  21.    Owning Modules:
  22.       malloc.c
  23.  
  24.    Modifications:
  25. */
  26.  
  27. /* Allow multiple inclusion to work. */
  28.  
  29. #ifndef _H_f_malloc
  30. #define _H_f_malloc
  31.  
  32. /* Simple definitions and enumerations. */
  33.  
  34. typedef enum
  35.   {
  36.     MALLOC_typeKS_,
  37.     MALLOC_typeKSR_,
  38.     MALLOC_typeKP_,
  39.     MALLOC_typeKPR_,
  40.     MALLOC_typeUS_,
  41.     MALLOC_typeUSR_,
  42.     MALLOC_type_
  43.   } mallocType_;
  44.  
  45. /* Typedefs. */
  46.  
  47. typedef struct _malloc_area_ *mallocArea_;
  48. typedef struct _malloc_pool_ *mallocPool;
  49. typedef unsigned long int mallocSize;
  50. #define mallocSize_f "l"
  51.  
  52. /* Include files needed by this one. */
  53.  
  54.  
  55. /* Structure definitions. */
  56.  
  57. struct _malloc_area_
  58.   {
  59.     mallocArea_ next;
  60.     mallocArea_ previous;
  61.     void *where;
  62.     mallocSize size;
  63.     mallocType_ type;
  64.     char name[1];
  65.   };
  66.  
  67. struct _malloc_pool_
  68.   {
  69.     mallocPool next;
  70.     mallocPool previous;
  71.     mallocPool eldest;
  72.     mallocPool youngest;
  73.     mallocArea_ first;
  74.     mallocArea_ last;
  75.     mallocSize allocated;
  76.     mallocSize freed;
  77.     mallocSize old_sizes;
  78.     mallocSize new_sizes;
  79.     unsigned long allocations;
  80.     unsigned long frees;
  81.     unsigned long resizes;
  82.     unsigned long uses;
  83.     char name[1];
  84.   };
  85.  
  86. struct _malloc_root_
  87.   {
  88.     struct _malloc_pool_ malloc_pool_image_;
  89.     char name[6];
  90.   };
  91.  
  92. /* Global objects accessed by users of this module. */
  93.  
  94. extern struct _malloc_root_ malloc_root_;
  95.  
  96. /* Declare functions with prototypes. */
  97.  
  98. void malloc_display_ (mallocArea_ a);
  99. mallocArea_ malloc_find_inpool_ (mallocPool pool, void *ptr);
  100. void malloc_init (void);
  101. void malloc_kill_inpool_ (mallocPool pool, mallocType_ type, void *ptr,
  102.               mallocSize size);
  103. void *malloc_new_ (mallocSize size);
  104. void *malloc_new_inpool_ (mallocPool pool, mallocType_ type, char *name,
  105.               mallocSize size);
  106. void *malloc_new_zinpool_ (mallocPool pool, mallocType_ type, char *name,
  107.                mallocSize size, int z);
  108. void malloc_pool_display (mallocPool p);
  109. char malloc_pool_find_ (mallocPool p, mallocPool parent);
  110. void malloc_pool_kill (mallocPool p);
  111. mallocPool malloc_pool_new (char *name, mallocPool parent, unsigned long chunks);
  112. mallocPool malloc_pool_use (mallocPool p);
  113. void *malloc_resize_ (void *ptr, mallocSize new_size);
  114. void *malloc_resize_inpool_ (mallocPool pool, mallocType_ type, void *ptr,
  115.                  mallocSize new_size, mallocSize old_size);
  116.  
  117. /* Define macros. */
  118.  
  119. #define malloc_new_ks(pool,name,size) \
  120.       malloc_new_inpool_(pool,MALLOC_typeKS_,name,size)
  121. #define malloc_new_ksr(pool,name,size) \
  122.       malloc_new_inpool_(pool,MALLOC_typeKSR_,name,size)
  123. #define malloc_new_kp(pool,name,size) \
  124.       malloc_new_inpool_(pool,MALLOC_typeKP_,name,size)
  125. #define malloc_new_kpr(pool,name,size) \
  126.       malloc_new_inpool_(pool,MALLOC_typeKPR_,name,size)
  127. #define malloc_new_us(pool,name,size) \
  128.       malloc_new_inpool_(pool,MALLOC_typeUS_,name,size)
  129. #define malloc_new_usr(pool,name,size) \
  130.       malloc_new_inpool_(pool,MALLOC_typeUSR_,name,size)
  131. #define malloc_new_zks(pool,name,size,z) \
  132.       malloc_new_zinpool_(pool,MALLOC_typeKS_,name,size,z)
  133. #define malloc_new_zksr(pool,name,size,z) \
  134.       malloc_new_zinpool_(pool,MALLOC_typeKSR_,name,size,z)
  135. #define malloc_new_zkp(pool,name,size,z) \
  136.       malloc_new_zinpool_(pool,MALLOC_typeKP_,name,size,z)
  137. #define malloc_new_zkpr(pool,name,size,z) \
  138.       malloc_new_zinpool_(pool,MALLOC_typeKPR_,name,size,z)
  139. #define malloc_new_zus(pool,name,size,z) \
  140.       malloc_new_zinpool_(pool,MALLOC_typeUS_,name,size,z)
  141. #define malloc_new_zusr(pool,name,size,z) \
  142.       malloc_new_zinpool_(pool,MALLOC_typeUSR_,name,size,z)
  143. #define malloc_kill_ks(pool,ptr,size) \
  144.       malloc_kill_inpool_(pool,MALLOC_typeKS_,ptr,size)
  145. #define malloc_kill_ksr(pool,ptr,size) \
  146.       malloc_kill_inpool_(pool,MALLOC_typeKSR_,ptr,size)
  147. #define malloc_kill_us(pool,ptr) malloc_kill_inpool_(pool,MALLOC_typeUS_,ptr,0)
  148. #define malloc_kill_usr(pool,ptr) malloc_kill_inpool_(pool,MALLOC_typeUSR_,ptr,0)
  149. #define malloc_pool_image() (&malloc_root_.malloc_pool_image_)
  150. #define malloc_resize_ksr(pool,ptr,new_size,old_size) \
  151.       malloc_resize_inpool_(pool,MALLOC_typeKSR_,ptr,new_size,old_size)
  152. #define malloc_resize_kpr(pool,ptr,new_size,old_size) \
  153.       malloc_resize_inpool_(pool,MALLOC_typeKPR_,ptr,new_size,old_size)
  154. #define malloc_resize_usr(pool,ptr,new_size) \
  155.       malloc_resize_inpool_(pool,MALLOC_typeUSR_,ptr,new_size,0)
  156.  
  157. /* End of #include file. */
  158.  
  159. #endif
  160.