38 #if defined(_MGNCSCTRL_TEXTEDITOR) || (defined(_MGCTRL_TEXTEDIT) && defined(_MGCTRL_TEXTEDIT_USE_NEW_IMPL)) 43 #define BTREE_ERRNO_SCHILD 1 44 #define BTREE_ERRNO_SNEXT 0 45 #define BTREE_ERRNO_SNULL -1 47 DECLARE_OBJECT(mCommBTreeNode)
48 DECLARE_OBJECT(mCommBTree)
49 DECLARE_OBJECT(mCommBTreeLeafIterator)
51 #define mCommBTreeLeafIteratorHeader(Clss) \ 54 mCommBTreeNode *current; 56 #define mCommBTreeLeafIteratorClassHeader(Clss, Super)\ 57 mObjectClassHeader(Clss, Super) \ 58 mCommBTreeNode* (*getCurrent)(Clss *self); \ 59 BOOL (*hasNext)(Clss *self); \ 60 mCommBTreeNode* (*next)(Clss *self); \ 61 void (*remove)(Clss *self); \ 62 void (*insert)(Clss *self, mCommBTreeNode *leaf); 65 #define mCommBTreeNodeHeader(Clss) \ 70 unsigned int level:16; \ 72 unsigned int numChildren:16; \ 74 unsigned int numLeaves; 77 #define mCommBTreeNodeClassHeader(Clss, Super) \ 78 mObjectClassHeader(Clss, Super) \ 79 void (*resetKey)(Clss *self); \ 80 int (*compareNode)(Clss *self, void *cmpInfo); \ 81 void (*recompute)(Clss *self, Clss *child); \ 82 void (*changeKey)(Clss *self, void *diffInfo, int deltaChild); \ 83 BOOL (*isNullKey)(Clss *self); 85 #define mCommBTreeHeader(Clss) \ 87 mCommBTreeNode *rootNode; \ 92 #define mCommBTreeClassHeader(Clss, Super) \ 93 mObjectClassHeader(Clss, Super) \ 94 void (*ref)(Clss *self); \ 95 void (*unref)(Clss *self); \ 96 mCommBTreeNode* (*getRoot)(Clss *self); \ 97 void (*rebalanceNode)(Clss *self, mCommBTreeNode *node); \ 98 void (*recomputeNodeInfo)(Clss *self, mCommBTreeNode *node); \ 99 void (*deleteNode)(Clss *self, mCommBTreeNode *node); \ 100 BOOL (*insertLeaf)(Clss *self, mCommBTreeNode *parent, \ 101 mCommBTreeNode *sibLeaf, mCommBTreeNode *leaf); \ 102 mCommBTreeNode* (*search)(Clss *self, void* searchInfo, int flags); \ 103 mCommBTreeNode* (*newNode)(Clss *self); \ 104 mCommBTreeNode* (*newLeaf)(Clss *self); 108 BTSF_RETLAST_IF_OUTOFRANGE = 0x1
111 DEFINE_OBJECT(mCommBTreeNode,
mObject)
112 DEFINE_OBJECT(mCommBTree,
mObject)
113 DEFINE_OBJECT(mCommBTreeLeafIterator,
mObject)
115 #endif //_MGHAVE_NEWTEXTEDIT || _MGNCSCTRL_TEXTEDITOR