GetEndOfConstraint(
string& constraint,
const string& col,
const string&
delimiter,
boolcase_sensitive =
true)
79 if(del ==
"\t") del =
"\\t";
82 if(!new_constraint.empty()) {
83constraints.insert(constraints.begin(), make_pair(
kEmptyStr, new_constraint));
85 return(!new_constraint.empty());
88 voidExtractNames(
const string& fieldname,
string& feature,
string& field)
90 if(fieldname ==
"codon-start") {
95vector<string> tokens;
97 if(tokens.size() == 2) {
101 else if(tokens.size() == 3) {
103field = tokens[1] +
" "+ tokens[2];
111 stringmatch_feat, match_fieldname;
112 stringtarget_feat, target_fieldname;
115ExtractNames(match_field.
m_GUIName, match_feat, match_fieldname);
119 if(!values.empty()) {
120ExtractNames(values.front().first, target_feat, target_fieldname);
126 if(!match_feat.empty() && !target_feat.empty()) {
134UpdateMatchFieldUsage(match_field, panel);
137 if(del ==
"\t") del =
"\\t";
140 if(!new_constraint.empty()) {
141constraints.insert(constraints.begin(), make_pair(
kEmptyStr, new_constraint));
144 return(!new_constraint.empty());
149 const string& target,
150 const string& target_rnatype,
151 const string& target_ncRNAclass)
155 if(del ==
"\t") del =
"\\t";
159 stringrna_type, ncRNA_class, rna_qual;
161 if(!rna_type.empty() && (rna_type != target_rnatype) || (ncRNA_class != target_ncRNAclass)) {
162 NcbiWarningBox(
"Applied values and the matching field should refer to the same RNA type");
166!ncRNA_class.empty() ||
172 stringnew_constraint;
174new_constraint = CMacroFunction_InTable::GetFuncName() +
"(";
179new_constraint = CMacroFunction_InTable::GetFuncName() +
"(";
180 if(path.find(
',') !=
NPOS) {
181vector<string> tokens;
183new_constraint +=
"\""+ tokens[0] +
"\", \""+ tokens[1] +
"\"";
185 else if(path.find(
'(') !=
NPOS) {
186new_constraint += path;
189new_constraint +=
"\""+ path +
"\"";
193 if(!new_constraint.empty()) {
195GetEndOfConstraint(new_constraint, match_field.
m_Column, del, case_sensitive);
196constraints.insert(constraints.begin(), make_pair(
kEmptyStr, new_constraint));
198 return(!new_constraint.empty());
201 stringGetEndofFunction(
booluse_for_macro_editor,
const string& rt_var,
booldel_enabled,
stringcolumn_info,
bool close=
true)
204 if(use_for_macro_editor) {
214func_end += rt_var +
", \""+ existing_text +
"\"";
216 if(existing_text ==
"eAppend"|| existing_text ==
"ePrepend") {
218func_end +=
", \""+ separator +
"\"";
246 #if defined __WXMSW__ 247descr +=
" (WINDOWS)";
248 #elif defined __WXGTK__ 249descr +=
" (LINUX)";
250 #elif defined __WXMAC__ 255descr +=
", match to "+ match_field.
m_GUIName;
270variables += GetExistingTextVariables(
m_ArgList);
279 stringnew_constraint;
281new_constraint = macro::CMacroFunction_InTable::GetFuncName() +
"(";
286new_constraint = macro::CMacroFunction_InTable::GetFuncName() +
"(";
287 if(path.find(
',') !=
NPOS) {
288vector<string> tokens;
290new_constraint +=
"\""+ tokens[0] +
"\", \""+ tokens[1] +
"\"";
292 else if(path.find(
'(') !=
NPOS) {
293new_constraint += path;
296new_constraint +=
"\""+ path +
"\"";
300 if(!new_constraint.empty()) {
302GetEndOfConstraint(new_constraint, match_field.
m_Column,
delimiter, case_sensitive);
304 returnnew_constraint;
309 return{ CMacroFunction_ValueFromTable::GetFuncName() };
319 autoargs = fn_it.m_FArgs;
320 autoend_it = args.end();
321 boolmatching_field =
false;
323 if(
NStr::EqualNocase(fn_it.m_FName, macro::CMacroFunction_InTable::GetFuncName())) {
325 if(merge_del != end_it) {
329 if(split_first != end_it) {
333 if(convert_multi != end_it) {
337 if(merge_first != end_it) {
341 if(del_it != end_it) {
345matching_field =
true;
348 autofield_it = args.find(
kField);
350 if(field_it == args.end() || value_it == args.end()) {
355 stringcol = value_it->second;
357 LOG_POST(
Error<<
"'col:' is expected instead of "<< col);
361col = col.substr(
string(
"col:").length(),
NPOS);
365values.emplace_back(field_it->second, col_nr, fn_it.m_FieldTypeFrom, matching_field);
374 if(table_it == args.end())
377 if(filename.empty()) {
378filename = table_it->second;
381 LOG_POST(
Error<<
"Different table filenames are specified: "<< filename <<
" and "<< table_it->second);
389 sort(values.begin(), values.end(),
390[](
const auto& elem_A,
const auto& elem_B)
391{ return (get<1>(elem_A) < get<1>(elem_B)); });
424 TConstraints& constraints,
booldel_enabled,
constvector<string>& column_info)
427 autocol_it = column_info.begin();
429 if(!column_info.empty() && values.size() != column_info.size()) {
430 LOG_POST(
Info<<
"Column information is missing for Table Reader");
434 const stringrt_var =
"value";
435 for(
auto&& it : values) {
436 if(!
function.
empty())
441 stringfield_name = it.first;
444 stringobj_var =
"obj_str";
445 boolfound_constraint =
false;
447 if(found_constraint) {
448 function+= resolve_func;
451 autopos = field_name.find_last_of(
'-');
453 if(found_constraint) {
454 function+=
"("+ obj_var +
", ";
457 function+=
"(\""+ field_name.substr(0, pos) +
"\", ";
459 function+=
"\""+ field_name.substr(pos + 1) +
"\", ";
462 else if(path.find(
',') !=
NPOS) {
463vector<string> tokens;
468 stringrt_obj =
"obj";
472 function+=
"("+ rt_obj +
", \""+ tokens[0] +
"\", \""+ tokens[1] +
"\", ";
479 function+=
"(\""+ path +
"\", ";
482 stringcol_descr = (column_info.empty()) ?
kEmptyStr: *col_it;
483 function+= GetEndofFunction(column_info.empty(), rt_var, del_enabled, col_descr);
485 if(!column_info.empty()) {
495 return{ CMacroFunction_Resolve::GetFuncName(), CMacroFunction_ValueFromTable::GetFuncName(),
527 TConstraints& constraints,
booldel_enabled,
constvector<string>& column_info)
530 autocol_it = column_info.begin();
532 if(!column_info.empty() && values.size() != column_info.size()) {
533 LOG_POST(
Info<<
"Column information is missing for Table Reader");
537 const stringrt_var =
"value";
538 for(
auto&& it : values) {
539 if(!
function.
empty())
544 stringfield = it.first;
549 stringfield_var =
"field";
552 function+=
"(\""+ field_var +
".label.str\", ";
557 function+= CMacroFunction_SetStructCommField::GetFuncName();
558 function+=
"(\""+ field_type +
"\", ";
561 stringcol_descr = (column_info.empty()) ?
kEmptyStr: *col_it;
562 function+= GetEndofFunction(column_info.empty(), rt_var, del_enabled, col_descr);
564 if(!column_info.empty()) {
574 return{ CMacroFunction_ValueFromTable::GetFuncName(),
575CMacroFunction_Resolve::GetFuncName(),
578CMacroFunction_SetStructCommField::GetFuncName() };
588 autoargs = fn_it.m_FArgs;
589 autoend_it = args.end();
590 boolmatching_field =
false;
592 if(
NStr::EqualNocase(fn_it.m_FName, macro::CMacroFunction_InTable::GetFuncName())) {
594 if(merge_del != end_it) {
598 if(split_first != end_it) {
602 if(convert_multi != end_it) {
606 if(merge_first != end_it) {
610 if(del_it != end_it) {
614matching_field =
true;
617 autofield_it = args.find(
kField);
619 if(field_it == args.end() || value_it == args.end()) {
624 stringcol = value_it->second;
626 LOG_POST(
Error<<
"'col:' is expected instead of "<< col);
630col = col.substr(
string(
"col:").length(),
NPOS);
633 auto type= fn_it.m_FieldTypeFrom;
637 if(strcommfield_it != args.end()) {
639values.emplace_back(
tmp, col_nr,
type, matching_field);
648values.emplace_back(field_it->second, col_nr,
type, matching_field);
658 if(table_it == args.end())
661 if(filename.empty()) {
662filename = table_it->second;
665 LOG_POST(
Error<<
"Different table filenames are specified: "<< filename <<
" and "<< table_it->second);
673 sort(values.begin(), values.end(),
674[](
const auto& elem_A,
const auto& elem_B)
675{ return (get<1>(elem_A) < get<1>(elem_B)); });
709 TConstraints& constraints,
booldel_enabled,
constvector<string>& column_info)
712 autocol_it = column_info.begin();
714 if(!column_info.empty() && values.size() != column_info.size()) {
715 LOG_POST(
Info<<
"Column information is missing for Table Reader");
719 const stringrt_var =
"value";
720 for(
auto&& it : values) {
721 if(!
function.
empty())
724 stringcol_descr = (column_info.empty()) ?
kEmptyStr: *col_it;
725 stringfunc_end = GetEndofFunction(column_info.empty(), rt_var, del_enabled, col_descr);
728 if(column_info.empty()) {
738 stringfield = it.first;
742 function+= CMacroFunction_SetPubPMID::GetFuncName() +
"("+ rt_var +
", "+ remove_blank +
");";
774 stringauth_var =
"auth_obj";
782 stringmi_var =
"mi_obj";
784 function+= CMacroFunction_SetPubAuthorMI::GetFuncName() +
"("+ mi_var +
", "+ func_end;
800 function+= CMacroFunction_SetSerialNumber::GetFuncName() +
"("+ func_end;
803 function+= CMacroFunction_SetPubCitation::GetFuncName() +
"("+ func_end;
810 if(!column_info.empty()) {
819vector<string> funcs{ CMacroFunction_ValueFromTable::GetFuncName(),
820CMacroFunction_SetPubPMID::GetFuncName(),
827CMacroFunction_SetPubAuthorMI::GetFuncName(),
832CMacroFunction_SetSerialNumber::GetFuncName(),
833CMacroFunction_SetPubCitation::GetFuncName(),
838funcs.reserve(funcs.size() + pub_fncs.size());
839funcs.insert(funcs.end(), pub_fncs.begin(), pub_fncs.end());
870 TConstraints& constraints,
booldel_enabled,
constvector<string>& column_info)
873 autocol_it = column_info.begin();
875 if(!column_info.empty() && values.size() != column_info.size()) {
876 LOG_POST(
Info<<
"Column information is missing for Table Reader");
880 const stringrt_var =
"value";
881 for(
auto& it : values) {
882 if(!
function.
empty())
888 stringcol_descr = (column_info.empty()) ?
kEmptyStr: *col_it;
889 function+= GetEndofFunction(column_info.empty(), rt_var, del_enabled, col_descr);
891 if(!column_info.empty()) {
930 TConstraints& constraints,
booldel_enabled,
constvector<string>& column_info)
933 autocol_it = column_info.begin();
935 if(!column_info.empty() && values.size() != column_info.size()) {
936 LOG_POST(
Info<<
"Column information is missing for Table Reader");
940 const stringrt_var =
"value";
941 for(
auto& it : values) {
942 if(!
function.
empty())
953 stringcol_descr = (column_info.empty()) ?
kEmptyStr: *col_it;
954 function+= GetEndofFunction(column_info.empty(), rt_var, del_enabled, col_descr);
956 if(!column_info.empty()) {
994 TConstraints& constraints,
booldel_enabled,
constvector<string>& column_info)
997 autocol_it = column_info.begin();
999 if(!column_info.empty() && values.size() != column_info.size()) {
1000 LOG_POST(
Info<<
"Column information is missing for Table Reader");
1004 const stringrt_var =
"value";
1005 for(
auto& it : values) {
1006 if(!
function.
empty())
1018 stringcol_descr = (column_info.empty()) ?
kEmptyStr: *col_it;
1019 function+= GetEndofFunction(column_info.empty(), rt_var, del_enabled, col_descr);
1021 if(!column_info.empty()) {
1045 x_LoadPanel(parent,
"ApplyFeatQualTable", args);
1056 if(!values.empty()) {
1057vector<string> tokens;
1059 if(tokens.size() == 2) {
1093 TConstraints& constraints,
booldel_enabled,
const string& target,
1094 boolupdate_mrna,
constvector<string>& column_info)
1097 autocol_it = column_info.begin();
1099 if(!column_info.empty() && values.size() != column_info.size()) {
1100 LOG_POST(
Info<<
"Column information is missing for Table Reader");
1104 const stringrt_var =
"value";
1105 for(
auto& it : values) {
1106 if(!
function.
empty())
1109 stringcol_descr = (column_info.empty()) ?
kEmptyStr: *col_it;
1110 stringfunc_end = GetEndofFunction(column_info.empty(), rt_var, del_enabled, col_descr,
false);
1114vector<string> field_parts;
1116 if(field_parts.size() != 2)
1119 autofeat_type = field_parts[0];
1120 autofeat_qual = field_parts[1];
1126 stringgene_field = feat_qual;
1129gene_field =
"gene "+ gene_field;
1133 function+=
"(\"gene\", "+ gene_field +
", "+ func_end +
");";
1137 if(desired_target == target) {
1140 stringrt_obj =
"obj";
1143 if(constr_func.empty()) {
1145 function+=
"(\""+ path +
"\", "+ func_end +
");";
1148 function+= constr_func;
1150 function+=
"("+ rt_obj +
", "+ func_end +
");";
1153 else if(path.find(
',') !=
NPOS) {
1154vector<string> tokens;
1158 stringrt_obj =
"obj";
1163 function+= macro::CMacroFunction_AddorSetGbQual::GetFuncName();
1164 function+=
"("+ rt_obj +
", \""+ tokens[0] +
"\", \""+ feat_qual +
"\", "+ func_end +
");";
1170 function+=
"("+ rt_obj +
", \""+ tokens[0] +
"\", \""+ tokens[1] +
"\", "+ func_end +
");";
1175 function+=
"(\""+ path +
"\", "+ func_end +
");";
1178 if(desired_target == macro::CMacroBioData::sm_Protein) {
1188 stringrt_obj =
"obj";
1191 if(constr_func.empty()) {
1193 function+=
"\""+ updated_path +
"\", "+ func_end +
", "+
kUpdatemRNA+
");";
1196 function+= constr_func;
1198 function+= rt_obj +
", "+ func_end +
", "+
kUpdatemRNA+
");";
1201 else if(updated_path.find(
',') !=
NPOS) {
1202vector<string> tokens;
1207 function+=
"("+ feat_type +
", \""+ tokens[1] +
"\", "+ func_end +
", "+
kUpdatemRNA+
");";
1211 function+=
"\""+ updated_path +
"\", "+ func_end +
", "+
kUpdatemRNA+
");";
1216 if(!column_info.empty()) {
1227CMacroFunction_UpdatemRNAProduct::GetFuncName(),
1228CMacroFunction_Resolve::GetFuncName(),
1230CMacroFunction_ValueFromTable::GetFuncName() };
1246 x_LoadPanel(parent,
"ApplyFeatQualTable", args);
1257 if(!values.empty()) {
1260 stringfeat_type, feat_qual;
1293 const string& target,
boolupdate_mrna,
1294 constvector<string>& column_info)
1297 autocol_it = column_info.begin();
1299 if(!column_info.empty() && values.size() != column_info.size()) {
1300 LOG_POST(
Info<<
"Column information is missing for Table Reader");
1304 const stringrt_var =
"value";
1305 for(
auto& it : values) {
1306 if(!
function.
empty())
1309 stringcol_descr = (column_info.empty()) ?
kEmptyStr: *col_it;
1310 stringfunc_end = GetEndofFunction(column_info.empty(), rt_var, del_enabled, col_descr,
false);
1314 stringfield_name = it.first;
1315 stringfeat_type, feat_qual;
1321 if(desired_target == target) {
1324 stringrt_obj =
"obj";
1327 if(constr_func.empty()) {
1329 function+=
"(\""+ path +
"\", "+ func_end +
");";
1332 function+= constr_func;
1334 function+=
"("+ rt_obj +
", "+ func_end +
");";
1337 else if(path.find(
',') !=
NPOS) {
1338vector<string> tokens;
1342 stringrt_obj =
"obj";
1346 function+=
"("+ rt_obj +
", \""+ tokens[0] +
"\", \""+ tokens[1] +
"\", "+ func_end +
");";
1350 function+=
"(\""+ path +
"\", "+ func_end +
");";
1353 if(desired_target == macro::CMacroBioData::sm_Protein) {
1358 stringupdated_path = path;
1363 stringrt_obj =
"obj";
1366 if(constr_func.empty()) {
1368 function+=
"\""+ updated_path +
"\", "+ func_end +
", "+
kUpdatemRNA+
");";
1371 function+= constr_func;
1373 function+= rt_obj +
", "+ func_end +
", "+
kUpdatemRNA+
");";
1376 else if(updated_path.find(
',') !=
NPOS) {
1377vector<string> tokens;
1382 function+=
"("+ feat_type +
", \""+ tokens[1] +
"\", "+ func_end +
", "+
kUpdatemRNA+
");";
1386 function+=
"\""+ updated_path +
"\", "+ func_end +
", "+
kUpdatemRNA+
");";
1397CMacroFunction_UpdatemRNAProduct::GetFuncName(),
1398CMacroFunction_Resolve::GetFuncName(),
1400CMacroFunction_ValueFromTable::GetFuncName() };
1422 if(!values.empty()) {
1423 stringrna_type, ncRNA_class, rna_qual;
1449 const string& target_rna_type,
constvector<string>& column_info)
1452 autocol_it = column_info.begin();
1454 if(!column_info.empty() && values.size() != column_info.size()) {
1455 LOG_POST(
Info<<
"Column information is missing for Table Reader");
1459 const stringrt_var =
"value";
1460 for(
auto& it : values) {
1461 if(!
function.
empty())
1464 stringcol_descr = (column_info.empty()) ?
kEmptyStr: *col_it;
1465 stringfunc_end = GetEndofFunction(column_info.empty(), rt_var, del_enabled, col_descr,
false);
1469 stringfield_name = it.first;
1470 stringrna_type, ncRNA_class, rna_qual;
1471 if(column_info.empty()) {
1479 if(rna_type == target_rna_type) {
1484 function+=
"(\"gene\", "+ gene_field +
", "+ func_end +
", false);";
1488 if(path.find(
',') !=
NPOS) {
1489vector<string> tokens;
1493 stringrt_obj =
"obj";
1497 function+=
"("+ rt_obj +
", \""+ tokens[0] +
"\", \""+ tokens[1] +
"\", "+ func_end +
");";
1499 else if(path.find(
"::") !=
NPOS) {
1500 function+= CMacroFunction_SetRnaProduct::GetFuncName();
1501 function+=
"("+ func_end +
");";
1505 function+=
"(\""+ path +
"\", "+ func_end +
");";
1518 return{ CMacroFunction_Resolve::GetFuncName(),
1519CMacroFunction_ValueFromTable::GetFuncName(),
1521CMacroFunction_SetRnaProduct::GetFuncName(),
1534 for(
const auto& fn_it :
func_info) {
1535 autoargs = fn_it.m_FArgs;
1536 autoend_it = args.end();
1537 boolmatching_field =
false;
1539 if(
NStr::EqualNocase(fn_it.m_FName, macro::CMacroFunction_InTable::GetFuncName())) {
1540 automerge_del = args.find(
kMergeDel);
1541 if(merge_del != end_it) {
1545 if(split_first != end_it) {
1549 if(convert_multi != end_it) {
1553 if(merge_first != end_it) {
1557 if(del_it != end_it) {
1561matching_field =
true;
1564 autofield_it = args.find(
kField);
1566 if(field_it == args.end() || value_it == args.end()) {
1571 stringcol = value_it->second;
1573 LOG_POST(
Error<<
"'col:' is expected instead of "<< col);
1577col = col.substr(
string(
"col:").length(),
NPOS);
1582 autorna_type = args.find(
kRNAType);
1585 if(rna_type != args.end() && qual != args.end()) {
1587(ncRNA_class_it != args.end()) ? ncRNA_class_it->second :
kEmptyStr, qual->second);
1588values.emplace_back(rna_field, col_nr, fn_it.m_FieldTypeFrom, matching_field);
1591values.emplace_back(field_it->second, col_nr, fn_it.m_FieldTypeFrom, matching_field);
1601 if(table_it == args.end())
1604 if(filename.empty()) {
1605filename = table_it->second;
1608 LOG_POST(
Error<<
"Different table filenames are specified: "<< filename <<
" and "<< table_it->second);
1616 sort(values.begin(), values.end(),
1617[](
const auto& elem_A,
const auto& elem_B)
1618{ return (get<1>(elem_A) < get<1>(elem_B)); });
static string s_GetFunction(const TStringPairsVector &values, TConstraints &constraints, bool del_enabled, const string &target, bool update_mrna, const vector< string > &column_info={})
virtual void x_AddParamPanel(wxWindow *parent)
virtual vector< string > GetFunctionNames() const
virtual string GetVariables()
CApplyCDSGeneProtTableTreeItemData()
virtual string GetFunction(TConstraints &constraints) const
virtual void x_AddParamPanel(wxWindow *parent)
virtual string GetFunction(TConstraints &constraints) const
static string s_GetFunction(const TStringPairsVector &values, TConstraints &constraints, bool del_enabled, const vector< string > &column_info={})
virtual vector< string > GetFunctionNames() const
CApplyDBlinkTableTreeItemData()
virtual vector< string > GetFunctionNames() const
virtual string GetVariables()
static string s_GetFunction(const TStringPairsVector &values, TConstraints &constraints, bool del_enabled, const string &target, bool update_mrna, const vector< string > &column_info={})
CApplyFeatTableTreeItemData()
virtual string GetFunction(TConstraints &constraints) const
virtual void x_AddParamPanel(wxWindow *parent)
virtual string GetFunction(TConstraints &constraints) const
static string s_GetFunction(const TStringPairsVector &values, TConstraints &constraints, bool del_enabled, const vector< string > &column_info={})
CApplyMiscTableTreeItemData()
virtual vector< string > GetFunctionNames() const
virtual void x_AddParamPanel(wxWindow *parent)
virtual string GetFunction(TConstraints &constraints) const
CApplyMolinfoTableTreeItemData()
virtual void x_AddParamPanel(wxWindow *parent)
static string s_GetFunction(const TStringPairsVector &values, TConstraints &constraints, bool del_enabled, const vector< string > &column_info={})
virtual vector< string > GetFunctionNames() const
virtual vector< string > GetFunctionNames() const
static string s_GetFunction(const TStringPairsVector &values, TConstraints &constraints, bool del_enabled, const vector< string > &column_info={})
virtual string GetFunction(TConstraints &constraints) const
virtual void x_AddParamPanel(wxWindow *parent)
CApplyPubTableTreeItemData()
virtual bool SetData(const vector< CFuncWithArgs > &func_info)
virtual string GetFunction(TConstraints &constraints) const
virtual void x_AddParamPanel(wxWindow *parent)
CApplyRNATableTreeItemData()
virtual vector< string > GetFunctionNames() const
string m_TargetncRNAclass
static string s_GetFunction(const TStringPairsVector &values, TConstraints &constraints, bool del_enabled, const string &target_rna_type, const vector< string > &column_info={})
virtual string GetFunction(TConstraints &constraints) const
virtual vector< string > GetFunctionNames() const
static string s_GetFunction(const TStringPairsVector &values, TConstraints &constraints, bool del_enabled, const vector< string > &column_info={})
CApplySrcTableTreeItemData()
virtual void x_AddParamPanel(wxWindow *parent)
virtual vector< string > GetFunctionNames() const
CApplyStrCommTableTreeItemData()
virtual void x_AddParamPanel(wxWindow *parent)
static string s_GetFunction(const TStringPairsVector &values, TConstraints &constraints, bool del_enabled, const vector< string > &column_info={})
virtual string GetFunction(TConstraints &constraints) const
virtual bool SetData(const vector< CFuncWithArgs > &func_info)
void x_LoadParamPanel(wxWindow *parent, ECustomPanelType type)
CMacroApplySrcTablePanel * m_TablePanel
virtual bool SetData(const vector< CFuncWithArgs > &func_info)
string GetMacroDescription() const final
vector< string > GetMainFunctions() const override
static string s_GetMatchFieldConstraint(const SFieldFromTable &match_field, const string &delimiter, EMacroFieldType field_type, const string &target=kEmptyStr)
string GetVariables() override
vector< string > x_GetPubFunctions() const
SFieldFromTable GetMatchField() const
bool IsSplitFirstSet() const
string GetDelimiter() const
TStringPairsVector GetValues() const
vector< tuple< string, int, EMacroFieldType, bool > > TAddValue
bool IsMergeDelimiterSet() const
bool IsMergeFirstSet() const
void SetDelimiter(const string &del)
void SetMergeDelimiter(bool value)
void SetMergeFirst(bool value)
string GetFilename() const
void SetSplitFirst(bool value)
void SetFilename(const string &fname)
void SetValues(const TAddValue &values)
bool IsConvertMultiSet() const
void SetConvertMulti(bool value)
string GetAsnPathToFieldName(const string &field, EMacroFieldType type, const string &target=kEmptyStr)
static CMacroEditorContext & GetInstance()
string GetAsnPathToAuthorFieldName(const string &author_name)
@ ePubFieldType_AuthorLastName
@ ePubFieldType_AuthorFirstName
@ ePubFieldType_SerialNumber
@ ePubFieldType_DateMonth
@ ePubFieldType_AuthorConsortium
@ ePubFieldType_AuthorMiddleInitial
@ ePubFieldType_AuthorSuffix
static EPubFieldType GetTypeForLabel(string label)
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
void x_LoadPanel(wxWindow *parent, const string &panel_name, const TArgumentsVector &arguments)
unique_ptr< CMacroPanelLoader > m_Panel
constructed panel for specifying function arguments
virtual bool UpdateTarget()
vector< pair< string, string > > TConstraints
const char * kStructCommFieldName
const char * kFieldTypeSeqId
const char * kStructCommDBName
const char * kStructCommFieldValuePair
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
void Error(CExceptionArgs_Base &args)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
void Info(CExceptionArgs_Base &args)
static CTempString GetFuncName()
bool StringsAreEquivalent(const string &name1, const string &name2)
static CTempString GetFuncName()
static CTempString GetFuncName()
static CTempString GetFuncName()
static CTempString GetFuncName()
static CTempString GetFuncName()
static const char * sm_FuncVolume
class CMacroFunction_SetPubVolIssuePages SetPubVolume(newValue, existing_text, delimiter,...
static CTempString GetFuncName()
bool IsStructVoucherPart(const string &field)
static CTempString GetFuncName()
static CTempString GetFuncName()
static CTempString GetFuncName()
static CTempString GetFuncName()
static CTempString GetFuncName()
static const char * sm_FuncPages
static CTempString GetFuncName()
bool IsSatelliteSubfield(const string &field)
bool IsMobileElementTSubfield(const string &field)
static CTempString GetFuncName()
static CTempString GetFuncName()
static const char * sm_FuncIssue
void NcbiWarningBox(const string &message, const string &title="Warning")
specialized Message Box function for reporting non-critical errors
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static bool StringToBool(const CTempString str)
Convert string to bool.
vector< pair< string, string > > TStringPairsVector
static int StringToInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to int.
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 const string BoolToString(bool value)
Convert bool to string.
static bool EqualCase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-sensitive equality of a substring with another string.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
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 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.
@ fConvErr_NoThrow
Do not throw an exception on error.
@ eNocase
Case insensitive compare.
vector< macro::SArgMetaData > TArgumentsVector
void UpdateConstraintsForDualCdsGeneProt(TConstraints &constraints, const string &src_feat)
CTempString UpdateTargetForFeatures(const string &feature, const string &qualifier, bool for_removal=false)
bool MultipleValuesAllowed(const string &field)
void UpdateConstraintsForFeatures(TConstraints &constraints, const string &feature)
string GetResolveFuncForSVPart(const string &field, const string &rt_var, TConstraints &constraints, bool &found_constraint)
string GetResolveFuncForMultiValuedQual(const string &field, const string &rt_var, TConstraints &constraints, bool remove_constraint)
string GetResolveFuncForQual(const string &container, const string &field, const string &rt_var, TConstraints &constraints, bool remove_constraint=true)
Generates the definition of rt_var based on input "field".
void CheckTableNameAndColumns(const string &filename, const TStringPairsVector &values, TConstraints &constraints, string &warning)
void GetRNASpecificFieldsForTableReader(const string &field_name, string &rna_type, string &ncRNA_type, string &rna_qual)
bool IsGeneField(const string &field_name)
void GetRNASpecificFields(const string &field_name, string &rna_type, string &ncRNA_type, string &rna_qual)
CTempString UpdateTargetForRnas(const string &rna_type)
string GetResolveFuncForApplyAuthors(CPubFieldType::EPubFieldType type, const string &rt_var, TConstraints &constraints)
void WrapInQuotes(string &str)
string GetResolveFuncForStrCommQual(const string &field, const string &field_name, const string &rt_var, TConstraints &constraints)
void OnExistingTextChanged(CArgumentList &list, CArgument &arg)
string GetHandleOldValue(const string &type)
string GetFuncFromTable(const string &rt_var, const string &col)
void UpdateConstraintsForRnas(TConstraints &constraints, const CArgumentList &arg_list)
string GetDelimiterChar(const string &del)
void UpdateFeatureType(string &feature, const string &field)
CTempString UpdateTargetForCdsGeneProt(const string &fieldname)
string GetRNAFieldname(const string &rna_type, const string &ncRNA_type, const string &rna_qual)
string GetResolveFuncForPubQual(const string &field, string &rt_var, TConstraints &constraints)
void AppendUpdatemRNAFnc(bool update_mrna, string &function)
void GetFeatureAndField(const string &field_name, string &feature, string &field)
string GetHandleBlank(const string &str)
string GetPropertyFromInfo(const string &info, const string &property)
const string kConvertMulti
const string kMultipleSpsOnly
const TArgumentsVector & GetOptionalArgs()
const TArgumentsVector & GetApplyTableArgs()
const string kExistingText
const string kStrCommField
constexpr auto sort(_Init &&init)
constexpr bool empty(list< Ts... >) noexcept
static const char delimiter[]
string ToStdString(const wxString &s)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4