summaryrefslogtreecommitdiffstats
path: root/xsd2c/formatter.c
diff options
context:
space:
mode:
authorGravatar snowdrop2004-06-03 13:14:35 +0000
committerGravatar snowdrop2004-06-03 13:14:35 +0000
commit2ed145e7e58503119bf37ec2c634f6cde84ee50c (patch)
tree840c797b8ba5b674af29d6d5f8b7aaac3a4f80f5 /xsd2c/formatter.c
parent0d3bfe08e889344eee4880e4750311aad8641a69 (diff)
downloadcsoap-2ed145e7e58503119bf37ec2c634f6cde84ee50c.tar.gz
csoap-2ed145e7e58503119bf37ec2c634f6cde84ee50c.tar.bz2
fixed some little bugs
Diffstat (limited to 'xsd2c/formatter.c')
-rw-r--r--xsd2c/formatter.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/xsd2c/formatter.c b/xsd2c/formatter.c
index 80b96cf..50b81f9 100644
--- a/xsd2c/formatter.c
+++ b/xsd2c/formatter.c
@@ -1,5 +1,5 @@
/******************************************************************
- * $Id: formatter.c,v 1.1 2004/06/02 11:17:03 snowdrop Exp $
+ * $Id: formatter.c,v 1.2 2004/06/03 13:14:35 snowdrop Exp $
*
* CSOAP Project: A SOAP client/server library in C
* Copyright (C) 2003 Ferhat Ayaz
@@ -91,14 +91,14 @@ void writeComplexTypeHeaderFile(FILE* f, HCOMPLEXTYPE obj)
{
if (trGetBuildInFlag(field->type) == 0)
{
- fprintf(f, "#include \"%s_xsd.h\"\n", field->type);
+ fprintf(f, "#include \"%s.h\"\n", field->type); /* _xsd*/
}
field = field->next;
}
if (obj->base_type != NULL)
{
- fprintf(f, "#include \"%s_xsd.h\"\n", obj->base_type);
+ fprintf(f, "#include \"%s.h\"\n", obj->base_type);/* _xsd*/
}
/* include libxml library */
@@ -446,7 +446,7 @@ void writeComplexTypeSourceFile(FILE* f, HCOMPLEXTYPE obj)
fprintf(f, "#include <stdio.h>\n", obj->type);
fprintf(f, "#include <string.h>\n", obj->type);
fprintf(f, "#include <stdlib.h>\n", obj->type);
- fprintf(f, "#include \"%s_xsd.h\"\n\n\n", obj->type);
+ fprintf(f, "#include \"%s.h\"\n\n\n", obj->type); /* _xsd*/
if (obj->base_type != NULL)
@@ -890,6 +890,7 @@ static void writeCodeSaxSerialize(FILE* f, HCOMPLEXTYPE obj)
}
else
{
+ fprintf(f, "\tif (%s_cur->value)\n", field->name);
sprintf(buffer, "%s_Sax_Serialize(%s_cur->value, \"%s\", OnStartElement, OnCharacters, OnEndElement, userData);\n",
field->type, field->name, field->name);
fprintf(f, "\t\t%s\n", buffer);
@@ -926,6 +927,7 @@ static void writeCodeSaxSerialize(FILE* f, HCOMPLEXTYPE obj)
}
else
{
+ fprintf(f, "\tif (obj->%s)\n", field->name);
sprintf(buffer, "%s_Sax_Serialize(obj->%s, \"%s\", OnStartElement, OnCharacters, OnEndElement, userData);",
field->type, field->name, field->name);
fprintf(f, "\t%s\n", buffer );
@@ -1038,6 +1040,7 @@ static void writeCodeBaseOnEndElement(FILE* f, HCOMPLEXTYPE obj)
}
else
{
+ fprintf(f, "\tif (%s_cur->value)\n", field->name);
sprintf(buffer, "%s_Sax_Serialize(%s_cur->value, \"%s\", bsce->OnStartElement, bsce->OnCharacters, bsce->OnEndElement, bsce->userData);\n",
field->type, field->name, field->name);
fprintf(f, "\t\t%s\n", buffer);
@@ -1074,6 +1077,7 @@ static void writeCodeBaseOnEndElement(FILE* f, HCOMPLEXTYPE obj)
}
else
{
+ fprintf(f, "\tif (obj->%s)\n", field->name);
sprintf(buffer, "%s_Sax_Serialize(obj->%s, \"%s\", bsce->OnStartElement, bsce->OnCharacters, bsce->OnEndElement, bsce->userData);",
field->type, field->name, field->name);
fprintf(f, "\t%s\n", buffer );
@@ -1212,7 +1216,11 @@ static void writeCodeDeserialize(FILE* f, HCOMPLEXTYPE obj)
}
else
{
- fprintf(f, "\t\t\tobj->%s = %s_Deserialize(cur);\n", field->name, field->name);
+ if (field->maxOccurs > 1 || field->maxOccurs == -1) {
+ fprintf(f, "\t\t\t%s_Add_%s( obj, %s_Deserialize(cur) );\n", field->parentObj->type, field->name, field->type);
+ } else {
+ fprintf(f, "\t\t\t%s_Set_%s( obj, %s_Deserialize(cur) );\n", field->parentObj->type, field->name, field->type);
+ }
}
fprintf(f, "\t\t}\n");