]> gitweb.factorcode.org Git - factor.git/blob - core/arrays/arrays.factor
hex-strings: fix using
[factor.git] / core / arrays / arrays.factor
1 ! Copyright (C) 2005, 2010 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel math sequences sequences.private ;
4 IN: arrays
5
6 BUILTIN: array { length array-capacity read-only initial: 0 } ;
7
8 PRIMITIVE: <array> ( n elt -- array )
9 PRIMITIVE: resize-array ( n array -- new-array )
10
11 M: array clone (clone) ; inline
12 M: array length length>> ; inline
13 M: array nth-unsafe [ integer>fixnum ] dip array-nth ; inline
14 M: array set-nth-unsafe [ integer>fixnum ] dip set-array-nth ; inline
15 M: array resize resize-array ; inline
16 M: array equal? over array? [ sequence= ] [ 2drop f ] if ;
17 M: array hashcode* [ sequence-hashcode ] recursive-hashcode ;
18 M: object new-sequence drop 0 <array> ; inline
19 M: f new-sequence drop [ f ] [ 0 <array> ] if-zero ; inline
20
21 INSTANCE: array sequence
22
23 : >array ( seq -- array ) { } clone-like ;
24 : 1array ( x -- array ) 1 swap <array> ; inline
25 : 2array ( x y -- array ) { } 2sequence ; inline
26 : 3array ( x y z -- array ) { } 3sequence ; inline
27 : 4array ( w x y z -- array ) { } 4sequence ; inline
28
29 PREDICATE: pair < array length>> 2 number= ;