1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: functors sequences sequences.private kernel words classes
4 math alien alien.c-types byte-arrays accessors
6 IN: specialized-arrays.direct.functor
8 FUNCTOR: define-direct-array ( T -- )
14 A DEFINES direct-${T}-array
17 NTH [ T dup c-getter array-accessor ]
18 SET-NTH [ T dup c-setter array-accessor ]
23 { underlying c-ptr read-only }
24 { length fixnum read-only } ;
26 : <A> ( alien len -- direct-array ) A boa ; inline
27 M: A length length>> ;
28 M: A nth-unsafe underlying>> NTH call ;
29 M: A set-nth-unsafe underlying>> SET-NTH call ;
30 M: A like drop dup A instance? [ >A' ] unless ;
31 M: A new-sequence drop <A'> ;