úÎIè7ó±      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°(c) Matthew Peddie 2014BSD3mpeddie@gmail.com experimentalGHCNone+0G?Top-level configuration value, corresponding to the libconfig config_t'. Wrapped opaquely for pointer-safety.Corresponds to a  libconfig config_setting_t- value; wrapped opaquely for pointer safety.lThis is used for fine-grained configuration of how integers are output when a config file is written. See U and the  libconfig manual.5This is a set of possible errors that can occur when  libconfig! tries to read in a config file.Tells whether a   value is a collection ( ,   or ).isCollectionType GroupTypeTrueisCollectionType BoolTypeFalseTells whether a  , value is a scalar (i.e. not a collection).isScalarType FloatTypeTrueisScalarType ListTypeFalseNote:isScalarType NoneTypeTrueThis function allocates a new  and initializes it. libconfig manages storage for all  objects via the  , so if a 4 goes out of scope, GHC may get rid of it, and any J objects may become invalid. This function can be used to ensure that a 8 doesn't get automatically garbage-collected too early. Read in a - from the specified configuration file. The % should already be initialized with . Create a new = and read in the data from the specified configuration file. 7> configNew s = configInit >>= \c -> configReadFile c s Write out a % to the specified configuration file.&Read configuration data from a string. AJust appwinwidth <- configLookup conf "application.window.size.w"configSettingGetInt appwinwidth640!>Just miscbigint <- configLookup conf "application.misc.bigint" configSettingGetInt64 miscbigint9223372036854775807"6Just miscpi <- configLookup conf "application.misc.pi"configSettingGetFloat miscpi 3.141592654#=Just listbool <- configLookup conf "application.list.[0].[2]"configSettingGetBool listboolTrue$=Just wintitle <- configLookup conf "application.window.title"configSettingGetString wintitle"My Application"%"configSettingLookupInt winsize "w"Just 640&&configSettingLookupInt64 misc "bigint"Just 9223372036854775807'"configSettingLookupFloat misc "pi"Just 3.141592654(c(The example configuration file does not contain any boolean values that are direct children of a config_setting_t.)))Just win <- configLookupFrom app "window"%configSettingLookupString win "title"Just "My Application"*BJust treasureqty <- configLookup conf' "application.books.[0].qty"#configSettingSetInt treasureqty 222Just ()configSettingGetInt treasureqty222+?Just miscbigint <- configLookup conf' "application.misc.bigint"2configSettingSetInt64 miscbigint 92233720368547758Just () configSettingGetInt64 miscbigint92233720368547758,FJust treasureprice <- configLookup conf' "application.books.[0].price")configSettingSetFloat treasureprice 22.22Just ()#configSettingGetFloat treasureprice22.22->Just listbool <- configLookup conf' "application.list.[0].[2]"#configSettingSetBool listbool FalseJust ()configSettingGetBool listboolFalse.HJust treasureauthor <- configLookup conf' "application.books.[0].author";configSettingSetString treasureauthor "Robert L. Stevenson"Just ()%configSettingGetString treasureauthor"Robert L. Stevenson"/:Just treasure <- configLookup conf "application.books.[0]""configSettingGetIntElem treasure 3501Just misc <- configLookup conf "application.misc" configSettingGetInt64Elem misc 1922337203685477580711Just list <- configLookup conf "application.list" configSettingGetFloatElem list 11.2342q(The example configuration does not contain any boolean values that are direct children of collections of type config_setting_t).32Just win <- configLookup conf "application.window" configSettingGetStringElem win 0"My Application"4*(This example appends a new value of type  to application.listR, because the example file contains no suitable example values for us to modify.)2Just list <- configLookup conf' "application.list"1Just new3 <- configSettingSetIntElem list (-1) 22configSettingGetIntElem list 322configSettingGetInt new3225*(This example appends a new value of type  to application.listR, because the example file contains no suitable example values for us to modify.)2Just list <- configLookup conf' "application.list"BJust new3 <- configSettingSetInt64Elem list (-1) 92233720368547758 configSettingGetInt64Elem list 392233720368547758configSettingGetInt64 new39223372036854775862Just list <- configLookup conf' "application.list"4Just new1 <- configSettingSetFloatElem list 1 0.2222 configSettingGetFloatElem list 10.2222configSettingGetFloat new10.22227*(This example appends a new value of type   to application.listR, because the example file contains no suitable example values for us to modify.)2Just list <- configLookup conf' "application.list"5Just new3 <- configSettingSetBoolElem list (-1) FalseconfigSettingGetBoolElem list 3FalseconfigSettingGetBool new3False8>Just misccols <- configLookup conf' "application.misc.columns":Just new0 <- configSettingSetStringElem misccols 0 "butts"%configSettingGetStringElem misccols 0"butts"configSettingGetString new0"butts"9=Just col0 <- configLookup conf "application.misc.columns.[0]"configSettingIndex col00:9Just cols <- configLookup conf "application.misc.columns"configSettingLength cols3;9Just cols <- configLookup conf "application.misc.columns"(Just col0 <- configSettingGetElem cols 0configSettingGetString col0 "Last Name"</Just miscpi <- configSettingGetMember misc "pi"configSettingGetFloat miscpi 3.141592654=3Just misc' <- configLookup conf' "application.misc"=Just randSeed <- configSettingAdd misc' "random_seed" IntTypeconfigSettingSetInt randSeed 55Just ()configSettingGetInt randSeed55*configSettingLookupInt misc' "random_seed"Just 55configSettingGetIntElem misc' 455>3Just misc' <- configLookup conf' "application.misc"configSettingLength misc'4#configSettingRemove misc' "bitmask"Just ()configSettingLength misc'3?3Just misc' <- configLookup conf' "application.misc"configSettingLength misc'4configSettingRemoveElem misc' 2Just ()configSettingLength misc'3)Just new2 <- configSettingGetElem misc' 2configSettingType new2IntTypeconfigSettingGetInt new28131@+Just app <- configLookup conf "application"configSettingName appJust "application"A(Just list <- configLookupFrom app "list"configSettingName list Just "list"BAJust appwinwidth <- configLookup conf "application.window.size.w""configSettingGetFormat appwinwidth DefaultFormatCCJust appwinwidth' <- configLookup conf' "application.window.size.w"#configSettingGetFormat appwinwidth' DefaultFormat-configSettingSetFormat appwinwidth' HexFormatJust ()#configSettingGetFormat appwinwidth' HexFormatD0configLookupInt conf "application.window.size.w"Just 640E0configLookupInt64 conf "application.misc.bigint"Just 9223372036854775807F,configLookupFloat conf "application.misc.pi"Just 3.141592654G0configLookupBool conf "application.list.[0].[2]" Just TrueH2configLookupString conf "application.window.title"Just "My Application"I1Just list <- configLookup conf "application.list"configSettingType listListTypeJ2Just grp <- configLookup conf "application.window"configSettingIsGroup grpTrueK8Just arr <- configLookup conf "application.misc.columns"configSettingIsArray arrTrueL1Just list <- configLookup conf "application.list"configSettingIsList listTrueM2Just grp <- configLookup conf "application.window"8Just arr <- configLookup conf "application.misc.columns"1Just list <- configLookup conf "application.list";Just width <- configLookup conf "application.window.size.w"5mapM configSettingIsAggregate [grp, arr, list, width][True,True,True,False]N8Just int <- configLookup conf "application.window.pos.x":Just bigint <- configLookup conf "application.misc.bigint"5Just float <- configLookup conf "application.misc.pi"2Just grp <- configLookup conf "application.window"4mapM configSettingIsNumber [int, bigint, float, grp][True,True,True,False]O8Just int <- configLookup conf "application.window.pos.x":Just bigint <- configLookup conf "application.misc.bigint"5Just float <- configLookup conf "application.misc.pi"9Just bool <- configLookup conf "application.list.[0].[2]"8Just str <- configLookup conf "application.window.title"2Just grp <- configLookup conf "application.window"?mapM configSettingIsScalar [int, bigint, float, bool, str, grp] [True,True,True,True,True,False]P1Just list <- configLookup conf "application.list"configSettingName list Just "list"6Just list1 <- configLookup conf "application.list.[0]"configSettingName list1NothingQ1Just list <- configLookup conf "application.list"$Just app <- configSettingParent listconfigSettingName appJust "application"RconfigSettingIsRoot appFalse#Just root <- configRootSetting confconfigSettingIsRoot rootTrueS#Just root <- configRootSetting conf5Just version <- configSettingGetMember root "version"configSettingGetString version"1.0"TconfigGetDefaultFormat conf' DefaultFormat&configSetDefaultFormat conf' HexFormatconfigGetDefaultFormat conf' HexFormatUconfigGetDefaultFormat conf DefaultFormatVconfigGetTabWidth conf'2configSetTabWidth conf' 8configGetTabWidth conf'8WconfigGetTabWidth conf2XconfigSettingSourceLine app5YconfigSettingSourceFile app"test/test.conf"±This is a set of possible  libconfig% types. Many functions will return ²@ if you attempt to use a value as the incorrect type. See the  libconfig manual for more details.Ô³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßà áâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$ !"#$%&'()*+,-./0123456789:;<=>?@A%&'()BCDEFGHIJKLMNOPQRSTUVWXYZ[\]*+,±Y  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]Y   %&'() !"#$*+,-./012345678@ADEFGH9:;<=>?PQRSXYUTBCWVZ[\]IJLKMNO ³´µ ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅ ÆÇÈÉÊËÌÍÎÏÐÖÕÔÓÒÑרÙÚÛÜÝÞàß   áâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$ !"#$%&'()*+,-./0123456789:;<=>?@A%&'()BCDEFGHIJKLMNOPQRSTUVWXYZ[\]*+,±(c) Matthew Peddie 2014BSD3mpeddie@gmail.com experimentalGHCNone+0^ libconfig ^ s are like _$s, except that each element in the ^ is a n2 with its own unique name, not just an unlabeled i._ libconfig _s can contain any number of is.` libconfig `s can contain any number of aš values. These values must be of the same type. This is currently not enforced by the data structure, and violating it may lead to failures to encode.a A libconfig aN value is a boolean value, a string or one of an assortment of numeric types.i A libconfig i is either a a# value or some type of collection.nA  libconfig n is a name-value pair,  name := value.pA  libconfig pH is a string of restricted form. It must match the regular expression [A-Za-z*][-A-Za-z0-9_*]*.q Convert a  string to a p.textToName "robert" Just "robert"textToName "Obi-wan"Just "Obi-wan"DIf the given string does not match the restrictions on the form of ps, then ² is returned. textToName ""NothingtextToName "0bi-wan"Nothingr Convert a p to %let Just robert = textToName "robert"nameToText robert"robert"sGet out the name of a ntGet out the value of a nu"isScalar $ Scalar (String "butts")True!isScalar $ Array [String "butts"]Falsev isCollection = not . isScalar&isCollection $ Scalar (String "butts")False%isCollection $ Array [String "butts"]Truew isArray $ Array [String "butts"]True(isArray $ List [Scalar $ String "butts"]FalsexisList $ Array [String "butts"]False'isList $ List [Scalar $ String "butts"]Truey isGroup $ Array [String "butts"]False#let Just asset = textToName "asset"2isGroup $ Group [asset := Scalar (String "butts")]TruezisBoolean $ Boolean TrueTrueisBoolean $ Float 22.22False{isInteger $ Integer 19TrueisInteger $ Float 22.22False|#isInteger64 $ Integer64 22222222222TrueisInteger64 $ Float 22.22False}isHex $ Hex 0x13TrueisHex $ Float 22.22False~isHex64 $ Hex64 0x52c8c338eTrueisHex64 $ Float 22.22FalseisFloat $ Float 22.22TrueisFloat $ Integer 19False€isString $ String "BUTTS"TrueisString $ Float 22.22False7^_`abcdefghijklmnop-.qrstuvwxyz{|}~€/0123456789:;<=>?@(^_`abcdefghijklmnopqrstuvwxyz{|}~€(prqnostimlkjuvwyxahgfedcbz{|}~€`_^)^_`ahgfedcbimlkjnop-.qrstuvwxyz{|}~€/0123456789:;<=>?@o(c) Matthew Peddie 2014BSD3mpeddie@gmail.com experimentalGHCNone+0 1Any of these problems can occur while decoding a  libconfig .„!The file in which parsing failed…-The line of the file on which parsing failed† libconfig&'s description of the parsing failureˆFailed to get a child of this ‰'This was the index we tried to look upŒ'This setting had no name but was in a ^.DNo root setting was found (possibly this configuration is invalid?)ŽConvert a native  into a top-level ^ of ns.)Just conf <- C.configNew "test/test.conf" decode confÿ¬Right ["version" := Scalar (String "1.0"),"application" := Group ["window" := Group ["title" := Scalar (String "My Application"),"size" := Group ["w" := Scalar (Integer 640),"h" := Scalar (Integer 480)],"pos" := Group ["x" := Scalar (Integer 350),"y" := Scalar (Integer 250)]],"list" := List [List [Scalar (String "abc"),Scalar (Integer 123),Scalar (Boolean True)],Scalar (Float 1.234),List []],"books" := List [Group ["title" := Scalar (String "Treasure Island"),"author" := Scalar (String "Robert Louis Stevenson"),"price" := Scalar (Float 29.95),"qty" := Scalar (Integer 5)],Group ["title" := Scalar (String "Snow Crash"),"author" := Scalar (String "Neal Stephenson"),"price" := Scalar (Float 9.99),"qty" := Scalar (Integer 8)]],"misc" := Group ["pi" := Scalar (Float 3.141592654),"bigint" := Scalar (Integer64 9223372036854775807),"columns" := Array [String "Last Name",String "First Name",String "MI"],"bitmask" := Scalar (Hex 8131)]]]^Load the libconfig configuration file at the given path and try to convert it to a top-level ^ of ns.decodeFrom "test/test.conf"ÿ¬Right ["version" := Scalar (String "1.0"),"application" := Group ["window" := Group ["title" := Scalar (String "My Application"),"size" := Group ["w" := Scalar (Integer 640),"h" := Scalar (Integer 480)],"pos" := Group ["x" := Scalar (Integer 350),"y" := Scalar (Integer 250)]],"list" := List [List [Scalar (String "abc"),Scalar (Integer 123),Scalar (Boolean True)],Scalar (Float 1.234),List []],"books" := List [Group ["title" := Scalar (String "Treasure Island"),"author" := Scalar (String "Robert Louis Stevenson"),"price" := Scalar (Float 29.95),"qty" := Scalar (Integer 5)],Group ["title" := Scalar (String "Snow Crash"),"author" := Scalar (String "Neal Stephenson"),"price" := Scalar (Float 9.99),"qty" := Scalar (Integer 8)]],"misc" := Group ["pi" := Scalar (Float 3.141592654),"bigint" := Scalar (Integer64 9223372036854775807),"columns" := Array [String "Last Name",String "First Name",String "MI"],"bitmask" := Scalar (Hex 8131)]]]A‚ƒ„…†‡ˆ‰Š‹ŒBCDEFGHIJKLMNŽO‚ƒ„…†‡ˆ‰Š‹ŒŽދЇƒ‚ŒŒˆ‰„…†„A‹Š‡ƒ‚ŒŒˆ‰„…†„BCDEFGHIJKLMNŽO(c) Matthew Peddie 2014BSD3mpeddie@gmail.com experimentalGHCNone+0 1Any of these problems can occur while encoding a  libconfig .’ This is the index of the element–Failed to create a new —-This was the value we were making a spot for™Failed to open this file›JThe Haskell structure contained invalid libconfig types for this setting.œENo root setting was found (possibly this configuration is invalid?)Convert a top-level ^ of ns into a native . This allocates a new .Right conf <- encode test5C.configWriteFile conf "/tmp/encode_output_test.conf"Just ():Just newconf <- C.configNew "/tmp/encode_output_test.conf"žConvert a top-level ^ of nNs into a native libconfig structure and output it to the specified file path..encodeTo test "/tmp/encode_output_test_2.conf"Right ()<Just newconf <- C.configNew "/tmp/encode_output_test_2.conf"ŸEncode a top-level ^ of n#s and write them to the specified . Set the value of the given  to the provided i (recursively). If this E is of a collection type, any pre-existing children will be removed.¡ Compute the   of a i#valueType (Scalar (String "butts")) StringType"valueType (Array [String "butts"]) ArrayType¢ Compute the   of a ascalarType (String "butts") StringTypescalarType (Boolean False)BoolTypeP‘’“”•–—˜™š›œQRSTUVWžŸXY ¡¢Z[‘’“”•–—˜™š›œžŸ ¡¢Ÿ žœš˜•”“‘›™–—››—–’—¡¢Pœš˜•”“‘›™–—››—–’—QRSTUVWžŸXY ¡¢Z[(c) Matthew Peddie 2014BSD3mpeddie@gmail.com experimentalGHCNoneHM£2(asset := Scalar (String "butts")) ^. settingValueScalar (String "butts")H(asset := Scalar (String "butts")) & settingValue .~ Scalar (Float 22.2)"asset" := Scalar (Float 22.2)¤1(asset := Scalar (String "butts")) ^. settingName"asset"#let Just shake = textToName "shake"9(asset := Scalar (String "butts")) & settingName .~ shake""shake" := Scalar (String "butts")¥ Here is a \% for accessing the string value of a p._nameText # asset"asset""butts" ^? _nameText Just "butts"!:t ("butts" :: Text) ^? _nameText,("butts" :: Text) ^? _nameText :: Maybe NameN.B.: ¥4 is partial in the opposite direction to the usual ]s for sum types (e.g. _Left, _Just6). This makes it a bit puzzling to compose. We use  re _nameText with view:@(asset := Scalar (String "butts")) ^. settingName . re _nameText"asset";I don't know how to get it to compose properly for setting.¦"Scalar (String "butts") ^? _ScalarJust (String "butts")P(asset := Scalar (String "butts")) & settingValue . _Scalar . _String .~ "money"""asset" := Scalar (String "money")_Scalar # String "butts"Scalar (String "butts")§ Array [String "butts"] ^? _ArrayJust [String "butts"]Y(asset := Array [String "butts"]) & settingValue . _Array . traverse . _String .~ "money"!"asset" := Array [String "money"]¨WGroup [asset := Scalar (String "butts"), price := Scalar (Float 22.2)] ^? _Group . ix 0)Just ("asset" := Scalar (String "butts"))„Group [asset := Scalar (String "butts"), price := Scalar (Float 22.2)] & _Group . traverse . settingValue . _Scalar . _Float %~ (*2)IGroup ["asset" := Scalar (String "butts"),"price" := Scalar (Float 44.4)]©CList [Scalar (String "butts"), Scalar (Float 22.2)] ^? _List . ix 0Just (Scalar (String "butts"))aList [Scalar (String "butts"), Scalar (Float 22.2)] & _List . traverse . _Scalar . _Float %~ (*2)2List [Scalar (String "butts"),Scalar (Float 44.4)]ªBoolean False ^? _Boolean Just False2Scalar (Boolean False) & _Scalar . _Boolean %~ notScalar (Boolean True)«Integer 22 ^? _IntegerJust 220Scalar (Integer 22) & _Scalar . _Integer %~ (*2)Scalar (Integer 44)¬"Integer64 2222222222 ^? _Integer64Just 2222222222<Scalar (Integer64 2222222222) & _Scalar . _Integer64 %~ (*2)Scalar (Integer64 4444444444)­Hex 22 ^? _HexJust 22(Scalar (Hex 22) & _Scalar . _Hex %~ (*2)Scalar (Hex 44)®Hex64 2222222222 ^? _Hex64Just 22222222224Scalar (Hex64 2222222222) & _Scalar . _Hex64 %~ (*2)Scalar (Hex64 4444444444)¯Float 22.22 ^? _Float Just 22.22/Scalar (Float 22.22) & _Scalar . _Float %~ (*2)Scalar (Float 44.44)°String "butts" ^? _String Just "butts"Float 22.22 ^? _StringNothingimport Data.Monoid ((<>))<Scalar (String "butts") & _Scalar . _String %~ ("hello " <>)Scalar (String "hello butts")\]^_£¤`¥¦§¨©ª«¬­®¯°£¤¥¦§¨©ª«¬­®¯°£¤¥¦§©¨ª«¬­®¯°\]^_£¤`¥¦§¨©ª«¬­®¯°(c) Matthew Peddie 2014BSD3mpeddie@gmail.com experimentalGHCNoneX^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°a       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstujklmvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘w’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÉÊËÌÍÎÏÐÑÒÓÔkÕÖרÙÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-w./0123456789:;<=>?@ABCDEFGHIJKL.MNOBP.QRSTUVWXYZ[\]^libconfig-0.3.0.0Language.Libconfig.TypesLanguage.Libconfig.BindingsLanguage.Libconfig.DecodeLanguage.Libconfig.EncodeLanguage.Libconfig.OpticsLanguage.LibconfigbaseGHC.IntInt32Int64GHC.WordWord32Word64 text-1.2.0.4Data.Text.InternalText ConfigurationSetting ConfigFormat HexFormat DefaultFormat ConfigTypeListType ArrayTypeBoolType StringType FloatType Int64TypeIntType GroupTypeNoneType ConfigErrConfigErrParseConfigErrFileIo ConfigErrNoneisCollectionType isScalarType configInittouchConfigurationconfigReadFile configNewconfigWriteFileconfigReadStringconfigSettingGetIntconfigSettingGetInt64configSettingGetFloatconfigSettingGetBoolconfigSettingGetStringconfigSettingLookupIntconfigSettingLookupInt64configSettingLookupFloatconfigSettingLookupBoolconfigSettingLookupStringconfigSettingSetIntconfigSettingSetInt64configSettingSetFloatconfigSettingSetBoolconfigSettingSetStringconfigSettingGetIntElemconfigSettingGetInt64ElemconfigSettingGetFloatElemconfigSettingGetBoolElemconfigSettingGetStringElemconfigSettingSetIntElemconfigSettingSetInt64ElemconfigSettingSetFloatElemconfigSettingSetBoolElemconfigSettingSetStringElemconfigSettingIndexconfigSettingLengthconfigSettingGetElemconfigSettingGetMemberconfigSettingAddconfigSettingRemoveconfigSettingRemoveElem configLookupconfigLookupFromconfigSettingGetFormatconfigSettingSetFormatconfigLookupIntconfigLookupInt64configLookupFloatconfigLookupBoolconfigLookupStringconfigSettingTypeconfigSettingIsGroupconfigSettingIsArrayconfigSettingIsListconfigSettingIsAggregateconfigSettingIsNumberconfigSettingIsScalarconfigSettingNameconfigSettingParentconfigSettingIsRootconfigRootSettingconfigSetDefaultFormatconfigGetDefaultFormatconfigSetTabWidthconfigGetTabWidthconfigSettingSourceLineconfigSettingSourceFileconfigErrorFileconfigErrorTextconfigErrorLineconfigErrorTypeGroupListArrayScalarStringFloatHex64Hex Integer64IntegerBooleanValue:=Name textToName nameToTextgetSettingNamegetSettingValueisScalar isCollectionisArrayisListisGroup isBoolean isInteger isInteger64isHexisHex64isFloatisString DecodeError FileInputParsedecodeErrFilename decodeErrLinedecodeErrDescriptionGetIndexdecodeErrParentdecodeErrIndexGetNonedecodeErrSetting DecoderRootdecode decodeFrom EncodeErrorSetIndexencodeErrIndexSetValueRemoveOldValue AddSettingencodeErrParentencodeErrValue FileOutputencodeErrFilename TypeMismatchencodeErrSetting EncoderRootencodeencodeToencodeAt encodeValue valueType scalarType settingValue settingName _nameText_Scalar_Array_Group_List_Boolean_Integer _Integer64_Hex_Hex64_Float_String$fEnumConfigErr Data.MaybeNothinggetConfigurationConfig root'Configdestructor'Config flags'Configtab_width'Configdefault_format'Configinclude_dir'Configerror_text'Configerror_file'Configerror_line'Configerror_type'Configfilenames'Confignum_filenames'Config getSettingSetting' name'Setting type'Settingformat'Setting value'Settingparent'Settingconfig'Setting hook'Setting line'Setting file'Setting ConfigValueNoneSValFValLLValIVal ConfigListlength'ConfigListelements'ConfigList ConfigPtr SettingPtr ConfigListPtr ConfigBool ConfigTrue ConfigFalseconfigSettingSetFormat'_configSettingGetFormat'_configLookupString''_configLookupBool''_configLookupFloat''_configLookupInt64''_configLookupInt''_configLookupFrom'_configLookup'_configSettingRemoveElem'_configSettingRemove'_configSettingAdd'_configSettingGetMember'_configSettingGetElem'_configSettingLength'_configSettingIndex'_configSettingSetStringElem'_configSettingSetBoolElem'_configSettingSetFloatElem'_configSettingSetInt64Elem'_configSettingSetIntElem'_configSettingGetStringElem'_configSettingGetBoolElem'_configSettingGetFloatElem'_configSettingGetInt64Elem'_configSettingGetIntElem'_configSettingSetString'_configSettingSetBool'_configSettingSetFloat'_configSettingSetInt64'_configSettingSetInt'_configSettingLookupString''_configSettingLookupBool''_configSettingLookupFloat''_configSettingLookupInt64''_configSettingLookupInt''_configSettingGetString'_configSettingGetBool'_configSettingGetFloat'_configSettingGetInt64'_configSettingGetInt'_configReadString'_configWriteFile'_configReadFile'_configDestroy' configInit'fromEnumIntegraltoEnumIntegralconfigValueTypepeekConfigValuepokeConfigValuewithConfigurationmodifyConfigurationonConfigurationcheckPtr checkSetting peekIntegral peekFloatpeekBool peekStringasBool checkBool checkTupleconfigSettingLookupInt'configSettingLookupInt64'configSettingLookupFloat'configSettingLookupBool'configSettingLookupString'configLookupInt'configLookupInt64'configLookupFloat'configLookupBool'configLookupString'$fStorableConfig$fStorableSetting'$fStorableConfigListgetName$fSerializeScalar$fSerializeValue$fSerializeSetting$fSerializeName$fBinaryScalar $fBinaryValue$fBinarySetting $fBinaryName$fNFDataScalar$fHashableScalar $fNFDataValue$fHashableValue$fNFDataSetting$fHashableSetting $fNFDataName$fHashableName $fReadName $fShowNameDecoderwithErrdecoderthrowcatchD textToNameErrtoScalartoListtoArraytoGrouptoValue addParent decodeSetting$fNFDataDecodeErrorEncoderaddTrace scalarSetaddValue addSettingsetValue checkType removeKids arrayCheck$fNFDataEncodeErrorPrism'PrismLens'Lensprism