!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ GHC experimentalhans@hanshoglund.seNone GHC experimentalhans@hanshoglund.seNoneGHC experimentalhans@hanshoglund.seNone Synonym for   Synonym for   Synonym for 'fmap Char.toUpper'  Synonym for 'fmap Char.toLower' NConvert a string to use upper case for the leading letter and lower case for  remaining letters.  Synonym for '(++)'  Synonym for ' flip (++)' &Separate a list by the given element. Equivalent to  3Initiate and separate a list by the given element. 4Separate and terminate a list by the given element. 4Separate and terminate a list by the given element. Combination of  and . Combination of  and . Combination of  and  . Combination of  and  . .Divide a list into parts of maximum length n. WBreak up a list into parts of maximum length n, inserting the given list as separator. ' Useful for breaking up strings, as in  breakList 80 n str. WBreak up a list into parts of maximum length n, inserting the given list as separator. ' Useful for breaking up strings, as in  breakList 80 n str.     GHC experimentalhans@hanshoglund.seNone*Mangle an indentifier in mixed case, i.e.  [foo, bar] becomes fooBar. ,Mangle an indentifier in capital case, i.e.  [foo, bar] becomes FooBar. >Mangle an indentifier using the underscore as separator, i.e.  [foo, bar] becomes foo_bar. GHC experimentalhans@hanshoglund.seNone6Unmangle an indentifier in mixed or separarated case. ,Unmangle an indentifier in mixed case, i.e. fooBar becomes  [foo, bar]. @Unmangle an indentifier using the underscore as separator, i.e. foo_bar becomes  [foo, bar].  unsep (sep a) = a, iff a /= [] GHC experimentalhans@hanshoglund.seNoneA C bitfield type. A C union type. A C struct type. A C enum type. A function type. The C function type Tn(T1, ... Tn-1). The C array type t[n]. !The C pointer type t*. "A primitive type. ?;A type is either an alias, a primitive or a compound type. D3An alias, introduced by a former type declaration. E:A value is anything that can be declared as a C constant. K;An declaration maps a name to type and optionally a value. LDeclares a global variable. MDeclares a constant value. NDeclares a struct or enum tag. ODeclares a function. PDeclares a type or opaque. Q,Name of a type, function or constant value. 4Note that any Unicode string may be used as a name. T.A module name is a non-empty list of strings. W;A module is a named container of imports and declarations. UEach module can depend on a set of other modules (translated as include directives). 1 Recursive dependencies are not allowed for now. YName of module Z)Imports with optional import conventions [List of declarations K !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_H !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_HWXYZ[TUV\]QSR^KPONML_EJIHGF?DCBA@">=<;:9876543210/.-,+*)('&%$#! ! ">=<;:9876543210/.-,+*)('&%$#?DCBA@EJIHGFKPONMLQSRTUVWXYZ[\]^_GHC experimentalhans@hanshoglund.seNone(bHow to write guards c!How to write import declarations dImport directive, usually include. e#Mangler for names of header guards fInner header mangler gInner footer mangler hPrefix for types iPrefix for values j(Mangler for implementation struct names kMangler for struct fields lMangler for union fields mMangler for enum fields nMangler for constant values oMangler for global variables pMangler for global functions r*Import external modules using local paths s+Import external modules using system paths uWrite conditional guards vWrite pragma guards w&Style used in the C standard library.  Types:  foo_bar_type_t   Functions:  foo_bar_func   Constants:  FOO_BAR_VAL   Fields:  foo_bar  xStyle used in Cairo.  Types:  p_foo_bar_t   Opaques:  _p_foo_bar_t   Functions:  p_foo_bar   Constants:  P_FOO_BAR   Fields:  foo_bar  yStyle used in GTK.  Types:  PFooBar   Opaques:  _PFooBar   Functions:  p_foo_bar   Constants:  P_FOO_BAR   Fields:  foo_bar   Style used in Apple Frameworks.  Types:  PFooBar   Opaques:  PFooBarOpaque   Functions:  PFooBar   Constants:  kPFooBar   Fields:  mFooBar  &Style similar to Haskell conventions.  Types:  PFooBar   Opaques:  PFooBarOpaque   Functions:  pfooBar   Constants:  pfooBar   Fields:  pfooBar  z(Print a module using the default style. {*Print a module using the specified style. |)Render a module using the default style. *Returns a C header file, represented as a + with enclosing header and footer strings. }+Render a module using the specified style. *Returns a C header file, represented as a + with enclosing header and footer strings. .Rewrite a module to use C-style (flat) names. [(This used to be called rename, until the addition of the eponymous module that does name F resolution. This function assumes names have already been resolved.) HThe module returned from this function will have no QName constructors. C types are represented by @1) A sequence of (declaration-specific) type specifiers such as unsigned, long, int etc 82) A sequence of (variable-specific) qualifiers such as , '[]' or function arguments An identifier Top-level declaration. *Top-level declaration with initial value. Member declaration. Member declaration with size. Parameter declaration. /Used for all NodeInfo values in generated code Left-biased Monoid instance.  Left-biased Semigroup instance. Default instance using w. S`abcdefghijklmnopqrstuvwxyz{|}~%`abcdefghijklmnopqrstuvwxyz{|}~%tvuqsr`abcdefghijklmnopwxy~z|{}?`abcdefghijklmnopqsrtvuwxyz{|}~GHC experimentalhans@hanshoglund.seNone $For generating foreign declarations )Package in which to generate definitions 8If true, generate a wrapper class for each opaque type. (Print a module using the default style. *Print a module using the specified style. )Render a module using the default style. AReturns a Lisp file, represented as a sequence of S-expressions. +Render a module using the specified style. AReturns a Lisp file, represented as a sequence of S-expressions. Left-biased Monoid instance.  Left-biased Semigroup instance. Default instance using w. , (GHC experimentalhans@hanshoglund.seNone@Parse a module description, returning an error if unsuccessful. <Parse a qualified name, returning an error if unsuccessful. IParse a module description from the given file, or fail if unsuccessful. <This unsafe function should not be used in production code. '     '     GHC experimentalhans@hanshoglund.seNone Path where modules are stored. &Module paths, in order of preference. .Append the standard paths to the given paths. =That is, the given paths take precedence over the standards. +Converts a module name to a relative path. LConverts a module name to a list of absolute paths, in order of preference. +Load the dependencies of the given module. =Dependencies of the loaded modules are loaded transitively. @ This function blocks if a recursive dependency is encountered. !Load a module of the given name. =Dependencies of the loaded modules are loaded transitively. @ This function blocks if a recursive dependency is encountered. 8Extract imports to load based on the import convention. HThis function should probably use some plugin-style system to alter the C loading mechanism, for now non-standard imports are just ignored. QAttempt to read all given files, returning the contents of the first successful * read, or failing if none could be found.   GHC experimentalhans@hanshoglund.seNone2Rewrite all unqualified names as qualified names. 8This function is partial with the following invariants: + Received module has no QName constructors * Returned module has no Name constructors FFind the first module in which the given unqualified name is declared  !  !"   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK$)+.LMNOPQRSTUVWXYZY[[\]]^_`abcdeefghijklmnopqrstuvwxyz{|}~               modulo-1.3Language.Modulo.UtilLanguage.Modulo.Util.MangleLanguage.Modulo.Util.UnmangleLanguage.ModuloLanguage.Modulo.CLanguage.Modulo.LispLanguage.Modulo.ParseLanguage.Modulo.LoadLanguage.Modulo.RenameLanguage.Modulo.JavaScriptLanguage.Modulo.Haskell toUpperChar toLowerChar toUpperString toLowerStringtoCapitalString withPrefix withSuffixsepprepostwrap concatSep concatPre concatPost concatWrap divideList breakList concatMapM mixedCase capitalCasesepCaseunmangleuncaseunsepCompTypeBitFieldUnionStructEnumFunTypeFunctionRefTypeArrayPointerPrimTypeUInt64UInt32UInt16UInt8Int64Int32Int16Int8 LongDoubleDoubleFloat ULongLongULongUIntUShortUCharBoolSCharLongLongLongIntShortCharUIntptrIntptrPtrdiffSizeVoidType AliasTypeValue CInitListCWStrCStrCFloatCIntDecl GlobalDecl ConstDeclTagDecl FunctionDeclTypeDeclNameQName ModuleName getModuleNameModulemodName modImportsmodDecls toModuleNamegetModuleNameListgetName getDeclNameCStyle guardStyle includeStyleincludeDirective guardMangler innerHeader innerFootertypePrefixManglervaluePrefixMangler typeManglerstructFieldManglerunionFieldManglerenumFieldMangler constMangler globalMangler funcMangler ImportStyle LocalPath SystemPath GuardStyleIfndefPragmastdStyle cairoStylegtkStyle printModuleprintModuleStyle renderModulerenderModuleStyle translType translFun translConst translGlobaltranslStructFieldtranslUnionFieldtranslEnumField LispStylecStylepackage safeOpaque stdLispStyleprintModuleLispprintModuleLispStylerenderModuleLisprenderModuleLispStyleparse parseNameunsafeParseFile ModulePathstdModulePathswithStdModulePaths relativePath absolutePathsloadDependencies loadModulerenamebase GHC.UnicodetoUppertoLower Data.List intersperseGHC.Listconcatunsep' $fShowName$fShowModuleName $fOrdModule appleStyle haskellStylelanguage-c-0.4.2Language.C.Syntax.AST CTranslUnit flattenModule convertTypeGHC.Num*ident topLevelDeclrtopLevelDeclrInit memberDeclrmemberDeclrSize paramDeclrdefInfo$fMonoidCStyle$fSemigroupCStyle$fDefaultCStylestdInnerHeaderstdInnerFooter convertHeader guardBeginguardEnd convertFooter flattenDecl flattenType flattenAliasflattenRefTypeflattenFunTypeflattenCompType mangleNameconvertTopLevel convertDecl declOpaquedeclTypedeclVardeclFun declParamdeclStructMemberdeclBitfieldMember convertAliasconvertPrimTypeconvertRefTypeconvertFunTypeconvertCompType identName notSupportedcStructcUnion $fNumCInteger$fMonoidLispStyle$fSemigroupLispStyle$fDefaultLispStyleconvertPackagestringsymbolkeyword stringName symbolName keywordName convertName stripPackageconvertCTypeNameconvertCFunNamevoidPtrlistsingle appendLisp assureList $fMonoidLisp$fSemigroupLisp $fDefaultLisp modParser modNameParser impParser declParsertypeDeclParser tagDeclParser funDeclParserconstDeclParserglobalDeclParsertypeOpaqueParser opaqueParser typeParsertypeStartParser typeEndParserparenTypeParserarrayTypeParserenumTypeParserstructTypeParserunionTypeParserbitfieldTypeParserprimTypeParseraliasTypeParser nameParser unameParserunameTypeParseroccsfollowlexerllexlnatlstrlnamelreslspace filterImports unsafeReadAnyfindNamequalify resolveNamesimplify dropNestEnd reverseDeepdropNest