home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / comms_networking / irclient / !IRClient / Scripts / Internal / Classes / BTree (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1997-03-14  |  1.6 KB  |  64 lines

  1.  >Internal.Classes.BTree
  2.  1997 Matthew Godbolt
  3.  Binary Tree class
  4.  04 Mar 1997 : JF - Started                               v1.00
  5.  magicword
  6. Overload_Classes_Initialise
  7.  A Binary tree
  8. * Class_BTree = 
  9. RegisterClass("BTree")
  10. AddField(Class_BTree,"data")
  11. AddField(Class_BTree,"less")
  12. AddField(Class_BTree,"more")
  13. AddField(Class_BTree,"compare")
  14.  The magic word that means that the entry is invalid
  15.  magicword=&474d524a
  16.  Pass on
  17. newBTree(compare$)
  18. new(Class_BTree)
  19. $ret.compare=
  20. newString(compare$)
  21.  Use -1 to mean that this is the head and so invalid
  22. ret.less=-1
  23. ret.more=0
  24. Overload_Construct(class,instance)
  25.  class 
  26.  Class_BTree
  27. "0  instance.data=
  28. newString("_BTree_Compare")
  29. #3  instance.compare=
  30. newString("_BTree_Compare")
  31. @(class,instance)
  32.  Return -ve if v1<v2
  33.           0 if v1=v2
  34.         +ve if v1>v2
  35. _BTree_Compare(v1,v2)
  36. =v1-v2
  37. BTree_Add(item)
  38.  @.less=-1 
  39.  @.data=item
  40.  @.less=0
  41. 4/ cmp=
  42. "+@.compare.data$+"(@.data,item)")
  43.  cmp<0 
  44.  @.less=0 
  45.    @.less=
  46. new(Class_BTree)
  47.    @.less.compare=@.compare
  48.    @.less.data=item
  49. @.less.Add(item)
  50.  cmp>0 
  51.  @.more=0 
  52. @     @.more=
  53. new(Class_BTree)
  54. A     @.more.compare=@.compare
  55.     @.more.data=item
  56. @.less.Add(item)
  57. BTree_Iterate(fun$)
  58.  @.less<>-1 
  59.  @.less 
  60. @.less.Iterate(fun$)
  61. (fun$)(@.data)
  62.  @.more 
  63. @.more.Iterate(fun$)
  64.