1 #include <Config/Parser.oh>
2 #include <Object.oh>
3 #include <LongStrings.oh>
4 #include <OS/Path.oh>
5 #include <XML/UnicodeCodec/Latin1.oh>
6 static void Config_Parser__InitBuilder(Config_Parser__Builder b);
7 static Config_Parser__Builder Config_Parser__NewBuilder(void);
8 static void Config_Parser__InitNode(Config_Parser__Node node, Config_Parser__Element parent, XML_Locator__Locator l, struct XML_Locator__Position *pos, RT0__Struct pos__tag);
9 static void Config_Parser__InitElement(Config_Parser__Element e, Config_Parser__Element parent, struct XML_Locator__Position *pos, RT0__Struct pos__tag, XML_UnicodeBuffer__CharArray name, XML_Builder__AttributeList attrList);
10 static Config_Parser__Element Config_Parser__NewElement(Config_Parser__Element parent, struct XML_Locator__Position *pos, RT0__Struct pos__tag, XML_UnicodeBuffer__CharArray name, XML_Builder__AttributeList attrList);
11 static void Config_Parser__InitCharData(Config_Parser__CharData charData, Config_Parser__Element parent, XML_Locator__Locator l, XML_UnicodeBuffer__CharArray str);
12 static Config_Parser__CharData Config_Parser__NewCharData(Config_Parser__Element parent, XML_Locator__Locator l, XML_UnicodeBuffer__CharArray str);
13 
14 /* run-time meta data */
15 static RT0__ModuleDesc _mid;
16 RT0__StructDesc _td_Config_Parser__String = { (RT0__Struct[]){&RT0__longchar}, NULL, NULL, &_mid, (OOC_CHAR8*)"String", 2, 1, (1<<RT0__flagAtomic), RT0__strOpenArray };
17 RT0__StructDesc _td_Config_Parser__Element = { (RT0__Struct[]){&_td_Config_Parser__ElementDesc}, NULL, NULL, &_mid, (OOC_CHAR8*)"Element", 8, -1, 0, RT0__strPointer };
18 RT0__StructDesc _td_Config_Parser__Node = { (RT0__Struct[]){&_td_Config_Parser__NodeDesc}, NULL, NULL, &_mid, (OOC_CHAR8*)"Node", 8, -1, 0, RT0__strPointer };
19 RT0__StructDesc _td_Config_Parser__NodeDesc = { (RT0__Struct[]){&_td_Config_Parser__NodeDesc}, (void*[]){(void*)Config_Parser__NodeDesc_IsWhitespace,(void*)Config_Parser__NodeDesc_HasNoElementContent,(void*)Config_Parser__NodeDesc_IsEmpty,(void*)Config_Parser__NodeDesc_GetCharDataContent}, NULL, &_mid, (OOC_CHAR8*)"NodeDesc", 48, 0, 0, RT0__strRecord };
20 RT0__StructDesc _td_Config_Parser__CharData = { (RT0__Struct[]){&_td_Config_Parser__CharDataDesc}, NULL, NULL, &_mid, (OOC_CHAR8*)"CharData", 8, -1, 0, RT0__strPointer };
21 RT0__StructDesc _td_Config_Parser__CharDataDesc = { (RT0__Struct[]){&_td_Config_Parser__NodeDesc,&_td_Config_Parser__CharDataDesc}, (void*[]){(void*)Config_Parser__NodeDesc_IsWhitespace,(void*)Config_Parser__NodeDesc_HasNoElementContent,(void*)Config_Parser__NodeDesc_IsEmpty,(void*)Config_Parser__NodeDesc_GetCharDataContent}, NULL, &_mid, (OOC_CHAR8*)"CharDataDesc", 56, 1, 0, RT0__strRecord };
22 RT0__StructDesc _td_Config_Parser__ElementDesc = { (RT0__Struct[]){&_td_Config_Parser__NodeDesc,&_td_Config_Parser__ElementDesc}, (void*[]){(void*)Config_Parser__NodeDesc_IsWhitespace,(void*)Config_Parser__NodeDesc_HasNoElementContent,(void*)Config_Parser__NodeDesc_IsEmpty,(void*)Config_Parser__NodeDesc_GetCharDataContent}, NULL, &_mid, (OOC_CHAR8*)"ElementDesc", 80, 1, 0, RT0__strRecord };
23 RT0__StructDesc _td_Config_Parser__Builder = { (RT0__Struct[]){&_td_Config_Parser__BuilderDesc}, NULL, NULL, &_mid, (OOC_CHAR8*)"Builder", 8, -1, 0, RT0__strPointer };
24 RT0__StructDesc _td_Config_Parser__BuilderDesc = { (RT0__Struct[]){&_td_XML_Builder__BuilderDesc,&_td_Config_Parser__BuilderDesc}, (void*[]){(void*)Config_Parser__BuilderDesc_SetLocator,(void*)Config_Parser__BuilderDesc_SetErrorListener,(void*)XML_Builder__BuilderDesc_StartDocument,(void*)XML_Builder__BuilderDesc_EndDocument,(void*)XML_Builder__BuilderDesc_StartDTD,(void*)XML_Builder__BuilderDesc_EndDTD,(void*)Config_Parser__BuilderDesc_StartElement,(void*)Config_Parser__BuilderDesc_EndElement,(void*)Config_Parser__BuilderDesc_Attribute,(void*)XML_Builder__BuilderDesc_NamespaceDeclaration,(void*)Config_Parser__BuilderDesc_AttributesDone,(void*)XML_Builder__BuilderDesc_SkippedEntity,(void*)Config_Parser__BuilderDesc_Characters,(void*)XML_Builder__BuilderDesc_StartCDATA,(void*)XML_Builder__BuilderDesc_EndCDATA,(void*)XML_Builder__BuilderDesc_StartEntity,(void*)XML_Builder__BuilderDesc_EndEntity,(void*)XML_Builder__BuilderDesc_EntityDecl,(void*)XML_Builder__BuilderDesc_Notation,(void*)XML_Builder__BuilderDesc_ProcessingInstruction,(void*)XML_Builder__BuilderDesc_Comment}, NULL, &_mid, (OOC_CHAR8*)"BuilderDesc", 80, 1, 0, RT0__strRecord };
25 RT0__StructDesc _td_Config_Parser__Parser = { (RT0__Struct[]){&_td_Config_Parser__ParserDesc}, NULL, NULL, &_mid, (OOC_CHAR8*)"Parser", 8, -1, 0, RT0__strPointer };
26 RT0__StructDesc _td_Config_Parser__ParserDesc = { (RT0__Struct[]){&_td_Config_Parser__ParserDesc}, (void*[]){(void*)Config_Parser__ParserDesc_ParseDocument}, NULL, &_mid, (OOC_CHAR8*)"ParserDesc", 40, 0, 0, RT0__strRecord };
27 RT0__StructDesc _td_Config_Parser__Resolver = { (RT0__Struct[]){&_td_Config_Parser__ResolverDesc}, NULL, NULL, &_mid, (OOC_CHAR8*)"Resolver", 8, -1, 0, RT0__strPointer };
28 RT0__StructDesc _td_Config_Parser__ResolverDesc = { (RT0__Struct[]){&_td_XML_EntityResolver__ResolverDesc,&_td_Config_Parser__ResolverDesc}, (void*[]){(void*)XML_EntityResolver__ResolverDesc_GetURI}, NULL, &_mid, (OOC_CHAR8*)"ResolverDesc", 0, 1, (1<<RT0__flagAtomic), RT0__strRecord };
29 static RT0__ModuleDesc _mid = { (OOC_CHAR8*)"Config:Parser", (RT0__Struct[]) { &_td_Config_Parser__String, &_td_Config_Parser__Element, &_td_Config_Parser__Node, &_td_Config_Parser__NodeDesc, &_td_Config_Parser__CharData, &_td_Config_Parser__CharDataDesc, &_td_Config_Parser__ElementDesc, &_td_Config_Parser__Builder, &_td_Config_Parser__BuilderDesc, &_td_Config_Parser__Parser, &_td_Config_Parser__ParserDesc, &_td_Config_Parser__Resolver, &_td_Config_Parser__ResolverDesc, NULL }, 0 };
30 
OOC_Config_Parser_open(RT0__Module client)31 extern void OOC_Config_Parser_open(RT0__Module client) {
32   if (_mid.openCount == 0) {
33     OOC_Object_open(&_mid);
34     OOC_IO_open(&_mid);
35     OOC_LongStrings_open(&_mid);
36     OOC_OS_Path_open(&_mid);
37     OOC_XML_EntityResolver_open(&_mid);
38     OOC_XML_Builder_open(&_mid);
39     OOC_XML_DTD_open(&_mid);
40     OOC_XML_Error_open(&_mid);
41     OOC_XML_Locator_open(&_mid);
42     OOC_XML_Parser_open(&_mid);
43     OOC_XML_UnicodeCodec_Latin1_open(&_mid);
44     OOC_RT0_open(&_mid);
45     OOC_Object_open(&_mid);
46     OOC_Exception_open(&_mid);
47 
48     RT0__RegisterModule(&_mid);
49     OOC_Config_Parser_init();
50   }
51   _mid.openCount++;
52 }
OOC_Config_Parser_close(RT0__Module client)53 extern void OOC_Config_Parser_close(RT0__Module client) {
54   _mid.openCount--;
55   if (_mid.openCount == 0) {
56     OOC_Config_Parser_destroy();
57     RT0__UnregisterModule(&_mid);
58 
59     OOC_Object_close(&_mid);
60     OOC_IO_close(&_mid);
61     OOC_LongStrings_close(&_mid);
62     OOC_OS_Path_close(&_mid);
63     OOC_XML_EntityResolver_close(&_mid);
64     OOC_XML_Builder_close(&_mid);
65     OOC_XML_DTD_close(&_mid);
66     OOC_XML_Error_close(&_mid);
67     OOC_XML_Locator_close(&_mid);
68     OOC_XML_Parser_close(&_mid);
69     OOC_XML_UnicodeCodec_Latin1_close(&_mid);
70     OOC_RT0_close(&_mid);
71     OOC_Object_close(&_mid);
72     OOC_Exception_close(&_mid);
73   }
74 }
75 
76 /* --- */
77