ALLOC.DEF 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * ALLOC.DEF - Modula-2 interface to ALLOC.H *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. (*# project("#set tsc='on'") *)
  11. (*# call(o_a_size=>off, o_a_copy=>off, c_conv=>on, result_optional=>on) *)
  12. (*# module(implementation=>off, init_code=>off) *)
  13. (*# name(prefix=>c) *)
  14. DEFINITION MODULE alloc;
  15. CONST
  16. _HEAPOK = 0;
  17. _HEAPEMPTY = -1;
  18. _HEAPBADBEGIN = -2;
  19. _HEAPBADNODE = -3;
  20. _HEAPOVERFLOW = -4;
  21. _HEAPEND = -5;
  22. _HEAPBADPTR = -6;
  23. TYPE
  24. _heapinfoptr = POINTER TO _heapinfo;
  25. _heapinfo = RECORD
  26. _pentry : _heapinfoptr;
  27. _size : CARDINAL;
  28. _useflag : CARDINAL;
  29. END;
  30. PROCEDURE calloc(_num,_size: CARDINAL): ADDRESS;
  31. PROCEDURE free(_block: ADDRESS);
  32. PROCEDURE malloc(_size: CARDINAL): ADDRESS;
  33. PROCEDURE realloc(_block: ADDRESS; _size: CARDINAL): ADDRESS;
  34. PROCEDURE _msize(_buffer: ADDRESS): CARDINAL;
  35. PROCEDURE _memmax(): CARDINAL;
  36. PROCEDURE _memavl(): CARDINAL;
  37. PROCEDURE _heapchk(): INTEGER;
  38. PROCEDURE _heapset(_fill: CARDINAL): INTEGER;
  39. PROCEDURE _heapwalk(VAR _entry : _heapinfo): INTEGER;
  40. PROCEDURE _expand(buffer: ADDRESS; _size: CARDINAL): ADDRESS;
  41. PROCEDURE coreleft(): CARDINAL;
  42. PROCEDURE _freect(_size: CARDINAL): CARDINAL;
  43. (*# data(near_ptr=>on) *)
  44. TYPE
  45. _nheapinfoptr = POINTER TO _nheapinfo;
  46. _nheapinfo = RECORD
  47. _pentry : _nheapinfoptr;
  48. _size : CARDINAL;
  49. _useflag : CARDINAL;
  50. END;
  51. PROCEDURE _ncalloc(num,_size: CARDINAL): NearADDRESS;
  52. PROCEDURE _nfree(_block: NearADDRESS);
  53. PROCEDURE _nmalloc(_size: CARDINAL): NearADDRESS;
  54. PROCEDURE _nrealloc(_block: NearADDRESS; _size: CARDINAL): NearADDRESS;
  55. PROCEDURE _nmsize(_buffer: NearADDRESS): CARDINAL;
  56. PROCEDURE _nheapchk(): INTEGER;
  57. PROCEDURE _nheapset(_fill: CARDINAL): INTEGER;
  58. PROCEDURE _nheapwalk(VAR _entry : _nheapinfo): INTEGER;
  59. PROCEDURE _nexpand(buffer: NearADDRESS; _size: CARDINAL): NearADDRESS;
  60. (*# data(near_ptr=>off) *)
  61. TYPE
  62. _fheapinfoptr = POINTER TO _fheapinfo;
  63. _fheapinfo = RECORD
  64. _pentry : _fheapinfoptr;
  65. _size : CARDINAL;
  66. _useflag : CARDINAL;
  67. END;
  68. PROCEDURE _fcalloc(num,_size: CARDINAL): FarADDRESS;
  69. PROCEDURE _ffree(_block: FarADDRESS);
  70. PROCEDURE _fmalloc(_size: CARDINAL): FarADDRESS;
  71. PROCEDURE _frealloc(_block: FarADDRESS; _size: CARDINAL): FarADDRESS;
  72. PROCEDURE _fmsize(_buffer: FarADDRESS): CARDINAL;
  73. PROCEDURE _fheapchk(): INTEGER;
  74. PROCEDURE _fheapset(_fill: CARDINAL): INTEGER;
  75. PROCEDURE _fheapwalk(VAR _entry : _fheapinfo): INTEGER;
  76. PROCEDURE _fexpand(buffer: FarADDRESS; _size: CARDINAL): FarADDRESS;
  77. (* **** Huge objects still need to be handled. *)
  78. PROCEDURE hfree(_block: FarADDRESS);
  79. PROCEDURE halloc(_size: LONGCARD): FarADDRESS;
  80. PROCEDURE hrealloc(_block: FarADDRESS; _size: LONGCARD): FarADDRESS;
  81. VAR
  82. _MaxReallocHugeSegments: CARDINAL;
  83. PROCEDURE nearcoreleft(): CARDINAL;
  84. PROCEDURE farcoreleft(): LONGCARD;
  85. CONST
  86. farmalloc ::= _fmalloc;
  87. farcalloc ::= _fcalloc;
  88. farfree ::= _ffree;
  89. farrealloc ::= _frealloc;
  90. END alloc.
  91.