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); }