diff options
author | ronny | 1999-10-05 13:09:14 +0000 |
---|---|---|
committer | ronny | 1999-10-05 13:09:14 +0000 |
commit | db9e59813541e06caece64592854862bab9c0138 (patch) | |
tree | ae7cef5982a377261188aed09dc0f0cc95c50f8c /frontend/Heap.dcl | |
parent | Standard project directories initialized by cvs2svn. (diff) |
Initial import
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@2 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/Heap.dcl')
-rw-r--r-- | frontend/Heap.dcl | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/frontend/Heap.dcl b/frontend/Heap.dcl new file mode 100644 index 0000000..bf855d9 --- /dev/null +++ b/frontend/Heap.dcl @@ -0,0 +1,31 @@ +definition module Heap + +import StdEnv + +:: Heap v = {heap::!.HeapN v} +:: HeapN v +:: Ptr v = {pointer::!.(PtrN v)}; +:: PtrN v = Ptr !v !(HeapN v); + +newHeap :: .Heap v + +nilPtr :: Ptr v + +isNilPtr :: !(Ptr v) -> Bool + +newPtr :: !v !*(Heap v) -> (!.Ptr v,!.Heap v) + +readPtr :: !(Ptr v) !*(Heap v) -> (!v,!.Heap v) + +writePtr :: !(Ptr v) !v !*(Heap v) -> .Heap v + +sreadPtr :: !(Ptr v) !(Heap v) -> v + +ptrToInt :: !(Ptr w) -> Int + +(<:=) infixl +(<:=) heap ptr_and_val :== writePtr ptr val heap +where + (ptr, val) = ptr_and_val + +instance == Ptr a |