SkipListNode.st
author Claus Gittinger <cg@exept.de>
Tue, 25 Jun 2019 14:28:51 +0200
changeset 5050 44fa8672d102
parent 4398 e87e78eb5234
permissions -rw-r--r--
#DOCUMENTATION by cg class: SharedQueue comment/format in: #next #nextWithTimeout:

"{ Package: 'stx:libbasic2' }"

"{ NameSpace: Smalltalk }"

Object subclass:#SkipListNode
	instanceVariableNames:'pointers object'
	classVariableNames:''
	poolDictionaries:''
	category:'Collections-Ordered-Trees-Private'
!


!SkipListNode class methodsFor:'instance creation'!

new: maxLevel
	^ super new initialize: maxLevel
!

on: element level: maxLevel 
        ^ (self new: maxLevel) object: element

    "Modified (format): / 18-06-2017 / 17:47:43 / cg"
!

tailOfLevel: n
	^ self on: nil level: n
! !

!SkipListNode methodsFor:'accessing'!

atForward: i put: node
	^ pointers at: i put: node
!

forward: i 
	^ pointers at: i
!

level
	^ pointers size
!

next
	^ pointers first
!

object
	^ object
! !

!SkipListNode methodsFor:'initialization'!

initialize: maxLevel
        pointers := Array new: maxLevel

    "Modified (format): / 18-06-2017 / 17:47:07 / cg"
! !

!SkipListNode methodsFor:'printing'!

printOn: aStream
        | first |
        aStream
                nextPut: $[;
                nextPutAll: object printString;
                nextPutAll: ']-->('.
        first := true.
        pointers do: [:node |
                first ifTrue: [first := false] ifFalse: [aStream space].
                aStream nextPutAll: (node isNil ifTrue: ['*'] ifFalse: [node object printString])].
        aStream nextPut: $)

    "Modified: / 18-06-2017 / 17:47:35 / cg"
! !

!SkipListNode methodsFor:'private'!

object: anObject
        object := anObject

    "Modified (format): / 18-06-2017 / 17:47:13 / cg"
! !

!SkipListNode class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_CVS
    ^ '$Header$'
! !