IMPLEMENTATION MODULE Storage;

(*
        Title:          Storage allocation as far as Mod2 is concerned.
        Author:         D.R.Lamkin.
        History:
          09 Aug 84     Initial version (from IO private copy).
          21 Aug 84     SetTag -> SetStoreTag;
*)

FROM Store IMPORT AllocateWithTag, Deallocate;

FROM SYSTEM IMPORT ADDRESS;

PROCEDURE ALLOCATE (VAR pointer : ADDRESS; size : CARDINAL);


VAR res : INTEGER;
    oldtag : CARDINAL;

BEGIN

res := AllocateWithTag (pointer, size, 0);

IF res <0 THEN
   pointer := NIL
END;

END ALLOCATE;





(* ------------------------------------------------------------------------- *)

PROCEDURE DEALLOCATE (VAR pointer : ADDRESS; size : CARDINAL);

(* So that I can use Dispose *)

VAR res : INTEGER;

BEGIN

IF pointer # NIL THEN
   res := Deallocate (pointer) ;
   pointer := NIL ;
END

END DEALLOCATE;


END Storage.
