static void printDescription(char *id, struct sqlConnection *conn, struct trackDb *tdb) /* Print out description of gene given ID. */ { char *description = descriptionString(id, conn); int i, exonCnt = 0, cdsExonCnt = 0; int cdsStart, cdsEnd; hPrintf("%s", description); freez(&description); /* print genome position and size */ char buffer[1024]; char *commaPos; if (isGencode || isGencode2) { hPrintf("<B>Gencode Transcript:</B> %s<br>\n", isGencode2 ? curGeneId : curAlignId);; char buffer[1024]; hPrintf("<B>Gencode Gene:</B> %s<br>\n", getGencodeGeneId(conn, curGeneId, buffer, sizeof buffer)); } exonCnt = curGenePred->exonCount; safef(buffer, sizeof buffer, "%s:%d-%d", curGeneChrom, curGeneStart+1, curGeneEnd); commaPos = addCommasToPos(database, buffer); hPrintf("<B>Transcript (Including UTRs)</B><br>\n"); hPrintf("<B> Position:</B> %s %s ",database, commaPos); sprintLongWithCommas(buffer, (long long)curGeneEnd - curGeneStart); hPrintf("<B>Size:</B> %s ", buffer); hPrintf("<B>Total Exon Count:</B> %d ", exonCnt); hPrintf("<B>Strand:</B> %s<br>\n",curGenePred->strand); cdsStart = curGenePred->cdsStart; cdsEnd = curGenePred->cdsEnd; /* count CDS exons */ if (cdsStart < cdsEnd) { for (i=0; i<exonCnt; i++) { if ( (cdsStart <= curGenePred->exonEnds[i]) && (cdsEnd >= curGenePred->exonStarts[i]) ) cdsExonCnt++; } hPrintf("<B>Coding Region</B><br>\n"); safef(buffer, sizeof buffer, "%s:%d-%d", curGeneChrom, cdsStart+1, cdsEnd); commaPos = addCommasToPos(database, buffer); hPrintf("<B> Position:</B> %s %s ",database, commaPos); sprintLongWithCommas(buffer, (long long)cdsEnd - cdsStart); hPrintf("<B>Size:</B> %s ", buffer); hPrintf("<B>Coding Exon Count:</B> %d \n", cdsExonCnt); } fflush(stdout); }
HoI4::Event::Event(const std::string& theType, std::istream& theStream): type(theType) { registerKeyword(std::regex("id"), [this](const std::string& unused, std::istream& theStream) { commonItems::singleString idString(theStream); id = idString.getString(); } ); registerKeyword(std::regex("title"), [this](const std::string& unused, std::istream& theStream) { commonItems::singleString titleString(theStream); title = titleString.getString(); } ); registerKeyword(std::regex("desc"), [this](const std::string& unused, std::istream& theStream) { commonItems::stringOfItem descriptionString(theStream); descriptions.push_back("desc " + descriptionString.getString()); } ); registerKeyword(std::regex("picture"), [this](const std::string& unused, std::istream& theStream) { commonItems::singleString pictureString(theStream); picture = pictureString.getString(); } ); registerKeyword(std::regex("major"), [this](const std::string& unused, std::istream& theStream) { commonItems::singleString majorString(theStream); majorEvent = (majorString.getString() == "yes"); } ); registerKeyword(std::regex("is_triggered_only"), [this](const std::string& unused, std::istream& theStream) { commonItems::singleString triggeredString(theStream); triggeredOnly = (triggeredString.getString() == "yes"); } ); registerKeyword(std::regex("hidden"), [this](const std::string& unused, std::istream& theStream) { commonItems::singleString hiddenString(theStream); hidden = (hiddenString.getString() == "yes"); } ); registerKeyword(std::regex("trigger"), [this](const std::string& unused, std::istream& theStream) { commonItems::stringOfObject triggerString(theStream); trigger = triggerString.getString(); } ); registerKeyword(std::regex("mean_time_to_happen"), [this](const std::string& unused, std::istream& theStream) { commonItems::stringOfObject MTTHString(theStream); meanTimeToHappen = MTTHString.getString(); } ); registerKeyword(std::regex("immediate"), [this](const std::string& unused, std::istream& theStream) { commonItems::stringOfObject immediateString(theStream); immediate = immediateString.getString(); } ); registerKeyword(std::regex("option"), [this](const std::string& unused, std::istream& theStream) { commonItems::stringOfObject optionString(theStream); options.push_back(optionString.getString()); } ); parseStream(theStream); }