60eff7582a4de0728a2f2d7b9d1cd417502e8ed3
Merge parents 9bd482f b139dda
kent
  Wed Nov 24 14:36:10 2021 -0800
Fix merge conflict from both adding new stuff at same place.

diff --cc src/hg/lib/bed12Source.c
index 352a7ec,0000000..347cc05
mode 100644,000000..100644
--- src/hg/lib/bed12Source.c
+++ src/hg/lib/bed12Source.c
@@@ -1,214 -1,0 +1,214 @@@
 +/* bed12Source.c was originally generated by the autoSql program, which also 
 + * generated bed12Source.h and bed12Source.sql.  This module links the database and
 + * the RAM representation of objects. */
 +
 +/* Copyright (C) 2014 The Regents of the University of California 
-  * See README in this or parent directory for licensing information. */
++ * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */
 +
 +#include "common.h"
 +#include "linefile.h"
 +#include "dystring.h"
 +#include "jksql.h"
 +#include "bed12Source.h"
 +
 +
 +struct bed12Source *bed12SourceLoad(char **row)
 +/* Load a bed12Source from row fetched with select * from bed12Source
 + * from database.  Dispose of this with bed12SourceFree(). */
 +{
 +struct bed12Source *ret;
 +
 +AllocVar(ret);
 +ret->blockCount = sqlSigned(row[9]);
 +ret->chrom = cloneString(row[0]);
 +ret->chromStart = sqlUnsigned(row[1]);
 +ret->chromEnd = sqlUnsigned(row[2]);
 +ret->name = cloneString(row[3]);
 +ret->score = sqlUnsigned(row[4]);
 +strcpy(ret->strand, row[5]);
 +ret->thickStart = sqlUnsigned(row[6]);
 +ret->thickEnd = sqlUnsigned(row[7]);
 +ret->reserved = sqlUnsigned(row[8]);
 +{
 +int sizeOne;
 +sqlSignedDynamicArray(row[10], &ret->blockSizes, &sizeOne);
 +assert(sizeOne == ret->blockCount);
 +}
 +{
 +int sizeOne;
 +sqlSignedDynamicArray(row[11], &ret->chromStarts, &sizeOne);
 +assert(sizeOne == ret->blockCount);
 +}
 +ret->source = cloneString(row[12]);
 +return ret;
 +}
 +
 +struct bed12Source *bed12SourceLoadAll(char *fileName) 
 +/* Load all bed12Source from a whitespace-separated file.
 + * Dispose of this with bed12SourceFreeList(). */
 +{
 +struct bed12Source *list = NULL, *el;
 +struct lineFile *lf = lineFileOpen(fileName, TRUE);
 +char *row[13];
 +
 +while (lineFileRow(lf, row))
 +    {
 +    el = bed12SourceLoad(row);
 +    slAddHead(&list, el);
 +    }
 +lineFileClose(&lf);
 +slReverse(&list);
 +return list;
 +}
 +
 +struct bed12Source *bed12SourceLoadAllByChar(char *fileName, char chopper) 
 +/* Load all bed12Source from a chopper separated file.
 + * Dispose of this with bed12SourceFreeList(). */
 +{
 +struct bed12Source *list = NULL, *el;
 +struct lineFile *lf = lineFileOpen(fileName, TRUE);
 +char *row[13];
 +
 +while (lineFileNextCharRow(lf, chopper, row, ArraySize(row)))
 +    {
 +    el = bed12SourceLoad(row);
 +    slAddHead(&list, el);
 +    }
 +lineFileClose(&lf);
 +slReverse(&list);
 +return list;
 +}
 +
 +struct bed12Source *bed12SourceCommaIn(char **pS, struct bed12Source *ret)
 +/* Create a bed12Source out of a comma separated string. 
 + * This will fill in ret if non-null, otherwise will
 + * return a new bed12Source */
 +{
 +char *s = *pS;
 +
 +if (ret == NULL)
 +    AllocVar(ret);
 +ret->chrom = sqlStringComma(&s);
 +ret->chromStart = sqlUnsignedComma(&s);
 +ret->chromEnd = sqlUnsignedComma(&s);
 +ret->name = sqlStringComma(&s);
 +ret->score = sqlUnsignedComma(&s);
 +sqlFixedStringComma(&s, ret->strand, sizeof(ret->strand));
 +ret->thickStart = sqlUnsignedComma(&s);
 +ret->thickEnd = sqlUnsignedComma(&s);
 +ret->reserved = sqlUnsignedComma(&s);
 +ret->blockCount = sqlSignedComma(&s);
 +{
 +int i;
 +s = sqlEatChar(s, '{');
 +AllocArray(ret->blockSizes, ret->blockCount);
 +for (i=0; i<ret->blockCount; ++i)
 +    {
 +    ret->blockSizes[i] = sqlSignedComma(&s);
 +    }
 +s = sqlEatChar(s, '}');
 +s = sqlEatChar(s, ',');
 +}
 +{
 +int i;
 +s = sqlEatChar(s, '{');
 +AllocArray(ret->chromStarts, ret->blockCount);
 +for (i=0; i<ret->blockCount; ++i)
 +    {
 +    ret->chromStarts[i] = sqlSignedComma(&s);
 +    }
 +s = sqlEatChar(s, '}');
 +s = sqlEatChar(s, ',');
 +}
 +ret->source = sqlStringComma(&s);
 +*pS = s;
 +return ret;
 +}
 +
 +void bed12SourceFree(struct bed12Source **pEl)
 +/* Free a single dynamically allocated bed12Source such as created
 + * with bed12SourceLoad(). */
 +{
 +struct bed12Source *el;
 +
 +if ((el = *pEl) == NULL) return;
 +freeMem(el->chrom);
 +freeMem(el->name);
 +freeMem(el->blockSizes);
 +freeMem(el->chromStarts);
 +freeMem(el->source);
 +freez(pEl);
 +}
 +
 +void bed12SourceFreeList(struct bed12Source **pList)
 +/* Free a list of dynamically allocated bed12Source's */
 +{
 +struct bed12Source *el, *next;
 +
 +for (el = *pList; el != NULL; el = next)
 +    {
 +    next = el->next;
 +    bed12SourceFree(&el);
 +    }
 +*pList = NULL;
 +}
 +
 +void bed12SourceOutput(struct bed12Source *el, FILE *f, char sep, char lastSep) 
 +/* Print out bed12Source.  Separate fields with sep. Follow last field with lastSep. */
 +{
 +if (sep == ',') fputc('"',f);
 +fprintf(f, "%s", el->chrom);
 +if (sep == ',') fputc('"',f);
 +fputc(sep,f);
 +fprintf(f, "%u", el->chromStart);
 +fputc(sep,f);
 +fprintf(f, "%u", el->chromEnd);
 +fputc(sep,f);
 +if (sep == ',') fputc('"',f);
 +fprintf(f, "%s", el->name);
 +if (sep == ',') fputc('"',f);
 +fputc(sep,f);
 +fprintf(f, "%u", el->score);
 +fputc(sep,f);
 +if (sep == ',') fputc('"',f);
 +fprintf(f, "%s", el->strand);
 +if (sep == ',') fputc('"',f);
 +fputc(sep,f);
 +fprintf(f, "%u", el->thickStart);
 +fputc(sep,f);
 +fprintf(f, "%u", el->thickEnd);
 +fputc(sep,f);
 +fprintf(f, "%u", el->reserved);
 +fputc(sep,f);
 +fprintf(f, "%d", el->blockCount);
 +fputc(sep,f);
 +{
 +int i;
 +if (sep == ',') fputc('{',f);
 +for (i=0; i<el->blockCount; ++i)
 +    {
 +    fprintf(f, "%d", el->blockSizes[i]);
 +    fputc(',', f);
 +    }
 +if (sep == ',') fputc('}',f);
 +}
 +fputc(sep,f);
 +{
 +int i;
 +if (sep == ',') fputc('{',f);
 +for (i=0; i<el->blockCount; ++i)
 +    {
 +    fprintf(f, "%d", el->chromStarts[i]);
 +    fputc(',', f);
 +    }
 +if (sep == ',') fputc('}',f);
 +}
 +fputc(sep,f);
 +if (sep == ',') fputc('"',f);
 +fprintf(f, "%s", el->source);
 +if (sep == ',') fputc('"',f);
 +fputc(lastSep,f);
 +}
 +
 +/* -------------------------------- End autoSql Generated Code -------------------------------- */
 +