ack/lang/m2/libm2/Storage.def
1988-06-07 12:34:04 +00:00

42 lines
1.2 KiB
Modula-2

DEFINITION MODULE Storage;
(*
Module: Dynamic storage allocation
From: "Programming in Modula-2", 3rd, corrected edition, by N. Wirth
Version: $Header$
*)
(*
Wirth's 3rd edition certainly is confusing: mostly it uses Allocate, but
the module at the end of the book defines ALLOCATE. To avoid problems,
I included them both.
*)
FROM SYSTEM IMPORT ADDRESS;
PROCEDURE ALLOCATE(VAR a : ADDRESS; size : CARDINAL);
(* Allocate an area of the given size and return the address
in "a". If no space is available, the calling program is
killed.
*)
PROCEDURE Allocate(VAR a : ADDRESS; size : CARDINAL);
(* Identical to ALLOCATE *)
PROCEDURE DEALLOCATE(VAR a : ADDRESS; size : CARDINAL);
(* Free the area at address "a" with the given size. The area
must have been allocated by "ALLOCATE", with the same size.
*)
PROCEDURE Deallocate(VAR a : ADDRESS; size : CARDINAL);
(* Identical to DEALLOCATE *)
PROCEDURE Available(size : CARDINAL) : BOOLEAN;
(* Return TRUE if a contiguous area with the given size could be
allocated.
Notice that this only indicates if an ALLOCATE of this size
would succeed, and that it gives no indication of the total
available memory.
*)
END Storage.