home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 549b.lha / M2P_v1.0_sources / source.lzh / FStorage.def < prev    next >
Text File  |  1991-08-10  |  3KB  |  51 lines

  1. (*======================================================================*)
  2. (*                   Amiga Modula-2 support routines                    *)
  3. (*======================================================================*)
  4. (*      Version: 1.00           Author : Dennis Brueni                  *)
  5. (*      Date   : 08-03-91       Changes: Original                       *)
  6. (*======================================================================*)
  7. (* FStorage implements a Freelist based storage strategy which works to *)
  8. (* minimize calls to the system allocate and deallocate procedures.     *)
  9. (* For storage requests under 512 bytes, it will use the FreeLists, for *)
  10. (* larger requests, it will directly use the Amiga AllocMem or FreeMem. *)
  11. (* On non-amiga systems, it will use the Storage module in these cases  *)
  12. (*======================================================================*)
  13.  
  14. DEFINITION MODULE FStorage;
  15.  
  16. IMPORT SYSTEM;
  17.  
  18. (*----------------------------------------------------------------------*)
  19. (*  ALLOCATE    Allocate a contiguous block of memory                   *)
  20. (*                                                                      *)
  21. (*  PARAMETERS  addr --   Variable to receive the address of the        *)
  22. (*                        allocated memory block.  Will contain NIL if  *)
  23. (*                        there was not enough memory.                  *)
  24. (*              amount -- Amount of memory to allocate in bytes.        *)
  25. (*----------------------------------------------------------------------*)
  26.  
  27. PROCEDURE ALLOCATE(VAR addr:SYSTEM.ADDRESS; amount: LONGCARD);
  28.  
  29. (*----------------------------------------------------------------------*)
  30. (*  DEALLOCATE  Return a memory block to the system.                    *)
  31. (*                                                                      *)
  32. (*  PARAMETERS  addr -- Address of a memory block, obtained from NEW(). *)
  33. (*              amnt -- the amount to deallocate                        *)
  34. (*----------------------------------------------------------------------*)
  35.  
  36. PROCEDURE DEALLOCATE(VAR addr:SYSTEM.ADDRESS; amnt: LONGCARD);
  37.  
  38. (*----------------------------------------------------------------------*)
  39. (*  DUPLICATE   Easy way to obtain a pointer to a new copy of something *)
  40. (*----------------------------------------------------------------------*)
  41.  
  42. PROCEDURE DUPLICATE(block: ARRAY OF SYSTEM.BYTE):SYSTEM.ADDRESS;
  43.  
  44. (*----------------------------------------------------------------------*)
  45. (*  DISPOSEALL  Return all memory allocated                             *)
  46. (*----------------------------------------------------------------------*)
  47.  
  48. PROCEDURE DISPOSEALL;
  49.  
  50. END FStorage.
  51.