146 virtual void Split() = 0;
203 void RemoveItem(
Int_t idx);
209 Int_t NofKeys()
const;
244 void ShiftLeft(
Int_t cnt);
256 Int_t IsLow()
const {
return fLast < fTree->fInnerLowWaterMark; }
335 public std::iterator<std::bidirectional_iterator_tag,
336 TObject*, std::ptrdiff_t,
337 const TObject**, const TObject*&> {
392 return fItem[i].fNofKeysInTree;
397 return GetNofKeys(idx);
402 fItem[i].fNofKeysInTree =
r;
407 return (fItem[i].fNofKeysInTree += n);
412 return (fItem[i].fNofKeysInTree -= n);
void SetItem(Int_t i, TBtItem &itm)
friend class TBtInnerNode
TObject * Before(const TObject *obj) const
May not use this method since B-tree decides order.
void SetKey(Int_t idx, TObject *obj)
#define Split(a, ahi, alo)
void SetItem(Int_t i, TObject *obj, TBtNode *node)
Int_t GetNofKeys(Int_t i) const
void AddLast(TObject *obj)
TObject * GetKey(Int_t i) const
Int_t DecNofKeys(Int_t i, Int_t n=1)
void AppendFrom(TBtInnerNode *src, Int_t start, Int_t stop)
This should never create a full node that is, it is not used anywhere where THIS could possibly be ne...
TObject * operator[](Int_t i) const
void SetNofKeys(Int_t i, Int_t r)
virtual TBtree * GetParentTree() const
Int_t Rank(const TObject *obj) const
Returns the rank of the object in the tree.
TObject * FindObject(const char *name) const
Find object using its name (see object's GetName()).
Int_t NofKeys() const
Return the number of keys.
void RemoveItem(Int_t idx)
void Add(TObject *obj)
Add object to B-tree.
virtual ~TBtree()
Delete B-tree.
Abstract base class (ABC) of a TBtree node.
TBtLeafNode * FirstLeafNode()
Return the first node.
void AddAfter(const TObject *, TObject *obj)
void RootIsEmpty()
If root is empty clean up its space.
Int_t NofKeys() const
Number of key.
void Clear(Option_t *option="")
Remove all objects from B-tree.
virtual ~TBtNode()
Delete a B-tree node.
void BalanceWithRight(TBtInnerNode *r, Int_t idx)
THIS has more than RIGHTSIB.
Int_t IdxAdd(const TObject &obj)
Add object and return its index in the tree.
Iterator abstract base class.
TObject * operator[](Int_t i) const
void PushLeft(Int_t cnt, TBtInnerNode *leftsib, Int_t parentIdx)
noFromThis==1 => moves the parent item into the leftsib, and the first item in this's array into the ...
Sequenceable collection abstract base class.
void SetTree(Int_t i, TBtNode *node)
#define ClassDef(name, id)
TObject * Found(const TObject *obj, TBtNode **which, Int_t *where)
Recursively look for WHAT starting in the current node.
Item stored in inner nodes of a TBtree.
TObject * GetKey(Int_t idx)
TBtLeafNode * LastLeafNode()
Return the last leaf node.
const Bool_t kIterForward
Bool_t operator!=(const TDatime &d1, const TDatime &d2)
Int_t FindRank(const TObject *obj) const
WHAT was not in any inner node; it is either here, or it's not in the tree.
TBtItem & GetItem(Int_t i) const
TBtLeafNode * LastLeafNode()
return the last node.
void MergeWithRight(TBtInnerNode *r, Int_t idx)
Merge the 2 part of the tree.
TIterator * MakeIterator(Bool_t dir=kIterForward) const
Returns a B-tree iterator.
void Append(TObject *obj, TBtNode *n)
Never called from anywhere where it might fill up THIS.
TTime operator*(const TTime &t1, const TTime &t2)
Collection abstract base class.
TObject ** GetObjectRef(const TObject *) const
void RootIsFull()
The root of the tree is full.
TObject * At(Int_t idx) const
TObject * After(const TObject *obj) const
Cannot use this method since B-tree decides order.
void Init(Int_t i)
Initialize a B-tree.
void Reset(Detail::TBranchProxy *x)
TBtree(Int_t ordern=3)
Create a B-tree of certain order (by default 3).
Int_t IsAlmostFull() const
void AddAt(TObject *obj, Int_t)
void AddFirst(TObject *obj)
TObject * Remove(TObject *obj)
Remove an object from the tree.
Int_t IncNofKeys(Int_t i, Int_t n=1)
Int_t IsAlmostFull() const
void SetKey(Int_t i, TObject *obj)
void Delete(Option_t *option="")
Remove all objects from B-tree AND delete all heap based objects.
void BalanceWithLeft(TBtInnerNode *l, Int_t idx)
THIS has more than LEFTSIB.
const TCollection * GetCollection() const
Int_t FindRank(const TObject *obj) const
Recursively look for WHAT starting in the current node.
void PushRight(Int_t cnt, TBtInnerNode *rightsib, Int_t parentIdx)
The operation is three steps:
void AddBefore(const TObject *, TObject *obj)
Mother of all ROOT objects.
TObject * Found(const TObject *obj, TBtNode **which, Int_t *where)
WHAT was not in any inner node; it is either here, or it's not in the tree.
void operator=(const TCollection &)
TBtLeafNode * FirstLeafNode()
Return the first leaf node.
void ShiftLeft(Int_t cnt)
Shift to the left.
void SplitWith(TBtInnerNode *r, Int_t idx)
THIS and SIB are too full; create a NEWNODE, and balance the number of keys between the three of them...
TBtNode * GetTree(Int_t i) const
void BalanceWith(TBtInnerNode *n, int idx)
PINDX is the index of the parent item whose key will change when keys are shifted from one InnerNode ...
virtual Int_t IndexOf(const TObject *obj) const
Return index of object in collection.