From 5dee322ce245ef858b3d0e6591cdc19d76e4cb30 Mon Sep 17 00:00:00 2001 From: snowdrop Date: Thu, 3 Jun 2004 13:13:07 +0000 Subject: initial import --- wsdl2c/CallFunc.c | 160 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 wsdl2c/CallFunc.c (limited to 'wsdl2c/CallFunc.c') diff --git a/wsdl2c/CallFunc.c b/wsdl2c/CallFunc.c new file mode 100644 index 0000000..db13579 --- /dev/null +++ b/wsdl2c/CallFunc.c @@ -0,0 +1,160 @@ +/** Generated by xsd2c */ +#include +#include +#include +#include "CallFunc.h" + + +struct CallFunc* CallFunc_Create() +{ + struct CallFunc* _res; + _res = (struct CallFunc*)malloc(sizeof(struct CallFunc)); + + _res->name = NULL; + _res->in_head = NULL; + _res->in_tail = NULL; + _res->out = NULL; + + return _res; +} + +void CallFunc_Free(struct CallFunc* obj) +{ + struct CallVar_List* in_cur; + struct CallVar_List* in_tmp; + if (obj == NULL) return; + if (obj->name != NULL) + { + free(obj->name); + obj->name = NULL; + } + + in_cur = obj->in_head; + while (in_cur != NULL) + { + in_tmp = in_cur->next; + free(in_cur); + in_cur = in_tmp; + } + free(obj); +} + +void CallFunc_Sax_Serialize(struct CallFunc* 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) +{ + int attrCount, curCount; + char **keys; + char **values; + char buffer[255]; + + struct CallVar_List* in_cur; + + attrCount = 0; + + keys = (char**)malloc(sizeof(char*)*attrCount); + values = (char**)malloc(sizeof(char*)*attrCount); + + curCount = 0; + + + OnStartElement(root_element_name, attrCount, keys, values, userData); + + OnStartElement("name", 0, NULL, NULL, userData); + if (obj->name != NULL) + OnCharacters("name", obj->name, userData); + OnEndElement("name", userData); + in_cur = obj->in_head; + while (in_cur != NULL) + { + if (in_cur->value) + CallVar_Sax_Serialize(in_cur->value, "in", OnStartElement, OnCharacters, OnEndElement, userData); + + in_cur = in_cur->next; + } + if (obj->out) + CallVar_Sax_Serialize(obj->out, "out", OnStartElement, OnCharacters, OnEndElement, userData); + + OnEndElement(root_element_name, userData); +} + +#ifndef _DESERIALIZER_DISABLED_ + +struct CallFunc* CallFunc_Deserialize(xmlNodePtr xmlRoot) +{ + xmlNodePtr cur; + xmlChar *key; + struct CallFunc* obj; + obj = CallFunc_Create(); + cur = xmlRoot->xmlChildrenNode; + while (cur != NULL) { + if (cur->type != XML_ELEMENT_NODE) { + cur = cur->next; + continue; + } + printf("CallFunc->%s\n", cur->name); + if ((!xmlStrcmp(cur->name, (const xmlChar *)"name"))){ + key = xmlNodeListGetString(cur->doc, cur->xmlChildrenNode, 1); + CallFunc_Set_name(obj, (const char*)key); + xmlFree(key); + } + if ((!xmlStrcmp(cur->name, (const xmlChar *)"in"))){ + CallFunc_Add_in( obj, CallVar_Deserialize(cur) ); + } + if ((!xmlStrcmp(cur->name, (const xmlChar *)"out"))){ + CallFunc_Set_out( obj, CallVar_Deserialize(cur) ); + } + // TODO: + cur = cur->next; + } + return obj; +} + +#endif +char* CallFunc_Get_name(struct CallFunc* obj) +{ + return obj->name; +} + +struct CallVar_List* CallFunc_Get_in(struct CallFunc* obj) +{ + return obj->in_head; +} + +struct CallVar* CallFunc_Get_out(struct CallFunc* obj) +{ + return obj->out; +} + +void CallFunc_Set_name(struct CallFunc* obj, const char* name) +{ + if (obj->name != NULL) free(obj->name); + obj->name = (char*)malloc(strlen(name)+1); + strcpy(obj->name, name); +} + +void CallFunc_Set_out(struct CallFunc* obj, struct CallVar* out) +{ + obj->out = out; +} + +void CallFunc_Add_in(struct CallFunc* obj, struct CallVar* in) +{ + struct CallVar_List* in_node; + in_node = (struct CallVar_List*)malloc(sizeof(struct CallVar_List)); + in_node->value = in; + in_node->next = NULL; + if (obj->in_tail) + { + obj->in_tail->next = in_node; + } + if (obj->in_head == NULL) + { + obj->in_head = in_node; + } + obj->in_tail = in_node; +} + -- cgit v1.1-32-gdbae