1 ! Copyright (C) 2008, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors alien.c-types assocs compiler.units functors
4 growable io kernel lexer namespaces parser prettyprint.custom
5 sequences specialized-arrays specialized-arrays.private strings
7 QUALIFIED: vectors.functor
8 IN: specialized-vectors
12 FUNCTOR: define-vector ( T -- )
14 V DEFINES-CLASS ${T}-vector
25 V A <A> vectors.functor:define-vector
29 M: V byte-length underlying>> byte-length ;
31 M: V pprint-delims drop \ V{ \ } ;
33 M: V >pprint-sequence ;
35 M: V pprint* pprint-object ;
37 SYNTAX: V{ \ } [ >V ] parse-literal ;
44 : specialized-vector-vocab ( type -- vocab )
45 "specialized-vectors.instances." prepend ;
47 : defining-vector-message ( type -- )
48 "quiet" get [ drop ] [
49 "Generating specialized " " vectors..." surround print
54 : define-vector-vocab ( type -- vocab )
56 dup specialized-vector-vocab vocab
58 [ defining-vector-message ]
61 dup specialized-vector-vocab
62 [ define-vector ] with-current-vocab
63 ] with-compilation-unit
65 [ specialized-vector-vocab ]
69 SYNTAX: SPECIALIZED-VECTOR:
71 [ define-array-vocab use-vocab ]
72 [ define-vector-vocab use-vocab ] bi ;