13GX_CORE_NAMESPACE_BEGIN()
76 virtual GxNodeBase* allocateNode(
void);
186 virtual void erase(
void);
298 template <
class T>
class GxIterator;
419 void erase(
void)
override;
464 _pCurrent = _pTreeBase->getRootNode();
478 auto* pChild = _pCurrent->getChild();
487 auto* pNext = _pCurrent->getNext();
496 auto* pParent = _pCurrent->getParent();
497 for( ; pParent; pParent = pParent->getParent() )
499 if( pParent->getNext() )
502 _pCurrent = pParent->getNext();
526 return static_cast<T
>(_pCurrent->getObject());
540GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
オブジェクト基底クラス
Definition GxBase.h:88
参照オブジェクト基底クラス
Definition GxBase.h:122
ツリー構造イテレータクラス
Definition GxTree.h:428
GX_FORCE_INLINE GxTree::GxNode * getCurrentNode(void)
現在のノードを取得
Definition GxTree.h:450
GxIterator(GxTreeBase *pTreeBase)
コンストラクタ
Definition GxTree.h:439
~GxIterator(void) override
デストラクタ
Definition GxTree.h:441
GxIterator(void)
ディフォルトコンストラクタ (使用禁止)
Definition GxTree.h:435
ツリーノードクラス
Definition GxTree.h:364
~GxNode(void)
デストラクタ
Definition GxTree.h:392
void setObject(void *pObject) override
登録オブジェクト設定
Definition GxTree.cpp:591
constexpr GxTree::GxNode * getChild(void) const
子ノード取得
Definition GxTree.h:406
void erase(void) override
ノード削除
Definition GxTree.cpp:609
constexpr GxClassBaseReference * getObject(void) const
登録オブジェクト取得
Definition GxTree.h:402
GxNode(void)
ディフォルトコンストラクタ (使用禁止)
Definition GxTree.h:382
GxNode(GxTree *pTree)
Definition GxTree.h:387
GX_FORCE_INLINE GxTree::GxNode * getParent(void)
親ノード取得
Definition GxTree.h:404
constexpr GxTree::GxNode * getPrevious(void) const
同一階層前ノード取得
Definition GxTree.h:408
constexpr GxTree::GxNode * getNext(void) const
同一階層次ノード取得
Definition GxTree.h:410
ツリー構造イテレータクラス (任意オブジェクト用)
Definition GxTree.h:225
GxTreeBase::GxNodeBase * getCurrentNode(void)
現在のノードを取得
Definition GxTree.h:535
GxNodeBase * _pCurrent
カレントノード
Definition GxTree.h:268
GxIteratorBase(void)
ディフォルトコンストラクタ (使用禁止)
Definition GxTree.h:232
T getCurrent(void)
現在のオブジェクトを取得
Definition GxTree.h:522
GxTreeBase * _pTreeBase
操作ツリー
Definition GxTree.h:267
GxIteratorBase(const GxTreeBase::GxIteratorBase< T > &iterator)
コピーコンストラクタ
Definition GxTree.h:241
T getNext(void)
次を取得
Definition GxTree.h:473
const GxTreeBase::GxIteratorBase< T > & operator=(GxTreeBase::GxIteratorBase< T > &iterator)
代入
Definition GxTree.h:243
T getTop(void)
先頭を取得
Definition GxTree.h:462
GxIteratorBase(GxTreeBase *pTreeBase)
コンストラクタ
Definition GxTree.h:236
virtual ~GxIteratorBase(void)
デストラクタ
Definition GxTree.h:238
ツリーノードクラス (任意オブジェクト用)
Definition GxTree.h:104
constexpr GxTreeBase::GxNodeBase * getChild(void) const
子ノード取得
Definition GxTree.h:162
void attachNextEnd(GxTreeBase::GxNodeBase *pNode)
指定ノードの末弟に接続
Definition GxTree.cpp:412
GxTreeBase::GxNodeBase * _pPrevious
同一階層前ノード
Definition GxTree.h:215
GxTreeBase::GxNodeBase * _pParent
親ノード
Definition GxTree.h:213
void * _pObject
登録オブジェクト
Definition GxTree.h:212
constexpr GxTreeBase::GxNodeBase * getNext(void) const
同一階層次ノード取得
Definition GxTree.h:166
~GxNodeBase(void)
デストラクタ
Definition GxTree.h:146
b32 isBrother(const GxTreeBase::GxNodeBase *pNode) const
同一階層ノード判定
Definition GxTree.cpp:279
GxTreeBase::GxNodeBase * _pNext
同一階層次ノード
Definition GxTree.h:216
GxTreeBase::GxNodeBase * getPreviousTop(void)
同一階層先頭(長兄)ノード取得
Definition GxTree.cpp:218
GxTreeBase::GxNodeBase * _pChild
子ノード
Definition GxTree.h:214
b32 isChild(const GxTreeBase::GxNodeBase *pNode) const
子ノード判定
Definition GxTree.cpp:258
void detach(void)
ノードの接続分離
Definition GxTree.cpp:437
GxNodeBase(GxTreeBase *pTree)
Definition GxTree.h:136
GxTreeBase * _pTree
所属ツリー
Definition GxTree.h:211
void attachChild(GxTreeBase::GxNodeBase *pNode)
指定ノードのChildに接続
Definition GxTree.cpp:366
void detachExceptChild(void)
子以外のノードの接続分離
Definition GxTree.cpp:520
void detachParentPrevious(void)
親、兄のノードの接続分離
Definition GxTree.cpp:482
GxNodeBase(void)
ディフォルトコンストラクタ (使用禁止)
Definition GxTree.h:125
GxTreeBase::GxNodeBase * getNextEnd(void)
同一階層終端(末弟)ノード取得
Definition GxTree.cpp:233
virtual void erase(void)
ノード削除
Definition GxTree.cpp:320
void attachNext(GxTreeBase::GxNodeBase *pNode)
指定ノードのNextに接続
Definition GxTree.cpp:389
virtual GX_FORCE_INLINE void setObject(void *pObject)
登録オブジェクト設定
Definition GxTree.h:156
GxTreeBase::GxNodeBase * find(const void *pObject)
ノードの探索
Definition GxTree.cpp:335
b32 isRoot(void) const
ルートノード判定
Definition GxTree.cpp:248
GX_FORCE_INLINE GxTreeBase::GxNodeBase * getParent(void)
親ノード取得
Definition GxTree.h:160
constexpr void * getObject(void) const
登録オブジェクト取得
Definition GxTree.h:158
constexpr GxTreeBase::GxNodeBase * getPrevious(void) const
同一階層前ノード取得
Definition GxTree.h:164
ツリー構造クラス (任意オブジェクト用)
Definition GxTree.h:19
GxTreeBase::GxNodeBase * addNextNode(GxTreeBase::GxNodeBase *pBase, void *pObject)
Nextノード追加
Definition GxTree.cpp:65
GxTreeBase(void)
コンストラクタ
Definition GxTree.h:46
constexpr GxTreeBase::GxNodeBase * getRootNode(void) const
ルートノードの取得
Definition GxTree.h:87
GxTreeBase::GxNodeBase * addChildNode(GxTreeBase::GxNodeBase *pBase, void *pObject)
Childノード追加
Definition GxTree.cpp:92
GxTreeBase::GxNodeBase * _pRoot
ルートノード
Definition GxTree.h:95
constexpr void setRootNode(GxTreeBase::GxNodeBase *pNode)
ルートノードの設定
Definition GxTree.h:85
~GxTreeBase(void)
デストラクタ
Definition GxTree.h:50
GxTreeBase::GxNodeBase * addRootNode(void *pObject)
Rootノード追加
Definition GxTree.cpp:38
ツリー構造クラス (クラスオブジェクト)
Definition GxTree.h:277
GX_FORCE_INLINE GxTree::GxNode * getRootNode(void) const
ルートノードの取得
Definition GxTree.h:338
constexpr void setAttribute(ATTRIBUTE attribute)
属性の設定
Definition GxTree.h:343
constexpr void clearAttribute(ATTRIBUTE attribute)
属性の解除
Definition GxTree.h:345
~GxTree(void)
デストラクタ
Definition GxTree.h:312
GX_FORCE_INLINE GxTree::GxNode * addNextNode(GxTree::GxNode *pBase, GxClassBaseReference *pObject)
Nextノード追加
Definition GxTree.h:323
u32 _attribute
属性
Definition GxTree.h:355
GX_FORCE_INLINE GxTree::GxNode * addRootNode(GxClassBaseReference *pObject)
Rootノード追加
Definition GxTree.h:321
ATTRIBUTE
属性
Definition GxTree.h:290
@ ATTRIBUTE_USE_REFERENCE_COUNT
属性:参照カウンタ使用フラグ
Definition GxTree.h:291
GX_FORCE_INLINE GxTree::GxNode * addChildNode(GxTree::GxNode *pBase, GxClassBaseReference *pObject)
Childノード追加
Definition GxTree.h:325
GX_FORCE_INLINE b32 isAttribute(ATTRIBUTE attribute) const
属性の判定
Definition GxTree.h:347
constexpr u32 getAttribute(void) const
属性の取得
Definition GxTree.h:341
GxTree(u32 attribute=0)
コンストラクタ
Definition GxTree.h:307
GxNodeBase * allocateNode(void) override
Nodeのメモリ確保
Definition GxTree.cpp:573
32bitブーリアン
Definition GxDefine.h:173