h$r      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred '(>    None '}fficxx-runtimeregular C++ statement~fficxx-runtime #include " header"fficxx-runtime#pragmafficxx-runtime #undef namefficxx-runtime#define macro (type) definitionfficxx-runtimejust for conveniencefficxx-runtimetemporary verbatimfficxx-runtimeusing namespace  namespace;fficxx-runtimetypedef origtype newname;fficxx-runtimeC expression standalone;fficxx-runtimefunction declaration;fficxx-runtimefunction definition;fficxx-runtimevariable initialization;fficxx-runtimereturn statement;fficxx-runtimedelete statement;fficxx-runtime2C Macro application at statement level (temporary)fficxx-runtimeextern C {..}fficxx-runtimecommentfficxx-runtimefor conveniencefficxx-runtimetemporary verbatimfficxx-runtime(type func( type1 arg1, type2 arg2, ... )fficxx-runtimevariablefficxx-runtimeC function app: f(a1,a2,..)fficxx-runtimetemplate app : f T1,T2,.. (a1,a2,..)fficxx-runtimebinary operator: x op yfficxx-runtime (type)expfficxx-runtime&(exp)fficxx-runtime(exp)fficxx-runtime!new operator: new Cstr(a1,a2,...)fficxx-runtime)new operator for template class: new Cstr T1,T2,.. (a1,a2,..)fficxx-runtime8new operator for inner class of template class: new Cstr T1,T2,..0::inner(a1,a2,..) -- TODO: make a generalizationfficxx-runtime"macro function at expression levelfficxx-runtimeverbatimfficxx-runtime%empty C expression. (for convenience)fficxx-runtime Operatorsfficxx-runtimeTypesfficxx-runtimeparts for interpolationfficxx-runtime*render CStatement in a regular environmentfficxx-runtime3render CStatement in a macro definition environmentfficxx-runtimetypefficxx-runtime variable namefficxx-runtimetemplate type namefficxx-runtimetemplate parametersz{|~}|~}z{ Safe-Inferred>j  None fficxx-runtime5function pointer parameter A(B,C,..) in std::function A(B,C,..)fficxx-runtimetemplate parameter: A,B,.. in T A,B..fficxx-runtimePrimitive C type like int, double should be treated differently than Non-primitive type. The primitive type detection is not yet automatic. So we manually mark template instantiation with this boolean parameter.fficxx-runtimefficxx-runtimefficxx-runtimefficxx-runtimefficxx-runtimefficxx-runtime utility function for converting  to '_'NoneZ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~)fficxx-runtime-0.6-1ZcS5wPo48DJYC85rVTP2OFFICXX.Runtime.CastFFICXX.Runtime.CodeGen.Cxx FFICXX.Runtime.Function.TemplateFFICXX.Runtime.THFFICXX.Runtime.Function.THIsCTypeFunPtrWrappable FunPtrHsType FunPtrType FunPtrWrappedfptrWrapwrapFPtrRawget_fptrcast_fptr_to_objCastablecastuncast IsRawType xformnullxform0xform1xform2xform3xform4xform5xform6xform7xform8xform9xform10xform11$fCastable[]Ptr$fCastableByteStringPtr$fCastable[]Ptr0$fCastable[]Ptr1$fCastableDoubleCDouble$fCastableWord8CChar$fCastableWordCUInt$fCastableInt8CChar$fCastableInt16CShort$fCastableIntCInt$fCastablePtrPtr$fCastablePtrPtr0$fCastablePtrPtr1$fCastablePtrPtr2$fCastablePtrPtr3$fCastablePtrPtr4$fCastablePtrPtr5$fCastablePtrPtr6$fCastableWord64Word64$fCastableWord32Word32$fCastableWord16Word16$fCastableWord8Word8$fCastableInt64Int64$fCastableInt32Int32$fCastableInt16Int16$fCastableInt8Int8$fCastableCWcharCWchar$fCastableCUShortCUShort$fCastableCUSecondsCUSeconds$fCastableCULongCULong$fCastableCULLongCULLong$fCastableCUIntPtrCUIntPtr$fCastableCUIntMaxCUIntMax$fCastableCUIntCUInt$fCastableCUCharCUChar$fCastableCTimeCTime$fCastableCSizeCSize$fCastableCSigAtomicCSigAtomic$fCastableCShortCShort$fCastableCSUSecondsCSUSeconds$fCastableCSCharCSChar$fCastableCPtrdiffCPtrdiff$fCastableCLongCLong$fCastableCLLongCLLong$fCastableCJmpBufCJmpBuf$fCastableCIntPtrCIntPtr$fCastableCIntMaxCIntMax$fCastableCIntCInt$fCastableCFposCFpos$fCastableCFloatCFloat$fCastableCFileCFile$fCastableCDoubleCDouble$fCastableCClockCClock$fCastableCCharCChar$fCastableCBoolCBool$fCastable()()$fIsCTypeWord64$fIsCTypeWord32$fIsCTypeWord16$fIsCTypeWord8$fIsCTypeInt64$fIsCTypeInt32$fIsCTypeInt16 $fIsCTypeInt8 $fIsCTypePtr$fIsCTypeCWchar$fIsCTypeCUShort$fIsCTypeCUSeconds$fIsCTypeCULong$fIsCTypeCULLong$fIsCTypeCUIntPtr$fIsCTypeCUIntMax$fIsCTypeCUInt$fIsCTypeCUChar$fIsCTypeCTime$fIsCTypeCSize$fIsCTypeCSigAtomic$fIsCTypeCShort$fIsCTypeCSUSeconds$fIsCTypeCSChar$fIsCTypeCPtrdiff$fIsCTypeCLong$fIsCTypeCLLong$fIsCTypeCJmpBuf$fIsCTypeCIntPtr$fIsCTypeCIntMax $fIsCTypeCInt$fIsCTypeCFpos$fIsCTypeCFloat$fIsCTypeCFile$fIsCTypeCDouble$fIsCTypeCClock$fIsCTypeCChar$fIsCTypeCBoolCBlockExternCCMacroCRegularIncludePragmaUndefDefine EmptyLineVerbatim CStatementUsingNamespaceTypeDefCExpSA CDeclaration CDefinitionCInitCReturnCDelete CMacroAppCExternComment CEmptyLine CVerbatimCQualInlineCVarDeclCFunDeclCExpCVarCAppCTAppCBinOpCCastCAddrCStarCNewCTNewCTNewI CEMacroApp CEVerbatimCNullCOpCArrowCAssignCTypeCTVoidCTSimpleCTStarCTAutoCTTAppCTConstCTScoped CTVerbatimCNameNamePart PragmaParamOnce NamespaceNS unNamespace HeaderNameHdrName unHdrNamesname renderCName renderCOprenderPragmaParam renderCType renderCExp renderCQual renderCFDecl renderCVDecl renderCStmtrenderCStmtInMacro renderCMacro renderBlock$fIsStringHeaderName$fIsStringNamespace$fShowNamespace $fEqNamespace$fOrdNamespace$fHashableHeaderName$fShowHeaderName$fEqHeaderName$fOrdHeaderName FunPtrWrapper wrapFunPtr IFunction newFunctioncalldeleteFunctionFunction RawFunction$fCastableFunPtrFunPtr$fCastableFunctionPtr$fFPtrFunctionFunctionParamInfoFPInfofpinfoCxxArgTypesfpinfoCxxRetTypefpinfoCxxHeadersfpinfoCxxNamespaces fpinfoSuffixTemplateParamInfoTPInfo tpinfoCxxTypetpinfoCxxHeaderstpinfoCxxNamespaces tpinfoSuffix IsCPrimitiveCPrimNonCPrimcon mkInstancemkTFuncmkMembermkNewmkDeletedot2_$fShowFunctionParamInfo$fShowTemplateParamInfo$fShowIsCPrimitive mkWrapper t_newFunctiont_callt_deleteFunctiongenFunctionInstanceForbaseGHC.Base.