| Copyright | (c) 2007..2008 Duncan Coutts Benedikt Huber |
|---|---|
| License | BSD-style |
| Maintainer | benedikt.huber@gmail.com |
| Stability | experimental |
| Portability | ghc |
| Safe Haskell | None |
| Language | Haskell2010 |
Language.C.Syntax.Constants
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 :: String -> Bool -> CChar
- data CChar
- getCChar :: CChar -> String
- getCCharAsInt :: CChar -> Integer
- isWideChar :: CChar -> Bool
- showCharConst :: Char -> ShowS
- data CIntFlag
- data CIntRepr
- 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 String Bool
- getCString :: CString -> String
- showStringLit :: String -> ShowS
- concatCStrings :: [CString] -> CString
- data ClangCVersion = ClangCVersion !String
- readClangCVersion :: String -> ClangCVersion
Utilities
escapeChar :: Char -> String Source #
unescapeString :: String -> String Source #
Instances
| Generic1 Flags Source # | |||||
Defined in Language.C.Syntax.Constants Associated Types
| |||||
| NFData (Flags f) Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| Data f => Data (Flags f) Source # | |||||
Defined in Language.C.Syntax.Constants Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Flags f -> c (Flags f) Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Flags f) Source # toConstr :: Flags f -> Constr Source # dataTypeOf :: Flags f -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Flags f)) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Flags f)) Source # gmapT :: (forall b. Data b => b -> b) -> Flags f -> Flags f Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Flags f -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Flags f -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Flags f -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Flags f -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Flags f -> m (Flags f) Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Flags f -> m (Flags f) Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Flags f -> m (Flags f) Source # | |||||
| Generic (Flags f) Source # | |||||
Defined in Language.C.Syntax.Constants Associated Types
| |||||
| Eq (Flags f) Source # | |||||
| Ord (Flags f) Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| type Rep1 Flags Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| type Rep (Flags f) Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
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.
C char constants (abstract)
Instances
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 necessary uses octal or hexadecimal escape sequences.
C integral constants
datatype representing type flags for integers
Constructors
| FlagUnsigned | |
| FlagLong | |
| FlagLongLong | |
| FlagImag |
Instances
| NFData CIntFlag Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| Data CIntFlag Source # | |||||
Defined in Language.C.Syntax.Constants Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CIntFlag -> c CIntFlag Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CIntFlag Source # toConstr :: CIntFlag -> Constr Source # dataTypeOf :: CIntFlag -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CIntFlag) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CIntFlag) Source # gmapT :: (forall b. Data b => b -> b) -> CIntFlag -> CIntFlag Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CIntFlag -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CIntFlag -> r Source # gmapQ :: (forall d. Data d => d -> u) -> CIntFlag -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> CIntFlag -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> CIntFlag -> m CIntFlag Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CIntFlag -> m CIntFlag Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CIntFlag -> m CIntFlag Source # | |||||
| Bounded CIntFlag Source # | |||||
| Enum CIntFlag Source # | |||||
Defined in Language.C.Syntax.Constants Methods succ :: CIntFlag -> CIntFlag Source # pred :: CIntFlag -> CIntFlag Source # toEnum :: Int -> CIntFlag Source # fromEnum :: CIntFlag -> Int Source # enumFrom :: CIntFlag -> [CIntFlag] Source # enumFromThen :: CIntFlag -> CIntFlag -> [CIntFlag] Source # enumFromTo :: CIntFlag -> CIntFlag -> [CIntFlag] Source # enumFromThenTo :: CIntFlag -> CIntFlag -> CIntFlag -> [CIntFlag] Source # | |||||
| Generic CIntFlag Source # | |||||
Defined in Language.C.Syntax.Constants Associated Types
| |||||
| Show CIntFlag Source # | |||||
| Eq CIntFlag Source # | |||||
| Ord CIntFlag Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| type Rep CIntFlag Source # | |||||
Defined in Language.C.Syntax.Constants type Rep CIntFlag = D1 ('MetaData "CIntFlag" "Language.C.Syntax.Constants" "language-c-0.10.1-37V6ch7t6hRLni4qmyi0iL" 'False) ((C1 ('MetaCons "FlagUnsigned" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FlagLong" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "FlagLongLong" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FlagImag" 'PrefixI 'False) (U1 :: Type -> Type))) | |||||
datatype for memorizing the representation of an integer
Instances
| NFData CIntRepr Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| Data CIntRepr Source # | |||||
Defined in Language.C.Syntax.Constants Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CIntRepr -> c CIntRepr Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CIntRepr Source # toConstr :: CIntRepr -> Constr Source # dataTypeOf :: CIntRepr -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CIntRepr) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CIntRepr) Source # gmapT :: (forall b. Data b => b -> b) -> CIntRepr -> CIntRepr Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CIntRepr -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CIntRepr -> r Source # gmapQ :: (forall d. Data d => d -> u) -> CIntRepr -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> CIntRepr -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> CIntRepr -> m CIntRepr Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CIntRepr -> m CIntRepr Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CIntRepr -> m CIntRepr Source # | |||||
| Bounded CIntRepr Source # | |||||
| Enum CIntRepr Source # | |||||
Defined in Language.C.Syntax.Constants Methods succ :: CIntRepr -> CIntRepr Source # pred :: CIntRepr -> CIntRepr Source # toEnum :: Int -> CIntRepr Source # fromEnum :: CIntRepr -> Int Source # enumFrom :: CIntRepr -> [CIntRepr] Source # enumFromThen :: CIntRepr -> CIntRepr -> [CIntRepr] Source # enumFromTo :: CIntRepr -> CIntRepr -> [CIntRepr] Source # enumFromThenTo :: CIntRepr -> CIntRepr -> CIntRepr -> [CIntRepr] Source # | |||||
| Generic CIntRepr Source # | |||||
Defined in Language.C.Syntax.Constants Associated Types
| |||||
| Eq CIntRepr Source # | |||||
| Ord CIntRepr Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| type Rep CIntRepr Source # | |||||
Defined in Language.C.Syntax.Constants type Rep CIntRepr = D1 ('MetaData "CIntRepr" "Language.C.Syntax.Constants" "language-c-0.10.1-37V6ch7t6hRLni4qmyi0iL" 'False) (C1 ('MetaCons "DecRepr" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "HexRepr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OctalRepr" 'PrefixI 'False) (U1 :: Type -> Type))) | |||||
cInteger :: Integer -> CInteger Source #
construct a integer constant (without type flags) from a haskell integer
Instances
| NFData CInteger Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| Data CInteger Source # | |||||
Defined in Language.C.Syntax.Constants Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CInteger -> c CInteger Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CInteger Source # toConstr :: CInteger -> Constr Source # dataTypeOf :: CInteger -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CInteger) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CInteger) Source # gmapT :: (forall b. Data b => b -> b) -> CInteger -> CInteger Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CInteger -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CInteger -> r Source # gmapQ :: (forall d. Data d => d -> u) -> CInteger -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> CInteger -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> CInteger -> m CInteger Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CInteger -> m CInteger Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CInteger -> m CInteger Source # | |||||
| Generic CInteger Source # | |||||
Defined in Language.C.Syntax.Constants Associated Types
| |||||
| Show CInteger Source # | |||||
| Eq CInteger Source # | |||||
| Ord CInteger Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| type Rep CInteger Source # | |||||
Defined in Language.C.Syntax.Constants type Rep CInteger = D1 ('MetaData "CInteger" "Language.C.Syntax.Constants" "language-c-0.10.1-37V6ch7t6hRLni4qmyi0iL" 'False) (C1 ('MetaCons "CInteger" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Integer) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CIntRepr) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Flags CIntFlag))))) | |||||
getCInteger :: CInteger -> Integer Source #
C floating point constants
Floats (represented as strings)
Instances
| NFData CFloat Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| Data CFloat Source # | |||||
Defined in Language.C.Syntax.Constants Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CFloat -> c CFloat Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CFloat Source # toConstr :: CFloat -> Constr Source # dataTypeOf :: CFloat -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CFloat) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CFloat) Source # gmapT :: (forall b. Data b => b -> b) -> CFloat -> CFloat Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CFloat -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CFloat -> r Source # gmapQ :: (forall d. Data d => d -> u) -> CFloat -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> CFloat -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> CFloat -> m CFloat Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CFloat -> m CFloat Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CFloat -> m CFloat Source # | |||||
| Generic CFloat Source # | |||||
Defined in Language.C.Syntax.Constants Associated Types
| |||||
| Show CFloat Source # | |||||
| Eq CFloat Source # | |||||
| Ord CFloat Source # | |||||
| type Rep CFloat Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
readCFloat :: String -> CFloat Source #
C string literals
C String literals
Instances
| NFData CString Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| Data CString Source # | |||||
Defined in Language.C.Syntax.Constants Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CString -> c CString Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CString Source # toConstr :: CString -> Constr Source # dataTypeOf :: CString -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CString) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CString) Source # gmapT :: (forall b. Data b => b -> b) -> CString -> CString Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CString -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CString -> r Source # gmapQ :: (forall d. Data d => d -> u) -> CString -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> CString -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> CString -> m CString Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CString -> m CString Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CString -> m CString Source # | |||||
| Generic CString Source # | |||||
Defined in Language.C.Syntax.Constants Associated Types
| |||||
| Show CString Source # | |||||
| Eq CString Source # | |||||
| Ord CString Source # | |||||
Defined in Language.C.Syntax.Constants | |||||
| type Rep CString Source # | |||||
Defined in Language.C.Syntax.Constants type Rep CString = D1 ('MetaData "CString" "Language.C.Syntax.Constants" "language-c-0.10.1-37V6ch7t6hRLni4qmyi0iL" 'False) (C1 ('MetaCons "CString" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) | |||||
getCString :: CString -> String Source #
showStringLit :: String -> ShowS Source #
showStringLiteral s prepends a String representing the C string literal corresponding to s.
If necessary it uses octal or hexadecimal escape sequences.
concatCStrings :: [CString] -> CString Source #
concatenate a list of C string literals
Clang C version literals
data ClangCVersion Source #
Clang dotted version literal https://clang.llvm.org/docs/AttributeReference.html#availability
Constructors
| ClangCVersion !String |
Instances
| Data ClangCVersion Source # | |
Defined in Language.C.Syntax.Constants Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ClangCVersion -> c ClangCVersion Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ClangCVersion Source # toConstr :: ClangCVersion -> Constr Source # dataTypeOf :: ClangCVersion -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ClangCVersion) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ClangCVersion) Source # gmapT :: (forall b. Data b => b -> b) -> ClangCVersion -> ClangCVersion Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ClangCVersion -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ClangCVersion -> r Source # gmapQ :: (forall d. Data d => d -> u) -> ClangCVersion -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> ClangCVersion -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ClangCVersion -> m ClangCVersion Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ClangCVersion -> m ClangCVersion Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ClangCVersion -> m ClangCVersion Source # | |
| Show ClangCVersion Source # | |
Defined in Language.C.Syntax.Constants | |
| Eq ClangCVersion Source # | |
Defined in Language.C.Syntax.Constants Methods (==) :: ClangCVersion -> ClangCVersion -> Bool Source # (/=) :: ClangCVersion -> ClangCVersion -> Bool Source # | |
| Ord ClangCVersion Source # | |
Defined in Language.C.Syntax.Constants Methods compare :: ClangCVersion -> ClangCVersion -> Ordering Source # (<) :: ClangCVersion -> ClangCVersion -> Bool Source # (<=) :: ClangCVersion -> ClangCVersion -> Bool Source # (>) :: ClangCVersion -> ClangCVersion -> Bool Source # (>=) :: ClangCVersion -> ClangCVersion -> Bool Source # max :: ClangCVersion -> ClangCVersion -> ClangCVersion Source # min :: ClangCVersion -> ClangCVersion -> ClangCVersion Source # | |