62 #define NCBI_USE_ERRCODE_X ObjMgr_SeqUtil
80 if (
value.find_first_of(
"\"=") != string::npos) {
112 for (; (p2 =
value.find(replace_what, p1)) != string::npos;
113 p1 = p2 + 1, p2 =
value.length()) {
160 #define SEQENTRY_HANDLE_ON_SEQENTRY_HANDLE_ITERATOR(Itr, Var) \
161 CSeq_entry_CI Itr(Var)
163 #define FOR_EACH_SEQENTRY_HANDLE_ON_SEQENTRY_HANDLE(Itr, Var) \
164 for (SEQENTRY_HANDLE_ON_SEQENTRY_HANDLE_ITERATOR(Itr, Var); Itr; ++Itr)
170 #define FOR_EACH_SEQID_ON_BIOSEQ_HANDLE(Itr, Var) \
171 ITERATE (CBioseq_Handle::TId, Itr, Var.GetId())
178 #define SEQFEAT_ON_BIOSEQ_HANDLE_ITERATOR(Itr, Var, Chs) \
179 CFeat_CI Itr(Var, CSeqFeatData::e_##Chs)
181 #define FOR_EACH_SEQFEAT_ON_BIOSEQ_HANDLE(Itr, Var, Chs) \
182 for (SEQFEAT_ON_BIOSEQ_HANDLE_ITERATOR(Itr, Var, Chs); Itr; ++Itr)
189 #define SEQFEAT_ON_SCOPE_ITERATOR(Itr, Var, Loc, Chs) \
190 CFeat_CI Itr(Var, Loc, CSeqFeatData::e_##Chs)
192 #define FOR_EACH_SEQFEAT_ON_SCOPE(Itr, Var, Loc, Chs) \
193 for (SEQFEAT_ON_SCOPE_ITERATOR(Itr, Var, Loc, Chs); Itr; ++Itr)
200 #define SELECTED_SEQFEAT_ON_BIOSEQ_HANDLE_ITERATOR(Itr, Var, Sel) \
201 CFeat_CI Itr(Var, Sel)
203 #define FOR_SELECTED_SEQFEAT_ON_BIOSEQ_HANDLE(Itr, Var, Sel) \
204 for (SELECTED_SEQFEAT_ON_BIOSEQ_HANDLE_ITERATOR(Itr, Var, Sel); Itr; ++Itr)
209 #define twochars(a,b) Uint2((a) << 8 | (b))
210 #define twocommas twochars(',',',')
211 #define twospaces twochars(' ',' ')
212 #define space_comma twochars(' ',',')
213 #define space_bracket twochars(' ',')')
214 #define bracket_space twochars('(',' ')
215 #define space_semicolon twochars(' ',';')
216 #define comma_space twochars(',',' ')
217 #define semicolon_space twochars(';',' ')
221 size_t left = instr.
size();
223 const char*
in = instr.
data();
226 while (left && *
in ==
' ')
232 while (left &&
in[left - 1] ==
' ')
239 if (left < 1)
return;
242 char*
out = (
char*)dest.c_str();
248 Uint2 two_chars = curr;
253 two_chars =
Uint2((two_chars << 8) |
next);
278 while (
next ==
' ' ||
next ==
',') {
288 while (
next ==
' ' ||
next ==
';') {
304 if (curr > 0 && curr !=
' ') {
308 dest.resize(
out - dest.c_str());
362 result =
"extrachromosomal";
412 result =
"endogenous virus";
545 int unverified_count = 0;
563 if (unverified_count > 1) {
747 switch (sid.
Which()) {
793 const CDbtag& gen_id =
id->GetGeneral ();
799 }
else if (oid.
IsId()) {
840 enum ENeededDescChoices {
850 int needed_desc_choices = fMolinfo | fUser | fSource | fGenbank | fEmbl | fComment;
853 desc_choices.reserve(7);
863 needed_desc_choices |= fTitle;
867 needed_desc_choices |= fPdb;
871 const list <string> *keywords =
NULL;
873 int num_super_kingdom = 0;
874 bool super_kingdoms_different =
false;
877 needed_desc_choices != 0 && desc_it; ++desc_it) {
878 switch (desc_it->Which()) {
882 if ((needed_desc_choices & fMolinfo) == 0) {
886 const CMolInfo& molinf = desc_it->GetMolinfo();
897 needed_desc_choices &= ~fTitle;
933 needed_desc_choices &= ~fMolinfo;
940 if ((needed_desc_choices & fUser) == 0) {
948 int unverified_count = 0;
949 needed_desc_choices &= ~fUser;
967 if (unverified_count > 1) {
976 }
else if (user_obj.
GetType().
GetStr() ==
"AutodefOptions" ) {
994 if ((needed_desc_choices & fComment) == 0) {
999 if (
NStr::Find (
m_Comment,
"[CAUTION] Could be the product of a pseudogene") != string::npos) {
1007 if ((needed_desc_choices & fSource) != 0) {
1010 needed_desc_choices &= ~fSource;
1012 const CBioSource &bsrc = desc_it->GetSource();
1016 for (
auto& omd : onp.
GetMod()) {
1017 if (omd->IsSetSubname()) {
1018 const string&
str = omd->GetSubname();
1032 if (! pon.
IsSet())
break;
1041 num_super_kingdom++;
1046 super_kingdoms_different =
true;
1050 if (num_super_kingdom > 1 && super_kingdoms_different) {
1059 if ((needed_desc_choices & fTitle) != 0) {
1061 if (
m_IsPDB || desc_it.GetSeq_entry_Handle().IsSeq() ) {
1065 needed_desc_choices &= ~fTitle;
1071 if ((needed_desc_choices & fGenbank) == 0) {
1074 const CGB_block& gbk = desc_it->GetGenbank();
1080 needed_desc_choices &= ~(fGenbank | fEmbl);
1086 if ((needed_desc_choices & fEmbl) == 0) {
1095 needed_desc_choices &= ~fEmbl;
1101 if ((needed_desc_choices & fPdb) == 0) {
1111 needed_desc_choices &= ~fPdb;
1122 if (keywords !=
NULL) {
1124 const string& clause = *kw_itr;
1128 const string&
str = *k_itr;
1160 if (!
data.IsRsite())
continue;
1162 if (rsite.
IsStr()) {
1258 }
catch (
const exception& ) {
1347 const COrgMod& omd = **omd_itr;
1431 }
catch (
const exception& ) {
1438 vector<CTempString>& desc,
1444 desc.push_back(
", pooled multiple clones");
1460 desc.push_back(
", ");
1461 desc.push_back(
buf);
1462 desc.push_back(
" clones");
1465 desc.push_back(
" clone ");
1477 if (strain.
size() >= taxname.
size()) {
1484 pos = taxname.
find(
' ', pos + 1);
1490 if (pos == taxname.
size() - strain.
size()) {
1492 char ch = taxname[pos - 1];
1496 }
else if (pos == taxname.
size() - strain.
size() - 1
1497 && taxname[pos - 1] ==
'\''
1498 && taxname[taxname.
size() - 1] ==
'\'') {
1509 [](
char c) {
return c ==
':' || c ==
' '|| c ==
'\t'; }),
1517 [](
char c) {
return c ==
' ' || c ==
'\t'; }),
1529 if (!specimen_voucher.
empty()) {
1531 joiner.
Add(
"voucher", specimen_voucher);
1535 if (!isolate.
empty() && (isolate != specimen_voucher)) {
1539 joiner.
Add(
"isolate", isolate);
1555 joiner.
Add(
"strain", add);
1561 joiner.
Add(
"substr.", add);
1587 vector<CTempString> clnvec;
1590 ITERATE (vector<CTempString>, it, clnvec) {
1616 bool add_gen_tag =
false;
1690 if (pos > 0 && !
isspace((
unsigned char)s[pos - 1]) ) {
1695 while (pos + 3 <
len &&
isdigit((
unsigned char)s[pos])) {
1698 if (s[pos] ==
'-' && s[pos + 1] ==
'P' &&
1699 isalpha((
unsigned char)s[pos + 2]) &&
1700 (pos + 3 ==
len || strchr(
" ,;", s[pos + 3])) ) {
1711 unsigned int genes = 0, cdregions = 0, prots = 0;
1727 const CSeq_feat& sft = feat_it->GetOriginalFeature();
1735 cdregion.
Reset(&sft);
1746 string cds_label, gene_label;
1756 .
Add(gene_label).
Add(
"), mRNA");
1771 const CSeq_feat& sft = feat_it->GetOriginalFeature();
1824 joiner.
Add(
"Sequence ").
Add(seqno).
Add(
" from Patent ")
1879 joiner.
Add(
"strain", add);
1885 joiner.
Add(
"substr.", add);
1893 vector<CTempString> clnvec;
1895 ITERATE (vector<CTempString>, it, clnvec) {
1912 joiner.
Add(
"completeness",
", complete sequence",
eHideType);
1941 const CSeq_feat& feat = feat_it->GetOriginalFeature();
1952 if (prot_length > longest) {
1954 longest = prot_length;
1955 bestprocessed = processed;
1956 }
else if (prot_length == longest) {
1959 if (processed < bestprocessed) {
1961 longest = prot_length;
1962 bestprocessed = processed;
1967 if (longest == seq_len && prot_feat) {
2035 }
catch (
const exception& ) {
2068 cleaned_location->
Assign( *cds_loc );
2080 cleaned_location->
Assign(*rev_loc);
2113 int current_state = 0;
2115 const char ch = *str_itr;
2120 current_state = next_state;
2157 if (
str.empty())
return str;
2158 if (taxname.empty())
return str;
2167 if (
suffix.length() != taxlen + 1)
return str;
2204 const string&
str = *prp_itr;
2232 comma =
", isoform ";
2236 comma =
" isoform ";
2257 if (! locus_tag.
empty()) {
2269 const string&
str = *act_itr;
2286 const string&
str = *syn_itr;
2314 if (! locus_tag.
empty()) {
2323 const string& low_qual =
"LOW QUALITY PROTEIN: ";
2347 if ( organelle[0] !=
'\0' && ! taxname.
empty()
2356 if ((taxname.
empty() ||
2360 taxname.
find (
"Vector") ==
NPOS)) &&
2382 }
else if (! taxname.
empty() ) {
2414 const string&
str = *prp_itr;
2442 comma =
", isoform ";
2446 comma =
" isoform ";
2465 if (! locus_tag.
empty()) {
2477 const string&
str = *act_itr;
2493 const string&
str = *syn_itr;
2518 if (! locus_tag.
empty()) {
2526 const string& low_qual =
"LOW QUALITY PROTEIN: ";
2550 if ( organelle[0] !=
'\0' && ! taxname.
empty()
2559 if ((taxname.
empty() ||
2563 taxname.
find (
"Vector") ==
NPOS)) &&
2573 }
else if (! taxname.
empty() ) {
2582 const char*& completeness,
2595 const CSeq_feat& cds = it->GetOriginalFeature();
2602 completeness =
"partial";
2609 if (!
FIELD_IS (sfd, Gene))
continue;
2622 if (locus.empty()) {
2652 const char * completeness =
"complete";
2653 bool cds_found =
false;
2654 string locus, product;
2672 vector<CTempString> clnvec;
2674 ITERATE (vector<CTempString>, it, clnvec) {
2681 if (! product.empty()) {
2685 if (! locus.empty()) {
2688 if ((! product.empty()) || (! locus.empty())) {
2724 vector<CTempString> clnvec;
2726 ITERATE (vector<CTempString>, it, clnvec) {
2748 if (!
tmp.empty()) {
2827 auto nucx = bsxp.
Lock();
2829 if (nucx->IsTPAExp()) {
2831 }
else if (nucx->IsTPAInf()) {
2833 }
else if (nucx->IsTPAReasm()) {
2847 prefix =
"MULTISPECIES: ";
2850 prefix =
"PUTATIVE PSEUDOGENE: ";
2861 prefix =
"LOW QUALITY PROTEIN: ";
2884 type =
", LOW-PASS SEQUENCE SAMPLING";
2892 type =
", WORKING DRAFT SEQUENCE";
2896 type =
", *** SEQUENCING IN PROGRESS ***";
2905 unsigned int pieces = 1;
2913 +
" " + un +
"ordered pieces");
2922 type =
", complete sequence";
2927 type =
", mRNA sequence";
2932 type =
", sequence tagged site";
2937 type =
", genomic survey sequence";
2942 if (
m_MainTitle.find (
"whole genome shotgun sequencing project") ==
NPOS){
2943 type =
", whole genome shotgun sequencing project";
2945 }
else if (
m_MainTitle.find (
"whole genome shotgun sequence") ==
NPOS) {
2956 type +=
", whole genome shotgun sequence";
2962 type =
", transcriptome shotgun assembly";
2968 type =
", mRNA sequence";
2971 type =
", rRNA sequence";
2974 type =
", ncRNA sequence";
2982 type =
", transcribed RNA sequence";
2993 type =
", targeted locus study";
2997 type +=
", sequence";
3008 if (appendComplete) {
3012 comp =
", complete sequence";
3018 comp =
", complete genome";
3021 comp =
", complete sequence";
3023 comp =
", complete sequence";
3025 comp =
", complete genome";
3033 unsigned int num_gaps = 0;
3039 +
" unordered pieces");
3043 if (! study.empty()) {
3052 size_t pos =
str.find_last_not_of (
".,;~ ");
3054 str.erase (pos + 1);
3100 len1 = title.length();
3103 idx = len1 - len2 - 3;
3104 if (len1 > len2 + 4 && title [idx] ==
' ' && title [idx + 1] ==
'[' && title [len1 - 1] ==
']') {
3106 if (pos == idx + 2) {
3120 size_t pos, tpos =
NPOS, opos =
NPOS;
3148 if (len1 > len2 + 4) {
3173 if (tpos ==
NPOS)
return;
3186 if ( !
str.empty() ) {
3187 string paren =
"(" +
str +
")";
3222 if ( organelle[0] !=
'\0' && ! taxname.
empty()
3231 if ((taxname.
empty() ||
3235 taxname.
find (
"Vector") ==
NPOS)) &&
3241 auto nucx = bsxp.
Lock();
3259 }
else if (! taxname.
empty() ) {
3270 size_t pos, tpos =
NPOS, opos =
NPOS;
3305 if (len1 > len2 + 4) {
3326 if (tpos ==
NPOS)
return;
3339 if ( !
str.empty() ) {
3340 string paren =
"(" +
str +
")";
3375 if ( organelle[0] !=
'\0' && ! taxname.
empty()
3384 if ((taxname.
empty() ||
3388 taxname.
find (
"Vector") ==
NPOS)) &&
3394 auto nucx = bsxp.
Lock();
3412 }
else if (! taxname.
empty() ) {
3444 "UNVERIFIED_ASMBLY:",
3445 "UNVERIFIED_CONTAM:",
3476 bool strain_seen =
false;
3491 if (
mod.IsSetSubtype() &&
mod.IsSetSubname()) {
3493 switch (
mod.GetSubtype()) {
3497 <<
"key 'strain' would appear multiple times, but only using the first.");
3639 gcode = std::to_string(icode);
3640 joiner.
Add(
"gcode", gcode);
3658 gcode = std::to_string(icode);
3659 joiner.
Add(
"gcode", gcode);
3663 joiner.
Add(
"gcode",
"11");
3672 gcode = std::to_string(icode);
3673 joiner.
Add(
"gcode", gcode);
3763 joiner.
Add(
"endogenous_virus_name",
subname);
3810 joiner.
Add(
"germline",
"true");
3813 joiner.
Add(
"rearranged",
"true");
3816 joiner.
Add(
"transgenic",
"true");
3819 joiner.
Add(
"environmental_sample",
"true");
3830 if ( primers.
CanGet() ) {
3836 if( (*it)->IsSetForward() ) {
3840 const string &fwd_name = ( (*it2)->CanGetName() ? (*it2)->GetName().Get() :
kEmptyStr );
3841 if( ! fwd_name.empty() ) {
3842 joiner.
Add(
"fwd-primer-name", fwd_name);
3844 const string &fwd_seq = ( (*it2)->CanGetSeq() ? (*it2)->GetSeq().Get() :
kEmptyStr );
3846 if( ! fwd_seq.empty() ) {
3847 joiner.
Add(
"fwd-primer-seq", fwd_seq);
3853 if( (*it)->IsSetReverse() ) {
3857 const string &rev_name = ((*it2)->CanGetName() ? (*it2)->GetName().Get() :
kEmptyStr );
3858 if( ! rev_name.empty() ) {
3859 joiner.
Add(
"rev-primer-name", rev_name);
3861 const string &rev_seq = ( (*it2)->CanGetSeq() ? (*it2)->GetSeq().Get() :
kEmptyStr );
3863 if( ! rev_seq.empty() ) {
3864 joiner.
Add(
"rev-primer-seq", rev_seq);
3912 if (pMolInfo !=
NULL) {
3913 const CMolInfo & molinfo = *pMolInfo;
3916 if (find_iter != sc_TechMap.end()) {
3922 joiner.
Join(&modifiers);
3935 bool capitalize =
true;
3936 bool appendComplete =
false;
3956 size_t pos =
m_MainTitle.find_last_not_of (
".,;~ ");
4039 appendComplete =
true;
4069 size_t pos = decoded.find_last_not_of (
",;~ ");
4071 decoded.erase (pos + 1);
4095 if (!
final.
empty() &&
islower ((
unsigned char)
final[0]) && capitalize) {
4096 final [0] =
toupper ((
unsigned char)
final [0]);
4133 feature::CFeatTree& ftree,
4161 feature::CFeatTree& ftree,
4174 AddWord (
"heterogeneous population sequenced", 1);
4175 AddWord (
"low-quality sequence region", 2);
4176 AddWord (
"unextendable partial coding region", 3);
User-defined methods of the data storage class.
User-defined methods of the data storage class.
void remove_if(Container &c, Predicate *__pred)
void SetOptions(const CAutoDefOptions &options)
void InitFromUserObject(const CUser_object &obj)
void SetOptionsObject(const CUser_object &user)
string GetOneDefLine(CAutoDefModifierCombo *mod_combo, const CBioseq_Handle &bh, CRef< feature::CFeatTree > featTree=null)
const string & GetTaxname(void) const
const COrgName & GetOrgname(void) const
bool IsSetOrgname(void) const
bool IsSetTaxname(void) const
CTempString GetSubstrain(void)
int GetPatentSequence(void) const
CSeq_inst::TLength GetLength(void) const
CTempString GetCultivar(void)
CTempString GetMetaGenomeSource(void)
CTempString GetBreed(void)
CTempString GetGenus(void)
CMolInfo::TTech GetTech(void)
CRef< CFeatureIndex > GetFeatureForProduct(void)
CTempString GetStrain(void)
bool IsTSAMaster(void) const
bool IsHTGSCancelled(void)
bool IsThirdParty(void) const
bool IsPatent(void) const
bool IsUnverifiedFeature(void)
CTempString GetSpecies(void)
CConstRef< CBioSource > GetBioSource(void)
bool IsWGSMaster(void) const
bool IsTLSMaster(void) const
string GetSecondSuperKingdom(void)
CMolInfo::TCompleteness GetCompleteness(void)
int GetPDBChain(void) const
string GetPatentCountry(void) const
bool IsCrossKingdom(void)
string GetPDBChainID(void) const
CTempString GetIsolate(void)
CTempString GetPDBCompound(void)
const string & GetTitle(void)
string GetPatentNumber(void) const
bool IsUnreviewedUnannotated(void)
CTempString GetSegment(void)
CTempString GetLinkageGroup(void)
const string & GetTaxname(void)
CSeq_inst::TTopology GetTopology(void) const
CWeakRef< CBioseqIndex > GetBioseqForProduct(void)
int GetGeneralId(void) const
const string & GetOrganelle(void)
CRef< CFeatureIndex > GetBestProteinFeature(void)
string GetGeneralStr(void) const
bool IsVirtual(void) const
CTempString GetSpecimenVoucher(void)
CTempString GetClone(void)
CBioSource::TGenome GetGenome(void)
CTempString GetChromosome(void)
bool IsUnverifiedMisassembled(void)
CMolInfo::TBiomol GetBiomol(void)
bool IsHTGSUnfinished(void)
CTempString GetPlasmid(void)
string GetFirstSuperKingdom(void)
bool IsUnverifiedContaminant(void)
bool IsMultispecies(void)
const string & GetComment(void)
bool IsUnverifiedOrganism(void)
CTempString GetTargetedLocus(void)
const string & GetDescTaxname(void)
bool IsSkippable(void) const
void ReplaceAndAdd(const CTempString &value, const CTempString &replace_what, const CTempString &replace_with)
void Add(const CTempString &name, const CTempString &value, EHidePart hide=eHideNone)
CDefLineJoiner(bool show_mods=false)
CTextJoiner< 64, CTempString > m_Joiner
void Join(std::string *result) const
CRef< CFeatureIndex > GetBestGene(void)
const CMappedFeat GetMappedFeat(void) const
const string & GetSomeNumber(void) const
@OrgMod.hpp User-defined methods of the data storage class.
CRef< CBioseqIndex > GetBioseqIndex(void)
namespace ncbi::objects::
class CStaticArrayMap<> is an array adaptor that provides an STLish interface to statically-defined a...
TBase::const_iterator const_iterator
static bool NCBI_UseGeoLocNameForCountry(void)
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
@ eObjectType_AutodefOptions
bool IsUnverifiedMisassembled() const
bool IsUnverifiedOrganism() const
bool IsUnverifiedContaminant() const
bool IsUnverifiedFeature() const
bool IsUnverified() const
bool IsUnreviewedUnannotated() const
bool IsUnreviewed() const
EObjectType GetObjectType() const
static size_t s_TitleEndsInOrganism(string &title, CTempString taxname)
static bool x_GetSegSeqInfoViaCDS(string &locus, string &product, const char *&completeness, const CBioseq_Handle &bsh)
static void s_AddVoucherAndIsolate(const CTempString &taxname, const CTempString &strain, const CTempString &specimen_voucher, const CTempString &isolate, CDefLineJoiner &joiner)
#define FOR_EACH_SEQID_ON_BIOSEQ_HANDLE(Itr, Var)
void x_CleanAndCompress(string &dest, const CTempString &instr, bool isProt)
#define FOR_SELECTED_SEQFEAT_ON_BIOSEQ_HANDLE(Itr, Var, Sel)
static string s_RemoveWhiteSpace(string str)
static string s_RemoveBracketedOrgFromEnd(string str, string taxname)
#define FOR_EACH_SEQFEAT_ON_BIOSEQ_HANDLE(Itr, Var, Chs)
static void x_FlyCG_PtoR(string &s)
#define FOR_EACH_SEQFEAT_ON_SCOPE(Itr, Var, Loc, Chs)
static void s_TrimMainTitle(string &str)
static bool s_EndsWithStrain(const CTempString &taxname, const CTempString &strain)
static const char * s_proteinOrganellePrefix[]
static string s_RemoveColonsAndWhiteSpace(string str)
static CConstRef< CBioSource > x_GetSourceFeatViaCDS(const CBioseq_Handle &bsh)
static const char * s_tpaPrefixList[]
static bool s_IsVirusOrPhage(const CTempString &taxname)
API (CDeflineGenerator) for computing sequences' titles ("definitions").
std::ofstream out("events_result.xml")
main entry point for tests
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static const char * str(char *buf, int n)
#define FOR_EACH_USERFIELD_ON_USEROBJECT(Itr, Var)
FOR_EACH_USERFIELD_ON_USEROBJECT EDIT_EACH_USERFIELD_ON_USEROBJECT.
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define ERR_POST_X(err_subcode, message)
Error posting with default error code and given error subcode.
void Warning(CExceptionArgs_Base &args)
static EAccessionInfo IdentifyAccession(const CTempString &accession, TParseFlags flags=fParse_AnyRaw)
Deduces information from a bare accession a la WHICH_db_accession; may report false negatives on prop...
CConstRef< CSeq_id > GetSeqId(void) const
EAccessionInfo
For IdentifyAccession (below)
CSeq_id::E_Choice Which(void) const
string GetLabel(const CSeq_id &id)
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
CMappedFeat GetBestGeneForCds(const CMappedFeat &cds_feat, CFeatTree *feat_tree=0, const SAnnotSelector *base_sel=0, CFeatTree::EBestGeneType lookup_type=CFeatTree::eBestGene_TreeOnly)
CMappedFeat GetBestOverlappingFeat(const CMappedFeat &feat, CSeqFeatData::ESubtype need_subtype, sequence::EOverlapType overlap_type, CFeatTree *feat_tree=0, const SAnnotSelector *base_sel=0)
@ fFGL_Content
Include its content if there is any.
TSeqPos GetLength(const CSeq_id &id, CScope *scope)
Get sequence length if scope not null, else return max possible TSeqPos.
CSeq_loc * SeqLocRevCmpl(const CSeq_loc &loc, CScope *scope)
Get reverse complement of the seq-loc (?)
@ eOverlap_SubsetRev
1st is a subset of 2nd ranges
@ eOverlap_Contained
2nd contained within 1st extremes
void x_AdjustProteinTitleSuffixIdx(const CBioseq_Handle &bsh)
CRef< feature::CFeatTree > m_Feat_Tree
CTempString m_Chromosome
subsource fields
CTempString m_SpecimenVoucher
CDeflineGenerator(void)
Constructor.
void x_SetTitleFromNR(const CBioseq_Handle &bsh)
bool m_Reconstruct
ignore existing title is forced for certain types
const CSeq_feat * GetCDSForProduct(const CBioseq &product, CScope *scope)
Get the encoding CDS feature of a given protein sequence.
void x_SetTitleFromGPipe(void)
int TUserFlags
Binary "OR" of EUserFlags.
CTempString m_PDBCompound
pdb block fields
bool m_HTGSCancelled
genbank or embl block keyword fields
void x_DescribeClones(vector< CTempString > &desc, string &buf)
CTempString m_UnreviewedPrefix
void x_SetTitleFromMap(void)
string GenerateDefline(const CBioseq_Handle &bsh, TUserFlags flags=0)
Main method.
bool m_ConstructedFeatTree
string m_FirstSuperKingdom
CTempString m_LinkageGroup
void x_SetTitleFromWGS(void)
bool m_UsePDBCompoundForDefline
bool m_IsNA
seq-inst fields
void x_SetTitleFromProtein(const CBioseq_Handle &bsh)
void x_SetBioSrcIdx(const CBioseq_Handle &bsh)
void x_SetFlagsIdx(const CBioseq_Handle &bsh, TUserFlags flags)
CSeq_inst::TLength m_Length
string m_rEnzyme
map fields
const char * x_OrganelleName(CBioSource::TGenome genome) const
CConstRef< CGene_ref > x_GetGeneRefViaCDS(const CMappedFeat &mapped_cds)
CConstRef< CSeq_feat > x_GetLongestProtein(const CBioseq_Handle &bsh)
CTempString m_UnverifiedPrefix
void x_AdjustProteinTitleSuffix(const CBioseq_Handle &bsh)
void x_SetTitleFromProteinIdx(const CBioseq_Handle &bsh)
const CBioSource * GetBioSource(const CBioseq &bioseq)
Retrieve the BioSource object for a given bioseq handle.
bool m_InitializedFeatTree
CBioSource::TGenome m_Genome
string x_GetModifiers(const CBioseq_Handle &handle)
void x_SetTitleFromPatent(void)
const CMolInfo * GetMolInfo(const CBioseq &bioseq)
Retrieve the MolInfo object for a given bioseq handle.
CTempString m_Comment
comment fields
bool x_IsComplete() const
void x_SetTitleFromSegSeq(const CBioseq_Handle &bsh)
void x_SetTitleFromNC(void)
~CDeflineGenerator(void)
Destructor.
CMappedFeat GetMappedCDSForProduct(const CBioseq_Handle &product)
CConstRef< CBioSource > m_Source
biosource fields
CTempString m_TargetedLocus
static CSafeStatic< CLowQualityTextFsm > ms_p_Low_Quality_Fsa
void x_SetBioSrc(const CBioseq_Handle &bsh)
bool m_IsUnverified
user object fields
void x_SetTitleFromBioSrc(void)
void x_Init(void)
internal methods
void x_SetTitleFromPDB(void)
CSeq_entry_Handle m_TopSEH
internal feature tree for parent mapping
void x_SetSuffix(string &suffix, const CBioseq_Handle &bsh, bool appendComplete)
CMolInfo::TCompleteness m_MICompleteness
string m_SecondSuperKingdom
void x_SetTitleFromNM(const CBioseq_Handle &bsh)
bool x_CDShasLowQualityException(const CSeq_feat &sft)
void x_SetFlags(const CBioseq_Handle &bsh, TUserFlags flags)
CTempString m_Breed
orgmod fields
CRef< CSeqEntryIndex > m_Idx
index with feature tree for each Bioseq
CTempString m_MetaGenomeSource
CSeq_inst::TTopology m_Topology
void x_SetPrefix(string &prefix, const CBioseq_Handle &bsh)
CMolInfo::TBiomol m_MIBiomol
molinfo fields
@ fLocalAnnotsOnly
Never use related sequences' annotations.
@ fDevMode
Development mode for testing new features.
@ fDoNotUseAutoDef
Disable internal call to auto-def.
@ fGpipeMode
Use GPipe defaults.
@ fOmitTaxonomicName
Do not add organism suffix to proteins.
@ fFastaFormat
Generate FASTA defline.
@ fShowModifiers
Show key-value pair modifiers (e.g. "[organism=Homo sapiens]")
@ fIgnoreExisting
Generate fresh titles unconditionally.
@ fAllProteinNames
List all relevant proteins, not just one.
CBioseq_Handle AddBioseq(CBioseq &bioseq, TPriority pri=kPriority_Default, EExist action=eExist_Throw)
Add bioseq, return bioseq handle.
@ kPriority_Default
Use default priority for added data.
const TInst_Ext & GetInst_Ext(void) const
bool IsSetInst_Ext(void) const
const CSeqFeatData & GetData(void) const
CConstRef< CSeq_id > GetSeqId(void) const
Get id which can be used to access this bioseq handle Throws an exception if none is available.
bool IsSetInst_Length(void) const
TInst_Topology GetInst_Topology(void) const
TInst_Length GetInst_Length(void) const
bool IsSetInst(void) const
bool IsSetInst_Repr(void) const
bool CanGetInst_Topology(void) const
TInst_Repr GetInst_Repr(void) const
CScope & GetScope(void) const
Get scope this handle belongs to.
SAnnotSelector & SetResolveTSE(void)
SetResolveTSE() is equivalent to SetResolveMethod(eResolve_TSE).
SAnnotSelector & SetFeatType(TFeatType type)
Set feature type (also set annotation type to feat)
const CSeq_feat & GetOriginalFeature(void) const
Get original feature with unmapped location/product.
SAnnotSelector & IncludeFeatType(TFeatType type)
Include feature type in the search.
vector< CSeqdesc::E_Choice > TDescChoices
bool Empty(void) const THROWS_NONE
Check if CConstRef is empty – not pointing to any object which means having a null value.
void Reset(void)
Reset reference object.
void Reset(void)
Reset reference object.
TRefType Lock(void) const
Lock the object and return reference to it.
bool NotEmpty(void) const THROWS_NONE
Check if CConstRef is not empty – pointing to an object and has a non-null value.
bool Empty(void) const THROWS_NONE
Check if CRef is empty – not pointing to any object, which means having a null value.
uint16_t Uint2
2-byte (16-bit) unsigned integer
void AddWord(const string &word, const int &match)
static string HtmlDecode(const CTempString str, EEncoding encoding=eEncoding_Unknown, THtmlDecode *result_flags=NULL)
Decode HTML entities and character references.
NCBI_NS_STD::string::size_type SIZE_TYPE
CTextJoiner & Add(const TIn &s)
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
static SIZE_TYPE FindNoCase(const CTempString str, const CTempString pattern, SIZE_TYPE start, SIZE_TYPE end, EOccurrence which=eFirst)
Find the pattern in the specified range of a string using a case insensitive search.
static bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
static void TruncateSpacesInPlace(string &str, ETrunc where=eTrunc_Both)
Truncate spaces in a string (in-place)
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static SIZE_TYPE Find(const CTempString str, const CTempString pattern, ECase use_case=eCase, EDirection direction=eForwardSearch, SIZE_TYPE occurrence=0)
Find the pattern in the string.
void Join(TOut *result) const
const char * data(void) const
Return a pointer to the array represented.
bool empty(void) const
Return true if the represented string is empty (i.e., the length is zero)
static SIZE_TYPE FindCase(const CTempString str, const CTempString pattern, SIZE_TYPE start, SIZE_TYPE end, EOccurrence which=eFirst)
Find the pattern in the specified range of a string using a case sensitive search.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
void clear(void)
Clears the string.
size_type length(void) const
Return the length of the represented array.
CTempString substr(size_type pos) const
Obtain a substring from this string, beginning at a given offset.
size_type find_first_not_of(const CTempString match, size_type pos=0) const
Find the first occurrence of any character not in the matching string within the current string,...
static bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
size_type find(const CTempString match, size_type pos=0) const
Find the first instance of the entire matching string within the current string, beginning at an opti...
static string & ReplaceInPlace(string &src, const string &search, const string &replace, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
const char *const kEmptyCStr
Empty "C" string (points to a '\0').
size_type size(void) const
Return the length of the represented array.
@ fSplit_Tokenize
All delimiters are merged and trimmed, to get non-empty tokens only.
@ eReverseSearch
Search in a backward direction.
@ eNocase
Case insensitive compare.
const TKeywords & GetKeywords(void) const
Get the Keywords member data.
bool IsSetKeywords(void) const
Check if a value has been assigned to Keywords data member.
const TKeywords & GetKeywords(void) const
Get the Keywords member data.
bool IsSetKeywords(void) const
Check if a value has been assigned to Keywords data member.
const TCountry & GetCountry(void) const
Get the Country member data.
const Tdata & Get(void) const
Get the member data.
const TSubtype & GetSubtype(void) const
Get the Subtype member data.
const TPcr_primers & GetPcr_primers(void) const
Get the Pcr_primers member data.
TGenome GetGenome(void) const
Get the Genome member data.
const Tdata & Get(void) const
Get the member data.
bool IsSetOrg(void) const
Check if a value has been assigned to Org data member.
list< CRef< CSubSource > > TSubtype
bool IsSetSubtype(void) const
Check if a value has been assigned to Subtype data member.
bool IsSetPcr_primers(void) const
Check if a value has been assigned to Pcr_primers data member.
bool CanGetGenome(void) const
Check if it is safe to call GetGenome method.
const TOrg & GetOrg(void) const
Get the Org member data.
TSubtype GetSubtype(void) const
Get the Subtype member data.
bool CanGet(void) const
Check if it is safe to call Get method.
bool IsSetGenome(void) const
Check if a value has been assigned to Genome data member.
bool IsSetSubtype(void) const
Check if a value has been assigned to Subtype data member.
bool CanGet(void) const
Check if it is safe to call Get method.
const TName & GetName(void) const
Get the Name member data.
list< CRef< CPCRReaction > > Tdata
bool IsSetName(void) const
Check if a value has been assigned to Name data member.
list< CRef< CPCRPrimer > > Tdata
@ eSubtype_collection_date
DD-MMM-YYYY format.
@ eSubtype_insertion_seq_name
@ eSubtype_transposon_name
@ eSubtype_lat_lon
+/- decimal degrees
@ eSubtype_collected_by
name of person who collected the sample
@ eSubtype_isolation_source
@ eSubtype_environmental_sample
@ eSubtype_endogenous_virus_name
@ eSubtype_identified_by
name of person who identified the sample
@ eSubtype_whole_replicon
@ eGenome_plasmid_in_mitochondrion
@ eGenome_plasmid_in_plastid
const TDesc & GetDesc(void) const
Get the Desc member data.
bool IsSetLocus_tag(void) const
systematic gene name (e.g., MI0001, ORF0069) Check if a value has been assigned to Locus_tag data mem...
bool IsSetLocus(void) const
Official gene symbol Check if a value has been assigned to Locus data member.
bool IsSetDesc(void) const
descriptive name Check if a value has been assigned to Desc data member.
const TLocus_tag & GetLocus_tag(void) const
Get the Locus_tag member data.
const TLocus & GetLocus(void) const
Get the Locus member data.
const TStr & GetStr(void) const
Get the variant data.
bool IsStr(void) const
Check if variant Str is selected.
const TTag & GetTag(void) const
Get the Tag member data.
bool IsId(void) const
Check if variant Id is selected.
const TData & GetData(void) const
Get the Data member data.
bool IsSetTag(void) const
appropriate tag Check if a value has been assigned to Tag data member.
bool IsStr(void) const
Check if variant Str is selected.
const TStr & GetStr(void) const
Get the variant data.
const TLabel & GetLabel(void) const
Get the Label member data.
const TType & GetType(void) const
Get the Type member data.
bool IsSetData(void) const
Check if a value has been assigned to Data data member.
TId GetId(void) const
Get the variant data.
const TMod & GetMod(void) const
Get the Mod member data.
bool IsSetPgcode(void) const
plastid genetic code Check if a value has been assigned to Pgcode data member.
TFixed_level GetFixed_level(void) const
Get the Fixed_level member data.
TMgcode GetMgcode(void) const
Get the Mgcode member data.
TGcode GetGcode(void) const
Get the Gcode member data.
const TSubname & GetSubname(void) const
Get the Subname member data.
bool IsSetFixed_level(void) const
Check if a value has been assigned to Fixed_level data member.
bool IsPartial(void) const
Check if variant Partial is selected.
const TName & GetName(void) const
Get the Name member data.
const TTaxname & GetTaxname(void) const
Get the Taxname member data.
bool IsSetMgcode(void) const
mitochondrial genetic code Check if a value has been assigned to Mgcode data member.
const TLevel & GetLevel(void) const
Get the Level member data.
bool IsSetName(void) const
Check if a value has been assigned to Name data member.
const TBinomial & GetBinomial(void) const
Get the variant data.
bool IsSetMod(void) const
Check if a value has been assigned to Mod data member.
const Tdata & Get(void) const
Get the member data.
const TName & GetName(void) const
Get the Name member data.
list< CRef< COrgMod > > TMod
bool IsSetGenus(void) const
required Check if a value has been assigned to Genus data member.
const TSpecies & GetSpecies(void) const
Get the Species member data.
list< CRef< CTaxElement > > Tdata
bool IsSetOrgname(void) const
Check if a value has been assigned to Orgname data member.
bool IsSetSubname(void) const
Check if a value has been assigned to Subname data member.
bool IsSetTaxname(void) const
preferred formal name Check if a value has been assigned to Taxname data member.
bool IsSetLevel(void) const
Check if a value has been assigned to Level data member.
bool IsSetGcode(void) const
genetic code (see CdRegion) Check if a value has been assigned to Gcode data member.
const TGenus & GetGenus(void) const
Get the Genus member data.
const TPartial & GetPartial(void) const
Get the variant data.
bool IsSet(void) const
Check if a value has been assigned to data member.
bool IsSetSpecies(void) const
species required if subspecies used Check if a value has been assigned to Species data member.
TPgcode GetPgcode(void) const
Get the Pgcode member data.
bool IsSetName(void) const
Check if a value has been assigned to Name data member.
const TOrgname & GetOrgname(void) const
Get the Orgname member data.
bool IsBinomial(void) const
Check if variant Binomial is selected.
@ eSubtype_gb_acronym
used by taxonomy database
@ eSubtype_gb_synonym
used by taxonomy database
@ eSubtype_other
ASN5: old-name (254) will be added to next spec.
@ eSubtype_dosage
chromosome dosage of hybrid
@ eSubtype_nat_host
natural host of this specimen
@ eSubtype_metagenome_source
@ eSubtype_specimen_voucher
@ eSubtype_nomenclature
code of nomenclature in subname (B,P,V,Z or combination)
@ eSubtype_gb_anamorph
used by taxonomy database
@ eSubtype_culture_collection
@ eSubtype_forma_specialis
bool IsSetDesc(void) const
description (instead of name) Check if a value has been assigned to Desc data member.
EProcessed
processing status
TProcessed GetProcessed(void) const
Get the Processed member data.
bool IsSetProcessed(void) const
Check if a value has been assigned to Processed data member.
const TDesc & GetDesc(void) const
Get the Desc member data.
bool IsStr(void) const
Check if variant Str is selected.
const TStr & GetStr(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
bool IsSetData(void) const
the specific data Check if a value has been assigned to Data data member.
bool IsSetPartial(void) const
incomplete in some way? Check if a value has been assigned to Partial data member.
const TLocation & GetLocation(void) const
Get the Location member data.
bool IsGene(void) const
Check if variant Gene is selected.
const TData & GetData(void) const
Get the Data member data.
bool IsSetData(void) const
the specific data Check if a value has been assigned to Data data member.
bool IsSetExcept(void) const
something funny about this? Check if a value has been assigned to Except data member.
const TExcept_text & GetExcept_text(void) const
Get the Except_text member data.
bool IsSetExcept_text(void) const
explain if except=TRUE Check if a value has been assigned to Except_text data member.
const TBiosrc & GetBiosrc(void) const
Get the variant data.
bool IsBiosrc(void) const
Check if variant Biosrc is selected.
const TGene & GetGene(void) const
Get the variant data.
const TProt & GetProt(void) const
Get the variant data.
TExcept GetExcept(void) const
Get the Except member data.
bool IsSetLocation(void) const
feature made from Check if a value has been assigned to Location data member.
TChain GetChain(void) const
Get the Chain member data.
bool IsSetChain_id(void) const
chain identifier; length-independent generalization of 'chain' Check if a value has been assigned to ...
bool IsSetChain(void) const
Deprecated: 'chain' can't support multiple character PDB chain identifiers (introduced in 2015).
bool IsSetAccession(void) const
Check if a value has been assigned to Accession data member.
bool IsSetCit(void) const
patent citation Check if a value has been assigned to Cit data member.
TSeqid GetSeqid(void) const
Get the Seqid member data.
const TChain_id & GetChain_id(void) const
Get the Chain_id member data.
bool IsSetSeqid(void) const
number of sequence in patent Check if a value has been assigned to Seqid data member.
const TCit & GetCit(void) const
Get the Cit member data.
const TAccession & GetAccession(void) const
Get the Accession member data.
bool IsMap(void) const
Check if variant Map is selected.
const TSeg & GetSeg(void) const
Get the variant data.
const TUser & GetUser(void) const
Get the variant data.
ERepr
representation class
const Tdata & Get(void) const
Get the member data.
const TMap & GetMap(void) const
Get the variant data.
TTech GetTech(void) const
Get the Tech member data.
list< CRef< CSeq_feat > > Tdata
TBiomol GetBiomol(void) const
Get the Biomol member data.
ETopology
topology of molecule
bool IsSetTech(void) const
Check if a value has been assigned to Tech data member.
TCompleteness GetCompleteness(void) const
Get the Completeness member data.
bool IsSet(void) const
Check if a value has been assigned to data member.
@ eRepr_seg
segmented sequence
@ eRepr_delta
sequence made by changes (delta) to others
@ eRepr_map
ordered map of any kind
@ eRepr_virtual
no seq data
@ eTech_htgs_2
ordered High Throughput sequence contig
@ eTech_physmap
from physical mapping techniques
@ eTech_htc
high throughput cDNA
@ eTech_both
concept transl. w/ partial pept. seq.
@ eTech_seq_pept_homol
sequenced peptide, ordered by homology
@ eTech_composite_wgs_htgs
composite of WGS and HTGS
@ eTech_sts
Sequence Tagged Site.
@ eTech_htgs_3
finished High Throughput sequence
@ eTech_seq_pept_overlap
sequenced peptide, ordered by overlap
@ eTech_htgs_1
unordered High Throughput sequence contig
@ eTech_concept_trans
conceptual translation
@ eTech_tsa
transcriptome shotgun assembly
@ eTech_standard
standard sequencing
@ eTech_wgs
whole genome shotgun sequencing
@ eTech_seq_pept
peptide was sequenced
@ eTech_survey
one-pass genomic sequence
@ eTech_barcode
barcode of life project
@ eTech_htgs_0
single genomic reads for coordination
@ eTech_derived
derived from other data, not a primary entity
@ eTech_fli_cdna
full length insert cDNA
@ eTech_est
Expressed Sequence Tag.
@ eTech_concept_trans_a
conceptual transl. supplied by author
@ eTech_genemap
from genetic mapping techniques
@ e_Embl
EMBL specific information.
@ e_User
user defined object
@ e_Genbank
GenBank specific info.
@ e_Comment
a more extensive comment
@ e_Molinfo
info on the molecule and techniques
@ e_Title
a title for this sequence
@ e_Pdb
PDB specific information.
@ e_Source
source of materials, includes Org-ref
unsigned int
A callback function used to compare two keys in a database.
Definition of all error codes used in objmgr libraries (xobjmgr.lib, xobjutil.lib and others).
constexpr bool empty(list< Ts... >) noexcept
const GenericPointer< typename T::ValueType > T2 value
const CharType(& source)[N]
Static variables safety - create on demand, destroy on application termination.
std::istream & in(std::istream &in_, double &x_)
Int4 delta(size_t dimension_, const Int4 *score_)
static const char * suffix[]
static const char * prefix[]
#define NCBI_BIOMOL(Type)
CMolInfo definitions.
#define NCBI_COMPLETENESS(Type)
#define NCBI_SEQTOPOLOGY(Type)
#define FOR_EACH_COMPOUND_ON_PDBBLOCK(Itr, Var)
FOR_EACH_COMPOUND_ON_PDBBLOCK EDIT_EACH_COMPOUND_ON_PDBBLOCK.
#define FOR_EACH_NAME_ON_PROT
#define FOR_EACH_ACTIVITY_ON_PROT
#define NCBI_GENOME(Type)
@NAME Convenience macros for NCBI objects
#define FOR_EACH_SYNONYM_ON_GENEREF(Itr, Var)
FOR_EACH_SYNONYM_ON_GENEREF EDIT_EACH_SYNONYM_ON_GENEREF.
#define SWITCH_ON_SUBSOURCE_CHOICE(Var)
SWITCH_ON_SUBSOURCE_CHOICE.
#define NCBI_ORGMOD(Type)
COrgMod definitions.
#define FOR_EACH_ORGMOD_ON_BIOSOURCE(Itr, Var)
FOR_EACH_ORGMOD_ON_BIOSOURCE EDIT_EACH_ORGMOD_ON_BIOSOURCE.
#define FOR_EACH_SEQFEATXREF_ON_FEATURE
#define SWITCH_ON_ORGMOD_CHOICE(Var)
SWITCH_ON_ORGMOD_CHOICE.
#define NCBI_SEQFEAT(Type)
CSeq_feat definitions.
#define FOR_EACH_SUBSOURCE_ON_BIOSOURCE(Itr, Var)
FOR_EACH_SUBSOURCE_ON_BIOSOURCE EDIT_EACH_SUBSOURCE_ON_BIOSOURCE.
#define FEATURE_CHOICE_IS
FEATURE_CHOICE_IS SWITCH_ON_FEATURE_CHOICE.
#define NCBI_SUBSOURCE(Type)
CSubSource definitions.
CBioSource::TGenome TBIOSOURCE_GENOME
#define SWITCH_ON_FEATURE_CHOICE
#define FOR_EACH_SEQFEATXREF_ON_SEQFEAT(Itr, Var)
FOR_EACH_SEQFEATXREF_ON_SEQFEAT EDIT_EACH_SEQFEATXREF_ON_SEQFEAT.
#define FOR_EACH_SYNONYM_ON_GENE
CSeq_id::EAccessionInfo TACCN_CHOICE
#define NCBI_SEQID(Type)
@NAME Convenience macros for NCBI objects
#define FIELD_IS_SET_AND_IS(Var, Fld, Chs)
FIELD_IS_SET_AND_IS base macro.
#define FIELD_IS(Var, Fld)
Generic FIELD macros.
#define FOR_EACH_STRING_IN_LIST(Itr, Var)
FOR_EACH_STRING_IN_LIST EDIT_EACH_STRING_IN_LIST.
#define FIELD_IS_SET(Var, Fld)
FIELD_IS_SET base macro.
#define GET_FIELD(Var, Fld)
GET_FIELD base macro.
#define FOR_EACH_CHAR_IN_STRING(Itr, Var)
FOR_EACH_CHAR_IN_STRING EDIT_EACH_CHAR_IN_STRING.
static const TTechMapEntry sc_TechArray[]
SStaticPair< const char *, CMolInfo::TTech > TTechMapEntry
CStaticPairArrayMap< const char *, CMolInfo::TTech, CSourceModParser::PKeyCompare > TTechMap
#define DEFINE_STATIC_ARRAY_MAP(Type, Var, Array)
Template structure SStaticPair is simlified replacement of STL pair<> Main reason of introducing this...
Template for collecting and joining strings with a minimum of heap churn.