home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1997-03-14 | 1.6 KB | 64 lines |
- >Internal.Classes.BTree
- 1997 Matthew Godbolt
- Binary Tree class
- 04 Mar 1997 : JF - Started v1.00
- magicword
- Overload_Classes_Initialise
- A Binary tree
- * Class_BTree =
- RegisterClass("BTree")
- AddField(Class_BTree,"data")
- AddField(Class_BTree,"less")
- AddField(Class_BTree,"more")
- AddField(Class_BTree,"compare")
- The magic word that means that the entry is invalid
- magicword=&474d524a
- Pass on
- newBTree(compare$)
- new(Class_BTree)
- $ret.compare=
- newString(compare$)
- Use -1 to mean that this is the head and so invalid
- ret.less=-1
- ret.more=0
- Overload_Construct(class,instance)
- class
- Class_BTree
- "0 instance.data=
- newString("_BTree_Compare")
- #3 instance.compare=
- newString("_BTree_Compare")
- @(class,instance)
- Return -ve if v1<v2
- 0 if v1=v2
- +ve if v1>v2
- _BTree_Compare(v1,v2)
- =v1-v2
- BTree_Add(item)
- @.less=-1
- @.data=item
- @.less=0
- 4/ cmp=
- "+@.compare.data$+"(@.data,item)")
- cmp<0
- @.less=0
- @.less=
- new(Class_BTree)
- @.less.compare=@.compare
- @.less.data=item
- @.less.Add(item)
- cmp>0
- @.more=0
- @ @.more=
- new(Class_BTree)
- A @.more.compare=@.compare
- @.more.data=item
- @.less.Add(item)
- BTree_Iterate(fun$)
- @.less<>-1
- @.less
- @.less.Iterate(fun$)
- (fun$)(@.data)
- @.more
- @.more.Iterate(fun$)
-