factor/basis/biassocs/biassocs.factor

46 lines
1009 B
Factor
Raw Normal View History

! Copyright (C) 2008, 2009 Slava Pestov.
2008-07-12 19:52:31 -04:00
! See http://factorcode.org/license.txt for BSD license.
USING: kernel assocs accessors summary hashtables ;
2008-07-12 19:52:31 -04:00
IN: biassocs
TUPLE: biassoc from to ;
: <biassoc> ( exemplar -- biassoc )
[ clone ] [ clone ] bi biassoc boa ;
2008-07-12 22:28:43 -04:00
: <bihash> ( -- biassoc )
2008-07-12 19:52:31 -04:00
H{ } <biassoc> ;
M: biassoc assoc-size from>> assoc-size ;
M: biassoc at* from>> at* ;
M: biassoc value-at* to>> at* ;
: once-at ( value key assoc -- )
2dup key? [ 3drop ] [ set-at ] if ;
M: biassoc set-at
[ from>> set-at ] [ swapd to>> once-at ] 3bi ;
2008-08-29 01:34:22 -04:00
ERROR: no-biassoc-deletion ;
M: no-biassoc-deletion summary
drop "biassocs do not support deletion" ;
2008-07-12 19:52:31 -04:00
M: biassoc delete-at
2008-08-29 01:34:22 -04:00
no-biassoc-deletion ;
2008-07-12 19:52:31 -04:00
M: biassoc >alist
from>> >alist ;
M: biassoc clear-assoc
[ from>> clear-assoc ] [ to>> clear-assoc ] bi ;
M: biassoc new-assoc
drop [ <hashtable> ] [ <hashtable> ] bi biassoc boa ;
2008-07-12 19:52:31 -04:00
INSTANCE: biassoc assoc
: >biassoc ( assoc -- biassoc )
T{ biassoc } assoc-clone-like ;