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