/* rdf.c autoXml generated file */
#include "common.h"
#include "xap.h"
#include "rdf.h"
void rdfGoGoFree(struct rdfGoGo **pObj)
/* Free up rdfGoGo. */
{
struct rdfGoGo *obj = *pObj;
if (obj == NULL) return;
freeMem(obj->xmlns_go);
freeMem(obj->xmlns_rdf);
rdfRdfRDFFree(&obj->rdfRdfRDF);
freez(pObj);
}
void rdfGoGoFreeList(struct rdfGoGo **pList)
/* Free up list of rdfGoGo. */
{
struct rdfGoGo *el, *next;
for (el = *pList; el != NULL; el = next)
{
next = el->next;
rdfGoGoFree(&el);
el = next;
}
}
void rdfGoGoSave(struct rdfGoGo *obj, int indent, FILE *f)
/* Save rdfGoGo to file. */
{
if (obj == NULL) return;
xapIndent(indent, f);
fprintf(f, "xmlns_go);
fprintf(f, " xmlns:rdf=\"%s\"", obj->xmlns_rdf);
fprintf(f, ">");
fprintf(f, "\n");
rdfRdfRDFSave(obj->rdfRdfRDF, indent+2, f);
xapIndent(indent, f);
fprintf(f, "\n");
}
struct rdfGoGo *rdfGoGoLoad(char *fileName)
/* Load rdfGoGo from XML file where it is root element. */
{
struct rdfGoGo *obj;
xapParseAny(fileName, "go:go", rdfStartHandler, rdfEndHandler, NULL, &obj);
return obj;
}
struct rdfGoGo *rdfGoGoLoadNext(struct xap *xap)
/* Load next rdfGoGo element. Use xapOpen to get xap. */
{
return xapNext(xap, "go:go");
}
void rdfRdfRDFFree(struct rdfRdfRDF **pObj)
/* Free up rdfRdfRDF. */
{
struct rdfRdfRDF *obj = *pObj;
if (obj == NULL) return;
rdfGoTermFreeList(&obj->rdfGoTerm);
freez(pObj);
}
void rdfRdfRDFFreeList(struct rdfRdfRDF **pList)
/* Free up list of rdfRdfRDF. */
{
struct rdfRdfRDF *el, *next;
for (el = *pList; el != NULL; el = next)
{
next = el->next;
rdfRdfRDFFree(&el);
el = next;
}
}
void rdfRdfRDFSave(struct rdfRdfRDF *obj, int indent, FILE *f)
/* Save rdfRdfRDF to file. */
{
struct rdfGoTerm *rdfGoTerm;
if (obj == NULL) return;
xapIndent(indent, f);
fprintf(f, "");
fprintf(f, "\n");
for (rdfGoTerm = obj->rdfGoTerm; rdfGoTerm != NULL; rdfGoTerm = rdfGoTerm->next)
{
rdfGoTermSave(rdfGoTerm, indent+2, f);
}
xapIndent(indent, f);
fprintf(f, "\n");
}
struct rdfRdfRDF *rdfRdfRDFLoad(char *fileName)
/* Load rdfRdfRDF from XML file where it is root element. */
{
struct rdfRdfRDF *obj;
xapParseAny(fileName, "rdf:RDF", rdfStartHandler, rdfEndHandler, NULL, &obj);
return obj;
}
struct rdfRdfRDF *rdfRdfRDFLoadNext(struct xap *xap)
/* Load next rdfRdfRDF element. Use xapOpen to get xap. */
{
return xapNext(xap, "rdf:RDF");
}
void rdfGoTermFree(struct rdfGoTerm **pObj)
/* Free up rdfGoTerm. */
{
struct rdfGoTerm *obj = *pObj;
if (obj == NULL) return;
freeMem(obj->rdf_about);
rdfGoAccessionFree(&obj->rdfGoAccession);
rdfGoNameFree(&obj->rdfGoName);
rdfGoDbxrefFree(&obj->rdfGoDbxref);
freez(pObj);
}
void rdfGoTermFreeList(struct rdfGoTerm **pList)
/* Free up list of rdfGoTerm. */
{
struct rdfGoTerm *el, *next;
for (el = *pList; el != NULL; el = next)
{
next = el->next;
rdfGoTermFree(&el);
el = next;
}
}
void rdfGoTermSave(struct rdfGoTerm *obj, int indent, FILE *f)
/* Save rdfGoTerm to file. */
{
if (obj == NULL) return;
xapIndent(indent, f);
fprintf(f, "rdf_about);
fprintf(f, ">");
fprintf(f, "\n");
rdfGoAccessionSave(obj->rdfGoAccession, indent+2, f);
rdfGoNameSave(obj->rdfGoName, indent+2, f);
rdfGoDbxrefSave(obj->rdfGoDbxref, indent+2, f);
xapIndent(indent, f);
fprintf(f, "\n");
}
struct rdfGoTerm *rdfGoTermLoad(char *fileName)
/* Load rdfGoTerm from XML file where it is root element. */
{
struct rdfGoTerm *obj;
xapParseAny(fileName, "go:term", rdfStartHandler, rdfEndHandler, NULL, &obj);
return obj;
}
struct rdfGoTerm *rdfGoTermLoadNext(struct xap *xap)
/* Load next rdfGoTerm element. Use xapOpen to get xap. */
{
return xapNext(xap, "go:term");
}
void rdfGoAccessionFree(struct rdfGoAccession **pObj)
/* Free up rdfGoAccession. */
{
struct rdfGoAccession *obj = *pObj;
if (obj == NULL) return;
freeMem(obj->text);
freez(pObj);
}
void rdfGoAccessionFreeList(struct rdfGoAccession **pList)
/* Free up list of rdfGoAccession. */
{
struct rdfGoAccession *el, *next;
for (el = *pList; el != NULL; el = next)
{
next = el->next;
rdfGoAccessionFree(&el);
el = next;
}
}
void rdfGoAccessionSave(struct rdfGoAccession *obj, int indent, FILE *f)
/* Save rdfGoAccession to file. */
{
if (obj == NULL) return;
xapIndent(indent, f);
fprintf(f, "");
fprintf(f, "%s", obj->text);
fprintf(f, "\n");
}
struct rdfGoAccession *rdfGoAccessionLoad(char *fileName)
/* Load rdfGoAccession from XML file where it is root element. */
{
struct rdfGoAccession *obj;
xapParseAny(fileName, "go:accession", rdfStartHandler, rdfEndHandler, NULL, &obj);
return obj;
}
struct rdfGoAccession *rdfGoAccessionLoadNext(struct xap *xap)
/* Load next rdfGoAccession element. Use xapOpen to get xap. */
{
return xapNext(xap, "go:accession");
}
void rdfGoNameFree(struct rdfGoName **pObj)
/* Free up rdfGoName. */
{
struct rdfGoName *obj = *pObj;
if (obj == NULL) return;
freez(pObj);
}
void rdfGoNameFreeList(struct rdfGoName **pList)
/* Free up list of rdfGoName. */
{
struct rdfGoName *el, *next;
for (el = *pList; el != NULL; el = next)
{
next = el->next;
rdfGoNameFree(&el);
el = next;
}
}
void rdfGoNameSave(struct rdfGoName *obj, int indent, FILE *f)
/* Save rdfGoName to file. */
{
if (obj == NULL) return;
xapIndent(indent, f);
fprintf(f, " ->\n");
}
struct rdfGoName *rdfGoNameLoad(char *fileName)
/* Load rdfGoName from XML file where it is root element. */
{
struct rdfGoName *obj;
xapParseAny(fileName, "go:name", rdfStartHandler, rdfEndHandler, NULL, &obj);
return obj;
}
struct rdfGoName *rdfGoNameLoadNext(struct xap *xap)
/* Load next rdfGoName element. Use xapOpen to get xap. */
{
return xapNext(xap, "go:name");
}
void rdfGoDbxrefFree(struct rdfGoDbxref **pObj)
/* Free up rdfGoDbxref. */
{
struct rdfGoDbxref *obj = *pObj;
if (obj == NULL) return;
freeMem(obj->rdf_parseType);
rdfGoDatabaseSymbolFree(&obj->rdfGoDatabaseSymbol);
rdfGoReferenceFree(&obj->rdfGoReference);
freez(pObj);
}
void rdfGoDbxrefFreeList(struct rdfGoDbxref **pList)
/* Free up list of rdfGoDbxref. */
{
struct rdfGoDbxref *el, *next;
for (el = *pList; el != NULL; el = next)
{
next = el->next;
rdfGoDbxrefFree(&el);
el = next;
}
}
void rdfGoDbxrefSave(struct rdfGoDbxref *obj, int indent, FILE *f)
/* Save rdfGoDbxref to file. */
{
if (obj == NULL) return;
xapIndent(indent, f);
fprintf(f, "rdf_parseType);
fprintf(f, ">");
fprintf(f, "\n");
rdfGoDatabaseSymbolSave(obj->rdfGoDatabaseSymbol, indent+2, f);
rdfGoReferenceSave(obj->rdfGoReference, indent+2, f);
xapIndent(indent, f);
fprintf(f, "\n");
}
struct rdfGoDbxref *rdfGoDbxrefLoad(char *fileName)
/* Load rdfGoDbxref from XML file where it is root element. */
{
struct rdfGoDbxref *obj;
xapParseAny(fileName, "go:dbxref", rdfStartHandler, rdfEndHandler, NULL, &obj);
return obj;
}
struct rdfGoDbxref *rdfGoDbxrefLoadNext(struct xap *xap)
/* Load next rdfGoDbxref element. Use xapOpen to get xap. */
{
return xapNext(xap, "go:dbxref");
}
void rdfGoDatabaseSymbolFree(struct rdfGoDatabaseSymbol **pObj)
/* Free up rdfGoDatabaseSymbol. */
{
struct rdfGoDatabaseSymbol *obj = *pObj;
if (obj == NULL) return;
freeMem(obj->text);
freez(pObj);
}
void rdfGoDatabaseSymbolFreeList(struct rdfGoDatabaseSymbol **pList)
/* Free up list of rdfGoDatabaseSymbol. */
{
struct rdfGoDatabaseSymbol *el, *next;
for (el = *pList; el != NULL; el = next)
{
next = el->next;
rdfGoDatabaseSymbolFree(&el);
el = next;
}
}
void rdfGoDatabaseSymbolSave(struct rdfGoDatabaseSymbol *obj, int indent, FILE *f)
/* Save rdfGoDatabaseSymbol to file. */
{
if (obj == NULL) return;
xapIndent(indent, f);
fprintf(f, "");
fprintf(f, "%s", obj->text);
fprintf(f, "\n");
}
struct rdfGoDatabaseSymbol *rdfGoDatabaseSymbolLoad(char *fileName)
/* Load rdfGoDatabaseSymbol from XML file where it is root element. */
{
struct rdfGoDatabaseSymbol *obj;
xapParseAny(fileName, "go:database_symbol", rdfStartHandler, rdfEndHandler, NULL, &obj);
return obj;
}
struct rdfGoDatabaseSymbol *rdfGoDatabaseSymbolLoadNext(struct xap *xap)
/* Load next rdfGoDatabaseSymbol element. Use xapOpen to get xap. */
{
return xapNext(xap, "go:database_symbol");
}
void rdfGoReferenceFree(struct rdfGoReference **pObj)
/* Free up rdfGoReference. */
{
struct rdfGoReference *obj = *pObj;
if (obj == NULL) return;
freeMem(obj->text);
freez(pObj);
}
void rdfGoReferenceFreeList(struct rdfGoReference **pList)
/* Free up list of rdfGoReference. */
{
struct rdfGoReference *el, *next;
for (el = *pList; el != NULL; el = next)
{
next = el->next;
rdfGoReferenceFree(&el);
el = next;
}
}
void rdfGoReferenceSave(struct rdfGoReference *obj, int indent, FILE *f)
/* Save rdfGoReference to file. */
{
if (obj == NULL) return;
xapIndent(indent, f);
fprintf(f, "");
fprintf(f, "%s", obj->text);
fprintf(f, "\n");
}
struct rdfGoReference *rdfGoReferenceLoad(char *fileName)
/* Load rdfGoReference from XML file where it is root element. */
{
struct rdfGoReference *obj;
xapParseAny(fileName, "go:reference", rdfStartHandler, rdfEndHandler, NULL, &obj);
return obj;
}
struct rdfGoReference *rdfGoReferenceLoadNext(struct xap *xap)
/* Load next rdfGoReference element. Use xapOpen to get xap. */
{
return xapNext(xap, "go:reference");
}
void *rdfStartHandler(struct xap *xp, char *name, char **atts)
/* Called by xap with start tag. Does most of the parsing work. */
{
struct xapStack *st = xp->stack+1;
int depth = xp->stackDepth;
int i;
if (sameString(name, "go:go"))
{
struct rdfGoGo *obj;
AllocVar(obj);
for (i=0; atts[i] != NULL; i += 2)
{
char *name = atts[i], *val = atts[i+1];
if (sameString(name, "xmlns:go"))
obj->xmlns_go = cloneString(val);
else if (sameString(name, "xmlns:rdf"))
obj->xmlns_rdf = cloneString(val);
}
if (obj->xmlns_go == NULL)
xapError(xp, "missing xmlns:go");
if (obj->xmlns_rdf == NULL)
xapError(xp, "missing xmlns:rdf");
return obj;
}
else if (sameString(name, "rdf:RDF"))
{
struct rdfRdfRDF *obj;
AllocVar(obj);
if (depth > 1)
{
if (sameString(st->elName, "go:go"))
{
struct rdfGoGo *parent = st->object;
slAddHead(&parent->rdfRdfRDF, obj);
}
}
return obj;
}
else if (sameString(name, "go:term"))
{
struct rdfGoTerm *obj;
AllocVar(obj);
for (i=0; atts[i] != NULL; i += 2)
{
char *name = atts[i], *val = atts[i+1];
if (sameString(name, "rdf:about"))
obj->rdf_about = cloneString(val);
}
if (obj->rdf_about == NULL)
xapError(xp, "missing rdf:about");
if (depth > 1)
{
if (sameString(st->elName, "rdf:RDF"))
{
struct rdfRdfRDF *parent = st->object;
slAddHead(&parent->rdfGoTerm, obj);
}
}
return obj;
}
else if (sameString(name, "go:accession"))
{
struct rdfGoAccession *obj;
AllocVar(obj);
if (depth > 1)
{
if (sameString(st->elName, "go:term"))
{
struct rdfGoTerm *parent = st->object;
slAddHead(&parent->rdfGoAccession, obj);
}
}
return obj;
}
else if (sameString(name, "go:name"))
{
struct rdfGoName *obj;
AllocVar(obj);
if (depth > 1)
{
if (sameString(st->elName, "go:term"))
{
struct rdfGoTerm *parent = st->object;
slAddHead(&parent->rdfGoName, obj);
}
}
return obj;
}
else if (sameString(name, "go:dbxref"))
{
struct rdfGoDbxref *obj;
AllocVar(obj);
for (i=0; atts[i] != NULL; i += 2)
{
char *name = atts[i], *val = atts[i+1];
if (sameString(name, "rdf:parseType"))
obj->rdf_parseType = cloneString(val);
}
if (obj->rdf_parseType == NULL)
xapError(xp, "missing rdf:parseType");
if (depth > 1)
{
if (sameString(st->elName, "go:term"))
{
struct rdfGoTerm *parent = st->object;
slAddHead(&parent->rdfGoDbxref, obj);
}
}
return obj;
}
else if (sameString(name, "go:database_symbol"))
{
struct rdfGoDatabaseSymbol *obj;
AllocVar(obj);
if (depth > 1)
{
if (sameString(st->elName, "go:dbxref"))
{
struct rdfGoDbxref *parent = st->object;
slAddHead(&parent->rdfGoDatabaseSymbol, obj);
}
}
return obj;
}
else if (sameString(name, "go:reference"))
{
struct rdfGoReference *obj;
AllocVar(obj);
if (depth > 1)
{
if (sameString(st->elName, "go:dbxref"))
{
struct rdfGoDbxref *parent = st->object;
slAddHead(&parent->rdfGoReference, obj);
}
}
return obj;
}
else
{
xapSkip(xp);
return NULL;
}
}
void rdfEndHandler(struct xap *xp, char *name)
/* Called by xap with end tag. Checks all required children are loaded. */
{
struct xapStack *stack = xp->stack;
if (sameString(name, "go:go"))
{
struct rdfGoGo *obj = stack->object;
if (obj->rdfRdfRDF == NULL)
xapError(xp, "Missing rdf:RDF");
if (obj->rdfRdfRDF->next != NULL)
xapError(xp, "Multiple rdf:RDF");
}
else if (sameString(name, "rdf:RDF"))
{
struct rdfRdfRDF *obj = stack->object;
if (obj->rdfGoTerm == NULL)
xapError(xp, "Missing go:term");
slReverse(&obj->rdfGoTerm);
}
else if (sameString(name, "go:term"))
{
struct rdfGoTerm *obj = stack->object;
if (obj->rdfGoAccession == NULL)
xapError(xp, "Missing go:accession");
if (obj->rdfGoAccession->next != NULL)
xapError(xp, "Multiple go:accession");
if (obj->rdfGoName == NULL)
xapError(xp, "Missing go:name");
if (obj->rdfGoName->next != NULL)
xapError(xp, "Multiple go:name");
if (obj->rdfGoDbxref == NULL)
xapError(xp, "Missing go:dbxref");
if (obj->rdfGoDbxref->next != NULL)
xapError(xp, "Multiple go:dbxref");
}
else if (sameString(name, "go:accession"))
{
struct rdfGoAccession *obj = stack->object;
obj->text = cloneString(stack->text->string);
}
else if (sameString(name, "go:dbxref"))
{
struct rdfGoDbxref *obj = stack->object;
if (obj->rdfGoDatabaseSymbol == NULL)
xapError(xp, "Missing go:database_symbol");
if (obj->rdfGoDatabaseSymbol->next != NULL)
xapError(xp, "Multiple go:database_symbol");
if (obj->rdfGoReference == NULL)
xapError(xp, "Missing go:reference");
if (obj->rdfGoReference->next != NULL)
xapError(xp, "Multiple go:reference");
}
else if (sameString(name, "go:database_symbol"))
{
struct rdfGoDatabaseSymbol *obj = stack->object;
obj->text = cloneString(stack->text->string);
}
else if (sameString(name, "go:reference"))
{
struct rdfGoReference *obj = stack->object;
obj->text = cloneString(stack->text->string);
}
#ifdef SOON
#endif /* SOON */
}