| language-c-0.3.2: Analysis and generation of C code | Source code | Contents | Index

Language.C.Syntax.Constants

Portability | ghc
Stability | experimental
Maintainer | benedikt.huber@gmail.com

Contents

Utilities
C char constants (and multi-character character constants)
C integral constants
C floating point constants
C string literals

Description
This module provides support for representing, checking and exporting c constants, i.e. integral, float, character and string constants.
Synopsis

escapeChar :: Char -> String
unescapeChar :: String -> (Char, String)
unescapeString :: String -> String
newtype Flags f = Flags Integer
noFlags :: Flags f
setFlag :: Enum f => f -> Flags f -> Flags f
clearFlag :: Enum f => f -> Flags f -> Flags f
testFlag :: Enum f => f -> Flags f -> Bool
cChar :: Char -> CChar
cChar_w :: Char -> CChar
cChars :: [Char] -> Bool -> CChar

data CChar

= CChar !Char !Bool
| CChars [Char] !Bool

getCChar :: CChar -> [Char]
getCCharAsInt :: CChar -> Integer
isWideChar :: CChar -> Bool
showCharConst :: Char -> ShowS

data CIntFlag

= FlagUnsigned
| FlagLong
| FlagLongLong
| FlagImag

data CIntRepr

= DecRepr
| HexRepr
| OctalRepr

cInteger :: Integer -> CInteger
data CInteger = CInteger !Integer !CIntRepr !(Flags CIntFlag)
getCInteger :: CInteger -> Integer
readCInteger :: CIntRepr -> String -> Either String CInteger
cFloat :: Float -> CFloat
data CFloat = CFloat !String
readCFloat :: String -> CFloat
cString :: String -> CString
cString_w :: String -> CString
data CString = CString [Char] Bool
getCString :: CString -> String
showStringLit :: String -> ShowS
concatCStrings :: [CString] -> CString

Utilities

escapeChar :: Char -> String | Source

unescapeChar :: String -> (Char, String) | Source

unescapeString :: String -> String | Source

newtype Flags f | Source

Constructors

Flags Integer |

Instances

Typeable1 Flags
Eq (Flags f)
Typeable f => Data (Flags f)
Ord (Flags f)

noFlags :: Flags f | Source

setFlag :: Enum f => f -> Flags f -> Flags f | Source

clearFlag :: Enum f => f -> Flags f -> Flags f | Source

testFlag :: Enum f => f -> Flags f -> Bool | Source

C char constants (and multi-character character constants)

cChar :: Char -> CChar | Source

construct a character constant from a haskell `Char` Use cchar_w if you want a wide character constant.

cChar_w :: Char -> CChar | Source

construct a wide chararacter constant

cChars :: [Char] -> Bool -> CChar | Source

create a multi-character character constant

data CChar | Source

C char constants (abstract)
Constructors

CChar !Char !Bool |
CChars [Char] !Bool |

Instances

Eq CChar
Data CChar
Ord CChar
Show CChar
Typeable CChar

getCChar :: CChar -> [Char] | Source

get the haskell representation of a char constant

getCCharAsInt :: CChar -> Integer | Source

get integer value of a C char constant undefined result for multi-char char constants

isWideChar :: CChar -> Bool | Source

return `true` if the character constant is wide.

showCharConst :: Char -> ShowS | Source

`showCharConst c` prepends _a_ String representing the C char constant corresponding to `c`. If neccessary uses octal or hexadecimal escape sequences.
C integral constants

data CIntFlag | Source

datatype representing type flags for integers
Constructors

FlagUnsigned |
FlagLong |
FlagLongLong |
FlagImag |

Instances

Bounded CIntFlag
Enum CIntFlag
Eq CIntFlag
Data CIntFlag
Ord CIntFlag
Show CIntFlag
Typeable CIntFlag

data CIntRepr | Source

datatype for memorizing the representation of an integer
Constructors

DecRepr |
HexRepr |
OctalRepr |

Instances

Bounded CIntRepr
Enum CIntRepr
Eq CIntRepr
Data CIntRepr
Ord CIntRepr
Typeable CIntRepr

cInteger :: Integer -> CInteger | Source

construct a integer constant (without type flags) from a haskell integer

data CInteger | Source

Constructors

CInteger !Integer !CIntRepr !(Flags CIntFlag) |

Instances

Eq CInteger
Data CInteger
Ord CInteger
Show CInteger
Typeable CInteger

getCInteger :: CInteger -> Integer | Source

readCInteger :: CIntRepr -> String -> Either String CInteger | Source

C floating point constants

cFloat :: Float -> CFloat | Source

data CFloat | Source

Floats (represented as strings)
Constructors

CFloat !String |

Instances

Eq CFloat
Data CFloat
Ord CFloat
Show CFloat
Typeable CFloat

readCFloat :: String -> CFloat | Source

C string literals

cString :: String -> CString | Source

cString_w :: String -> CString | Source

data CString | Source

C String literals
Constructors

CString [Char] Bool |

Instances

Eq CString
Data CString
Ord CString
Show CString
Typeable CString

getCString :: CString -> String | Source

showStringLit :: String -> ShowS | Source

`showStringLiteral s` prepends a String representing the C string literal corresponding to `s`. If neccessary it uses octal or hexadecimal escape sequences.

concatCStrings :: [CString] -> CString | Source

concatenate a list of C string literals
Produced by Haddock version 2.4.2