1 /** Generated by xsd2c */
2 #include <stdio.h>
3 #include <string.h>
4 #include <stdlib.h>
5 #include "Enumeration.h"
6
7
Enumeration_Create()8 struct Enumeration* Enumeration_Create()
9 {
10 struct Enumeration* _res;
11 _res = (struct Enumeration*)malloc(sizeof(struct Enumeration));
12
13 _res->value_head = NULL;
14 _res->value_tail = NULL;
15
16 return _res;
17 }
18
Enumeration_Free(struct Enumeration * obj)19 void Enumeration_Free(struct Enumeration* obj)
20 {
21 struct Enumeration_value_List* value_cur;
22 struct Enumeration_value_List* value_tmp;
23 if (obj == NULL) return;
24
25 value_cur = obj->value_head;
26 while (value_cur != NULL)
27 {
28 if (value_cur->value) free(value_cur->value);
29 value_tmp = value_cur->next;
30 free(value_cur);
31 value_cur = value_tmp;
32 }
33 free(obj);
34 }
35
Enumeration_Sax_Serialize(struct Enumeration * obj,const char * root_element_name,void (* OnStartElement)(const char * element_name,int attr_count,char ** keys,char ** values,void * userData),void (* OnCharacters)(const char * element_name,const char * chars,void * userData),void (* OnEndElement)(const char * element_name,void * userData),void * userData)36 void Enumeration_Sax_Serialize(struct Enumeration* obj,
37 const char *root_element_name,
38 void (*OnStartElement)(const char* element_name, int attr_count, char **keys, char **values, void* userData),
39 void (*OnCharacters)(const char* element_name, const char* chars, void* userData),
40 void (*OnEndElement)(const char* element_name, void* userData),
41 void* userData)
42 {
43 int attrCount, curCount;
44 char **keys;
45 char **values;
46 char buffer[255];
47
48 struct Enumeration_value_List* value_cur;
49
50 attrCount = 0;
51
52 keys = (char**)malloc(sizeof(char*)*attrCount);
53 values = (char**)malloc(sizeof(char*)*attrCount);
54
55 curCount = 0;
56
57
58 OnStartElement(root_element_name, attrCount, keys, values, userData);
59 value_cur = obj->value_head;
60 while (value_cur != NULL)
61 {
62
63 OnStartElement("value", 0, NULL, NULL, userData);
64 if (value_cur->value != NULL)
65 OnCharacters("value", value_cur->value, userData);
66 OnEndElement("value", userData);
67 value_cur = value_cur->next;
68 }
69
70 OnEndElement(root_element_name, userData);
71 }
72
73 #ifndef _DESERIALIZER_DISABLED_
74
Enumeration_Deserialize(xmlNodePtr xmlRoot)75 struct Enumeration* Enumeration_Deserialize(xmlNodePtr xmlRoot)
76 {
77 xmlNodePtr cur;
78 xmlChar *key;
79 struct Enumeration* obj;
80 obj = Enumeration_Create();
81 cur = xmlRoot->xmlChildrenNode;
82 while (cur != NULL) {
83 if (cur->type != XML_ELEMENT_NODE) {
84 cur = cur->next;
85 continue;
86 }
87 if ((!xmlStrcmp(cur->name, (const xmlChar *)"value"))){
88 key = xmlNodeListGetString(cur->doc, cur->xmlChildrenNode, 1);
89 Enumeration_Add_value(obj, (const char*)key);
90 /* xmlFree(key);*/
91 }
92 // TODO:
93 cur = cur->next;
94 }
95 return obj;
96 }
97
98 #endif
Enumeration_Get_value(struct Enumeration * obj)99 struct Enumeration_value_List* Enumeration_Get_value(struct Enumeration* obj)
100 {
101 return obj->value_head;
102 }
103
Enumeration_Add_value(struct Enumeration * obj,const char * value)104 void Enumeration_Add_value(struct Enumeration* obj, const char* value)
105 {
106 struct Enumeration_value_List* value_node;
107 value_node = (struct Enumeration_value_List*)malloc(sizeof(struct Enumeration_value_List));
108 value_node->value = (char*)malloc(strlen(value)+1);
109 strcpy(value_node->value, value);
110 value_node->next = NULL;
111 if (obj->value_tail)
112 {
113 obj->value_tail->next = value_node;
114 }
115 if (obj->value_head == NULL)
116 {
117 obj->value_head = value_node;
118 }
119 obj->value_tail = value_node;
120 }
121
122