2008-11-14 21:18:16 -05:00
|
|
|
! Copyright (C) 2008 Slava Pestov.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
|
|
USING: functors sequences sequences.private kernel words classes
|
|
|
|
math alien alien.c-types byte-arrays accessors
|
|
|
|
specialized-arrays ;
|
|
|
|
IN: specialized-arrays.direct.functor
|
|
|
|
|
|
|
|
FUNCTOR: define-direct-array ( T -- )
|
|
|
|
|
|
|
|
A' IS ${T}-array
|
|
|
|
>A' IS >${T}-array
|
|
|
|
<A'> IS <${A'}>
|
|
|
|
|
|
|
|
A DEFINES direct-${T}-array
|
|
|
|
<A> DEFINES <${A}>
|
|
|
|
|
|
|
|
NTH [ T dup c-getter array-accessor ]
|
|
|
|
SET-NTH [ T dup c-setter array-accessor ]
|
|
|
|
|
|
|
|
WHERE
|
|
|
|
|
|
|
|
TUPLE: A
|
2008-12-04 13:07:33 -05:00
|
|
|
{ underlying c-ptr read-only }
|
2008-11-14 21:18:16 -05:00
|
|
|
{ length fixnum read-only } ;
|
|
|
|
|
2008-12-02 21:35:20 -05:00
|
|
|
: <A> ( alien len -- direct-array ) A boa ; inline
|
2008-11-14 21:18:16 -05:00
|
|
|
M: A length length>> ;
|
|
|
|
M: A nth-unsafe underlying>> NTH call ;
|
|
|
|
M: A set-nth-unsafe underlying>> SET-NTH call ;
|
2009-01-28 16:46:04 -05:00
|
|
|
M: A like drop dup A instance? [ >A' ] unless ;
|
|
|
|
M: A new-sequence drop <A'> ;
|
2008-11-14 21:18:16 -05:00
|
|
|
|
|
|
|
INSTANCE: A sequence
|
|
|
|
|
|
|
|
;FUNCTOR
|