Safe Haskell | None |
---|
- data CallConv
- data Safety
- = Safe
- | Unsafe
- | JhcContext
- newtype ExtType = ExtType PackedString
- newtype Requires = Requires (Set (CallConv, PackedString))
- data DotNetPrim
- primReqs :: Prim -> Requires
- data Prim
- = PrimPrim Atom
- | CConst { }
- | Func {
- primRequires :: Requires
- funcName :: !PackedString
- primArgTypes :: [ExtType]
- primRetType :: ExtType
- primRetArgs :: [ExtType]
- primSafety :: Safety
- | IFunc { }
- | AddrOf { }
- | Peek { }
- | Poke { }
- | PrimTypeInfo {
- primArgTy :: Ty
- primRetTy :: Ty
- primTypeInfo :: !PrimTypeInfo
- | PrimString !PackedString
- | PrimDotNet {
- primStatic :: !Bool
- primDotNet :: !DotNetPrim
- primIOLike :: !Bool
- primAssembly :: !PackedString
- primDotNetName :: !PackedString
- | Op { }
- data PrimTypeInfo
- primStaticTypeInfo :: Ty -> PrimTypeInfo -> Maybe Integer
- primIsCheap :: Prim -> Bool
- primIsConstant :: Prim -> Bool
- primEagerSafe :: Prim -> Bool
- primPrim :: ToAtom a => a -> Prim
- parseDotNetFFI :: Monad m => String -> m Prim
Documentation
Requires (Set (CallConv, PackedString)) |
data DotNetPrim Source
PrimPrim Atom | |
CConst | |
Func | |
| |
IFunc | |
| |
AddrOf | |
Peek | |
Poke | |
PrimTypeInfo | |
| |
PrimString !PackedString | |
PrimDotNet | |
| |
Op | |
data PrimTypeInfo Source
primStaticTypeInfo :: Ty -> PrimTypeInfo -> Maybe IntegerSource
primIsCheap :: Prim -> BoolSource
These primitives may safely be duplicated without affecting performance or correctness too adversly. either because they are cheap to begin with, or will be recombined in a later pass.
primIsConstant :: Prim -> BoolSource
whether a primitive represents a constant expression (assuming all its arguments are constant) TODO needs grin support
primEagerSafe :: Prim -> BoolSource
whether a primitive can be eagarly evaluated. TODO needs grin support
parseDotNetFFI :: Monad m => String -> m PrimSource