factor/basis/bit-vectors/bit-vectors.factor

39 lines
1.0 KiB
Factor
Raw Normal View History

2008-01-28 19:15:21 -05:00
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: arrays kernel kernel.private math sequences
2008-12-08 15:58:00 -05:00
sequences.private growable bit-arrays prettyprint.custom
2008-04-20 03:30:52 -04:00
parser accessors ;
2008-01-28 19:15:21 -05:00
IN: bit-vectors
TUPLE: bit-vector
{ underlying bit-array initial: ?{ } }
2008-06-29 22:37:57 -04:00
{ length array-capacity } ;
2008-04-20 01:18:27 -04:00
2008-01-28 19:15:21 -05:00
: <bit-vector> ( n -- bit-vector )
2008-07-01 21:19:03 -04:00
<bit-array> 0 bit-vector boa ; inline
2008-01-28 19:15:21 -05:00
2008-04-20 01:18:27 -04:00
: >bit-vector ( seq -- bit-vector )
T{ bit-vector f ?{ } 0 } clone-like ;
2008-01-28 19:15:21 -05:00
M: bit-vector like
drop dup bit-vector? [
dup bit-array?
2008-07-01 21:19:03 -04:00
[ dup length bit-vector boa ] [ >bit-vector ] if
2008-01-28 19:15:21 -05:00
] unless ;
2008-04-13 13:54:58 -04:00
M: bit-vector new-sequence
2008-07-01 21:19:03 -04:00
drop [ <bit-array> ] [ >fixnum ] bi bit-vector boa ;
2008-01-28 19:15:21 -05:00
M: bit-vector equal?
over bit-vector? [ sequence= ] [ 2drop f ] if ;
2008-01-30 02:40:22 -05:00
M: bit-array new-resizable drop <bit-vector> ;
2008-01-28 19:15:21 -05:00
INSTANCE: bit-vector growable
2008-04-20 03:30:52 -04:00
: ?V{ \ } [ >bit-vector ] parse-literal ; parsing
2008-04-20 01:18:27 -04:00
M: bit-vector >pprint-sequence ;
M: bit-vector pprint-delims drop \ ?V{ \ } ;
M: bit-vector pprint* pprint-object ;