43 if (rows.size() == 0) {
46 vector<size_t>::const_iterator row_it = rows.begin();
50 CSeqTable_column::TData::TString::iterator it = col->
SetData().SetString().begin();
51 while (row_it != rows.end() && it != col->
SetData().SetString().end()) {
52 if (orig_pos == *row_it) {
53 it = col->
SetData().SetString().erase(it);
62 CSeqTable_column::TData::TId::iterator it = col->
SetData().SetId().begin();
63 while (row_it != rows.end() && it != col->
SetData().SetId().end()) {
64 if (orig_pos == *row_it) {
65 it = col->
SetData().SetId().erase(it);
74 CSeqTable_column::TData::TInt::iterator it = col->
SetData().SetInt().begin();
75 while (row_it != rows.end() && it != col->
SetData().SetInt().end()) {
76 if (orig_pos == *row_it) {
77 it = col->
SetData().SetInt().erase(it);
86 CSeqTable_column::TData::TBit::iterator it = col->
SetData().SetBit().begin();
87 while (row_it != rows.end() && it != col->
SetData().SetBit().end()) {
88 if (orig_pos == *row_it) {
89 it = col->
SetData().SetBit().erase(it);
98 CSeqTable_column::TData::TBytes::iterator it = col->
SetData().SetBytes().begin();
99 while (row_it != rows.end() && it != col->
SetData().SetBytes().end()) {
100 if (orig_pos == *row_it) {
101 it = col->
SetData().SetBytes().erase(it);
110 CSeqTable_column::TData::TReal::iterator it = col->
SetData().SetReal().begin();
111 while (row_it != rows.end() && it != col->
SetData().SetReal().end()) {
112 if (orig_pos == *row_it) {
113 it = col->
SetData().SetReal().erase(it);
127 if (rows.size() > 0) {
131 table->SetNum_rows(
table->GetNum_rows() -
static_cast<int>(rows.size()));
144 vector<size_t> rows_to_remove;
145 if (
column->GetData().IsInt()) {
146 CSeqTable_column::TData::TInt::const_iterator it =
column->GetData().GetInt().begin();
148 while (it !=
column->GetData().GetInt().end()) {
150 if (!string_constraint->DoesTextMatch(num)) {
151 rows_to_remove.push_back(
row);
156 }
else if (
column->GetData().IsString()) {
157 CSeqTable_column::TData::TString::const_iterator it =
column->GetData().GetString().begin();
159 while (it !=
column->GetData().GetString().end()) {
160 if (!string_constraint->DoesTextMatch(*it)) {
161 rows_to_remove.push_back(
row);
166 }
else if (
column->GetData().IsId()) {
167 CSeqTable_column::TData::TId::const_iterator it =
column->GetData().GetId().begin();
169 while (it !=
column->GetData().GetId().end()) {
170 string id_string = (*it)->AsFastaString();
171 if (!string_constraint->DoesTextMatch(id_string)) {
172 rows_to_remove.push_back(
row);
187 column =
new objects::CSeqTable_column();
188 column->SetHeader().SetTitle(field);
216 column2 =
new objects::CSeqTable_column();
218 table->SetColumns().push_back(column2);
234 if (!column1 && !column2) {
238 column1 =
new objects::CSeqTable_column();
240 column1->
SetData().SetString();
241 table->SetColumns().push_back(column1);
244 column2 =
new objects::CSeqTable_column();
246 column2->
SetData().SetString();
247 table->SetColumns().push_back(column2);
252 if (row < column2->GetData().GetString().
size()) {
269 column2 =
new objects::CSeqTable_column();
271 table->SetColumns().push_back(column2);
284 ITERATE (objects::CSeq_table::TColumns, cit, values_table->GetColumns()) {
285 if ((*cit)->IsSetHeader() && (*cit)->GetHeader().IsSetTitle()
298 objects::CSeq_table::TColumns::iterator cit =
table->SetColumns().begin();
299 while (cit !=
table->SetColumns().end()) {
300 if ((*cit)->IsSetHeader() && (*cit)->GetHeader().IsSetTitle()
302 cit =
table->SetColumns().erase(cit);
316 col =
new objects::CSeqTable_column();
317 col->SetHeader().SetTitle(
label);
318 col->SetData().SetString();
319 table->SetColumns().push_back(col);
329 col =
new objects::CSeqTable_column();
330 col->SetHeader().SetTitle(
label);
331 col->SetData().SetInt();
332 table->SetColumns().push_back(col);
340 while (
column->SetData().SetString().size() <
row + 1) {
341 column->SetData().SetString().push_back (
"");
344 string orig_val =
column->GetData().GetString()[
row];
347 column->SetData().SetString()[
row] = orig_val;
356 if ((*cit)->IsSetHeader() && (*cit)->GetHeader().IsSetTitle()
365 new_col->SetHeader().SetTitle(subtype_name);
366 while (new_col->SetData().SetString().size() <
row) {
367 new_col->SetData().SetString().push_back (
"");
369 new_col->SetData().SetString().push_back(
value);
370 table->SetColumns().push_back(new_col);
380 if ((*cit)->IsSetHeader() && (*cit)->GetHeader().IsSetTitle()
382 while ((*cit)->SetData().SetInt().size() <
row + 1) {
383 (*cit)->SetData().SetInt().push_back (0);
385 (*cit)->SetData().SetInt()[
row] =
value;
392 new_col->SetHeader().SetTitle(subtype_name);
393 while (new_col->SetData().SetInt().size() <
row) {
394 new_col->SetData().SetInt().push_back (0);
396 new_col->SetData().SetInt().push_back(
value);
397 table->SetColumns().push_back(new_col);
404 if (!col || !col->IsSetData() || !col->GetData().IsString() || col->GetData().GetSize() < 1) {
408 size_t num_rows = col->GetData().GetSize();
409 for (
size_t row = 0;
row < num_rows;
row++) {
410 col->SetData().SetString()[
row] =
val;
418 const string protein(
"protein");
420 name1 = name1.substr(protein.length());
423 name2 = name2.substr(protein.length());
444 if (pos != string::npos) {
445 name1 = name1.substr(0, pos);
448 if (pos != string::npos) {
449 name2 = name2.substr(0, pos);
506 int num_conflicts = 0;
512 CSeqTable_column::TData::TString::const_iterator it1 = orig_col->
GetData().
GetString().begin();
513 CSeqTable_column::TData::TString::const_iterator it2 = new_col->
GetData().
GetString().begin();
527 CSeqTable_column::TData::TInt::const_iterator it1 = new_col->
GetData().
GetInt().begin();
528 CSeqTable_column::TData::TInt::const_iterator it2 = new_col->
GetData().
GetInt().begin();
540 return num_conflicts;
546 if (!values_table || !values_table->IsSetNum_rows())
return;
548 size_t num_rows = values_table->GetNum_rows();
550 NON_CONST_ITERATE (objects::CSeq_table::TColumns, it, values_table->SetColumns()) {
551 if ((*it)->IsSetData() && (*it)->GetData().IsString()) {
552 while ((*it)->GetData().GetString().size() < num_rows) {
553 (*it)->SetData().SetString().push_back(
"");
static const char * column
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static bool IsBlank(const CTempString str, SIZE_TYPE pos=0)
Check if a string is blank (has no text).
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.
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 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.
static bool Equal(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2, ECase use_case=eCase)
Test for 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.
static const char label[]
bool IsBit(void) const
Check if variant Bit is selected.
void SetHeader(THeader &value)
Assign a value to Header data member.
bool IsId(void) const
Check if variant Id is selected.
bool IsString(void) const
Check if variant String is selected.
bool IsReal(void) const
Check if variant Real is selected.
vector< CRef< CSeqTable_column > > TColumns
bool IsInt(void) const
Check if variant Int is selected.
bool IsBytes(void) const
Check if variant Bytes is selected.
void SetData(TData &value)
Assign a value to Data data member.
bool IsSetData(void) const
row data Check if a value has been assigned to Data data member.
const TInt & GetInt(void) const
Get the variant data.
const TString & GetString(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
where boath are integers</td > n< td ></td > n</tr > n< tr > n< td > tse</td > n< td > optional</td > n< td > String</td > n< td class=\"description\"> TSE option controls what blob is orig
<!DOCTYPE HTML >< html > n< header > n< title > PubSeq Gateway Help Page</title > n< style > n table
constexpr bool empty(list< Ts... >) noexcept
const struct ncbi::grid::netcache::search::fields::SIZE size
const GenericPointer< typename T::ValueType > T2 value
void ApplyToTable(CRef< CSeq_table > table, const string &field, const string &val, edit::EExistingText existing_text)
bool MatchColumnName(string name1, string name2)
void RemoveFromTable(CRef< CSeq_table > table, const string &field)
void AddValueToColumn(CRef< objects::CSeqTable_column > column, string value, size_t row, edit::EExistingText existing_text)
void CopyTableColumns(CRef< CSeq_table > table, const string &field1, const string &field2, edit::EExistingText existing_text)
CRef< objects::CSeqTable_column > AddIntColumnToTable(CRef< objects::CSeq_table > table, string label)
CRef< objects::CSeqTable_column > FindSeqTableColumnByName(CRef< objects::CSeq_table > values_table, string column_name)
void RemoveTableRowsThatDoNotMatchStringConstraint(CRef< CSeq_table > table, const string &field, CRef< edit::CStringConstraint > string_constraint)
bool RemoveSeqTableColumnByName(CRef< objects::CSeq_table > table, string column_name)
USING_SCOPE(ncbi::objects)
void AddValueToTable(CRef< objects::CSeq_table > table, string subtype_name, string value, size_t row, edit::EExistingText existing_text)
void ConvertTableColumns(CRef< CSeq_table > table, const string &field1, const string &field2, edit::EExistingText existing_text)
bool IsOrgColumnName(string name)
CRef< objects::CSeqTable_column > AddStringColumnToTable(CRef< objects::CSeq_table > table, string label)
void SwapTableColumns(CRef< CSeq_table > table, const string &field1, const string &field2)
bool QualifierNamesAreEquivalent(string name1, string name2)
void RemoveRowsFromTable(CRef< CSeq_table > table, const vector< size_t > &rows)
void RemoveRowsFromColumn(CRef< CSeqTable_column > col, const vector< size_t > &rows)
void FillShortColumns(CRef< objects::CSeq_table > values_table)
void SetColumnValue(CRef< objects::CSeqTable_column > col, string val)
int CountColumnValueConflicts(CRef< CSeqTable_column > orig_col, CRef< CSeqTable_column > new_col)
bool IsOrgModNoteName(const string &name)
bool IsSubSourceNoteName(const string &name)
#define row(bind, expected)
bool AddValueToString(string &str, const string &value, EExistingText existing_text)
Add text to an existing string, using the "existing_text" directive to combine new text with existing...