pair<TObjectPtr, TTypeInfo>
CParent;
64 booldetectLoops =
false)
69 booldetectLoops =
false)
70:
CParent(object.GetObjectPtr(), object.GetTypeInfo()),
75:
CParent(&object, object.GetThisTypeInfo()),
87 typedefpair<TConstObjectPtr, TTypeInfo>
CParent;
92 booldetectLoops =
false)
97 booldetectLoops =
false)
98:
CParent(object.GetObjectPtr(), object.GetTypeInfo()),
103 booldetectLoops =
false)
104:
CParent(&object, object.GetThisTypeInfo()),
125 virtual bool Valid(
void)
const= 0;
130 virtual void Next(
void) = 0;
155 virtual bool Valid(
void)
const= 0;
160 virtual void Next(
void) = 0;
172 virtual voidErase(
void);
179 template<
classLevelIterator>
189 typedeflist< pair< typename LevelIterator::TObjectInfo, const CItemInfo*> >
TIteratorContext;
201 Init(beginInfo, filter);
223 return Get().GetTypeInfo();
278 typenamevector< TStackLevel >::const_iterator
i;
280stk_info.push_back( make_pair( (*i)->Get(), (*i)->GetItemInfo()));
290 typenameTIteratorContext::const_iterator
i;
291 for(
i= stk_info.begin();
i!= stk_info.end(); ++
i) {
321 if(filter.empty()) {
345ind =
l->GetIndex();
355ind =
m_Stack.back().get()->GetIndex();
372 if( visitedObjects ) {
389 if( !beginInfo.first || !beginInfo.second )
391 if( beginInfo.m_DetectLoops )
407 TStackLevelnextLevel(LevelIterator::Create(current));
408 if( nextLevel && nextLevel->Valid() ) {
417 if(
m_Stack.back()->Valid() ) {
422}
while( !
m_Stack.empty() );
431 while(!
m_Stack.back()->CanGet()) {
434 if(
m_Stack.back()->Valid()) {
443current =
m_Stack.back()->Get();
450}
while(
Step(current) );
466 for(
const auto& e : it.
m_Stack) {
496 Init(beginInfo, filter);
512 template<
classParent>
526this->
Init(beginInfo);
529 const string& filter)
532this->
Init(beginInfo, filter);
537 returnCParent::CanSelect(
object) &&
542 returnCParent::CanEnter(
object) &&
543 object.GetTypeInfo()->MayContainType(
m_NeedType);
563 template<
classParent>
593 const string& filter)
596 Init(beginInfo, filter);
612this->
Init(beginInfo);
616 typenameCParent::TObjectInfo::TObjectPtrType
GetFoundPtr(
void)
const 618 returnthis->
Get().GetObjectPtr();
622 returnthis->
Get().GetTypeInfo();
640 if( !CParent::CanSelect(
object) )
645 if(
type->IsType(*
i) ) {
654 if( !CParent::CanEnter(
object) )
658 if(
type->MayContainType(*
i) )
671 template<
classC,
classTypeGetter = C>
684:
CParent(TypeGetter::GetTypeInfo())
688:
CParent(TypeGetter::GetTypeInfo(), beginInfo)
692:
CParent(TypeGetter::GetTypeInfo(), beginInfo, filter)
723:
CParent(TypeGetter::GetTypeInfo())
754 return Get() == it.
Get();
765 template<
classC,
classTypeGetter = C>
778:
CParent(TypeGetter::GetTypeInfo())
782:
CParent(TypeGetter::GetTypeInfo(), beginInfo)
786:
CParent(TypeGetter::GetTypeInfo(), beginInfo, filter)
809:
CParent(TypeGetter::GetTypeInfo())
828CParent::operator++();
834CParent::operator++();
839 if(
IsValid() && it.IsValid()) {
840 return Get() == it.Get();
842 return IsValid() == it.IsValid();
854 template<
classParent>
859 typedef typenameCParent::TBeginInfo
TBeginInfo;
861CLeafTypeIteratorBase(
TTypeInfoneedType)
865CLeafTypeIteratorBase(
TTypeInfoneedType,
constTBeginInfo& beginInfo)
870CLeafTypeIteratorBase(
TTypeInfoneedType,
constTBeginInfo& beginInfo,
871 const string& filter)
874 Init(beginInfo, filter);
882 classCLeafTypeIterator :
publicCLeafTypeIteratorBase<CTreeIterator>
884 typedefCLeafTypeIteratorBase<CTreeIterator> CParent;
886 typedef typenameCParent::TBeginInfo TBeginInfo;
888CLeafTypeIterator(
void)
889: CParent(
C::GetTypeInfo())
892CLeafTypeIterator(
constTBeginInfo& beginInfo)
893: CParent(
C::GetTypeInfo(), beginInfo)
896CLeafTypeIterator(
constTBeginInfo& beginInfo,
const string& filter)
897: CParent(
C::GetTypeInfo(), beginInfo, filter)
901: CParent(
C::GetTypeInfo(), TBeginInfo(object))
905CLeafTypeIterator<C>& operator=(
constTBeginInfo& beginInfo)
919 C* operator->(
void)
923 const C* operator->(
void)
const 931 classCLeafTypeConstIterator :
publicCLeafTypeIteratorBase<CTreeConstIterator>
933 typedefCLeafTypeIteratorBase<CTreeConstIterator> CParent;
935 typedef typenameCParent::TBeginInfo TBeginInfo;
937CLeafTypeConstIterator(
void)
938: CParent(
C::GetTypeInfo())
941CLeafTypeConstIterator(
constTBeginInfo& beginInfo)
942: CParent(
C::GetTypeInfo(), beginInfo)
945CLeafTypeConstIterator(
constTBeginInfo& beginInfo,
const string& filter)
946: CParent(
C::GetTypeInfo(), beginInfo, filter)
949 explicitCLeafTypeConstIterator(
const CSerialObject&
object)
950: CParent(
C::GetTypeInfo(), TBeginInfo(object))
954CLeafTypeConstIterator<C>& operator=(
constTBeginInfo& beginInfo)
964 const C* operator->(
void)
const 972 template<
typenameT>
975 template<
typenameT>
1006 return CBeginInfo(&obj, C::GetTypeInfo(),
false);
1029 return CBeginInfo(&obj, C::GetTypeInfo(),
true);
Class holding information about root of non-modifiable object hierarchy Do not use it directly.
Class holding information about root of non-modifiable object hierarchy Do not use it directly.
Class describing stack level of traversal.
Base class for all serializable objects.
Base class for all iterators over non-modifiable object Do not use it directly.
Base class for all iterators over modifiable object.
Template class for iteration on objects of class C (non-medifiable version)
CTypeInfo class contains all information about C++ types (both basic and classes): members and layout...
template base class for CTypeIterator<> and CTypeConstIterator<> Do not use it directly
Template class for iteration on objects of class C.
Template base class for CTypesIterator and CTypesConstIterator Do not use it directly.
iterator_bool insert(const value_type &val)
Include a standard set of the NCBI C++ Toolkit most basic headers.
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
const CMemberId & GetId(void) const
bool IsAttlist(void) const
const string & GetName(void) const
bool HasNotag(void) const
CVect2< NCBI_PROMOTE(int,U) > operator*(int v1, const CVect2< U > &v2)
size_t TMemberIndex
Type used for indexing class members and choice variants.
const TMemberIndex kInvalidMember
Special value returned from FindMember.
const void * TConstObjectPtr
static const TObjectType * SafeCast(TTypeInfo type)
CTypesIteratorBase(const TTypeList &typeList)
CTreeIteratorTmpl< CTreeLevelIterator > CParent
TIteratorContext GetContextData(void) const
Get raw context data.
virtual const CItemInfo * GetItemInfo(void) const =0
CTypeIterator(const TBeginInfo &beginInfo)
CTypeIteratorBase(TTypeInfo needType, const TBeginInfo &beginInfo)
virtual CConstTreeLevelIterator * Clone(void)=0
virtual void Next(void)=0
void Assign(const CTreeIteratorTmpl &it)
CTypeIterator< C, TypeGetter > & operator=(const TBeginInfo &beginInfo)
CTreeIteratorTmpl(const TBeginInfo &beginInfo)
const C * operator->(void) const
bool operator!=(const CTypeIterator &it) const
CBeginInfo(CSerialObject &object, bool detectLoops=false)
CTreeIterator & operator=(const TBeginInfo &beginInfo)
pair< TConstObjectPtr, TTypeInfo > CParent
CParent::TObjectInfo::TObjectPtrType GetFoundPtr(void) const
CTypesIteratorBase(const TTypeList &typeList, const TBeginInfo &beginInfo)
virtual void SetItemInfo(const CItemInfo *info)=0
const TTypeList & GetTypeList(void) const
CTypeConstIterator operator++(int)
CParent::TBeginInfo TBeginInfo
virtual bool CanEnter(const CConstObjectInfo &object)
CBeginInfo(TObjectPtr objectPtr, TTypeInfo typeInfo, bool detectLoops=false)
virtual bool CanGet(void) const
CTypesIteratorBase(const TTypeList &typeList, const TBeginInfo &beginInfo, const string &filter)
CTypeConstIterator & begin(void)
const C & operator*(void) const
LevelIterator::TBeginInfo TBeginInfo
CTreeIterator(const TBeginInfo &beginInfo)
CConstBeginInfo(const CBeginInfo &beginInfo)
virtual void Next(void)=0
CTypeIterator(const CTypeIterator &it)
TTypeInfo GetMatchType(void) const
forward_iterator_tag iterator_category
CConstObjectInfo TObjectInfo
CConstBeginInfo(TConstObjectPtr objectPtr, TTypeInfo typeInfo, bool detectLoops=false)
CTypeIteratorBase< CTreeIterator > CParent
virtual bool CanGet(void) const
LevelIterator::TObjectInfo TObjectInfo
CTypeIterator & begin(void)
void Reset(void)
Reset iterator to initial state.
CTypeConstIterator< C, TypeGetter > & operator=(const TBeginInfo &beginInfo)
TObjectInfo & Get(void)
Get information about current object.
CTypesIteratorBase< CTreeIterator > CTypesIterator
virtual bool CanSelect(const CConstObjectInfo &obj)
string GetContext(void) const
Get context data as string.
CTreeIteratorTmpl< CConstTreeLevelIterator > CTreeConstIterator
virtual ~CTreeIteratorTmpl(void)
virtual void SetItemInfo(const CItemInfo *info)=0
virtual TMemberIndex GetIndex(void) const
virtual bool CanEnter(const CConstObjectInfo &object)
ptrdiff_t difference_type
TBeginInfo::TObjectInfo TObjectInfo
CTypesIteratorBase(TTypeInfo type1, TTypeInfo type2)
CTypeConstIterator(const CTypeConstIterator &it)
CTypeConstIterator end(void)
virtual bool Valid(void) const =0
pair< TObjectPtr, TTypeInfo > CParent
DECLARE_OPERATOR_BOOL(IsValid())
CTypeIteratorBase< CTreeConstIterator > CParent
void Assign(const CTypeIteratorBase &it)
shared_ptr< LevelIterator > TStackLevel
CTypeIteratorBase(TTypeInfo needType)
CParent::TBeginInfo TBeginInfo
CParent::TObjectInfo TObjectInfo
CParent::TBeginInfo TBeginInfo
int GetItemIndex(void) const
Return member index in sequence, or variant index in choice.
CTypeIterator(const TBeginInfo &beginInfo, const string &filter)
CTreeIteratorTmpl(const TBeginInfo &beginInfo, const string &filter)
forward_iterator_tag iterator_category
CTypeIterator(CSerialObject &object)
virtual TObjectInfo Get(void) const =0
CTypeIterator & operator=(const CTypeIterator &it)
TThis & operator++(void)
Go to next object.
bool Step(const TObjectInfo ¤t)
TTypeInfo GetCurrentTypeInfo(void) const
Get type information of current object.
CTypeConstIterator(const TBeginInfo &beginInfo, const string &filter)
const TObjectInfo & Get(void) const
Get information about current object.
CParent::TBeginInfo TBeginInfo
const C * operator->(void) const
bool operator==(const CTypeIterator &it) const
CConstBeginInfo(const CSerialObject &object, bool detectLoops=false)
CTypeConstIterator(const TBeginInfo &beginInfo)
CTypesIteratorBase< CTreeConstIterator > CTypesConstIterator
const C & operator*(void) const
TTypeInfo GetFoundType(void) const
CTypeConstIterator & operator=(const CTypeConstIterator &it)
list< TTypeInfo > TTypeList
CTreeIteratorTmpl< LevelIterator > TThis
CTypeConstIterator< CObject, CObjectGetTypeInfo > CObjectConstIterator
TThis & operator=(const TBeginInfo &beginInfo)
Initialize iterator to new root of object hierarchy.
CConstBeginInfo ConstBegin(const C &obj)
Get starting point of non-modifiable object hierarchy.
void Init(const TBeginInfo &beginInfo, const string &filter)
void Init(const TBeginInfo &beginInfo)
virtual TObjectInfo Get(void) const =0
CBeginInfo(const CObjectInfo &object, bool detectLoops=false)
virtual CTreeLevelIterator * Clone(void)=0
virtual bool CanEnter(const CConstObjectInfo &object)
virtual bool CanSelect(const CConstObjectInfo &object)
CConstBeginInfo TBeginInfo
CTypeIterator< CObject, CObjectGetTypeInfo > CObjectIterator
vector< TStackLevel > m_Stack
virtual bool Valid(void) const =0
shared_ptr< TVisitedObjects > m_VisitedObjects
bool operator!=(const CTypeConstIterator &it) const
static bool HaveChildren(const CConstObjectInfo &object)
CTypeIterator & operator++(void)
int GetContainerElementIndex(void) const
Return element index in STL container.
CBeginInfo Begin(C &obj)
Get starting point of object hierarchy.
bool CheckValid(void) const
CConstBeginInfo(const CConstObjectInfo &object, bool detectLoops=false)
CTypesIteratorBase< Parent > & operator=(const TBeginInfo &beginInfo)
void SetContextFilter(const string &filter)
Set context filter.
virtual bool CanSelect(const CConstObjectInfo &object)
set< TConstObjectPtr > TVisitedObjects
virtual TMemberIndex GetIndex(void) const
CTypesIteratorBase(TTypeInfo type)
virtual const CItemInfo * GetItemInfo(void) const =0
CTypeConstIterator & operator++(void)
CTypeConstIterator(const CSerialObject &object)
bool MatchesContext(const string &filter) const
Check context against filter.
CTypeIterator operator++(int)
list< pair< typename LevelIterator::TObjectInfo, const CItemInfo * > > TIteratorContext
CTypesIteratorBase< Parent > & AddType(TTypeInfo type)
TBeginInfo::TObjectInfo TObjectInfo
ptrdiff_t difference_type
bool operator==(const CTypeConstIterator &it) const
CTypeIteratorBase(TTypeInfo needType, const TBeginInfo &beginInfo, const string &filter)
CParent::TBeginInfo TBeginInfo
TObjectInfo m_CurrentObject
TTypeInfo GetIteratorType(void) const
CTreeIterator(const TBeginInfo &beginInfo, const string &filter)
static bool Match(const string &mask, const string &path)
TConstObjectPtr GetObjectPtr(void) const
Get pointer to object.
bool IsValid(const CSeq_point &pt, CScope *scope)
Checks that point >= 0 and point < length of Bioseq.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
const string & GetName(void) const
Get name of this type.
#define NCBI_XSERIAL_EXPORT
unsigned int
A callback function used to compare two keys in a database.
const TYPE & Get(const CNamedParameterList *param)
Useful/utility classes and methods.
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
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