108 i->GetId().SetNoPrefix();
109 i->UpdateFunctions();
123 unique_ptr<TItemsByName> keep = make_unique<TItemsByName>();
131 string(
"duplicate member name: ")+name);
150 unique_ptr<TItemsByOffset> keep = make_unique<TItemsByOffset>();
195 string(
"invalid type info: ") + itemInfo->
GetId().
GetName());
204 return make_pair(
tag, tagclass);
207 pair<TMemberIndex, const CItemsInfo::TItemsByTag*>
210 typedef pair<TMemberIndex, const TItemsByTag*> TReturn;
224 for ( ++
i;
i.Valid(); ++
i ) {
238 unique_ptr<TItemsByTag> items = make_unique<TItemsByTag>();
248 ret.second = items.get();
249 m_ItemsByTag.store(items.release(), memory_order_release);
260 if (
i == items.
end() )
275 if ((!
id.IsAttlist() &&
id.HasNotag()) ||
276 (
id.IsAttlist() && search_attlist)) {
284 *pclassInfo = classType;
340 if (!
info->GetId().HasNotag() && !
info->GetId().IsAttlist()) {
380 found = item->
Optional() ? 0 : item;
407 if (
info->NonEmpty() ||
info->GetId().IsAttlist()) {
411 for (
type =
info->GetTypeInfo();;) {
453 if ( mi == items_by_tag->
end() )
467 if ( index < pos || index >
LastIndex() )
474 if (tc.first ==
tag && tc.second == tagclass) {
480 if (!
info->GetId().HasTag()) {
Root class for all serialization exceptions.
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
CTypeInfo class contains all information about C++ types (both basic and classes): members and layout...
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
Include a standard set of the NCBI C++ Toolkit most basic headers.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
bool Optional(void) const
static const CItemInfo * FindNextMandatory(const CItemInfo *info)
bool Optional(void) const
atomic< TItemsByOffset * > m_ItemsByOffset
CAsnBinaryDefs::ETagClass GetTagClass(void) const
const CMemberId & GetId(void) const
const string & GetName(void) const
TMemberIndex Find(const CTempString &name) const
virtual ~CItemsInfo(void)
void DataSpec(EDataSpec spec)
static const CTypeInfo * FindRealTypeInfo(const CTypeInfo *info)
pair< TTag, CAsnBinaryDefs::ETagClass > TTagAndClass
pair< TMemberIndex, const TItemsByTag * > GetItemsByTagInfo(void) const
atomic< TMemberIndex > m_ZeroTagIndex
TMemberIndex FindEmpty(void) const
atomic< TItemsByTag * > m_ItemsByTag
TTagAndClass GetTagAndClass(const CIterator &i) const
vector< AutoPtr< CItemInfo > > TItems
bool IsTagImplicit(void) const
CAsnBinaryDefs::ETagConstructed m_TagConstructed
void SetTag(TTag tag, CAsnBinaryDefs::ETagClass tagclass=CAsnBinaryDefs::eContextSpecific, CAsnBinaryDefs::ETagType tagtype=CAsnBinaryDefs::eAutomatic)
TMemberIndex FindDeep(const CTempString &name, bool search_attlist=false, const CClassTypeInfoBase **classInfo=nullptr) const
const CItemInfo * GetItemInfo(TMemberIndex index) const
static TMemberIndex FirstIndex(void)
bool HasNotag(void) const
atomic< TItemsByName * > m_ItemsByName
const TItemsByOffset & GetItemsByOffset(void) const
TPointerOffsetType GetOffset(void) const
bool HaveParentTag(void) const
TTypeInfo GetTypeInfo(void) const
void AddItem(CItemInfo *item)
TMemberIndex LastIndex(void) const
const TItemsByName & GetItemsByName(void) const
bool NonEmpty(void) const
void AssignItemsTags(CAsnBinaryDefs::ETagType containerType)
size_t TMemberIndex
Type used for indexing class members and choice variants.
const TMemberIndex kInvalidMember
Special value returned from FindMember.
const CSeq_id & GetId(const CSeq_loc &loc, CScope *scope)
If all CSeq_ids embedded in CSeq_loc refer to the same CBioseq, returns the first CSeq_id found,...
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
CAsnBinaryDefs::ETagClass GetTagClass(void) const
CAsnBinaryDefs::ETagConstructed GetTagConstructed(void) const
const CItemsInfo & GetItems(void) const
ETypeFamily GetTypeFamily(void) const
TTypeInfo GetPointedType(void) const
CAsnBinaryDefs::TLongTag GetTag(void) const
TTypeInfo GetElementType(void) const
DEFINE_STATIC_FAST_MUTEX(s_ItemsMapMutex)
Multi-threading – classes, functions, and features.
Useful/utility classes and methods.