Paste: limited-list
Author: | kobi |
Mode: | factor |
Date: | Sat, 23 Oct 2010 08:16:01 |
Plain Text |
USING: accessors kernel math slots.syntax ;
QUALIFIED-WITH: binary-tree bst
IN: limited-list
TUPLE: limited-list btree { limit integer } { count integer initial: 0 } ;
: empty?
btree>> >boolean not ;
: vacancy?
slots[ count limit ] < ;
: inc
[ 1 + ] change-count ;
GENERIC: belongs?
GENERIC: update
DEFER: update
: add-first-node
inc swap bst:<binary-tree> >>btree update ;
: regular-add
inc btree>> bst:add-node ;
: limited-add
regular-add update ;
: add-node
dup empty? [ add-first-node ]
[ dup vacancy? [ regular-add ]
[
2dup belongs? [ limited-add ] [ 2drop ] if
] if
] if ;
: add
[ bst:<node> ] dip add-node ;
Author: | kobi |
Mode: | factor |
Date: | Sat, 23 Oct 2010 11:52:29 |
Plain Text |
GENERIC: remove-border
: limited-add
dup remove-border
regular-add update-borders ;
New Annotation