{-# LANGUAGE MultiParamTypeClasses, TypeFamilies #-} {-# LANGUAGE KindSignatures, GADTs, TypeInType #-} module Clr.Object where import Clr.Marshal import Clr.Types import Clr.TypeString import Data.Kind import Data.Int import Foreign.ForeignPtr -- -- An object is just its unique identifer + information of its type -- data Object (typ::Type) where Object :: (TString typ) => ForeignPtr Int -> Object typ type instance HaskToClr (Object t) = t