| Safe Haskell | None |
|---|
Language.C.DSL.Decl
- decl :: CDeclSpec -> CDeclr -> Maybe CExpr -> CDecl
- voidTy :: CDeclSpec
- floatTy :: CDeclSpec
- longTy :: CDeclSpec
- intTy :: CDeclSpec
- shortTy :: CDeclSpec
- charTy :: CDeclSpec
- doubleTy :: CDeclarationSpecifier NodeInfo
- ptr :: CDeclr -> CDeclr
- char :: CDeclr -> Maybe CExpr -> CDecl
- short :: CDeclr -> Maybe CExpr -> CDecl
- int :: CDeclr -> Maybe CExpr -> CDecl
- long :: CDeclr -> Maybe CExpr -> CDecl
- float :: CDeclr -> Maybe CExpr -> CDecl
- double :: CDeclr -> Maybe CExpr -> CDecl
- charPtr :: CDeclr -> Maybe CExpr -> CDecl
- shortPtr :: CDeclr -> Maybe CExpr -> CDecl
- intPtr :: CDeclr -> Maybe CExpr -> CDecl
- longPtr :: CDeclr -> Maybe CExpr -> CDecl
- floatPtr :: CDeclr -> Maybe CExpr -> CDecl
- doublePtr :: CDeclr -> Maybe CExpr -> CDecl
- (.=) :: (Maybe CExpr -> CDecl) -> CExpr -> CDecl
- uninit :: (Maybe CExpr -> CDecl) -> CDecl
- csu :: CStructTag -> String -> [(String, CTypeSpec)] -> CDecl
- struct :: String -> [(String, CTypeSpec)] -> CDecl
- union :: String -> [(String, CTypeSpec)] -> CDecl
- fun :: [CDeclSpec] -> String -> [Maybe CExpr -> CDecl] -> CStat -> CFunDef
- class External a where
- transUnit :: [CExtDecl] -> CTranslUnit
Documentation
Arguments
| :: CDeclSpec | The declaration specifier, usually this is a type |
| -> CDeclr | Equivalent to the name of the object being declared. Often this will
make use of the overloaded string instance for |
| -> Maybe CExpr | The optional init expression |
| -> CDecl |
A low level way to declare something.
Modifies a declarator to be a pointer. For example
ptr someName would be *x in C.
char :: CDeclr -> Maybe CExpr -> CDeclSource
A short cut for declaring a char.
char "x" .= 1
uninit $ char "y"
Would generate
char x = 1; char y;
(.=) :: (Maybe CExpr -> CDecl) -> CExpr -> CDeclSource
Supplies an initializer for an for a declaration. This
is meant to be used with the char and friends short cuts
uninit :: (Maybe CExpr -> CDecl) -> CDeclSource
Leave a declaration uninitialized. This is meant to be used
with the char and friends declaration
union :: String -> [(String, CTypeSpec)] -> CDeclSource
Equivalent to struct but generates a C union instead.
fun :: [CDeclSpec] -> String -> [Maybe CExpr -> CDecl] -> CStat -> CFunDefSource
Defines a C function. For example
test =
fun [intTy] "test"[int "a", int "b"] $ hblock [
creturn ("a" + "b")
]
Would be the equivalent of
int test(int a, int b)
{
return a + b;
}
transUnit :: [CExtDecl] -> CTranslUnitSource
Exports a series of declarations to a translation unit.