factor/basis/struct-vectors/struct-vectors.factor

25 lines
738 B
Factor
Raw Normal View History

! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
2009-07-07 16:34:14 -04:00
USING: accessors alien.c-types byte-arrays growable kernel math sequences
sequences.private struct-arrays ;
IN: struct-vectors
TUPLE: struct-vector
{ underlying struct-array }
{ length array-capacity }
{ c-type read-only } ;
: <struct-vector> ( capacity c-type -- struct-vector )
[ <struct-array> 0 ] keep struct-vector boa ; inline
2009-07-07 16:30:41 -04:00
M: struct-vector byte-length underlying>> byte-length ;
M: struct-vector new-sequence
2009-07-07 16:29:16 -04:00
[ c-type>> <struct-array> ] [ [ >fixnum ] [ c-type>> ] bi* ] 2bi
struct-vector boa ;
M: struct-vector contract 2drop ;
M: struct-array new-resizable c-type>> <struct-vector> ;
2009-07-07 16:29:16 -04:00
INSTANCE: struct-vector growable