Beispiel #1
0
void transMapGeneFreeList(struct transMapGene **pList)
/* Free a list of dynamically allocated transMapGene's */
{
struct transMapGene *el, *next;

for (el = *pList; el != NULL; el = next)
    {
    next = el->next;
    transMapGeneFree(&el);
    }
*pList = NULL;
}
static void getItemLabel(struct sqlConnection *conn, char *transMapInfoTbl, 
                         struct sqlConnection *geneConn, char *transMapGeneTbl,
                         unsigned labelSet,
                         struct linkedFeatures *lf)
/* get label for a transMap item */
{
struct transMapInfo *info = NULL;
struct transMapGene *gene = NULL;
boolean srcDbExists = FALSE;
if (labelSet & (useOrgCommon|useOrgAbbrv|useOrgDb|useGene))
    {
    info = transMapInfoQuery(conn, transMapInfoTbl, lf->name);
    srcDbExists = sqlDatabaseExists(info->srcDb);
    }
if ((labelSet & useGene) && (geneConn != NULL))
    {
    gene = transMapGeneQuery(geneConn, transMapGeneTbl,
                             info->srcDb, transMapIdToAcc(info->srcId));
    }

struct dyString *label = dyStringNew(64);
if (labelSet & useOrgAbbrv && srcDbExists)
    addToLabel(label, orgShortForDb(info->srcDb));
if (labelSet & useOrgCommon && srcDbExists)
    addToLabel(label, hOrganism(info->srcDb));
if (labelSet & useOrgDb)
    addToLabel(label, info->srcDb);
if (labelSet & useGene) 
    {
    if ((gene != NULL) && (strlen(gene->geneName) > 0))
        addToLabel(label, gene->geneName);
    else
        labelSet |= useAcc;  // no gene, so force acc
    }
if (labelSet & useAcc)
    addToLabel(label, transMapIdToAcc(lf->name));

transMapInfoFree(&info);
transMapGeneFree(&gene);
lf->extra = dyStringCannibalize(&label);
}