e70152e44cc66cc599ff6b699eb8adc07f3e656a
kent
  Sat May 24 21:09:34 2014 -0700
Adding Copyright NNNN Regents of the University of California to all files I believe with reasonable certainty were developed under UCSC employ or as part of Genome Browser copyright assignment.
diff --git src/hg/lib/riken.c src/hg/lib/riken.c
index 2b24fa2..1a69b92 100644
--- src/hg/lib/riken.c
+++ src/hg/lib/riken.c
@@ -1,1063 +1,1066 @@
 /* riken.c autoXml generated file to load RIKEN annotations. */
 
+/* Copyright (C) 2014 The Regents of the University of California 
+ * See README in this or parent directory for licensing information. */
+
 #include "common.h"
 #include "xap.h"
 #include "riken.h"
 
 
 void *rikenStartHandler(struct xap *xp, char *name, char **atts);
 /* Called by expat with start tag.  Does most of the parsing work. */
 
 void rikenEndHandler(struct xap *xp, char *name);
 /* Called by expat with end tag.  Checks all required children are loaded. */
 
 
 void rikenMaxmlClustersSave(struct rikenMaxmlClusters *obj, int indent, FILE *f)
 /* Save rikenMaxmlClusters to file. */
 {
 struct rikenCluster *rikenCluster;
 boolean isNode = TRUE;
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<maxml-clusters>");
 for (rikenCluster = obj->rikenCluster; rikenCluster != NULL; rikenCluster = rikenCluster->next)
    {
    if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
    rikenClusterSave(rikenCluster, indent+2, f);
    }
 if (!isNode)
     xapIndent(indent, f);
 fprintf(f, "</maxml-clusters>\n");
 }
 
 struct rikenMaxmlClusters *rikenMaxmlClustersLoad(char *fileName)
 /* Load rikenMaxmlClusters from file. */
 {
 struct rikenMaxmlClusters *obj;
 xapParseAny(fileName, "maxml-clusters", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenClusterSave(struct rikenCluster *obj, int indent, FILE *f)
 /* Save rikenCluster to file. */
 {
 struct rikenSequence *rikenSequence;
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<cluster");
 fprintf(f, " id=\"%s\"", obj->id);
 fprintf(f, ">");
 fprintf(f, "\n");
 rikenFantomidSave(obj->rikenFantomid, indent+2, f);
 rikenRepresentativeSeqidSave(obj->rikenRepresentativeSeqid, indent+2, f);
 for (rikenSequence = obj->rikenSequence; rikenSequence != NULL; rikenSequence = rikenSequence->next)
    {
    rikenSequenceSave(rikenSequence, indent+2, f);
    }
 xapIndent(indent, f);
 fprintf(f, "</cluster>\n");
 }
 
 struct rikenCluster *rikenClusterLoad(char *fileName)
 /* Load rikenCluster from file. */
 {
 struct rikenCluster *obj;
 xapParseAny(fileName, "cluster", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenRepresentativeSeqidSave(struct rikenRepresentativeSeqid *obj, int indent, FILE *f)
 /* Save rikenRepresentativeSeqid to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<representative-seqid>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</representative-seqid>\n");
 }
 
 struct rikenRepresentativeSeqid *rikenRepresentativeSeqidLoad(char *fileName)
 /* Load rikenRepresentativeSeqid from file. */
 {
 struct rikenRepresentativeSeqid *obj;
 xapParseAny(fileName, "representative-seqid", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenMaxmlSequencesSave(struct rikenMaxmlSequences *obj, int indent, FILE *f)
 /* Save rikenMaxmlSequences to file. */
 {
 struct rikenSequence *rikenSequence;
 boolean isNode = TRUE;
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<maxml-sequences>");
 for (rikenSequence = obj->rikenSequence; rikenSequence != NULL; rikenSequence = rikenSequence->next)
    {
    if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
    rikenSequenceSave(rikenSequence, indent+2, f);
    }
 if (!isNode)
     xapIndent(indent, f);
 fprintf(f, "</maxml-sequences>\n");
 }
 
 struct rikenMaxmlSequences *rikenMaxmlSequencesLoad(char *fileName)
 /* Load rikenMaxmlSequences from file. */
 {
 struct rikenMaxmlSequences *obj;
 xapParseAny(fileName, "maxml-sequences", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenSequenceSave(struct rikenSequence *obj, int indent, FILE *f)
 /* Save rikenSequence to file. */
 {
 struct rikenAltid *rikenAltid;
 boolean isNode = TRUE;
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<sequence");
 fprintf(f, " id=\"%s\"", obj->id);
 fprintf(f, ">");
 for (rikenAltid = obj->rikenAltid; rikenAltid != NULL; rikenAltid = rikenAltid->next)
    {
    if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
    rikenAltidSave(rikenAltid, indent+2, f);
    }
 if (obj->rikenSeqid != NULL)
     {
     if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
     rikenSeqidSave(obj->rikenSeqid, indent+2, f);
     }
 if (obj->rikenFantomid != NULL)
     {
     if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
     rikenFantomidSave(obj->rikenFantomid, indent+2, f);
     }
 if (obj->rikenCloneid != NULL)
     {
     if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
     rikenCloneidSave(obj->rikenCloneid, indent+2, f);
     }
 if (obj->rikenRearrayid != NULL)
     {
     if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
     rikenRearrayidSave(obj->rikenRearrayid, indent+2, f);
     }
 if (obj->rikenAccession != NULL)
     {
     if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
     rikenAccessionSave(obj->rikenAccession, indent+2, f);
     }
 if (obj->rikenAnnotator != NULL)
     {
     if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
     rikenAnnotatorSave(obj->rikenAnnotator, indent+2, f);
     }
 if (obj->rikenVersion != NULL)
     {
     if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
     rikenVersionSave(obj->rikenVersion, indent+2, f);
     }
 if (obj->rikenModifiedTime != NULL)
     {
     if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
     rikenModifiedTimeSave(obj->rikenModifiedTime, indent+2, f);
     }
 if (obj->rikenAnnotations != NULL)
     {
     if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
     rikenAnnotationsSave(obj->rikenAnnotations, indent+2, f);
     }
 if (obj->rikenComment != NULL)
     {
     if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
     rikenCommentSave(obj->rikenComment, indent+2, f);
     }
 if (!isNode)
     xapIndent(indent, f);
 fprintf(f, "</sequence>\n");
 }
 
 struct rikenSequence *rikenSequenceLoad(char *fileName)
 /* Load rikenSequence from file. */
 {
 struct rikenSequence *obj;
 xapParseAny(fileName, "sequence", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenAltidSave(struct rikenAltid *obj, int indent, FILE *f)
 /* Save rikenAltid to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<altid");
 fprintf(f, " type=\"%s\"", obj->type);
 fprintf(f, ">");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</altid>\n");
 }
 
 struct rikenAltid *rikenAltidLoad(char *fileName)
 /* Load rikenAltid from file. */
 {
 struct rikenAltid *obj;
 xapParseAny(fileName, "altid", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenSeqidSave(struct rikenSeqid *obj, int indent, FILE *f)
 /* Save rikenSeqid to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<seqid>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</seqid>\n");
 }
 
 struct rikenSeqid *rikenSeqidLoad(char *fileName)
 /* Load rikenSeqid from file. */
 {
 struct rikenSeqid *obj;
 xapParseAny(fileName, "seqid", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenCloneidSave(struct rikenCloneid *obj, int indent, FILE *f)
 /* Save rikenCloneid to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<cloneid>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</cloneid>\n");
 }
 
 struct rikenCloneid *rikenCloneidLoad(char *fileName)
 /* Load rikenCloneid from file. */
 {
 struct rikenCloneid *obj;
 xapParseAny(fileName, "cloneid", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenFantomidSave(struct rikenFantomid *obj, int indent, FILE *f)
 /* Save rikenFantomid to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<fantomid>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</fantomid>\n");
 }
 
 struct rikenFantomid *rikenFantomidLoad(char *fileName)
 /* Load rikenFantomid from file. */
 {
 struct rikenFantomid *obj;
 xapParseAny(fileName, "fantomid", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenRearrayidSave(struct rikenRearrayid *obj, int indent, FILE *f)
 /* Save rikenRearrayid to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<rearrayid>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</rearrayid>\n");
 }
 
 struct rikenRearrayid *rikenRearrayidLoad(char *fileName)
 /* Load rikenRearrayid from file. */
 {
 struct rikenRearrayid *obj;
 xapParseAny(fileName, "rearrayid", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenAccessionSave(struct rikenAccession *obj, int indent, FILE *f)
 /* Save rikenAccession to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<accession>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</accession>\n");
 }
 
 struct rikenAccession *rikenAccessionLoad(char *fileName)
 /* Load rikenAccession from file. */
 {
 struct rikenAccession *obj;
 xapParseAny(fileName, "accession", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenAnnotatorSave(struct rikenAnnotator *obj, int indent, FILE *f)
 /* Save rikenAnnotator to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<annotator>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</annotator>\n");
 }
 
 struct rikenAnnotator *rikenAnnotatorLoad(char *fileName)
 /* Load rikenAnnotator from file. */
 {
 struct rikenAnnotator *obj;
 xapParseAny(fileName, "annotator", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenVersionSave(struct rikenVersion *obj, int indent, FILE *f)
 /* Save rikenVersion to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<version>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</version>\n");
 }
 
 struct rikenVersion *rikenVersionLoad(char *fileName)
 /* Load rikenVersion from file. */
 {
 struct rikenVersion *obj;
 xapParseAny(fileName, "version", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenModifiedTimeSave(struct rikenModifiedTime *obj, int indent, FILE *f)
 /* Save rikenModifiedTime to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<modified_time>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</modified_time>\n");
 }
 
 struct rikenModifiedTime *rikenModifiedTimeLoad(char *fileName)
 /* Load rikenModifiedTime from file. */
 {
 struct rikenModifiedTime *obj;
 xapParseAny(fileName, "modified_time", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenAnnotationsSave(struct rikenAnnotations *obj, int indent, FILE *f)
 /* Save rikenAnnotations to file. */
 {
 struct rikenAnnotation *rikenAnnotation;
 boolean isNode = TRUE;
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<annotations>");
 for (rikenAnnotation = obj->rikenAnnotation; rikenAnnotation != NULL; rikenAnnotation = rikenAnnotation->next)
    {
    if (isNode)
        {
        fprintf(f, "\n");
        isNode = FALSE;
        }
    rikenAnnotationSave(rikenAnnotation, indent+2, f);
    }
 if (!isNode)
     xapIndent(indent, f);
 fprintf(f, "</annotations>\n");
 }
 
 struct rikenAnnotations *rikenAnnotationsLoad(char *fileName)
 /* Load rikenAnnotations from file. */
 {
 struct rikenAnnotations *obj;
 xapParseAny(fileName, "annotations", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenCommentSave(struct rikenComment *obj, int indent, FILE *f)
 /* Save rikenComment to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<comment>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</comment>\n");
 }
 
 struct rikenComment *rikenCommentLoad(char *fileName)
 /* Load rikenComment from file. */
 {
 struct rikenComment *obj;
 xapParseAny(fileName, "comment", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenAnnotationSave(struct rikenAnnotation *obj, int indent, FILE *f)
 /* Save rikenAnnotation to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<annotation>");
 fprintf(f, "\n");
 rikenQualifierSave(obj->rikenQualifier, indent+2, f);
 rikenAnntextSave(obj->rikenAnntext, indent+2, f);
 rikenDatasrcSave(obj->rikenDatasrc, indent+2, f);
 rikenSrckeySave(obj->rikenSrckey, indent+2, f);
 rikenEvidenceSave(obj->rikenEvidence, indent+2, f);
 xapIndent(indent, f);
 fprintf(f, "</annotation>\n");
 }
 
 struct rikenAnnotation *rikenAnnotationLoad(char *fileName)
 /* Load rikenAnnotation from file. */
 {
 struct rikenAnnotation *obj;
 xapParseAny(fileName, "annotation", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenQualifierSave(struct rikenQualifier *obj, int indent, FILE *f)
 /* Save rikenQualifier to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<qualifier>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</qualifier>\n");
 }
 
 struct rikenQualifier *rikenQualifierLoad(char *fileName)
 /* Load rikenQualifier from file. */
 {
 struct rikenQualifier *obj;
 xapParseAny(fileName, "qualifier", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenAnntextSave(struct rikenAnntext *obj, int indent, FILE *f)
 /* Save rikenAnntext to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<anntext>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</anntext>\n");
 }
 
 struct rikenAnntext *rikenAnntextLoad(char *fileName)
 /* Load rikenAnntext from file. */
 {
 struct rikenAnntext *obj;
 xapParseAny(fileName, "anntext", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenDatasrcSave(struct rikenDatasrc *obj, int indent, FILE *f)
 /* Save rikenDatasrc to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<datasrc>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</datasrc>\n");
 }
 
 struct rikenDatasrc *rikenDatasrcLoad(char *fileName)
 /* Load rikenDatasrc from file. */
 {
 struct rikenDatasrc *obj;
 xapParseAny(fileName, "datasrc", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenSrckeySave(struct rikenSrckey *obj, int indent, FILE *f)
 /* Save rikenSrckey to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<srckey>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</srckey>\n");
 }
 
 struct rikenSrckey *rikenSrckeyLoad(char *fileName)
 /* Load rikenSrckey from file. */
 {
 struct rikenSrckey *obj;
 xapParseAny(fileName, "srckey", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void rikenEvidenceSave(struct rikenEvidence *obj, int indent, FILE *f)
 /* Save rikenEvidence to file. */
 {
 if (obj == NULL) return;
 xapIndent(indent, f);
 fprintf(f, "<evidence>");
 fprintf(f, "%s", obj->text);
 fprintf(f, "</evidence>\n");
 }
 
 struct rikenEvidence *rikenEvidenceLoad(char *fileName)
 /* Load rikenEvidence from file. */
 {
 struct rikenEvidence *obj;
 xapParseAny(fileName, "evidence", rikenStartHandler, rikenEndHandler, NULL, &obj);
 return obj;
 }
 
 void *rikenStartHandler(struct xap *xp, char *name, char **atts)
 /* Called by expat with start tag.  Does most of the parsing work. */
 {
 struct xapStack *st = xp->stack+1;
 int depth = xp->stackDepth;
 int i;
 
 if (sameString(name, "maxml-clusters"))
     {
     struct rikenMaxmlClusters *obj;
     AllocVar(obj);
     return obj;
     }
 else if (sameString(name, "cluster"))
     {
     struct rikenCluster *obj;
     AllocVar(obj);
     for (i=0; atts[i] != NULL; i += 2)
         {
         char *name = atts[i], *val = atts[i+1];
         if  (sameString(name, "id"))
             obj->id = cloneString(val);
         }
     if (obj->id == NULL)
         xapError(xp, "missing id");
     if (depth > 1)
         {
         if  (sameString(st->elName, "maxml-clusters"))
             {
             struct rikenMaxmlClusters *parent = st->object;
             slAddHead(&parent->rikenCluster, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "representative-seqid"))
     {
     struct rikenRepresentativeSeqid *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "cluster"))
             {
             struct rikenCluster *parent = st->object;
             slAddHead(&parent->rikenRepresentativeSeqid, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "maxml-sequences"))
     {
     struct rikenMaxmlSequences *obj;
     AllocVar(obj);
     return obj;
     }
 else if (sameString(name, "sequence"))
     {
     struct rikenSequence *obj;
     AllocVar(obj);
     for (i=0; atts[i] != NULL; i += 2)
         {
         char *name = atts[i], *val = atts[i+1];
         if  (sameString(name, "id"))
             obj->id = cloneString(val);
         }
     if (obj->id == NULL)
         xapError(xp, "missing id");
     if (depth > 1)
         {
         if  (sameString(st->elName, "cluster"))
             {
             struct rikenCluster *parent = st->object;
             slAddHead(&parent->rikenSequence, obj);
             }
         else if (sameString(st->elName, "maxml-sequences"))
             {
             struct rikenMaxmlSequences *parent = st->object;
             slAddHead(&parent->rikenSequence, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "altid"))
     {
     struct rikenAltid *obj;
     AllocVar(obj);
     for (i=0; atts[i] != NULL; i += 2)
         {
         char *name = atts[i], *val = atts[i+1];
         if  (sameString(name, "type"))
             obj->type = cloneString(val);
         }
     if (obj->type == NULL)
         xapError(xp, "missing type");
     if (depth > 1)
         {
         if  (sameString(st->elName, "sequence"))
             {
             struct rikenSequence *parent = st->object;
             slAddHead(&parent->rikenAltid, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "seqid"))
     {
     struct rikenSeqid *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "sequence"))
             {
             struct rikenSequence *parent = st->object;
             slAddHead(&parent->rikenSeqid, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "cloneid"))
     {
     struct rikenCloneid *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "sequence"))
             {
             struct rikenSequence *parent = st->object;
             slAddHead(&parent->rikenCloneid, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "fantomid"))
     {
     struct rikenFantomid *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "cluster"))
             {
             struct rikenCluster *parent = st->object;
             slAddHead(&parent->rikenFantomid, obj);
             }
         else if (sameString(st->elName, "sequence"))
             {
             struct rikenSequence *parent = st->object;
             slAddHead(&parent->rikenFantomid, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "rearrayid"))
     {
     struct rikenRearrayid *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "sequence"))
             {
             struct rikenSequence *parent = st->object;
             slAddHead(&parent->rikenRearrayid, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "accession"))
     {
     struct rikenAccession *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "sequence"))
             {
             struct rikenSequence *parent = st->object;
             slAddHead(&parent->rikenAccession, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "annotator"))
     {
     struct rikenAnnotator *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "sequence"))
             {
             struct rikenSequence *parent = st->object;
             slAddHead(&parent->rikenAnnotator, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "version"))
     {
     struct rikenVersion *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "sequence"))
             {
             struct rikenSequence *parent = st->object;
             slAddHead(&parent->rikenVersion, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "modified_time"))
     {
     struct rikenModifiedTime *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "sequence"))
             {
             struct rikenSequence *parent = st->object;
             slAddHead(&parent->rikenModifiedTime, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "annotations"))
     {
     struct rikenAnnotations *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "sequence"))
             {
             struct rikenSequence *parent = st->object;
             slAddHead(&parent->rikenAnnotations, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "comment"))
     {
     struct rikenComment *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "sequence"))
             {
             struct rikenSequence *parent = st->object;
             slAddHead(&parent->rikenComment, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "annotation"))
     {
     struct rikenAnnotation *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "annotations"))
             {
             struct rikenAnnotations *parent = st->object;
             slAddHead(&parent->rikenAnnotation, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "qualifier"))
     {
     struct rikenQualifier *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "annotation"))
             {
             struct rikenAnnotation *parent = st->object;
             slAddHead(&parent->rikenQualifier, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "anntext"))
     {
     struct rikenAnntext *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "annotation"))
             {
             struct rikenAnnotation *parent = st->object;
             slAddHead(&parent->rikenAnntext, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "datasrc"))
     {
     struct rikenDatasrc *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "annotation"))
             {
             struct rikenAnnotation *parent = st->object;
             slAddHead(&parent->rikenDatasrc, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "srckey"))
     {
     struct rikenSrckey *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "annotation"))
             {
             struct rikenAnnotation *parent = st->object;
             slAddHead(&parent->rikenSrckey, obj);
             }
         }
     return obj;
     }
 else if (sameString(name, "evidence"))
     {
     struct rikenEvidence *obj;
     AllocVar(obj);
     if (depth > 1)
         {
         if  (sameString(st->elName, "annotation"))
             {
             struct rikenAnnotation *parent = st->object;
             slAddHead(&parent->rikenEvidence, obj);
             }
         }
     return obj;
     }
 else
     {
     xapSkip(xp);
     return NULL;
     }
 }
 
 void rikenEndHandler(struct xap *xp, char *name)
 /* Called by expat with end tag.  Checks all required children are loaded. */
 {
 struct xapStack *stack = xp->stack;
 if (sameString(name, "maxml-clusters"))
     {
     struct rikenMaxmlClusters *obj = stack->object;
     slReverse(&obj->rikenCluster);
     }
 else if (sameString(name, "cluster"))
     {
     struct rikenCluster *obj = stack->object;
     if (obj->rikenFantomid == NULL)
         xapError(xp, "Missing fantomid");
     if (obj->rikenFantomid->next != NULL)
         xapError(xp, "Multiple fantomid");
     if (obj->rikenRepresentativeSeqid == NULL)
         xapError(xp, "Missing representative-seqid");
     if (obj->rikenRepresentativeSeqid->next != NULL)
         xapError(xp, "Multiple representative-seqid");
     slReverse(&obj->rikenSequence);
     }
 else if (sameString(name, "representative-seqid"))
     {
     struct rikenRepresentativeSeqid *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "maxml-sequences"))
     {
     struct rikenMaxmlSequences *obj = stack->object;
     slReverse(&obj->rikenSequence);
     }
 else if (sameString(name, "sequence"))
     {
     struct rikenSequence *obj = stack->object;
     slReverse(&obj->rikenAltid);
     if (obj->rikenSeqid != NULL && obj->rikenSeqid->next != NULL)
         xapError(xp, "Multiple seqid");
     if (obj->rikenFantomid != NULL && obj->rikenFantomid->next != NULL)
         xapError(xp, "Multiple fantomid");
     if (obj->rikenCloneid != NULL && obj->rikenCloneid->next != NULL)
         xapError(xp, "Multiple cloneid");
     if (obj->rikenRearrayid != NULL && obj->rikenRearrayid->next != NULL)
         xapError(xp, "Multiple rearrayid");
     if (obj->rikenAccession != NULL && obj->rikenAccession->next != NULL)
         xapError(xp, "Multiple accession");
     if (obj->rikenAnnotator != NULL && obj->rikenAnnotator->next != NULL)
         xapError(xp, "Multiple annotator");
     if (obj->rikenVersion != NULL && obj->rikenVersion->next != NULL)
         xapError(xp, "Multiple version");
     if (obj->rikenModifiedTime != NULL && obj->rikenModifiedTime->next != NULL)
         xapError(xp, "Multiple modified_time");
     if (obj->rikenAnnotations != NULL && obj->rikenAnnotations->next != NULL)
         xapError(xp, "Multiple annotations");
     if (obj->rikenComment != NULL && obj->rikenComment->next != NULL)
         xapError(xp, "Multiple comment");
     }
 else if (sameString(name, "altid"))
     {
     struct rikenAltid *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "seqid"))
     {
     struct rikenSeqid *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "cloneid"))
     {
     struct rikenCloneid *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "fantomid"))
     {
     struct rikenFantomid *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "rearrayid"))
     {
     struct rikenRearrayid *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "accession"))
     {
     struct rikenAccession *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "annotator"))
     {
     struct rikenAnnotator *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "version"))
     {
     struct rikenVersion *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "modified_time"))
     {
     struct rikenModifiedTime *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "annotations"))
     {
     struct rikenAnnotations *obj = stack->object;
     slReverse(&obj->rikenAnnotation);
     }
 else if (sameString(name, "comment"))
     {
     struct rikenComment *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "annotation"))
     {
     struct rikenAnnotation *obj = stack->object;
     if (obj->rikenQualifier == NULL)
         xapError(xp, "Missing qualifier");
     if (obj->rikenQualifier->next != NULL)
         xapError(xp, "Multiple qualifier");
     if (obj->rikenAnntext != NULL && obj->rikenAnntext->next != NULL)
         xapError(xp, "Multiple anntext");
     if (obj->rikenDatasrc != NULL && obj->rikenDatasrc->next != NULL)
         xapError(xp, "Multiple datasrc");
     if (obj->rikenSrckey != NULL && obj->rikenSrckey->next != NULL)
         xapError(xp, "Multiple srckey");
     if (obj->rikenEvidence != NULL && obj->rikenEvidence->next != NULL)
         xapError(xp, "Multiple evidence");
     }
 else if (sameString(name, "qualifier"))
     {
     struct rikenQualifier *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "anntext"))
     {
     struct rikenAnntext *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "datasrc"))
     {
     struct rikenDatasrc *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "srckey"))
     {
     struct rikenSrckey *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 else if (sameString(name, "evidence"))
     {
     struct rikenEvidence *obj = stack->object;
     obj->text = cloneString(stack->text->string);
     }
 }