home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / setelement.sru < prev    next >
Text File  |  1997-08-06  |  3KB  |  130 lines

  1. $PBExportHeader$setelement.sru
  2. $PBExportComments$An element in a classset (actually a list element)
  3. forward
  4. global type setelement from nonvisualobject
  5. end type
  6. end forward
  7.  
  8. global type setelement from nonvisualobject
  9. end type
  10. global setelement setelement
  11.  
  12. type variables
  13. powerobject contents
  14. setelement nextElement, prevElement
  15. end variables
  16.  
  17. forward prototypes
  18. public function integer add (powerobject obj)
  19. public function integer remove (integer index)
  20. public function integer remove (powerobject obj)
  21. public function integer contains (powerobject obj)
  22. public function setelement get (integer index)
  23. end prototypes
  24.  
  25. public function integer add (powerobject obj);// add at end if applicable
  26. if (obj = contents) then
  27.     return 0
  28. end if
  29. if not isNull(nextElement) then 
  30.     return nextElement.add(obj)
  31. end if
  32.  
  33. setelement element
  34. element = create setelement
  35. element.contents = obj
  36. element.prevElement = this
  37. setNull(element.nextElement)
  38. nextElement = element
  39. return 1
  40. end function
  41.  
  42. public function integer remove (integer index);// checks next element and remove is applicable
  43. if isNull(nextElement) then
  44.     return 0
  45. end if
  46. if index = 0 then
  47.     setelement element
  48.     // remove nextElement from list and destroy it
  49.     element = nextElement
  50.     nextElement = element.nextElement
  51.     if not isNull(nextElement) then 
  52.         nextElement.prevElement = this
  53.     end if
  54.     setNull(element.nextElement)
  55.     setNull(element.prevElement)
  56.     destroy element
  57.     return 1
  58. end if
  59. return nextElement.remove(index - 1)
  60. end function
  61.  
  62. public function integer remove (powerobject obj);// checks next element and remove is applicable
  63. if isNull(nextElement) then
  64.     return 0
  65. end if
  66. if obj = nextElement.contents then
  67.     setelement element
  68.     // remove nextElement from list and destroy it
  69.     element = nextElement
  70.     nextElement = element.nextElement
  71.     if not isNull(nextElement) then 
  72.         nextElement.prevElement = this
  73.     end if
  74.     setNull(element.nextElement)
  75.     setNull(element.prevElement)
  76.     destroy element
  77.     if isNull(nextElement) then 
  78.         return 1
  79.     end if
  80.     return (1 + nextElement.remove(obj))
  81. end if
  82. return nextElement.remove(obj)
  83. end function
  84.  
  85. public function integer contains (powerobject obj);// checks next element
  86. if isNull(nextElement) then
  87.     return 0
  88. end if
  89. if obj = nextElement.contents then 
  90.     return (1 + nextElement.contains(obj))
  91. end if
  92. return nextElement.contains(obj)
  93. end function
  94.  
  95. public function setelement get (integer index);// get bij index
  96. if isNull(nextElement) then
  97.     powerobject nullobject
  98.     setNull(nullobject)
  99.     return nullobject
  100. end if
  101. if index = 0 then
  102.     return nextElement    
  103. end if
  104. return nextElement.get(index - 1)
  105. end function
  106.  
  107. on setelement.create
  108. TriggerEvent( this, "constructor" )
  109. end on
  110.  
  111. on setelement.destroy
  112. TriggerEvent( this, "destructor" )
  113. end on
  114.  
  115. event constructor;//
  116. setNull(contents)
  117. setNull(nextElement)
  118. setNull(prevElement)
  119. end event
  120.  
  121. event destructor;// destroy nextElement
  122. setNull(contents)
  123. setNull(prevElement)
  124. if not isNull(nextElement) then
  125.     destroy nextElement
  126. end if
  127. setNull(nextElement)
  128. end event
  129.  
  130.