language-c-0.4.7: Analysis and generation of C code

Copyright(c) 2007..2008 Duncan Coutts, Benedikt Huber
LicenseBSD-style
Maintainerbenedikt.huber@gmail.com
Stabilityexperimental
Portabilityghc
Safe HaskellNone
LanguageHaskell98

Language.C.Syntax.Constants

Contents

Description

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

Synopsis

Utilities

newtype Flags f

Constructors

Flags Integer 

Instances

Eq (Flags f) 
Data f => Data (Flags f) 
Ord (Flags f) 
Typeable (* -> *) Flags 

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

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

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

C char constants (and multi-character character constants)

cChar :: Char -> CChar

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

cChar_w :: Char -> CChar

construct a wide chararacter constant

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

create a multi-character character constant

data CChar

C char constants (abstract)

Constructors

CChar !Char !Bool 
CChars [Char] !Bool 

getCChar :: CChar -> [Char]

get the haskell representation of a char constant

getCCharAsInt :: CChar -> Integer

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

isWideChar :: CChar -> Bool

return true if the character constant is wide.

showCharConst :: Char -> ShowS

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

C integral constants

data CIntFlag

datatype representing type flags for integers

data CIntRepr

datatype for memorizing the representation of an integer

Constructors

DecRepr 
HexRepr 
OctalRepr 

cInteger :: Integer -> CInteger

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

C floating point constants

data CFloat

Floats (represented as strings)

Constructors

CFloat !String 

C string literals

data CString

C String literals

Constructors

CString [Char] Bool 

showStringLit :: String -> ShowS

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

concatenate a list of C string literals