aboutsummaryrefslogtreecommitdiff
path: root/montis/src/Montis/Core/World/Interface.hs
diff options
context:
space:
mode:
Diffstat (limited to 'montis/src/Montis/Core/World/Interface.hs')
-rw-r--r--montis/src/Montis/Core/World/Interface.hs20
1 files changed, 20 insertions, 0 deletions
diff --git a/montis/src/Montis/Core/World/Interface.hs b/montis/src/Montis/Core/World/Interface.hs
new file mode 100644
index 0000000..39d4e4c
--- /dev/null
+++ b/montis/src/Montis/Core/World/Interface.hs
@@ -0,0 +1,20 @@
+-- | Provides the world interface through foreign exports.
+module Montis.Core.World.Interface where
+
+import Data.ByteString (ByteString)
+import Data.Data (Typeable)
+import Data.Singletons.Decide (Void)
+import Foreign (Ptr, StablePtr, Word32)
+import Foreign.C (CChar)
+import Montis.Core.State (SelfPtr)
+
+-- type OpqStT l w = StablePtr (Context l w, State l w)
+
+class OpaqueState s where
+ hotStart :: SelfPtr -> ByteString -> IO s
+
+ coldStart :: SelfPtr -> IO s
+
+ marshalState :: s -> ByteString
+
+ teardown :: s -> IO ()