From 8baae18cdcd25444a83fc51117e611f267d6729a Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Tue, 25 Aug 2009 15:58:18 -0500 Subject: [PATCH] add an X-sequence mixin class for each specialized array type to span X-array, X-vector, and direct-X-array --- basis/specialized-arrays/direct/functor/functor.factor | 3 +++ basis/specialized-arrays/functor/functor.factor | 5 +++++ basis/specialized-vectors/functor/functor.factor | 3 +++ 3 files changed, 11 insertions(+) diff --git a/basis/specialized-arrays/direct/functor/functor.factor b/basis/specialized-arrays/direct/functor/functor.factor index b49dfa35e4..89d1b5423d 100755 --- a/basis/specialized-arrays/direct/functor/functor.factor +++ b/basis/specialized-arrays/direct/functor/functor.factor @@ -8,6 +8,7 @@ IN: specialized-arrays.direct.functor FUNCTOR: define-direct-array ( T -- ) A' IS ${T}-array +S IS ${T}-sequence >A' IS >${T}-array IS <${A'}> A'{ IS ${A'}{ @@ -24,6 +25,8 @@ TUPLE: A { underlying c-ptr read-only } { length fixnum read-only } ; +INSTANCE: A S + : ( alien len -- direct-array ) A boa ; inline M: A length length>> ; M: A nth-unsafe underlying>> NTH call ; diff --git a/basis/specialized-arrays/functor/functor.factor b/basis/specialized-arrays/functor/functor.factor index 06b9aef17d..a8d8d677ec 100644 --- a/basis/specialized-arrays/functor/functor.factor +++ b/basis/specialized-arrays/functor/functor.factor @@ -16,6 +16,7 @@ M: bad-byte-array-length summary FUNCTOR: define-array ( T -- ) A DEFINES-CLASS ${T}-array +S DEFINES-CLASS ${T}-sequence DEFINES <${A}> (A) DEFINES (${A}) >A DEFINES >${A} @@ -27,10 +28,14 @@ SET-NTH [ T dup c-setter array-accessor ] WHERE +MIXIN: S + TUPLE: A { length array-capacity read-only } { underlying byte-array read-only } ; +INSTANCE: A S + : ( n -- specialized-array ) dup T A boa ; inline : (A) ( n -- specialized-array ) dup T (c-array) A boa ; inline diff --git a/basis/specialized-vectors/functor/functor.factor b/basis/specialized-vectors/functor/functor.factor index 08c44cd197..48c480b4d1 100644 --- a/basis/specialized-vectors/functor/functor.factor +++ b/basis/specialized-vectors/functor/functor.factor @@ -10,6 +10,7 @@ FUNCTOR: define-vector ( T -- ) V DEFINES-CLASS ${T}-vector A IS ${T}-array +S IS ${T}-sequence IS <${A}> >V DEFERS >${V} @@ -19,6 +20,8 @@ WHERE V A vectors.functor:define-vector +INSTANCE: V S + M: V contract 2drop ; M: V byte-length underlying>> byte-length ;