aboutsummaryrefslogtreecommitdiff
path: root/Descriptors.icl
diff options
context:
space:
mode:
Diffstat (limited to 'Descriptors.icl')
-rw-r--r--Descriptors.icl24
1 files changed, 24 insertions, 0 deletions
diff --git a/Descriptors.icl b/Descriptors.icl
new file mode 100644
index 0000000..11ec8ea
--- /dev/null
+++ b/Descriptors.icl
@@ -0,0 +1,24 @@
+implementation module ABC.Descriptors
+
+import StdEnv
+
+import ABC.Machine
+import ABC.Misc
+
+d_ap_entry :: Desc -> InstrId
+d_ap_entry (Desc e _ _) = e
+
+d_arity :: Desc -> Arity
+d_arity (Desc _ a _) = a
+
+d_name :: Desc -> String
+d_name (Desc _ _ n) = n
+
+
+ds_get :: DescId DescStore -> Desc
+ds_get 0 [d:_] = d
+ds_get _ [] = abortn "ds_get: index too large"
+ds_get i [_:s] = ds_get (i-1) s
+
+ds_init :: [Desc] -> DescStore
+ds_init ds = ds