language-Modula2-0.1: examples/Modula-2_Libraries/C.-Lins_Modula-2_Software_Component_Library/Vol1/UTILS/JPISTORA.MOD
IMPLEMENTATION MODULE JPIStorage;
(*====================================================================
Version : 1.0 Sat, Mar 4, 1989 C. Lins
Compiler : JPI TopSpeed Modula-2
Code Size: R- bytes
Component: Tool - JPI M2SCL Storage Management Utility
INTRODUCTION
This module provides facilities for allocation and deallocation of
dynamic memory. The routines are compatible with the JPI Storage
module. Allocate differs from ALLOCATE in returning NIL
if unsuccessful instead of HALTing. Deallocate does nothing if
the given pointer is NIL, otherwise NIL is returned.
REVISION HISTORY
v1.0 Sat, Mar 4, 1989 C. Lins
Initial implementation.
PROPRIETARY NOTICES
JPIStorage.MOD Copyright (C) 1989 Charles A. Lins.
====================================================================*)
FROM SYSTEM IMPORT
(*--Type*) ADDRESS;
FROM Storage IMPORT
(*--Proc*) ALLOCATE, DEALLOCATE, Available;
(*-----------------------*)
(* CONSTRUCTORS *)
PROCEDURE Allocate (VAR thePointer : ADDRESS (*--out *);
theSize : CARDINAL (*--in *));
BEGIN
IF Available(theSize) THEN
ALLOCATE(thePointer, theSize);
ELSE
thePointer := NIL;
END (*--if*);
END Allocate;
(*--------------------*)
PROCEDURE Deallocate (VAR thePointer : ADDRESS (*--inout*);
theSize : CARDINAL (*--in *));
BEGIN
IF (thePointer # NIL) THEN
DEALLOCATE(thePointer, theSize);
thePointer := NIL;
END (*--if*);
END Deallocate;
(*--------------------*)
END JPIStorage.