{-# LINE 1 "lib/CPython/Types/Code.chs" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module CPython.Types.Code
( Code
, codeType
) where
import qualified Foreign.Ptr as C2HSImp
import qualified System.IO.Unsafe as C2HSImp
import CPython.Internal
newtype Code = Code (ForeignPtr Code)
instance Object Code where
toObject :: Code -> SomeObject
toObject (Code x :: ForeignPtr Code
x) = ForeignPtr Code -> SomeObject
forall a. Object a => ForeignPtr a -> SomeObject
SomeObject ForeignPtr Code
x
fromForeignPtr :: ForeignPtr Code -> Code
fromForeignPtr = ForeignPtr Code -> Code
Code
instance Concrete Code where
concreteType :: Code -> Type
concreteType _ = Type
codeType
codeType :: (Type)
codeType :: Type
codeType =
IO Type -> Type
forall a. IO a -> a
C2HSImp.unsafePerformIO (IO Type -> Type) -> IO Type -> Type
forall a b. (a -> b) -> a -> b
$
IO (Ptr ())
codeType'_ IO (Ptr ()) -> (Ptr () -> IO Type) -> IO Type
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \res :: Ptr ()
res ->
Ptr () -> IO Type
forall obj a. Object obj => Ptr a -> IO obj
peekStaticObject Ptr ()
res IO Type -> (Type -> IO Type) -> IO Type
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \res' :: Type
res' ->
Type -> IO Type
forall (m :: * -> *) a. Monad m => a -> m a
return (Type
res')
{-# LINE 37 "lib/CPython/Types/Code.chs" #-}
foreign import ccall unsafe "CPython/Types/Code.chs.h hscpython_PyCode_Type"
codeType'_ :: (IO (C2HSImp.Ptr ()))