]> gitweb.factorcode.org Git - factor.git/blob - basis/struct-vectors/struct-vectors.factor
change math.floats.env tests not to use any libm functions, which don't reliably...
[factor.git] / basis / struct-vectors / struct-vectors.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors alien.c-types byte-arrays growable kernel math sequences
4 sequences.private struct-arrays ;
5 IN: struct-vectors
6
7 TUPLE: struct-vector
8 { underlying struct-array }
9 { length array-capacity }
10 { c-type read-only } ;
11
12 : <struct-vector> ( capacity struct-class -- struct-vector )
13     [ <struct-array> 0 ] keep struct-vector boa ; inline
14
15 M: struct-vector byte-length underlying>> byte-length ;
16
17 M: struct-vector new-sequence
18     [ c-type>> <struct-array> ] [ [ >fixnum ] [ c-type>> ] bi* ] 2bi
19     struct-vector boa ;
20
21 M: struct-vector contract 2drop ;
22
23 M: struct-array new-resizable c-type>> <struct-vector> ;
24
25 INSTANCE: struct-vector growable