summaryrefslogtreecommitdiff
path: root/src/Script/Object.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Script/Object.hs')
-rw-r--r--src/Script/Object.hs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/Script/Object.hs b/src/Script/Object.hs
index 9232b21..7e60f80 100644
--- a/src/Script/Object.hs
+++ b/src/Script/Object.hs
@@ -7,8 +7,11 @@ module Script.Object (
) where
import Data.Kind
+import Data.Text (Text)
import Data.Typeable
+import Script.Expr.Class
+
newtype ObjectId = ObjectId Int
@@ -16,9 +19,17 @@ class Typeable a => ObjectType m a where
type ConstructorArgs a :: Type
type ConstructorArgs a = ()
+ textObjectType :: proxy (m a) -> proxy a -> Text
+ textObjectValue :: proxy (m a) -> a -> Text
+
createObject :: ObjectId -> ConstructorArgs a -> m (Object m a)
destroyObject :: Object m a -> m ()
+instance (Typeable m, ObjectType m a) => ExprType (Object m a) where
+ textExprType _ = textObjectType (Proxy @(m a)) (Proxy @a)
+ textExprValue = textObjectValue (Proxy @(m a)) . objImpl
+
+
data Object m a = ObjectType m a => Object
{ objId :: ObjectId
, objImpl :: a