From a054ec3d6498225977f90dcfd074405ea2db6920 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 4 Sep 2009 22:01:55 -0500 Subject: [PATCH] specialized-arrays.direct is no more; instead, every specialized-array. vocabulary has a constructor --- basis/alien/arrays/arrays-docs.factor | 4 +- basis/alien/arrays/arrays.factor | 2 +- basis/alien/c-types/c-types-docs.factor | 12 ++-- basis/alien/c-types/c-types.factor | 30 +++------ basis/classes/struct/struct-tests.factor | 5 +- basis/classes/struct/struct.factor | 15 ++--- basis/cocoa/enumeration/enumeration.factor | 2 +- basis/cocoa/messages/messages.factor | 2 +- .../core-foundation/fsevents/fsevents.factor | 4 +- basis/environment/winnt/winnt.factor | 2 +- basis/io/files/info/unix/macosx/macosx.factor | 2 +- basis/io/mmap/alien/alien.factor | 2 +- basis/io/mmap/bool/bool.factor | 2 +- basis/io/mmap/char/char.factor | 2 +- basis/io/mmap/double/double.factor | 2 +- basis/io/mmap/float/float.factor | 2 +- basis/io/mmap/int/int.factor | 2 +- basis/io/mmap/long/long.factor | 2 +- basis/io/mmap/longlong/longlong.factor | 2 +- basis/io/mmap/short/short.factor | 2 +- basis/io/mmap/uchar/uchar.factor | 2 +- basis/io/mmap/uint/uint.factor | 2 +- basis/io/mmap/ulong/ulong.factor | 2 +- basis/io/mmap/ulonglong/ulonglong.factor | 2 +- basis/io/mmap/ushort/ushort.factor | 2 +- basis/math/blas/matrices/matrices.factor | 2 - basis/math/blas/vectors/vectors.factor | 5 +- .../direct/alien/alien.factor | 4 -- .../direct/bool/bool.factor | 4 -- .../direct/char/char.factor | 4 -- .../complex-double/complex-double.factor | 4 -- .../direct/complex-float/complex-float.factor | 4 -- .../direct/direct-docs.factor | 33 ---------- .../direct/direct-tests.factor | 7 -- basis/specialized-arrays/direct/direct.factor | 3 - .../direct/double/double.factor | 4 -- .../direct/float/float.factor | 4 -- .../direct/functor/functor.factor | 66 ------------------- .../direct/functor/summary.txt | 1 - .../specialized-arrays/direct/int/int.factor | 4 -- .../direct/long/long.factor | 4 -- .../direct/longlong/longlong.factor | 4 -- .../direct/short/short.factor | 4 -- .../direct/uchar/uchar.factor | 4 -- .../direct/uint/uint.factor | 4 -- .../direct/ulong/ulong.factor | 4 -- .../direct/ulonglong/ulonglong.factor | 4 -- .../direct/ushort/ushort.factor | 4 -- .../specialized-arrays/functor/functor.factor | 37 ++++++----- .../prettyprint/prettyprint.factor | 14 ++++ .../specialized-arrays-docs.factor | 3 +- .../specialized-arrays-tests.factor | 7 +- .../specialized-arrays.factor | 12 +++- .../dragdrop-listener.factor | 2 +- basis/windows/errors/errors.factor | 4 +- basis/windows/ole32/ole32.factor | 2 +- extra/half-floats/half-floats.factor | 3 +- .../images/normalization/normalization.factor | 9 ++- 58 files changed, 107 insertions(+), 275 deletions(-) mode change 100644 => 100755 basis/alien/arrays/arrays-docs.factor mode change 100644 => 100755 basis/alien/c-types/c-types-docs.factor mode change 100644 => 100755 basis/classes/struct/struct-tests.factor mode change 100644 => 100755 basis/classes/struct/struct.factor mode change 100644 => 100755 basis/cocoa/enumeration/enumeration.factor mode change 100644 => 100755 basis/cocoa/messages/messages.factor mode change 100644 => 100755 basis/core-foundation/fsevents/fsevents.factor mode change 100644 => 100755 basis/environment/winnt/winnt.factor mode change 100644 => 100755 basis/io/files/info/unix/macosx/macosx.factor mode change 100644 => 100755 basis/io/mmap/alien/alien.factor mode change 100644 => 100755 basis/io/mmap/bool/bool.factor mode change 100644 => 100755 basis/io/mmap/char/char.factor mode change 100644 => 100755 basis/io/mmap/double/double.factor mode change 100644 => 100755 basis/io/mmap/float/float.factor mode change 100644 => 100755 basis/io/mmap/int/int.factor mode change 100644 => 100755 basis/io/mmap/long/long.factor mode change 100644 => 100755 basis/io/mmap/longlong/longlong.factor mode change 100644 => 100755 basis/io/mmap/short/short.factor mode change 100644 => 100755 basis/io/mmap/uchar/uchar.factor mode change 100644 => 100755 basis/io/mmap/uint/uint.factor mode change 100644 => 100755 basis/io/mmap/ulong/ulong.factor mode change 100644 => 100755 basis/io/mmap/ulonglong/ulonglong.factor mode change 100644 => 100755 basis/io/mmap/ushort/ushort.factor delete mode 100644 basis/specialized-arrays/direct/alien/alien.factor delete mode 100644 basis/specialized-arrays/direct/bool/bool.factor delete mode 100644 basis/specialized-arrays/direct/char/char.factor delete mode 100644 basis/specialized-arrays/direct/complex-double/complex-double.factor delete mode 100644 basis/specialized-arrays/direct/complex-float/complex-float.factor delete mode 100644 basis/specialized-arrays/direct/direct-docs.factor delete mode 100644 basis/specialized-arrays/direct/direct-tests.factor delete mode 100644 basis/specialized-arrays/direct/direct.factor delete mode 100644 basis/specialized-arrays/direct/double/double.factor delete mode 100644 basis/specialized-arrays/direct/float/float.factor delete mode 100755 basis/specialized-arrays/direct/functor/functor.factor delete mode 100644 basis/specialized-arrays/direct/functor/summary.txt delete mode 100644 basis/specialized-arrays/direct/int/int.factor delete mode 100644 basis/specialized-arrays/direct/long/long.factor delete mode 100644 basis/specialized-arrays/direct/longlong/longlong.factor delete mode 100644 basis/specialized-arrays/direct/short/short.factor delete mode 100644 basis/specialized-arrays/direct/uchar/uchar.factor delete mode 100644 basis/specialized-arrays/direct/uint/uint.factor delete mode 100644 basis/specialized-arrays/direct/ulong/ulong.factor delete mode 100644 basis/specialized-arrays/direct/ulonglong/ulonglong.factor delete mode 100644 basis/specialized-arrays/direct/ushort/ushort.factor mode change 100644 => 100755 basis/specialized-arrays/functor/functor.factor create mode 100755 basis/specialized-arrays/prettyprint/prettyprint.factor mode change 100644 => 100755 basis/specialized-arrays/specialized-arrays-docs.factor mode change 100644 => 100755 basis/specialized-arrays/specialized-arrays-tests.factor mode change 100644 => 100755 basis/specialized-arrays/specialized-arrays.factor mode change 100644 => 100755 basis/windows/dragdrop-listener/dragdrop-listener.factor mode change 100644 => 100755 basis/windows/errors/errors.factor mode change 100644 => 100755 extra/half-floats/half-floats.factor diff --git a/basis/alien/arrays/arrays-docs.factor b/basis/alien/arrays/arrays-docs.factor old mode 100644 new mode 100755 index bf012090f8..db4a7bf595 --- a/basis/alien/arrays/arrays-docs.factor +++ b/basis/alien/arrays/arrays-docs.factor @@ -6,7 +6,7 @@ ARTICLE: "c-arrays" "C arrays" $nl "C type specifiers for array types are documented in " { $link "c-types-specs" } "." $nl -"Specialized sequences are provided for accessing memory as an array of primitive type values. These sequences are implemented in the " { $vocab-link "specialized-arrays" } " and " { $vocab-link "specialized-arrays.direct" } " vocabulary sets. They can also be loaded and constructed through their primitive C types:" -{ $subsection require-c-arrays } +"Specialized sequences are provided for accessing memory as an array of primitive type values. These sequences are implemented in the " { $vocab-link "specialized-arrays" } " vocabulary set. They can also be loaded and constructed through their primitive C types:" +{ $subsection require-c-array } { $subsection } { $subsection } ; diff --git a/basis/alien/arrays/arrays.factor b/basis/alien/arrays/arrays.factor index 98994c753e..64827ec139 100755 --- a/basis/alien/arrays/arrays.factor +++ b/basis/alien/arrays/arrays.factor @@ -35,7 +35,7 @@ M: array stack-size drop "void*" stack-size ; M: array c-type-boxer-quot unclip [ array-length ] - [ [ require-c-arrays ] keep ] bi* + [ [ require-c-array ] keep ] bi* [ ] 2curry ; M: array c-type-unboxer-quot drop [ >c-ptr ] ; diff --git a/basis/alien/c-types/c-types-docs.factor b/basis/alien/c-types/c-types-docs.factor old mode 100644 new mode 100755 index ac9a959d4c..3a7c3a7405 --- a/basis/alien/c-types/c-types-docs.factor +++ b/basis/alien/c-types/c-types-docs.factor @@ -51,7 +51,7 @@ HELP: c-setter HELP: { $values { "len" "a non-negative integer" } { "c-type" "a C type" } { "array" byte-array } } { $description "Creates a byte array large enough to hold " { $snippet "n" } " values of a C type." } -{ $notes "The appropriate specialized array vocabulary must be loaded; otherwise, a " { $link specialized-array-vocab-not-loaded } " error will be thrown. The vocabulary can be loaded with a " { $link POSTPONE: USING: } " form as usual, or with the " { $link require-c-arrays } " word. See the " { $vocab-link "specialized-arrays" } " vocabulary set for details on the underlying sequence type constructed." } +{ $notes "The appropriate specialized array vocabulary must be loaded; otherwise, a " { $link specialized-array-vocab-not-loaded } " error will be thrown. The vocabulary can be loaded with a " { $link POSTPONE: USING: } " form as usual, or with the " { $link require-c-array } " word. See the " { $vocab-link "specialized-arrays" } " vocabulary set for details on the underlying sequence type constructed." } { $errors "Throws an error if the type does not exist, the necessary specialized array vocabulary is not loaded, or the requested size is negative." } ; HELP: @@ -73,7 +73,7 @@ HELP: byte-array>memory HELP: malloc-array { $values { "n" "a non-negative integer" } { "type" "a C type" } { "alien" alien } } { $description "Allocates an unmanaged memory block large enough to hold " { $snippet "n" } " values of a C type, then wraps the memory in a sequence object using " { $link } "." } -{ $notes "The appropriate direct specialized array vocabulary must be loaded; otherwise, a " { $link specialized-array-vocab-not-loaded } " error will be thrown. The vocabulary can be loaded with a " { $link POSTPONE: USING: } " form as usual, or with the " { $link require-c-arrays } " word. See the " { $vocab-link "specialized-arrays.direct" } " vocabulary set for details on the underlying sequence type constructed." } +{ $notes "The appropriate specialized array vocabulary must be loaded; otherwise, a " { $link specialized-array-vocab-not-loaded } " error will be thrown. The vocabulary can be loaded with a " { $link POSTPONE: USING: } " form as usual, or with the " { $link require-c-array } " word. See the " { $vocab-link "specialized-arrays" } " vocabulary set for details on the underlying sequence type constructed." } { $warning "Don't forget to deallocate the memory with a call to " { $link free } "." } { $errors "Throws an error if the type does not exist, if the requested size is negative, if a direct specialized array class appropriate to the type is not loaded, or if memory allocation fails." } ; @@ -130,15 +130,15 @@ HELP: malloc-string } } ; -HELP: require-c-arrays +HELP: require-c-array { $values { "c-type" "a C type" } } -{ $description { $link require } "s any unloaded vocabularies needed to construct a specialized array or direct array of " { $snippet "c-type" } " using the " { $link } " or " { $link } " vocabularies." } -{ $notes "This word must be called inside a compilation unit. See the " { $vocab-link "specialized-arrays" } " and " { $vocab-link "specialized-arrays.direct" } " vocabulary sets for details on the underlying sequence types loaded." } ; +{ $description { $link require } "s any unloaded vocabularies needed to construct a specialized array of " { $snippet "c-type" } " using the " { $link } " or " { $link } " vocabularies." } +{ $notes "This word must be called inside a compilation unit. See the " { $vocab-link "specialized-arrays" } " vocabulary set for details on the underlying sequence types loaded." } ; HELP: { $values { "alien" c-ptr } { "len" integer } { "c-type" "a C type" } { "array" "a specialized direct array" } } { $description "Constructs a new specialized array of length " { $snippet "len" } " and element type " { $snippet "c-type" } " over the range of memory referenced by " { $snippet "alien" } "." } -{ $notes "The appropriate direct specialized array vocabulary must be loaded; otherwise, a " { $link specialized-array-vocab-not-loaded } " error will be thrown. The vocabulary can be loaded with a " { $link POSTPONE: USING: } " form as usual, or with the " { $link require-c-arrays } " word. See the " { $vocab-link "specialized-arrays.direct" } " vocabulary set for details on the underlying sequence type constructed." } ; +{ $notes "The appropriate specialized array vocabulary must be loaded; otherwise, a " { $link specialized-array-vocab-not-loaded } " error will be thrown. The vocabulary can be loaded with a " { $link POSTPONE: USING: } " form as usual, or with the " { $link require-c-array } " word. See the " { $vocab-link "specialized-arrays" } " vocabulary set for details on the underlying sequence type constructed." } ; ARTICLE: "c-strings" "C strings" "C string types are arrays with shape " { $snippet "{ \"char*\" encoding }" } ", where " { $snippet "encoding" } " is an encoding descriptor. The type " { $snippet "\"char*\"" } " is an alias for " { $snippet "{ \"char*\" utf8 }" } ". See " { $link "encodings-descriptors" } " for information about encoding descriptors." diff --git a/basis/alien/c-types/c-types.factor b/basis/alien/c-types/c-types.factor index ac0bbf68b3..86e695831c 100755 --- a/basis/alien/c-types/c-types.factor +++ b/basis/alien/c-types/c-types.factor @@ -25,9 +25,7 @@ align array-class array-constructor (array)-constructor -direct-array-class -direct-array-constructor -sequence-mixin-class ; +direct-array-constructor ; TUPLE: c-type < abstract-c-type boxer @@ -89,21 +87,19 @@ M: string heap-size c-type heap-size ; M: abstract-c-type heap-size size>> ; -GENERIC: require-c-arrays ( c-type -- ) +GENERIC: require-c-array ( c-type -- ) -M: object require-c-arrays +M: object require-c-array drop ; -M: c-type require-c-arrays - [ array-class>> ?require-word ] - [ sequence-mixin-class>> ?require-word ] - [ direct-array-class>> ?require-word ] tri ; +M: c-type require-c-array + array-class>> ?require-word ; -M: string require-c-arrays - c-type require-c-arrays ; +M: string require-c-array + c-type require-c-array ; -M: array require-c-arrays - first c-type require-c-arrays ; +M: array require-c-array + first c-type require-c-array ; ERROR: specialized-array-vocab-not-loaded vocab word ; @@ -370,14 +366,6 @@ M: long-long-type box-return ( type -- ) ] [ [ "specialized-arrays." prepend ] - [ "-sequence" append ] bi* ?lookup >>sequence-mixin-class - ] - [ - [ "specialized-arrays.direct." prepend ] - [ "direct-" "-array" surround ] bi* ?lookup >>direct-array-class - ] - [ - [ "specialized-arrays.direct." prepend ] [ "" surround ] bi* ?lookup >>direct-array-constructor ] } 2cleave ; diff --git a/basis/classes/struct/struct-tests.factor b/basis/classes/struct/struct-tests.factor old mode 100644 new mode 100755 index 9387d932c6..f359b5f6f7 --- a/basis/classes/struct/struct-tests.factor +++ b/basis/classes/struct/struct-tests.factor @@ -5,9 +5,8 @@ classes.struct classes.tuple.private combinators compiler.tree.debugger compiler.units destructors io.encodings.utf8 io.pathnames io.streams.string kernel libc literals math mirrors multiline namespaces prettyprint -prettyprint.config see sequences specialized-arrays.char -specialized-arrays.direct.int specialized-arrays.ushort -struct-arrays system tools.test ; +prettyprint.config see sequences specialized-arrays.char int +specialized-arrays.ushort struct-arrays system tools.test ; IN: classes.struct.tests << diff --git a/basis/classes/struct/struct.factor b/basis/classes/struct/struct.factor old mode 100644 new mode 100755 index b2bd07a03f..09d80e5003 --- a/basis/classes/struct/struct.factor +++ b/basis/classes/struct/struct.factor @@ -6,7 +6,7 @@ combinators combinators.short-circuit combinators.smart definitions functors.backend fry generalizations generic.parser kernel kernel.private lexer libc locals macros make math math.order parser quotations sequences slots slots.private struct-arrays vectors -words compiler.tree.propagation.transforms specialized-arrays.direct.uchar ; +words compiler.tree.propagation.transforms specialized-arrays.uchar ; FROM: slots => reader-word writer-word ; IN: classes.struct @@ -20,8 +20,7 @@ TUPLE: struct TUPLE: struct-slot-spec < slot-spec c-type ; -PREDICATE: struct-class < tuple-class - { [ \ struct subclass-of? ] [ all-slots length 1 = ] } 1&& ; +PREDICATE: struct-class < tuple-class \ struct subclass-of? ; : struct-slots ( struct-class -- slots ) "struct-slots" word-prop ; @@ -126,10 +125,6 @@ M: struct-class writer-quot [ \ struct-slot-values ] [ struct-slot-values-quot ] bi define-inline-method ; -: (define-byte-length-method) ( class -- ) - [ \ byte-length ] [ heap-size \ drop swap [ ] 2sequence ] bi - define-inline-method ; - : clone-underlying ( struct -- byte-array ) [ >c-ptr ] [ byte-length ] bi memory>byte-array ; inline @@ -203,6 +198,9 @@ M: struct-class c-type-unboxer-quot M: struct-class heap-size "struct-size" word-prop ; +M: struct byte-length + class "struct-size" word-prop ; foldable + ! class definition > +<< "id" require-c-array >> CONSTANT: NS-EACH-BUFFER-SIZE 16 diff --git a/basis/cocoa/messages/messages.factor b/basis/cocoa/messages/messages.factor old mode 100644 new mode 100755 index 26672dde80..7342451c38 --- a/basis/cocoa/messages/messages.factor +++ b/basis/cocoa/messages/messages.factor @@ -5,7 +5,7 @@ classes.struct continuations combinators compiler compiler.alien stack-checker kernel math namespaces make quotations sequences strings words cocoa.runtime io macros memoize io.encodings.utf8 effects libc libc.private lexer init core-foundation fry -generalizations specialized-arrays.direct.alien ; +generalizations specialized-arrays.alien ; IN: cocoa.messages : make-sender ( method function -- quot ) diff --git a/basis/core-foundation/fsevents/fsevents.factor b/basis/core-foundation/fsevents/fsevents.factor old mode 100644 new mode 100755 index 4b2cce994a..7eba7d14c9 --- a/basis/core-foundation/fsevents/fsevents.factor +++ b/basis/core-foundation/fsevents/fsevents.factor @@ -3,8 +3,8 @@ USING: alien alien.c-types alien.strings alien.syntax kernel math sequences namespaces make assocs init accessors continuations combinators io.encodings.utf8 destructors locals -arrays specialized-arrays.direct.alien classes.struct -specialized-arrays.direct.int specialized-arrays.direct.longlong +arrays specialized-arrays.alien classes.struct +specialized-arrays.int specialized-arrays.longlong core-foundation core-foundation.run-loop core-foundation.strings core-foundation.time ; IN: core-foundation.fsevents diff --git a/basis/environment/winnt/winnt.factor b/basis/environment/winnt/winnt.factor old mode 100644 new mode 100755 index afe4425b3f..518a7d5d7a --- a/basis/environment/winnt/winnt.factor +++ b/basis/environment/winnt/winnt.factor @@ -6,7 +6,7 @@ alien.c-types sequences windows.errors io.streams.memory io.encodings io ; IN: environment.winnt -<< "TCHAR" require-c-arrays >> +<< "TCHAR" require-c-array >> M: winnt os-env ( key -- value ) MAX_UNICODE_PATH "TCHAR" diff --git a/basis/io/files/info/unix/macosx/macosx.factor b/basis/io/files/info/unix/macosx/macosx.factor old mode 100644 new mode 100755 index bd40f39534..9ce235ecd7 --- a/basis/io/files/info/unix/macosx/macosx.factor +++ b/basis/io/files/info/unix/macosx/macosx.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien.c-types alien.strings combinators grouping io.encodings.utf8 io.files kernel math sequences -system unix io.files.unix specialized-arrays.direct.uint arrays +system unix io.files.unix specialized-arrays.uint arrays unix.statfs.macosx unix.statvfs.macosx unix.getfsstat.macosx io.files.info.unix io.files.info classes.struct struct-arrays ; IN: io.files.info.unix.macosx diff --git a/basis/io/mmap/alien/alien.factor b/basis/io/mmap/alien/alien.factor old mode 100644 new mode 100755 index 4b0a532407..bf721489fa --- a/basis/io/mmap/alien/alien.factor +++ b/basis/io/mmap/alien/alien.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.alien ; +USING: io.mmap.functor specialized-arrays.alien ; IN: io.mmap.alien << "void*" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/bool/bool.factor b/basis/io/mmap/bool/bool.factor old mode 100644 new mode 100755 index a2b596fff6..5352bbf9af --- a/basis/io/mmap/bool/bool.factor +++ b/basis/io/mmap/bool/bool.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.bool ; +USING: io.mmap.functor specialized-arrays.bool ; IN: io.mmap.bool << "bool" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/char/char.factor b/basis/io/mmap/char/char.factor old mode 100644 new mode 100755 index 453e7e940c..fc5f14faaf --- a/basis/io/mmap/char/char.factor +++ b/basis/io/mmap/char/char.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.char ; +USING: io.mmap.functor specialized-arrays.char ; IN: io.mmap.char << "char" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/double/double.factor b/basis/io/mmap/double/double.factor old mode 100644 new mode 100755 index 919c006748..708286bc3d --- a/basis/io/mmap/double/double.factor +++ b/basis/io/mmap/double/double.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.double ; +USING: io.mmap.functor specialized-arrays.double ; IN: io.mmap.double << "double" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/float/float.factor b/basis/io/mmap/float/float.factor old mode 100644 new mode 100755 index 33cf16c29f..71685a4548 --- a/basis/io/mmap/float/float.factor +++ b/basis/io/mmap/float/float.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.float ; +USING: io.mmap.functor specialized-arrays.float ; IN: io.mmap.float << "float" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/int/int.factor b/basis/io/mmap/int/int.factor old mode 100644 new mode 100755 index 400e81e401..1f6bd2ac36 --- a/basis/io/mmap/int/int.factor +++ b/basis/io/mmap/int/int.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.int ; +USING: io.mmap.functor specialized-arrays.int ; IN: io.mmap.int << "int" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/long/long.factor b/basis/io/mmap/long/long.factor old mode 100644 new mode 100755 index 190dd288ea..70a9c46756 --- a/basis/io/mmap/long/long.factor +++ b/basis/io/mmap/long/long.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.long ; +USING: io.mmap.functor specialized-arrays.long ; IN: io.mmap.long << "long" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/longlong/longlong.factor b/basis/io/mmap/longlong/longlong.factor old mode 100644 new mode 100755 index 4d0a2aaa5a..426f87274f --- a/basis/io/mmap/longlong/longlong.factor +++ b/basis/io/mmap/longlong/longlong.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.longlong ; +USING: io.mmap.functor specialized-arrays.longlong ; IN: io.mmap.longlong << "longlong" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/short/short.factor b/basis/io/mmap/short/short.factor old mode 100644 new mode 100755 index add58157f9..c19d70d34a --- a/basis/io/mmap/short/short.factor +++ b/basis/io/mmap/short/short.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.short ; +USING: io.mmap.functor specialized-arrays.short ; IN: io.mmap.short << "short" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/uchar/uchar.factor b/basis/io/mmap/uchar/uchar.factor old mode 100644 new mode 100755 index d30fb60251..03b6cd4647 --- a/basis/io/mmap/uchar/uchar.factor +++ b/basis/io/mmap/uchar/uchar.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.uchar ; +USING: io.mmap.functor specialized-arrays.uchar ; IN: io.mmap.uchar << "uchar" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/uint/uint.factor b/basis/io/mmap/uint/uint.factor old mode 100644 new mode 100755 index 926a0f4af8..a3793495c0 --- a/basis/io/mmap/uint/uint.factor +++ b/basis/io/mmap/uint/uint.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.uint ; +USING: io.mmap.functor specialized-arrays.uint ; IN: io.mmap.uint << "uint" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/ulong/ulong.factor b/basis/io/mmap/ulong/ulong.factor old mode 100644 new mode 100755 index 80f70b3596..dfdae5d661 --- a/basis/io/mmap/ulong/ulong.factor +++ b/basis/io/mmap/ulong/ulong.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.ulong ; +USING: io.mmap.functor specialized-arrays.ulong ; IN: io.mmap.ulong << "ulong" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/ulonglong/ulonglong.factor b/basis/io/mmap/ulonglong/ulonglong.factor old mode 100644 new mode 100755 index 91f481cef9..1d6bd0e3b8 --- a/basis/io/mmap/ulonglong/ulonglong.factor +++ b/basis/io/mmap/ulonglong/ulonglong.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.ulonglong ; +USING: io.mmap.functor specialized-arrays.ulonglong ; IN: io.mmap.ulonglong << "ulonglong" define-mapped-array >> \ No newline at end of file diff --git a/basis/io/mmap/ushort/ushort.factor b/basis/io/mmap/ushort/ushort.factor old mode 100644 new mode 100755 index 6d5ac016cf..fc63313bd8 --- a/basis/io/mmap/ushort/ushort.factor +++ b/basis/io/mmap/ushort/ushort.factor @@ -1,4 +1,4 @@ -USING: io.mmap.functor specialized-arrays.direct.ushort ; +USING: io.mmap.functor specialized-arrays.ushort ; IN: io.mmap.ushort << "ushort" define-mapped-array >> \ No newline at end of file diff --git a/basis/math/blas/matrices/matrices.factor b/basis/math/blas/matrices/matrices.factor index a7ee79f210..c315021ed4 100755 --- a/basis/math/blas/matrices/matrices.factor +++ b/basis/math/blas/matrices/matrices.factor @@ -3,9 +3,7 @@ combinators.short-circuit fry kernel locals macros math math.blas.ffi math.blas.vectors math.blas.vectors.private math.complex math.functions math.order functors words sequences sequences.merged sequences.private shuffle -specialized-arrays.direct.float specialized-arrays.direct.double specialized-arrays.float specialized-arrays.double -specialized-arrays.direct.complex-float specialized-arrays.direct.complex-double specialized-arrays.complex-float specialized-arrays.complex-double parser prettyprint.backend prettyprint.custom ascii ; IN: math.blas.matrices diff --git a/basis/math/blas/vectors/vectors.factor b/basis/math/blas/vectors/vectors.factor index dd80b50f90..2b573ab6ed 100755 --- a/basis/math/blas/vectors/vectors.factor +++ b/basis/math/blas/vectors/vectors.factor @@ -3,10 +3,7 @@ combinators.short-circuit fry kernel math math.blas.ffi math.complex math.functions math.order sequences sequences.private functors words locals parser prettyprint.backend prettyprint.custom specialized-arrays.float specialized-arrays.double -specialized-arrays.direct.float specialized-arrays.direct.double -specialized-arrays.complex-float specialized-arrays.complex-double -specialized-arrays.direct.complex-float -specialized-arrays.direct.complex-double ; +specialized-arrays.complex-float specialized-arrays.complex-double ; IN: math.blas.vectors TUPLE: blas-vector-base underlying length inc ; diff --git a/basis/specialized-arrays/direct/alien/alien.factor b/basis/specialized-arrays/direct/alien/alien.factor deleted file mode 100644 index 3949c40352..0000000000 --- a/basis/specialized-arrays/direct/alien/alien.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.alien specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.alien - -<< "void*" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/bool/bool.factor b/basis/specialized-arrays/direct/bool/bool.factor deleted file mode 100644 index 689fcc3069..0000000000 --- a/basis/specialized-arrays/direct/bool/bool.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.bool specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.bool - -<< "bool" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/char/char.factor b/basis/specialized-arrays/direct/char/char.factor deleted file mode 100644 index cca3a62010..0000000000 --- a/basis/specialized-arrays/direct/char/char.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.char specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.char - -<< "char" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/complex-double/complex-double.factor b/basis/specialized-arrays/direct/complex-double/complex-double.factor deleted file mode 100644 index ae8d2b5fb3..0000000000 --- a/basis/specialized-arrays/direct/complex-double/complex-double.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.complex-double specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.complex-double - -<< "complex-double" define-direct-array >> diff --git a/basis/specialized-arrays/direct/complex-float/complex-float.factor b/basis/specialized-arrays/direct/complex-float/complex-float.factor deleted file mode 100644 index 8971196297..0000000000 --- a/basis/specialized-arrays/direct/complex-float/complex-float.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.complex-float specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.complex-float - -<< "complex-float" define-direct-array >> diff --git a/basis/specialized-arrays/direct/direct-docs.factor b/basis/specialized-arrays/direct/direct-docs.factor deleted file mode 100644 index e2638c4af4..0000000000 --- a/basis/specialized-arrays/direct/direct-docs.factor +++ /dev/null @@ -1,33 +0,0 @@ -USING: help.markup help.syntax byte-arrays alien ; -IN: specialized-arrays.direct - -ARTICLE: "specialized-arrays.direct" "Direct-mapped specialized arrays" -"The " { $vocab-link "specialized-arrays.direct" } " vocabulary implements fixed-length sequence types for storing machine values in unmanaged C memory." -$nl -"For each primitive C type " { $snippet "T" } ", a set of words are defined:" -{ $table - { { $snippet "direct-T-array" } { "The class of direct arrays with elements of type " { $snippet "T" } } } - { { $snippet "" } { "Constructor for arrays with elements of type " { $snippet "T" } "; stack effect " { $snippet "( alien len -- array )" } } } -} -"Each direct array has a " { $slot "underlying" } " slot holding an " { $link simple-alien } " pointer to the raw data. This data can be passed to C functions." -$nl -"The primitive C types for which direct arrays exist:" -{ $list - { $snippet "char" } - { $snippet "uchar" } - { $snippet "short" } - { $snippet "ushort" } - { $snippet "int" } - { $snippet "uint" } - { $snippet "long" } - { $snippet "ulong" } - { $snippet "longlong" } - { $snippet "ulonglong" } - { $snippet "float" } - { $snippet "double" } - { $snippet "void*" } - { $snippet "bool" } -} -"Direct arrays are generated with a functor in the " { $vocab-link "specialized-arrays.direct.functor" } " vocabulary." ; - -ABOUT: "specialized-arrays.direct" diff --git a/basis/specialized-arrays/direct/direct-tests.factor b/basis/specialized-arrays/direct/direct-tests.factor deleted file mode 100644 index 2a48b5d3d3..0000000000 --- a/basis/specialized-arrays/direct/direct-tests.factor +++ /dev/null @@ -1,7 +0,0 @@ -IN: specialized-arrays.direct.tests -USING: specialized-arrays.direct.ushort tools.test -specialized-arrays.ushort alien.syntax sequences ; - -[ ushort-array{ 0 0 0 } ] [ - 3 ALIEN: 123 100 new-sequence -] unit-test diff --git a/basis/specialized-arrays/direct/direct.factor b/basis/specialized-arrays/direct/direct.factor deleted file mode 100644 index 7c15c66415..0000000000 --- a/basis/specialized-arrays/direct/direct.factor +++ /dev/null @@ -1,3 +0,0 @@ -! Copyright (C) 2008 Slava Pestov. -! See http://factorcode.org/license.txt for BSD license. -IN: specialized-arrays.direct diff --git a/basis/specialized-arrays/direct/double/double.factor b/basis/specialized-arrays/direct/double/double.factor deleted file mode 100644 index c3089b3e48..0000000000 --- a/basis/specialized-arrays/direct/double/double.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.double specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.double - -<< "double" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/float/float.factor b/basis/specialized-arrays/direct/float/float.factor deleted file mode 100644 index 94caa95685..0000000000 --- a/basis/specialized-arrays/direct/float/float.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.float specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.float - -<< "float" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/functor/functor.factor b/basis/specialized-arrays/direct/functor/functor.factor deleted file mode 100755 index 5731fd8c17..0000000000 --- a/basis/specialized-arrays/direct/functor/functor.factor +++ /dev/null @@ -1,66 +0,0 @@ -! 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 parser -prettyprint.backend prettyprint.custom prettyprint.sections ; -IN: specialized-arrays.direct.functor - -> ] [ length>> ] bi [ pprint* ] bi@ ] pprint-prefix ; - -PRIVATE> - -FUNCTOR: define-direct-array ( T -- ) - -A' IS ${T}-array -S IS ${T}-sequence ->A' IS >${T}-array - IS <${A'}> -A'{ IS ${A'}{ - -A DEFINES-CLASS direct-${T}-array - DEFINES <${A}> -A'@ DEFINES ${A'}@ - -NTH [ T dup c-type-getter-boxer array-accessor ] -SET-NTH [ T dup c-setter array-accessor ] - -WHERE - -TUPLE: A -{ underlying c-ptr read-only } -{ length fixnum read-only } ; - -: ( alien len -- direct-array ) A boa ; inline -M: A length length>> ; inline -M: A nth-unsafe underlying>> NTH call ; inline -M: A set-nth-unsafe underlying>> SET-NTH call ; inline -M: A like drop dup A instance? [ >A' ] unless ; inline -M: A new-sequence drop ; inline - -M: A byte-length length>> T heap-size * ; inline - -SYNTAX: A'@ - scan-object scan-object parsed ; - -M: A pprint-delims drop \ A'{ \ } ; - -M: A >pprint-sequence ; - -M: A pprint* - [ pprint-object ] - [ \ A'@ pprint-direct-array ] - pprint-c-object ; - -INSTANCE: A sequence -INSTANCE: A S - -T c-type - \ A >>direct-array-class - \ >>direct-array-constructor - drop - -;FUNCTOR diff --git a/basis/specialized-arrays/direct/functor/summary.txt b/basis/specialized-arrays/direct/functor/summary.txt deleted file mode 100644 index 79df0a577c..0000000000 --- a/basis/specialized-arrays/direct/functor/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Code generation for direct specialized arrays diff --git a/basis/specialized-arrays/direct/int/int.factor b/basis/specialized-arrays/direct/int/int.factor deleted file mode 100644 index c204e2706f..0000000000 --- a/basis/specialized-arrays/direct/int/int.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.int specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.int - -<< "int" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/long/long.factor b/basis/specialized-arrays/direct/long/long.factor deleted file mode 100644 index 33c52bb524..0000000000 --- a/basis/specialized-arrays/direct/long/long.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.long specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.long - -<< "long" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/longlong/longlong.factor b/basis/specialized-arrays/direct/longlong/longlong.factor deleted file mode 100644 index f132000227..0000000000 --- a/basis/specialized-arrays/direct/longlong/longlong.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.longlong specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.longlong - -<< "longlong" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/short/short.factor b/basis/specialized-arrays/direct/short/short.factor deleted file mode 100644 index f837bebb84..0000000000 --- a/basis/specialized-arrays/direct/short/short.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.short specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.short - -<< "short" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/uchar/uchar.factor b/basis/specialized-arrays/direct/uchar/uchar.factor deleted file mode 100644 index 34409798ad..0000000000 --- a/basis/specialized-arrays/direct/uchar/uchar.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.uchar specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.uchar - -<< "uchar" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/uint/uint.factor b/basis/specialized-arrays/direct/uint/uint.factor deleted file mode 100644 index 22f7ba333f..0000000000 --- a/basis/specialized-arrays/direct/uint/uint.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.uint specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.uint - -<< "uint" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/ulong/ulong.factor b/basis/specialized-arrays/direct/ulong/ulong.factor deleted file mode 100644 index 8a568ab631..0000000000 --- a/basis/specialized-arrays/direct/ulong/ulong.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.ulong specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.ulong - -<< "ulong" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/ulonglong/ulonglong.factor b/basis/specialized-arrays/direct/ulonglong/ulonglong.factor deleted file mode 100644 index 10fa178c41..0000000000 --- a/basis/specialized-arrays/direct/ulonglong/ulonglong.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.ulonglong specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.ulonglong - -<< "ulonglong" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/direct/ushort/ushort.factor b/basis/specialized-arrays/direct/ushort/ushort.factor deleted file mode 100644 index 6bd34c7eee..0000000000 --- a/basis/specialized-arrays/direct/ushort/ushort.factor +++ /dev/null @@ -1,4 +0,0 @@ -USING: specialized-arrays.ushort specialized-arrays.direct.functor ; -IN: specialized-arrays.direct.ushort - -<< "ushort" define-direct-array >> \ No newline at end of file diff --git a/basis/specialized-arrays/functor/functor.factor b/basis/specialized-arrays/functor/functor.factor old mode 100644 new mode 100755 index df1c938d03..45539b7624 --- a/basis/specialized-arrays/functor/functor.factor +++ b/basis/specialized-arrays/functor/functor.factor @@ -1,8 +1,8 @@ -! Copyright (C) 2008 Slava Pestov. +! Copyright (C) 2008, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: functors sequences sequences.private prettyprint.custom kernel words classes math math.vectors.specialization parser -alien.c-types byte-arrays accessors summary ; +alien.c-types byte-arrays accessors summary alien specialized-arrays ; IN: specialized-arrays.functor ERROR: bad-byte-array-length byte-array type ; @@ -22,9 +22,12 @@ A DEFINES-CLASS ${T}-array S DEFINES-CLASS ${T}-sequence DEFINES <${A}> (A) DEFINES (${A}) + DEFINES >A DEFINES >${A} byte-array>A DEFINES byte-array>${A} + A{ DEFINES ${A}{ +A@ DEFINES ${A}@ NTH [ T dup c-type-getter-boxer array-accessor ] SET-NTH [ T dup c-setter array-accessor ] @@ -34,18 +37,20 @@ WHERE MIXIN: S TUPLE: A -{ length array-capacity read-only } -{ underlying byte-array read-only } ; +{ underlying c-ptr read-only } +{ length array-capacity read-only } ; + +: ( alien len -- specialized-array ) A boa ; inline -: ( n -- specialized-array ) dup T A boa ; inline +: ( n -- specialized-array ) [ T ] keep ; inline -: (A) ( n -- specialized-array ) dup T (underlying) A boa ; inline +: (A) ( n -- specialized-array ) [ T (underlying) ] keep ; inline : byte-array>A ( byte-array -- specialized-array ) dup length T heap-size /mod 0 = [ drop T bad-byte-array-length ] unless - swap A boa ; inline + ; inline -M: A clone [ length>> ] [ underlying>> clone ] bi A boa ; inline +M: A clone [ underlying>> clone ] [ length>> ] bi ; inline M: A length length>> ; inline @@ -62,24 +67,20 @@ M: A new-sequence drop (A) ; inline M: A equal? over A instance? [ sequence= ] [ 2drop f ] if ; M: A resize - [ drop ] [ + [ [ T heap-size * ] [ underlying>> ] bi* resize-byte-array - ] 2bi - A boa ; inline + ] [ drop ] 2bi + ; inline M: A byte-length underlying>> length ; inline - M: A pprint-delims drop \ A{ \ } ; - M: A >pprint-sequence ; -M: A pprint* pprint-object ; - SYNTAX: A{ \ } [ >A ] parse-literal ; +SYNTAX: A@ scan-object scan-object parsed ; -INSTANCE: A sequence -INSTANCE: A S +INSTANCE: A specialized-array A T c-type-boxed-class specialize-vector-words @@ -87,7 +88,7 @@ T c-type \ A >>array-class \ >>array-constructor \ (A) >>(array)-constructor - \ S >>sequence-mixin-class + \ >>direct-array-constructor drop ;FUNCTOR diff --git a/basis/specialized-arrays/prettyprint/prettyprint.factor b/basis/specialized-arrays/prettyprint/prettyprint.factor new file mode 100755 index 0000000000..4d6416a1b4 --- /dev/null +++ b/basis/specialized-arrays/prettyprint/prettyprint.factor @@ -0,0 +1,14 @@ +! Copyright (C) 2009 Joe Groff. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors kernel prettyprint.backend +prettyprint.sections prettyprint.custom +specialized-arrays ; +IN: specialized-arrays.prettyprint + +: pprint-direct-array ( direct-array -- ) + dup direct-array-syntax + [ [ underlying>> ] [ length>> ] bi [ pprint* ] bi@ ] pprint-prefix ; + +M: specialized-array pprint* + [ pprint-object ] [ pprint-direct-array ] pprint-c-object ; + diff --git a/basis/specialized-arrays/specialized-arrays-docs.factor b/basis/specialized-arrays/specialized-arrays-docs.factor old mode 100644 new mode 100755 index 9015cccd8f..e0645456ec --- a/basis/specialized-arrays/specialized-arrays-docs.factor +++ b/basis/specialized-arrays/specialized-arrays-docs.factor @@ -8,8 +8,9 @@ $nl { $table { { $snippet "T-array" } { "The class of arrays with elements of type " { $snippet "T" } } } { { $snippet "" } { "Constructor for arrays with elements of type " { $snippet "T" } "; stack effect " { $snippet "( len -- array )" } } } - { { $snippet ">T-array" } { "Converts a sequence into a specialized array of type " { $snippet "T" } "; stack effect " { $snippet "( seq -- array )" } } } + { { $snippet "" } { "Constructor for arrays with elements of type " { $snippet "T" } "; stack effect " { $snippet "( alien len -- array )" } } } { { $snippet "byte-array>T-array" } { "Converts a byte array into a specialized array by interpreting the bytes in as machine-specific values. Code which uses this word is unportable" } } + { { $snippet ">T-array" } { "Converts a sequence into a specialized array of type " { $snippet "T" } "; stack effect " { $snippet "( seq -- array )" } } } { { $snippet "T-array{" } { "Literal syntax, consists of a series of values terminated by " { $snippet "}" } } } } "Each specialized array has a " { $slot "underlying" } " slot holding a " { $link byte-array } " with the raw data. This data can be passed to C functions." diff --git a/basis/specialized-arrays/specialized-arrays-tests.factor b/basis/specialized-arrays/specialized-arrays-tests.factor old mode 100644 new mode 100755 index 1e470b699a..21fc41781e --- a/basis/specialized-arrays/specialized-arrays-tests.factor +++ b/basis/specialized-arrays/specialized-arrays-tests.factor @@ -2,8 +2,7 @@ IN: specialized-arrays.tests USING: tools.test specialized-arrays sequences specialized-arrays.int specialized-arrays.bool specialized-arrays.ushort alien.c-types accessors kernel -specialized-arrays.direct.int specialized-arrays.char -specialized-arrays.uint arrays combinators ; +specialized-arrays.char specialized-arrays.uint arrays combinators ; [ t ] [ { 1 2 3 } >int-array int-array? ] unit-test @@ -27,4 +26,8 @@ specialized-arrays.uint arrays combinators ; [ { 3 1 3 3 7 } ] [ int-array{ 3 1 3 3 7 } malloc-byte-array 5 >array +] unit-test + +[ ushort-array{ 0 0 0 } ] [ + 3 ALIEN: 123 100 new-sequence ] unit-test \ No newline at end of file diff --git a/basis/specialized-arrays/specialized-arrays.factor b/basis/specialized-arrays/specialized-arrays.factor old mode 100644 new mode 100755 index 631d28ddd9..f3b75af958 --- a/basis/specialized-arrays/specialized-arrays.factor +++ b/basis/specialized-arrays/specialized-arrays.factor @@ -1,3 +1,13 @@ -! Copyright (C) 2008 Slava Pestov. +! Copyright (C) 2008, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. +USING: kernel sequences vocabs vocabs.loader ; IN: specialized-arrays + +MIXIN: specialized-array +INSTANCE: specialized-array sequence + +GENERIC: direct-array-syntax ( obj -- word ) + +"prettyprint" vocab [ + "specialized-arrays.prettyprint" require +] when diff --git a/basis/windows/dragdrop-listener/dragdrop-listener.factor b/basis/windows/dragdrop-listener/dragdrop-listener.factor old mode 100644 new mode 100755 index 91dfddbbff..bd6512341f --- a/basis/windows/dragdrop-listener/dragdrop-listener.factor +++ b/basis/windows/dragdrop-listener/dragdrop-listener.factor @@ -5,7 +5,7 @@ prettyprint namespaces ui.tools.listener ui.tools.workspace alien.c-types alien sequences math ; IN: windows.dragdrop-listener -<< "WCHAR" require-c-arrays >> +<< "WCHAR" require-c-array >> : filenames-from-hdrop ( hdrop -- filenames ) dup HEX: FFFFFFFF f 0 DragQueryFile ! get count of files diff --git a/basis/windows/errors/errors.factor b/basis/windows/errors/errors.factor old mode 100644 new mode 100755 index 5a1bf74d19..d2ee337726 --- a/basis/windows/errors/errors.factor +++ b/basis/windows/errors/errors.factor @@ -4,7 +4,7 @@ io.encodings.string io.encodings.utf16n alien.strings arrays literals ; IN: windows.errors -<< "TCHAR" require-c-arrays >> +<< "TCHAR" require-c-array >> CONSTANT: ERROR_SUCCESS 0 CONSTANT: ERROR_INVALID_FUNCTION 1 @@ -698,7 +698,7 @@ CONSTANT: FORMAT_MESSAGE_MAX_WIDTH_MASK HEX: 000000FF : make-lang-id ( lang1 lang2 -- n ) 10 shift bitor ; inline -<< "TCHAR" require-c-arrays >> +<< "TCHAR" require-c-array >> ERROR: error-message-failed id ; :: n>win32-error-string ( id -- string ) diff --git a/basis/windows/ole32/ole32.factor b/basis/windows/ole32/ole32.factor index 0942123504..c7ccf38e43 100755 --- a/basis/windows/ole32/ole32.factor +++ b/basis/windows/ole32/ole32.factor @@ -1,7 +1,7 @@ USING: alien alien.syntax alien.c-types alien.strings math kernel sequences windows.errors windows.types io accessors math.order namespaces make math.parser windows.kernel32 -combinators locals specialized-arrays.direct.uchar +combinators locals specialized-arrays.uchar literals splitting grouping classes.struct combinators.smart ; IN: windows.ole32 diff --git a/extra/half-floats/half-floats.factor b/extra/half-floats/half-floats.factor old mode 100644 new mode 100755 index 53f6c6cfb1..d54c7af55f --- a/extra/half-floats/half-floats.factor +++ b/extra/half-floats/half-floats.factor @@ -1,6 +1,6 @@ ! (c)2009 Joe Groff bsd license USING: accessors alien.c-types alien.syntax kernel math math.order -specialized-arrays.direct.functor specialized-arrays.functor ; +specialized-arrays.functor ; IN: half-floats : half>bits ( float -- bits ) @@ -37,6 +37,5 @@ C-STRUCT: half { "ushort" "(bits)" } ; drop "half" define-array -"half" define-direct-array >> diff --git a/extra/images/normalization/normalization.factor b/extra/images/normalization/normalization.factor index 0f4877055a..e318044b81 100755 --- a/extra/images/normalization/normalization.factor +++ b/extra/images/normalization/normalization.factor @@ -1,10 +1,9 @@ ! Copyright (C) 2009 Doug Coleman ! See http://factorcode.org/license.txt for BSD license. -USING: kernel accessors grouping sequences combinators -math specialized-arrays.direct.uint byte-arrays fry -specialized-arrays.direct.ushort specialized-arrays.uint -specialized-arrays.ushort specialized-arrays.float images -half-floats ; +USING: kernel accessors grouping sequences combinators math +byte-arrays fry specialized-arrays.direct.ushort +specialized-arrays.uint specialized-arrays.ushort +specialized-arrays.float images half-floats ; IN: images.normalization