47 #define NCBI_USE_ERRCODE_X ObjMgr_SeqTable
69 "CSeqTableColumnInfo::GetValue: value is not set");
84 if ( !ret && force ) {
95 if ( !ret && force ) {
106 if ( !ret && force ) {
117 if ( !ret && force ) {
128 switch (
data.GetValueType() ) {
152 switch (
data.GetValueType() ) {
183 switch (
data.GetValueType() ) {
186 if (
data.TryGetValue(index, value_int) ) {
187 setter.
SetInt(loc, value_int);
193 if (
data.TryGetValue(index, value_int8) ) {
194 setter.
SetInt8(loc, value_int8);
200 if (
data.TryGetValue(index, value_real) ) {
201 setter.
SetReal(loc, value_real);
206 if (
const string* ptr =
data.GetStringPtr(index) ) {
224 switch (
data.GetValueType() ) {
227 if (
data.TryGetValue(index, value_int) ) {
228 setter.
SetInt(feat, value_int);
234 if (
data.TryGetValue(index, value_int8) ) {
235 setter.
SetInt8(feat, value_int8);
241 if (
data.TryGetValue(index, value_real) ) {
242 setter.
SetReal(feat, value_real);
248 if (
const string* ptr =
data.GetStringPtr(index) ) {
255 if (
const vector<char>* ptr =
data.GetBytesPtr(index) ) {
336 m_Is_real_loc(
false),
338 m_Is_probably_simple(
false),
339 m_Is_simple_point(
false),
340 m_Is_simple_interval(
false),
341 m_Is_simple_whole(
false)
374 if (
type.IsSetField_id() ) {
410 if ( !
type.IsSetField_name() ) {
430 else if ( extra ==
"pnt.point" || extra ==
"int.from" ) {
434 else if ( extra ==
"int.to" ) {
438 else if ( extra ==
"strand" ||
443 else if ( extra ==
"int.fuzz-from.lim" ||
444 extra ==
"pnt.fuzz.lim" ) {
448 else if ( extra ==
"int.fuzz-to.lim" ) {
658 point.
SetId().SetGi(gi);
680 interval.
SetId().SetGi(gi);
696 it->first.UpdateSeq_loc(loc,
row, *it->second);
724 if ( it->first.IsSet(
row) ) {
752 if ( !
table.IsSetFeat_type() ||
757 if (
table.IsSetFeat_subtype() &&
767 : m_IsFeatTable(is_feat),
776 : m_IsFeatTable(IsGoodFeatTable(feat_table)),
792 if (
type.IsSetField_id() ) {
793 int id =
type.GetField_id();
796 string name =
type.GetNameForId(
id);
797 if ( !name.empty() ) {
802 if (
type.IsSetField_name() ) {
803 string name =
type.GetField_name();
806 int id =
type.GetIdForName(name);
811 if ( name ==
"Seq-table location" ) {
813 ERR_POST(
"Duplicate 'Seq-table location' column");
819 NCBI_CATCH(
"Bad 'Seq-table location' column");
830 if (
type.IsSetField_id() ) {
831 int id =
type.GetField_id();
836 "Duplicate partial column");
862 if ( !
type.IsSetField_name() ) {
863 ERR_POST_X(8,
"SeqTable-column-info.field-id = "<<
id);
869 else if ( !
type.IsSetField_name() ) {
871 "neither field-id nor field-name is set");
874 if ( !setter &&
type.IsSetField_name() ) {
876 if ( name.
empty() ) {
877 ERR_POST_X(10,
"SeqTable-column-info.field-name is empty");
880 else if ( name[0] ==
'E' ) {
883 else if ( name[0] ==
'D' ) {
886 else if ( name[0] ==
'Q' ) {
889 else if ( name ==
"partial" ) {
892 "Duplicate partial column");
897 else if ( name ==
"disabled" ) {
900 "Duplicate disabled column ");
905 else if ( name ==
"Seq-table location" ) {
909 else if ( name ==
"Sorted, max length" ) {
911 ERR_POST(
"Duplicate 'Sorted, max length' column");
920 NCBI_CATCH(
"Bad 'Sorted, max length' column");
959 if (
table.IsSetFeat_subtype() ) {
1046 it->first.UpdateSeq_feat(feat,
row, *it->second);
1058 if ( !name.empty() && name[0] ==
'Q' ) {
1076 if ( !name.empty() && name[0] ==
'Q' ) {
1079 str << name.substr(2);
1080 const string* value_ptr = c.first.GetStringPtr(index);
1081 if ( value_ptr && !value_ptr->empty() ) {
1082 str <<
'=' << *value_ptr;
1099 if ( name ==
"E.QualityCodes" ) {
1100 const vector<char>* bytes = c.first.GetBytesPtr(index);
1101 if ( !bytes || bytes->size() != 8 ) {
1104 Uint8 bits = *
reinterpret_cast<const Uint8*
>(bytes->data());
1121 return &iter->second;
1132 return &iter->second;
1142 "CSeqTableInfo::GetColumn: "
1143 "column "<<field_id<<
" not found");
1155 "CSeqTableInfo::GetColumn: "
1156 "column "<<field_name<<
" not found");
bool IsForward(ENa_strand s)
bool IsReverse(ENa_strand s)
Annotation iterators exceptions.
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
@ eSubtype_bad
These no longer need to match the FEATDEF values in the C toolkit's objfdef.h.
void UpdateSeq_loc(CSeq_loc &loc, size_t row, const CSeqTableSetLocField &setter) const
void UpdateSeq_feat(CSeq_feat &feat, size_t row, const CSeqTableSetFeatField &setter) const
bool GetValue(size_t row, Value &v, bool force=false) const
CConstRef< CSeq_loc > GetSeq_loc(size_t row, bool force=false) const
const vector< char > * GetBytesPtr(size_t row, bool force=false) const
bool x_ThrowUnsetValue(void) const
const string * GetStringPtr(size_t row, bool force=false) const
CConstRef< CSeq_id > GetSeq_id(size_t row, bool force=false) const
CConstRef< CSeqTable_column > m_Column
bool IsSingular(void) const
CSeqTableInfo(const CSeq_table &feat_table, bool is_feat)
static bool IsGoodFeatTable(const CSeq_table &table)
string GetLabel(size_t row) const
bool HasLabel(size_t row) const
bool IsFeatTable(void) const
TColumnsById m_ColumnsById
bool MatchBitFilter(const SAnnotSelector &sel, size_t row) const
CSeqTableLocColumns m_Location
bool x_IsSorted(void) const
TColumnsByName m_ColumnsByName
void UpdateSeq_feat(size_t row, CRef< CSeq_feat > &seq_feat, CRef< CSeq_point > &seq_pnt, CRef< CSeq_interval > &seq_int) const
CSeqTableColumnInfo m_Partial
SAnnotTypeSelector GetType(void) const
CConstRef< CSeq_table > m_Seq_table
vector< TColumnInfo > TExtraColumns
const CSeqTableColumnInfo * FindColumn(int field_id) const
CSeqTableLocColumns m_Product
CConstRef< CSeq_loc > m_TableLocation
TSeqPos m_SortedMaxLength
CSeqTableColumnInfo m_Disabled
TSeqPos GetSortedMaxLength(void) const
TExtraColumns m_ExtraColumns
CConstRef< CSeq_loc > GetTableLocation(void) const
void x_Initialize(const CSeq_table &table)
const CSeqTableColumnInfo & GetColumn(int field_id) const
pair< CSeqTableColumnInfo, CConstRef< TSetter > > TColumnInfo
void AddExtraColumn(const CSeqTable_column &column, const CSeqTableSetLocField *setter)
CSeqTableColumnInfo m_Loc
ENa_strand GetStrand(size_t row) const
CSeqTable_column_info::EField_id m_BaseValue
TSeqPos GetFrom(size_t row) const
CSeq_id_Handle m_DefaultIdHandle
CConstRef< CSeq_id > GetId(size_t row) const
void SetTableKeyAndIndex(size_t row, SAnnotObject_Key &key, SAnnotObject_Index &index) const
CSeq_id_Handle GetIdHandle(size_t row) const
bool m_Is_probably_simple
vector< TColumnInfo > TExtraColumns
bool IsRealLoc(void) const
void UpdateSeq_loc(size_t row, CRef< CSeq_loc > &seq_loc, CRef< CSeq_point > &seq_pnt, CRef< CSeq_interval > &seq_int) const
CSeqTableColumnInfo m_From
pair< CSeqTableColumnInfo, CConstRef< TSetter > > TColumnInfo
TExtraColumns m_ExtraColumns
CSeqTableLocColumns(const char *field_name, CSeqTable_column_info::EField_id base_value)
CConstRef< CSeq_loc > GetLoc(size_t row) const
void SetColumn(CSeqTableColumnInfo &field, const CSeqTable_column &column)
bool AddColumn(const CSeqTable_column &column)
bool m_Is_simple_interval
CRange< TSeqPos > GetRange(size_t row) const
CSeqTableColumnInfo m_Strand
virtual void SetString(CSeq_feat &feat, const string &value) const
virtual void SetInt8(CSeq_feat &feat, Int8 value) const
virtual void SetBytes(CSeq_feat &feat, const vector< char > &value) const
virtual void SetReal(CSeq_feat &feat, double value) const
virtual void SetInt(CSeq_feat &feat, int value) const
virtual void SetInt8(CSeq_loc &loc, Int8 value) const
virtual void SetInt(CSeq_loc &loc, int value) const
virtual void SetReal(CSeq_loc &loc, double value) const
virtual void SetString(CSeq_loc &loc, const string &value) const
const vector< char > * GetBytesPtr(size_t row) const
const string * GetStringPtr(size_t row) const
CConstRef< CSeq_id > GetSeq_id(size_t row) const
CConstRef< CSeq_loc > GetSeq_loc(size_t row) const
bool IsSet(size_t row) const
void GetValue(bool &v) const
static const size_t kSkipped
size_t GetIndexAt(size_t row) const
namespace ncbi::objects::
TSeqPos GetLength(void) const
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
container_type::const_iterator const_iterator
const_iterator end() const
iterator_bool insert(const value_type &val)
container_type::value_type value_type
const_iterator find(const key_type &key) const
static const char * str(char *buf, int n)
static const char * column
#define GI_FROM(T, value)
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.
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
#define NCBI_CATCH(message)
Catch CExceptions as well This macro is deprecated - use *_X or *_XX variant instead of it.
#define NCBI_THROW_FMT(exception_class, err_code, message)
The same as NCBI_THROW but with message processed as output to ostream.
static CSeq_id_Handle GetGiHandle(TGi gi)
Faster way to create a handle for a gi.
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
TBitFilter GetFilterMask(void) const
TBitFilter GetFilterBits(void) const
CConstRef< C > ConstRef(const C *object)
Template function for conversion of const object pointer to CConstRef.
int64_t Int8
8-byte (64-bit) signed integer
uint64_t Uint8
8-byte (64-bit) unsigned integer
static TThisType GetWhole(void)
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
static bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
bool empty(void) const
Return true if the represented string is empty (i.e., the length is zero)
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
CTempString substr(size_type pos) const
Obtain a substring from this string, beginning at a given offset.
size_type size(void) const
Return the length of the represented array.
const TDefault & GetDefault(void) const
Get the Default member data.
const TColumns & GetColumns(void) const
Get the Columns member data.
EField_id
identification of the column data in the objects described by the table known column data types posit...
const TSparse_other & GetSparse_other(void) const
Get the Sparse_other member data.
const TSparse & GetSparse(void) const
Get the Sparse member data.
const TId & GetId(void) const
Get the variant data.
bool IsSetField_name(void) const
any column can be identified by ASN.1 text locator string with omitted object type.
bool IsSetSparse_other(void) const
single value for indexes not listed in sparse table Check if a value has been assigned to Sparse_othe...
vector< CRef< CSeqTable_column > > TColumns
const THeader & GetHeader(void) const
Get the Header member data.
const TField_name & GetField_name(void) const
Get the Field_name member data.
bool IsSetData(void) const
row data Check if a value has been assigned to Data data member.
bool IsSetSparse(void) const
in case not all rows contain data this field will contain sparse info Check if a value has been assig...
const TData & GetData(void) const
Get the Data member data.
bool IsSetDefault(void) const
default value for sparse table, or if row data is too short Check if a value has been assigned to Def...
@ eField_id_location
location as Seq-loc
@ eField_id_qual
field-name must be "Q.xxx", see below
@ eField_id_ext
field-name must be "E.xxx", see below
@ eField_id_location_id
location Seq-id
@ eField_id_location_strand
location strand
@ eField_id_ext_type
extra fields, see also special values for str below
@ eField_id_dbxref
field-name must be "D.xxx", see below
@ eField_id_location_to
interval to
@ eField_id_location_gi
gi
@ eField_id_product
product as Seq-loc
@ eField_id_location_fuzz_to_lim
@ eField_id_location_fuzz_from_lim
@ eField_id_data_imp_key
various data fields
@ eField_id_location_from
interval from
@ e_Int8
a set of signed 8-byte integers
@ e_Real
a set of reals, one per row
@ e_Common_bytes
a set of byte arrays with small set of possible values
@ e_Bytes
a set of byte arrays, one per row
@ e_String
a set of strings, one per row
@ e_Int
a set of 4-byte integers, one per row
@ e_Common_string
a set of string with small set of possible values
void SetLocation(TLocation &value)
Assign a value to Location data member.
void SetPartial(TPartial value)
Assign a value to Partial data member.
void SetProduct(TProduct &value)
Assign a value to Product data member.
virtual void Reset(void)
Reset the whole object.
bool IsSetProduct(void) const
product of process Check if a value has been assigned to Product data member.
bool IsSetLocation(void) const
feature made from Check if a value has been assigned to Location data member.
@ e_not_set
No variant selected.
@ e_MaxChoice
== e_Variation+1
void SetTo(TTo value)
Assign a value to To data member.
void SetPoint(TPoint value)
Assign a value to Point data member.
void SetId(TId &value)
Assign a value to Id data member.
void ResetFuzz_to(void)
Reset Fuzz_to data member.
ENa_strand
strand of nucleic acid
void SetId(TId &value)
Assign a value to Id data member.
void SetStrand(TStrand value)
Assign a value to Strand data member.
void ResetFuzz(void)
Reset Fuzz data member.
void SetFrom(TFrom value)
Assign a value to From data member.
void ResetStrand(void)
Reset Strand data member.
void ResetFuzz_from(void)
Reset Fuzz_from data member.
bool IsInt(void) const
Check if variant Int is selected.
const TInt & GetInt(void) const
Get the variant data.
void SetStrand(TStrand value)
Assign a value to Strand data member.
void ResetStrand(void)
Reset Strand data member.
Definition of all error codes used in objmgr libraries (xobjmgr.lib, xobjutil.lib and others).
<!DOCTYPE HTML >< html > n< header > n< title > PubSeq Gateway Help Page</title > n< style > n table
const struct ncbi::grid::netcache::search::fields::KEY key
const GenericPointer< typename T::ValueType > T2 value
NCBI_DEFINE_ERR_SUBCODE_X(12)
#define row(bind, expected)
void SetLocationIsWhole(void)
void SetLocationIsPoint(void)
void SetLocationIsInterval(void)