diff --git a/basis/bootstrap/compiler/timing/tags.txt b/basis/bootstrap/compiler/timing/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/bootstrap/compiler/timing/tags.txt +++ b/basis/bootstrap/compiler/timing/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/calendar/calendar-docs.factor b/basis/calendar/calendar-docs.factor index 616c4d2c2c..6ce8b1d5fd 100644 --- a/basis/calendar/calendar-docs.factor +++ b/basis/calendar/calendar-docs.factor @@ -309,7 +309,7 @@ HELP: time- } ; HELP: convert-timezone -{ $values { "timestamp" timestamp } { "duration" duration } { "timestamp" timestamp } } +{ $values { "timestamp" timestamp } { "duration" duration } { "timestamp'" timestamp } } { $description "Converts the " { $snippet "timestamp" } "'s " { $snippet "gmt-offset" } " to the GMT offset represented by the " { $snippet "duration" } "." } { $examples { $example "USING: accessors calendar prettyprint ;" @@ -319,7 +319,7 @@ HELP: convert-timezone } ; HELP: >local-time -{ $values { "timestamp" timestamp } { "timestamp" timestamp } } +{ $values { "timestamp" timestamp } { "timestamp'" timestamp } } { $description "Converts the " { $snippet "timestamp" } " to the timezone of your computer." } { $examples { $example "USING: accessors calendar kernel prettyprint ;" @@ -329,7 +329,7 @@ HELP: >local-time } ; HELP: >gmt -{ $values { "timestamp" timestamp } { "timestamp" timestamp } } +{ $values { "timestamp" timestamp } { "timestamp'" timestamp } } { $description "Converts the " { $snippet "timestamp" } " to the GMT timezone." } { $examples { $example "USING: accessors calendar kernel prettyprint ;" diff --git a/basis/calendar/calendar.factor b/basis/calendar/calendar.factor index 3940af4856..1a64ceb646 100644 --- a/basis/calendar/calendar.factor +++ b/basis/calendar/calendar.factor @@ -316,15 +316,15 @@ M: duration <=> [ duration>years ] compare ; GENERIC: time- ( time1 time2 -- time3 ) -: convert-timezone ( timestamp duration -- timestamp ) +: convert-timezone ( timestamp duration -- timestamp' ) over gmt-offset>> over = [ drop ] [ [ over gmt-offset>> time- time+ ] keep >>gmt-offset ] if ; -: >local-time ( timestamp -- timestamp ) +: >local-time ( timestamp -- timestamp' ) gmt-offset-duration convert-timezone ; -: >gmt ( timestamp -- timestamp ) +: >gmt ( timestamp -- timestamp' ) instant convert-timezone ; M: timestamp <=> ( ts1 ts2 -- n ) diff --git a/basis/calendar/unix/platforms.txt b/basis/calendar/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/calendar/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/calendar/unix/tags.txt b/basis/calendar/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/calendar/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/calendar/windows/platforms.txt b/basis/calendar/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/calendar/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/calendar/windows/tags.txt b/basis/calendar/windows/tags.txt deleted file mode 100755 index 6bf68304bb..0000000000 --- a/basis/calendar/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/classes/struct/struct-tests.factor b/basis/classes/struct/struct-tests.factor index 2c0db93522..cb7e4ee2b0 100644 --- a/basis/classes/struct/struct-tests.factor +++ b/basis/classes/struct/struct-tests.factor @@ -1,11 +1,11 @@ ! (c)Joe Groff bsd license USING: accessors alien alien.c-types alien.data ascii -assocs byte-arrays classes.struct classes.tuple.private +assocs byte-arrays classes.struct classes.tuple.private classes.tuple combinators compiler.tree.debugger compiler.units destructors io.encodings.utf8 io.pathnames io.streams.string kernel libc literals math mirrors namespaces prettyprint prettyprint.config see sequences specialized-arrays system -tools.test parser lexer eval layouts ; +tools.test parser lexer eval layouts generic.single classes ; FROM: math => float ; QUALIFIED-WITH: alien.c-types c SPECIALIZED-ARRAY: char @@ -338,13 +338,28 @@ STRUCT: struct-that's-a-word { x int } ; [ "USE: classes.struct IN: classes.struct.tests TUPLE: not-a-struct ; S{ not-a-struct }" eval( -- value ) -] must-fail +] [ error>> no-method? ] must-fail-with ! Subclassing a struct class should not be allowed [ - "USE: classes.struct IN: classes.struct.tests STRUCT: a-struct { x int } ; TUPLE: not-a-struct < a-struct ;" + "USING: alien.c-types classes.struct ; IN: classes.struct.tests STRUCT: a-struct { x int } ; TUPLE: not-a-struct < a-struct ;" eval( -- ) -] must-fail +] [ error>> bad-superclass? ] must-fail-with + +! Changing a superclass into a struct should reset the subclass +TUPLE: will-become-struct ; + +TUPLE: a-subclass < will-become-struct ; + +[ f ] [ will-become-struct struct-class? ] unit-test + +[ will-become-struct ] [ a-subclass superclass ] unit-test + +[ ] [ "IN: classes.struct.tests USING: classes.struct alien.c-types ; STRUCT: will-become-struct { x int } ;" eval( -- ) ] unit-test + +[ t ] [ will-become-struct struct-class? ] unit-test + +[ tuple ] [ a-subclass superclass ] unit-test ! Remove c-type when struct class is forgotten [ ] [ diff --git a/basis/classes/struct/struct.factor b/basis/classes/struct/struct.factor index fae39cd229..a5711de609 100644 --- a/basis/classes/struct/struct.factor +++ b/basis/classes/struct/struct.factor @@ -32,8 +32,6 @@ TUPLE: struct-bit-slot-spec < struct-slot-spec PREDICATE: struct-class < tuple-class superclass \ struct eq? ; -M: struct-class valid-superclass? drop f ; - SLOT: fields : struct-slots ( struct-class -- slots ) @@ -273,7 +271,7 @@ M: struct binary-zero? >c-ptr [ 0 = ] all? ; [ type>> c-type drop ] each ; : redefine-struct-tuple-class ( class -- ) - [ dup class? [ forget-class ] [ drop ] if ] [ struct f define-tuple-class ] bi ; + [ struct f define-tuple-class ] [ make-final ] bi ; :: (define-struct-class) ( class slots offsets-quot -- ) slots empty? [ struct-must-have-slots ] when diff --git a/basis/cocoa/application/platforms.txt b/basis/cocoa/application/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/application/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/application/tags.txt b/basis/cocoa/application/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/application/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/callbacks/callbacks.factor b/basis/cocoa/callbacks/callbacks.factor index e1ec43f1dc..87b5f628a9 100644 --- a/basis/cocoa/callbacks/callbacks.factor +++ b/basis/cocoa/callbacks/callbacks.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005, 2006 Kevin Reid. ! See http://factorcode.org/license.txt for BSD license. -USING: assocs kernel namespaces cocoa cocoa.classes -cocoa.subclassing debugger ; +USING: alien.c-types assocs kernel namespaces cocoa +cocoa.classes cocoa.runtime cocoa.subclassing debugger ; IN: cocoa.callbacks SYMBOL: callbacks diff --git a/basis/cocoa/callbacks/platforms.txt b/basis/cocoa/callbacks/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/callbacks/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/callbacks/tags.txt b/basis/cocoa/callbacks/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/callbacks/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/dialogs/platforms.txt b/basis/cocoa/dialogs/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/dialogs/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/dialogs/tags.txt b/basis/cocoa/dialogs/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/dialogs/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/enumeration/platforms.txt b/basis/cocoa/enumeration/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/enumeration/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/enumeration/tags.txt b/basis/cocoa/enumeration/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/enumeration/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/messages/platforms.txt b/basis/cocoa/messages/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/messages/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/messages/tags.txt b/basis/cocoa/messages/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/messages/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/nibs/platforms.txt b/basis/cocoa/nibs/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/nibs/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/nibs/tags.txt b/basis/cocoa/nibs/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/nibs/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/pasteboard/platforms.txt b/basis/cocoa/pasteboard/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/pasteboard/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/pasteboard/tags.txt b/basis/cocoa/pasteboard/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/pasteboard/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/platforms.txt b/basis/cocoa/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/plists/platforms.txt b/basis/cocoa/plists/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/plists/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/plists/tags.txt b/basis/cocoa/plists/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/plists/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/runtime/platforms.txt b/basis/cocoa/runtime/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/runtime/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/runtime/tags.txt b/basis/cocoa/runtime/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/runtime/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/subclassing/platforms.txt b/basis/cocoa/subclassing/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/subclassing/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/subclassing/tags.txt b/basis/cocoa/subclassing/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/subclassing/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/tags.txt b/basis/cocoa/tags.txt index 86dd9eeb91..40fc52b29b 100644 --- a/basis/cocoa/tags.txt +++ b/basis/cocoa/tags.txt @@ -1,3 +1,2 @@ -unportable bindings ffi diff --git a/basis/cocoa/types/platforms.txt b/basis/cocoa/types/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/types/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/types/tags.txt b/basis/cocoa/types/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/types/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/views/platforms.txt b/basis/cocoa/views/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/views/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/views/tags.txt b/basis/cocoa/views/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/views/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cocoa/windows/platforms.txt b/basis/cocoa/windows/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/cocoa/windows/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/cocoa/windows/tags.txt b/basis/cocoa/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cocoa/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/compiler/crossref/crossref-tests.factor b/basis/compiler/crossref/crossref-tests.factor new file mode 100644 index 0000000000..9cd475b2de --- /dev/null +++ b/basis/compiler/crossref/crossref-tests.factor @@ -0,0 +1,9 @@ +USING: compiler.crossref fry kernel sequences tools.test vocabs words ; +IN: compiler.crossref.tests + +! Dependencies of all words should always be satisfied unless we're +! in the middle of recompiling something +[ { } ] [ + all-words dup [ subwords ] map concat append + H{ } clone '[ _ dependencies-satisfied? not ] filter +] unit-test diff --git a/basis/compiler/tests/redefine22.factor b/basis/compiler/tests/redefine22.factor new file mode 100644 index 0000000000..5837d68c73 --- /dev/null +++ b/basis/compiler/tests/redefine22.factor @@ -0,0 +1,11 @@ +IN: compiler.tests.redefine22 +USING: kernel sequences compiler.units vocabs tools.test definitions ; + +TUPLE: ttt ; +INSTANCE: ttt sequence +M: ttt new-sequence 2drop ttt new ; + +: www-1 ( a -- b ) T{ ttt } new-sequence ; + +! This used to break with a compiler error in the above word +[ ] [ [ \ ttt forget ] with-compilation-unit ] unit-test diff --git a/basis/compiler/tests/redefine23.factor b/basis/compiler/tests/redefine23.factor new file mode 100644 index 0000000000..e6061937b6 --- /dev/null +++ b/basis/compiler/tests/redefine23.factor @@ -0,0 +1,13 @@ +IN: compiler.tests.redefine23 +USING: classes.struct specialized-arrays alien.c-types sequences +compiler.units vocabs tools.test ; + +STRUCT: my-struct { x int } ; +SPECIALIZED-ARRAY: my-struct +: my-word ( a -- b ) iota [ my-struct ] my-struct-array{ } map-as ; + +[ ] [ + [ + "specialized-arrays.instances.compiler.tests.redefine23" forget-vocab + ] with-compilation-unit +] unit-test diff --git a/basis/compiler/tree/cleanup/cleanup.factor b/basis/compiler/tree/cleanup/cleanup.factor index b19c99c360..b69f053898 100644 --- a/basis/compiler/tree/cleanup/cleanup.factor +++ b/basis/compiler/tree/cleanup/cleanup.factor @@ -51,11 +51,16 @@ GENERIC: cleanup* ( node -- node/nodes ) [ in-d>> #drop ] bi prefix ; -: record-predicate-folding ( #call -- ) - [ node-input-infos first class>> ] +: >predicate-folding< ( #call -- value-info class result ) + [ node-input-infos first ] [ word>> "predicating" word-prop ] - [ node-output-infos first literal>> ] tri - [ depends-on-class<= ] [ depends-on-classes-disjoint ] if ; + [ node-output-infos first literal>> ] tri ; + +: record-predicate-folding ( #call -- ) + >predicate-folding< pick literal?>> + [ [ literal>> ] 2dip depends-on-instance-predicate ] + [ [ class>> ] 2dip depends-on-class-predicate ] + if ; : record-folding ( #call -- ) dup word>> predicate? diff --git a/basis/compiler/tree/propagation/info/info.factor b/basis/compiler/tree/propagation/info/info.factor index 28ffb96f8f..7f5b9f6fcd 100644 --- a/basis/compiler/tree/propagation/info/info.factor +++ b/basis/compiler/tree/propagation/info/info.factor @@ -1,10 +1,11 @@ -! Copyright (C) 2008, 2009 Slava Pestov. +! Copyright (C) 2008, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: assocs classes classes.algebra classes.tuple -classes.tuple.private kernel accessors math math.intervals namespaces -sequences sequences.private words combinators memoize -combinators.short-circuit byte-arrays strings arrays layouts -cpu.architecture compiler.tree.propagation.copy ; +classes.tuple.private classes.singleton kernel accessors math +math.intervals namespaces sequences sequences.private words +combinators memoize combinators.short-circuit byte-arrays +strings arrays layouts cpu.architecture +compiler.tree.propagation.copy ; IN: compiler.tree.propagation.info : false-class? ( class -- ? ) \ f class<= ; @@ -65,9 +66,17 @@ DEFER: UNION: fixed-length array byte-array string ; +: literal-class ( obj -- class ) + #! Handle forgotten tuples and singleton classes properly + dup singleton-class? [ + class dup class? [ + drop tuple + ] unless + ] unless ; + : init-literal-info ( info -- info ) empty-interval >>interval - dup literal>> class >>class + dup literal>> literal-class >>class dup literal>> { { [ dup real? ] [ [a,a] >>interval ] } { [ dup tuple? ] [ tuple-slot-infos >>slots ] } diff --git a/basis/compiler/tree/propagation/propagation-tests.factor b/basis/compiler/tree/propagation/propagation-tests.factor index e2bfe58788..444a424766 100644 --- a/basis/compiler/tree/propagation/propagation-tests.factor +++ b/basis/compiler/tree/propagation/propagation-tests.factor @@ -648,7 +648,7 @@ M: array iterate first t ; inline ] final-info drop ] unit-test -[ V{ word } ] [ +[ V{ t } ] [ [ { hashtable } declare hashtable instance? ] final-classes ] unit-test @@ -660,7 +660,7 @@ M: array iterate first t ; inline [ { assoc } declare hashtable instance? ] final-classes ] unit-test -[ V{ word } ] [ +[ V{ t } ] [ [ { string } declare string? ] final-classes ] unit-test @@ -774,7 +774,7 @@ MIXIN: empty-mixin [ { fixnum } declare log2 ] final-classes ] unit-test -[ V{ word } ] [ +[ V{ t } ] [ [ { fixnum } declare log2 0 >= ] final-classes ] unit-test diff --git a/basis/compiler/tree/propagation/simple/simple.factor b/basis/compiler/tree/propagation/simple/simple.factor index ccfd6ffabd..ed417ef9d7 100644 --- a/basis/compiler/tree/propagation/simple/simple.factor +++ b/basis/compiler/tree/propagation/simple/simple.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2008, 2009 Slava Pestov. +! Copyright (C) 2008, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: fry accessors kernel sequences sequences.private assocs words namespaces classes.algebra combinators @@ -93,11 +93,8 @@ M: #declare propagate-before recover ; : predicate-output-infos/class ( info class -- info ) - [ class>> ] dip { - { [ 2dup class<= ] [ t ] } - { [ 2dup classes-intersect? not ] [ f ] } - [ object-info ] - } cond 2nip ; + [ class>> ] dip compare-classes + dup +incomparable+ eq? [ drop object-info ] [ ] if ; : predicate-output-infos ( info class -- info ) over literal?>> diff --git a/basis/compression/lzw/lzw-docs.factor b/basis/compression/lzw/lzw-docs.factor index 28dc36902b..55c54bc9f7 100644 --- a/basis/compression/lzw/lzw-docs.factor +++ b/basis/compression/lzw/lzw-docs.factor @@ -20,7 +20,6 @@ HELP: tiff-lzw-uncompress HELP: lzw-read { $values - { "lzw" lzw } { "lzw" lzw } { "n" integer } } { $description "Read the next LZW code." } ; @@ -48,7 +47,6 @@ HELP: code-space-full? HELP: reset-lzw-uncompress { $values { "lzw" lzw } - { "lzw" lzw } } { $description "Reset the LZW uncompressor state (either at initialization time or immediately after receiving a Clear Code). " } ; diff --git a/basis/concurrency/mailboxes/mailboxes-tests.factor b/basis/concurrency/mailboxes/mailboxes-tests.factor index 56d579d6c7..3435a01455 100644 --- a/basis/concurrency/mailboxes/mailboxes-tests.factor +++ b/basis/concurrency/mailboxes/mailboxes-tests.factor @@ -42,40 +42,6 @@ IN: concurrency.mailboxes.tests mailbox-get ] unit-test - "m" set - -1 "c" set -1 "d" set - -[ - "c" get await - [ "m" get mailbox-get drop ] - [ drop "d" get count-down ] recover -] "Mailbox close test" spawn drop - -[ ] [ "c" get count-down ] unit-test -[ ] [ "m" get dispose ] unit-test -[ ] [ "d" get 5 seconds await-timeout ] unit-test - -[ ] [ "m" get dispose ] unit-test - - "m" set - -1 "c" set -1 "d" set - -[ - "c" get await - "m" get wait-for-close - "d" get count-down -] "Mailbox close test" spawn drop - -[ ] [ "c" get count-down ] unit-test -[ ] [ "m" get dispose ] unit-test -[ ] [ "d" get 5 seconds await-timeout ] unit-test - -[ ] [ "m" get dispose ] unit-test - [ { "foo" "bar" } ] [ "foo" over mailbox-put @@ -86,4 +52,3 @@ IN: concurrency.mailboxes.tests [ 1 seconds mailbox-get-timeout ] [ wait-timeout? ] must-fail-with - diff --git a/basis/concurrency/mailboxes/mailboxes.factor b/basis/concurrency/mailboxes/mailboxes.factor index 7834a2a3e1..06da3b34a6 100644 --- a/basis/concurrency/mailboxes/mailboxes.factor +++ b/basis/concurrency/mailboxes/mailboxes.factor @@ -1,17 +1,17 @@ -! Copyright (C) 2005, 2008 Chris Double, Slava Pestov. +! Copyright (C) 2005, 2010 Chris Double, Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: dlists deques threads sequences continuations -destructors namespaces math quotations words kernel -arrays assocs init system concurrency.conditions accessors -debugger debugger.threads locals fry ; +USING: dlists deques threads sequences continuations namespaces +math quotations words kernel arrays assocs init system +concurrency.conditions accessors debugger debugger.threads +locals fry ; IN: concurrency.mailboxes -TUPLE: mailbox < disposable threads data ; - -M: mailbox dispose* threads>> notify-all ; +TUPLE: mailbox threads data ; : ( -- mailbox ) - mailbox new-disposable >>threads >>data ; + mailbox new + >>threads + >>data ; : mailbox-empty? ( mailbox -- bool ) data>> deque-empty? ; @@ -24,14 +24,12 @@ M: mailbox dispose* threads>> notify-all ; [ threads>> ] dip "mailbox" wait ; :: block-unless-pred ( mailbox timeout pred: ( message -- ? ) -- ) - mailbox check-disposed mailbox data>> pred dlist-any? [ mailbox timeout wait-for-mailbox mailbox timeout pred block-unless-pred ] unless ; inline recursive : block-if-empty ( mailbox timeout -- mailbox ) - over check-disposed over mailbox-empty? [ 2dup wait-for-mailbox block-if-empty ] [ diff --git a/basis/concurrency/promises/promises.factor b/basis/concurrency/promises/promises.factor index 2ff338c4e3..3381bcc00b 100644 --- a/basis/concurrency/promises/promises.factor +++ b/basis/concurrency/promises/promises.factor @@ -12,6 +12,7 @@ TUPLE: promise mailbox ; mailbox>> mailbox-empty? not ; ERROR: promise-already-fulfilled promise ; + : fulfill ( value promise -- ) dup promise-fulfilled? [ promise-already-fulfilled diff --git a/basis/core-foundation/arrays/platforms.txt b/basis/core-foundation/arrays/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/arrays/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/arrays/tags.txt b/basis/core-foundation/arrays/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-foundation/arrays/tags.txt +++ b/basis/core-foundation/arrays/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-foundation/attributed-strings/platforms.txt b/basis/core-foundation/attributed-strings/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/attributed-strings/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/attributed-strings/tags.txt b/basis/core-foundation/attributed-strings/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-foundation/attributed-strings/tags.txt +++ b/basis/core-foundation/attributed-strings/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-foundation/bundles/platforms.txt b/basis/core-foundation/bundles/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/bundles/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/bundles/tags.txt b/basis/core-foundation/bundles/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-foundation/bundles/tags.txt +++ b/basis/core-foundation/bundles/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-foundation/data/platforms.txt b/basis/core-foundation/data/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/data/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/data/tags.txt b/basis/core-foundation/data/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-foundation/data/tags.txt +++ b/basis/core-foundation/data/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-foundation/dictionaries/platforms.txt b/basis/core-foundation/dictionaries/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/dictionaries/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/dictionaries/tags.txt b/basis/core-foundation/dictionaries/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-foundation/dictionaries/tags.txt +++ b/basis/core-foundation/dictionaries/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-foundation/file-descriptors/platforms.txt b/basis/core-foundation/file-descriptors/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/file-descriptors/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/file-descriptors/tags.txt b/basis/core-foundation/file-descriptors/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-foundation/file-descriptors/tags.txt +++ b/basis/core-foundation/file-descriptors/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-foundation/fsevents/platforms.txt b/basis/core-foundation/fsevents/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/fsevents/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/fsevents/tags.txt b/basis/core-foundation/fsevents/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/core-foundation/fsevents/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/core-foundation/numbers/platforms.txt b/basis/core-foundation/numbers/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/numbers/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/numbers/tags.txt b/basis/core-foundation/numbers/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/core-foundation/numbers/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/core-foundation/platforms.txt b/basis/core-foundation/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/run-loop/platforms.txt b/basis/core-foundation/run-loop/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/run-loop/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/run-loop/tags.txt b/basis/core-foundation/run-loop/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/core-foundation/run-loop/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/core-foundation/strings/platforms.txt b/basis/core-foundation/strings/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/strings/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/strings/tags.txt b/basis/core-foundation/strings/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-foundation/strings/tags.txt +++ b/basis/core-foundation/strings/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-foundation/tags.txt b/basis/core-foundation/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-foundation/tags.txt +++ b/basis/core-foundation/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-foundation/timers/platforms.txt b/basis/core-foundation/timers/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/timers/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/timers/tags.txt b/basis/core-foundation/timers/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-foundation/timers/tags.txt +++ b/basis/core-foundation/timers/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-foundation/urls/platforms.txt b/basis/core-foundation/urls/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/urls/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/urls/tags.txt b/basis/core-foundation/urls/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-foundation/urls/tags.txt +++ b/basis/core-foundation/urls/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-foundation/utilities/platforms.txt b/basis/core-foundation/utilities/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-foundation/utilities/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-foundation/utilities/tags.txt b/basis/core-foundation/utilities/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/core-foundation/utilities/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/core-graphics/platforms.txt b/basis/core-graphics/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-graphics/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-graphics/tags.txt b/basis/core-graphics/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-graphics/tags.txt +++ b/basis/core-graphics/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-text/fonts/platforms.txt b/basis/core-text/fonts/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-text/fonts/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-text/fonts/tags.txt b/basis/core-text/fonts/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-text/fonts/tags.txt +++ b/basis/core-text/fonts/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/core-text/platforms.txt b/basis/core-text/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/core-text/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/core-text/tags.txt b/basis/core-text/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/core-text/tags.txt +++ b/basis/core-text/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/cpu/ppc/assembler/backend/tags.txt b/basis/cpu/ppc/assembler/backend/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cpu/ppc/assembler/backend/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cpu/ppc/linux/tags.txt b/basis/cpu/ppc/linux/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/cpu/ppc/linux/tags.txt +++ b/basis/cpu/ppc/linux/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/cpu/ppc/macosx/tags.txt b/basis/cpu/ppc/macosx/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/cpu/ppc/macosx/tags.txt +++ b/basis/cpu/ppc/macosx/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/cpu/ppc/tags.txt b/basis/cpu/ppc/tags.txt index 8e66660f70..6c8f59c757 100644 --- a/basis/cpu/ppc/tags.txt +++ b/basis/cpu/ppc/tags.txt @@ -1,2 +1,2 @@ -unportable compiler +untested diff --git a/basis/cpu/x86/32/tags.txt b/basis/cpu/x86/32/tags.txt index 8e66660f70..50dfc5156e 100644 --- a/basis/cpu/x86/32/tags.txt +++ b/basis/cpu/x86/32/tags.txt @@ -1,2 +1,2 @@ -unportable +untested compiler diff --git a/basis/cpu/x86/64/tags.txt b/basis/cpu/x86/64/tags.txt index 8e66660f70..50dfc5156e 100644 --- a/basis/cpu/x86/64/tags.txt +++ b/basis/cpu/x86/64/tags.txt @@ -1,2 +1,2 @@ -unportable +untested compiler diff --git a/basis/cpu/x86/64/unix/tags.txt b/basis/cpu/x86/64/unix/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/cpu/x86/64/unix/tags.txt +++ b/basis/cpu/x86/64/unix/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/cpu/x86/64/winnt/tags.txt b/basis/cpu/x86/64/winnt/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/cpu/x86/64/winnt/tags.txt +++ b/basis/cpu/x86/64/winnt/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/cpu/x86/assembler/syntax/tags.txt b/basis/cpu/x86/assembler/syntax/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/cpu/x86/assembler/syntax/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/cpu/x86/features/tags.txt b/basis/cpu/x86/features/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/cpu/x86/features/tags.txt +++ b/basis/cpu/x86/features/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/cpu/x86/tags.txt b/basis/cpu/x86/tags.txt index 8e66660f70..50dfc5156e 100644 --- a/basis/cpu/x86/tags.txt +++ b/basis/cpu/x86/tags.txt @@ -1,2 +1,2 @@ -unportable +untested compiler diff --git a/basis/db/tuples/tuples-docs.factor b/basis/db/tuples/tuples-docs.factor index 01d65484f3..3f77f9abaf 100644 --- a/basis/db/tuples/tuples-docs.factor +++ b/basis/db/tuples/tuples-docs.factor @@ -51,7 +51,7 @@ HELP: HELP: { $values { "tuple" tuple } { "class" class } - { "tuple" tuple } } + { "statement" tuple } } { $description "A database-specific hook for generating the SQL for a select statement." } ; HELP: @@ -267,7 +267,7 @@ T{ book { $list "Make a new tuple to represent your data" { "Map the Factor types to the database types with " { $link define-persistent } } - { "Make a custom database combinator (see" { $link "db-custom-database-combinators" } ") to open your database and run a " { $link quotation } } + { "Make a custom database combinator (see " { $link "db-custom-database-combinators" } ") to open your database and run a " { $link quotation } } { "Create a table with " { $link create-table } ", " { $link ensure-table } ", or " { $link recreate-table } } { "Start making and storing objects with " { $link insert-tuple } ", " { $link update-tuple } ", " { $link delete-tuples } ", and " { $link select-tuples } } } ; diff --git a/basis/db/tuples/tuples.factor b/basis/db/tuples/tuples.factor index 388c9ba47e..d193b5921e 100644 --- a/basis/db/tuples/tuples.factor +++ b/basis/db/tuples/tuples.factor @@ -14,7 +14,7 @@ HOOK: db-connection ( class -- object ) HOOK: db-connection ( class -- object ) HOOK: db-connection ( class -- object ) HOOK: db-connection ( tuple class -- object ) -HOOK: db-connection ( tuple class -- tuple ) +HOOK: db-connection ( tuple class -- statement ) HOOK: db-connection ( query -- statement ) HOOK: query>statement db-connection ( query -- statement ) HOOK: insert-tuple-set-key db-connection ( tuple statement -- ) diff --git a/basis/debugger/debugger.factor b/basis/debugger/debugger.factor index 815304b21f..b6497c52a9 100644 --- a/basis/debugger/debugger.factor +++ b/basis/debugger/debugger.factor @@ -194,7 +194,7 @@ M: not-a-tuple summary drop "Not a tuple" ; M: bad-superclass summary - drop "Tuple classes can only inherit from other tuple classes" ; + drop "Tuple classes can only inherit from non-final tuple classes" ; M: no-initial-value summary drop "Initial value must be provided for slots specialized to this class" ; diff --git a/basis/debugger/windows/platforms.txt b/basis/debugger/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/debugger/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/debugger/windows/tags.txt b/basis/debugger/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/debugger/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/dlists/dlists-docs.factor b/basis/dlists/dlists-docs.factor index 716c20d6f6..5036441f60 100644 --- a/basis/dlists/dlists-docs.factor +++ b/basis/dlists/dlists-docs.factor @@ -48,7 +48,7 @@ HELP: dlist-find } ; HELP: dlist-filter -{ $values { "dlist" { $link dlist } } { "quot" quotation } { "dlist" { $link dlist } } } +{ $values { "dlist" { $link dlist } } { "quot" quotation } { "dlist'" { $link dlist } } } { $description "Applies the quotation to each element of the " { $link dlist } " in turn, removing the corresponding nodes if the quotation returns " { $link f } "." } { $side-effects { "dlist" } } ; diff --git a/basis/dlists/dlists.factor b/basis/dlists/dlists.factor index 668ba23054..317ed81e3e 100644 --- a/basis/dlists/dlists.factor +++ b/basis/dlists/dlists.factor @@ -157,7 +157,7 @@ M: dlist clear-deque ( dlist -- ) : 1dlist ( obj -- dlist ) [ push-front ] keep ; -: dlist-filter ( dlist quot -- dlist ) +: dlist-filter ( dlist quot -- dlist' ) over [ '[ dup obj>> @ [ drop ] [ _ delete-node ] if ] dlist-each-node ] keep ; inline M: dlist clone diff --git a/basis/editors/editpadlite/tags.txt b/basis/editors/editpadlite/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/editpadlite/tags.txt +++ b/basis/editors/editpadlite/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/editpadpro/tags.txt b/basis/editors/editpadpro/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/editpadpro/tags.txt +++ b/basis/editors/editpadpro/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/editplus/tags.txt b/basis/editors/editplus/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/editplus/tags.txt +++ b/basis/editors/editplus/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/emacs/tags.txt b/basis/editors/emacs/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/emacs/tags.txt +++ b/basis/editors/emacs/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/emacs/windows/tags.txt b/basis/editors/emacs/windows/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/emacs/windows/tags.txt +++ b/basis/editors/emacs/windows/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/emeditor/tags.txt b/basis/editors/emeditor/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/emeditor/tags.txt +++ b/basis/editors/emeditor/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/etexteditor/tags.txt b/basis/editors/etexteditor/tags.txt index 6bf68304bb..5d77766703 100755 --- a/basis/editors/etexteditor/tags.txt +++ b/basis/editors/etexteditor/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/gedit/tags.txt b/basis/editors/gedit/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/gedit/tags.txt +++ b/basis/editors/gedit/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/gvim/tags.txt b/basis/editors/gvim/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/gvim/tags.txt +++ b/basis/editors/gvim/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/gvim/unix/tags.txt b/basis/editors/gvim/unix/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/gvim/unix/tags.txt +++ b/basis/editors/gvim/unix/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/gvim/windows/tags.txt b/basis/editors/gvim/windows/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/gvim/windows/tags.txt +++ b/basis/editors/gvim/windows/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/jedit/tags.txt b/basis/editors/jedit/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/jedit/tags.txt +++ b/basis/editors/jedit/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/macvim/tags.txt b/basis/editors/macvim/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/macvim/tags.txt +++ b/basis/editors/macvim/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/notepad/tags.txt b/basis/editors/notepad/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/notepad/tags.txt +++ b/basis/editors/notepad/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/notepad2/tags.txt b/basis/editors/notepad2/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/notepad2/tags.txt +++ b/basis/editors/notepad2/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/notepadpp/tags.txt b/basis/editors/notepadpp/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/notepadpp/tags.txt +++ b/basis/editors/notepadpp/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/scite/tags.txt b/basis/editors/scite/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/scite/tags.txt +++ b/basis/editors/scite/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/ted-notepad/tags.txt b/basis/editors/ted-notepad/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/ted-notepad/tags.txt +++ b/basis/editors/ted-notepad/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/textedit/tags.txt b/basis/editors/textedit/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/textedit/tags.txt +++ b/basis/editors/textedit/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/textmate/tags.txt b/basis/editors/textmate/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/textmate/tags.txt +++ b/basis/editors/textmate/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/textpad/tags.txt b/basis/editors/textpad/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/textpad/tags.txt +++ b/basis/editors/textpad/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/textwrangler/tags.txt b/basis/editors/textwrangler/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/textwrangler/tags.txt +++ b/basis/editors/textwrangler/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/ultraedit/tags.txt b/basis/editors/ultraedit/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/ultraedit/tags.txt +++ b/basis/editors/ultraedit/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/vim/generate-syntax/tags.txt b/basis/editors/vim/generate-syntax/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/vim/generate-syntax/tags.txt +++ b/basis/editors/vim/generate-syntax/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/vim/tags.txt b/basis/editors/vim/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/vim/tags.txt +++ b/basis/editors/vim/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/editors/wordpad/tags.txt b/basis/editors/wordpad/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/editors/wordpad/tags.txt +++ b/basis/editors/wordpad/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/environment/unix/macosx/platforms.txt b/basis/environment/unix/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/environment/unix/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/environment/unix/macosx/tags.txt b/basis/environment/unix/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/environment/unix/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/environment/unix/platforms.txt b/basis/environment/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/environment/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/environment/unix/tags.txt b/basis/environment/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/environment/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/environment/winnt/platforms.txt b/basis/environment/winnt/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/environment/winnt/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/environment/winnt/tags.txt b/basis/environment/winnt/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/environment/winnt/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/functors/backend/backend.factor b/basis/functors/backend/backend.factor index dd3d891f7b..331864417e 100644 --- a/basis/functors/backend/backend.factor +++ b/basis/functors/backend/backend.factor @@ -1,6 +1,6 @@ USING: accessors arrays assocs generic.standard kernel lexer locals.types namespaces parser quotations vocabs.parser -words ; +words classes.tuple ; IN: functors.backend DEFER: functor-words @@ -27,7 +27,11 @@ SYNTAX: FUNCTOR-SYNTAX: : define* ( word def -- ) over set-word define ; -: define-declared* ( word def effect -- ) pick set-word define-declared ; +: define-declared* ( word def effect -- ) + pick set-word define-declared ; -: define-simple-generic* ( word effect -- ) over set-word define-simple-generic ; +: define-simple-generic* ( word effect -- ) + over set-word define-simple-generic ; +: define-tuple-class* ( class superclass slots -- ) + pick set-word define-tuple-class ; diff --git a/basis/functors/functors-tests.factor b/basis/functors/functors-tests.factor index 544c2ed1e4..c756d1b83d 100644 --- a/basis/functors/functors-tests.factor +++ b/basis/functors/functors-tests.factor @@ -1,5 +1,5 @@ -USING: classes.struct functors tools.test math words kernel -multiline parser io.streams.string generic ; +USING: classes.struct classes.tuple functors tools.test math +words kernel multiline parser io.streams.string generic ; QUALIFIED-WITH: alien.c-types c IN: functors.tests @@ -36,7 +36,7 @@ WW DEFINES ${W}${W} WHERE -: WW ( a -- b ) \ W twice ; inline +: WW ( a -- b ) \ W twice ; ;FUNCTOR @@ -211,3 +211,44 @@ STRUCT: T-class } ] [ a-struct struct-slots ] unit-test +<< + +FUNCTOR: define-an-inline-word ( W -- ) + +W DEFINES ${W} +W-W DEFINES ${W}-${W} + +WHERE + +: W ( -- ) ; inline +: W-W ( -- ) W W ; + +;FUNCTOR + +"an-inline-word" define-an-inline-word + +>> + +[ t ] [ \ an-inline-word inline? ] unit-test +[ f ] [ \ an-inline-word-an-inline-word inline? ] unit-test + +<< + +FUNCTOR: define-a-final-class ( T W -- ) + +T DEFINES-CLASS ${T} +W DEFINES ${W} + +WHERE + +TUPLE: T ; final + +: W ( -- ) ; + +;FUNCTOR + +"a-final-tuple" "a-word" define-a-final-class + +>> + +[ t ] [ a-final-tuple final-class? ] unit-test diff --git a/basis/functors/functors.factor b/basis/functors/functors.factor index ac2e52f68e..1895c6e0f4 100644 --- a/basis/functors/functors.factor +++ b/basis/functors/functors.factor @@ -61,7 +61,10 @@ FUNCTOR-SYNTAX: TUPLE: make suffix! ] } case - \ define-tuple-class suffix! ; + \ define-tuple-class* suffix! ; + +FUNCTOR-SYNTAX: final + [ word make-final ] append! ; FUNCTOR-SYNTAX: SINGLETON: scan-param suffix! diff --git a/basis/game/input/dinput/platforms.txt b/basis/game/input/dinput/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/game/input/dinput/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/game/input/dinput/tags.txt b/basis/game/input/dinput/tags.txt index 82506ff250..84d4140a70 100755 --- a/basis/game/input/dinput/tags.txt +++ b/basis/game/input/dinput/tags.txt @@ -1,2 +1 @@ -unportable games diff --git a/basis/game/input/input.factor b/basis/game/input/input.factor index 923d5d6107..8a269cd51a 100644 --- a/basis/game/input/input.factor +++ b/basis/game/input/input.factor @@ -93,6 +93,6 @@ M: mouse-state clone { { [ os windows? ] [ "game.input.xinput" require ] } { [ os macosx? ] [ "game.input.iokit" require ] } - { [ os linux? ] [ "game.input.x11" require ] } - { [ t ] [ ] } + { [ os linux? ] [ "game.input.linux" require ] } + [ ] } cond diff --git a/basis/game/input/iokit/platforms.txt b/basis/game/input/iokit/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/game/input/iokit/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/game/input/iokit/tags.txt b/basis/game/input/iokit/tags.txt index 82506ff250..84d4140a70 100755 --- a/basis/game/input/iokit/tags.txt +++ b/basis/game/input/iokit/tags.txt @@ -1,2 +1 @@ -unportable games diff --git a/basis/game/input/linux/authors.txt b/basis/game/input/linux/authors.txt new file mode 100644 index 0000000000..67cf648cf5 --- /dev/null +++ b/basis/game/input/linux/authors.txt @@ -0,0 +1 @@ +Erik Charlebois \ No newline at end of file diff --git a/basis/game/input/x11/x11.factor b/basis/game/input/linux/linux.factor similarity index 50% rename from basis/game/input/x11/x11.factor rename to basis/game/input/linux/linux.factor index c54fc4be5d..b307835d70 100644 --- a/basis/game/input/x11/x11.factor +++ b/basis/game/input/linux/linux.factor @@ -1,13 +1,42 @@ -USING: alien.c-types alien.syntax arrays bit-arrays game.input -kernel namespaces sequences x11 x11.xlib ; -IN: game.input.x11 +! Copyright (C) 2010 Erik Charlebois. +! See http://factorcode.org/license.txt for BSD license. +USING: alien.c-types alien.syntax arrays kernel game.input namespaces +classes bit-arrays sequences vectors x11 x11.xlib ; +IN: game.input.linux -SINGLETON: x11-game-input-backend +SINGLETON: linux-game-input-backend -x11-game-input-backend game-input-backend set-global +linux-game-input-backend game-input-backend set-global -LIBRARY: xlib -FUNCTION: int XQueryKeymap ( Display* display, char[32] keys_return ) ; +M: linux-game-input-backend (open-game-input) + ; + +M: linux-game-input-backend (close-game-input) + ; + +M: linux-game-input-backend (reset-game-input) + ; + +M: linux-game-input-backend get-controllers + { } ; + +M: linux-game-input-backend product-string + drop "" ; + +M: linux-game-input-backend product-id + drop f ; + +M: linux-game-input-backend instance-id + drop f ; + +M: linux-game-input-backend read-controller + drop controller-state new ; + +M: linux-game-input-backend calibrate-controller + drop ; + +M: linux-game-input-backend vibrate-controller + 3drop ; CONSTANT: x>hid-bit-order { 0 0 0 0 0 0 0 0 @@ -43,25 +72,18 @@ CONSTANT: x>hid-bit-order { 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 } - -M: x11-game-input-backend (open-game-input) ; ! assume X was already started for now -M: x11-game-input-backend (close-game-input) ; ! let someone else stop X -M: x11-game-input-backend (reset-game-input) ; ! nothing to reset at this point - -! No controller support yet--if this works, I shouldn't even need to define the other methods -M: x11-game-input-backend get-controllers f ; - - + : x-bits>hid-bits ( bit-array -- bit-array ) 256 iota [ 2array ] 2map [ first ] filter [ second ] map x>hid-bit-order [ nth ] with map ?{ } swap [ t swap pick set-nth ] each ; -M: x11-game-input-backend read-keyboard +M: linux-game-input-backend read-keyboard dpy get 256 [ XQueryKeymap drop ] keep x-bits>hid-bits keyboard-state boa ; - -M: x11-game-input-backend read-mouse - 0 0 0 0 ?{ f f f } mouse-state boa ; - -M: x11-game-input-backend reset-mouse ; \ No newline at end of file + +M: linux-game-input-backend read-mouse + 0 0 0 0 2 mouse-state boa ; + +M: linux-game-input-backend reset-mouse + ; diff --git a/basis/game/input/linux/platforms.txt b/basis/game/input/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/game/input/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/game/input/linux/summary.txt b/basis/game/input/linux/summary.txt new file mode 100644 index 0000000000..5c88274722 --- /dev/null +++ b/basis/game/input/linux/summary.txt @@ -0,0 +1 @@ +Linux backend for game input. diff --git a/basis/game/input/linux/tags.txt b/basis/game/input/linux/tags.txt new file mode 100644 index 0000000000..84d4140a70 --- /dev/null +++ b/basis/game/input/linux/tags.txt @@ -0,0 +1 @@ +games diff --git a/basis/game/input/xinput/platforms.txt b/basis/game/input/xinput/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/game/input/xinput/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/game/input/xinput/tags.txt b/basis/game/input/xinput/tags.txt index 82506ff250..84d4140a70 100644 --- a/basis/game/input/xinput/tags.txt +++ b/basis/game/input/xinput/tags.txt @@ -1,2 +1 @@ -unportable games diff --git a/basis/help/lint/checks/checks.factor b/basis/help/lint/checks/checks.factor index 340f9b16d3..632cdb46e2 100644 --- a/basis/help/lint/checks/checks.factor +++ b/basis/help/lint/checks/checks.factor @@ -33,7 +33,7 @@ SYMBOL: vocab-articles : extract-values ( element -- seq ) \ $values swap elements dup empty? [ - first rest [ first ] map prune + first rest [ first ] map ] unless ; : effect-values ( word -- seq ) diff --git a/basis/help/markup/markup.factor b/basis/help/markup/markup.factor index 75e6538243..f951f30b2f 100644 --- a/basis/help/markup/markup.factor +++ b/basis/help/markup/markup.factor @@ -129,8 +129,8 @@ ALIAS: $slot $snippet "Examples" $heading print-element ; : $example ( element -- ) - 1 cut* swap "\n" join dup [ - input-style get format nl print-element + 1 cut* [ "\n" join ] bi@ over [ + [ print ] [ output-style get format ] bi* ] ($code) ; : $unchecked-example ( element -- ) diff --git a/basis/help/stylesheet/stylesheet.factor b/basis/help/stylesheet/stylesheet.factor index 8a119823cc..254b65e5ac 100644 --- a/basis/help/stylesheet/stylesheet.factor +++ b/basis/help/stylesheet/stylesheet.factor @@ -80,8 +80,11 @@ H{ { wrap-margin f } } code-style set-global -SYMBOL: input-style -H{ { font-style bold } } input-style set-global +SYMBOL: output-style +H{ + { font-style bold } + { foreground COLOR: DarkOrange4 } +} output-style set-global SYMBOL: url-style H{ diff --git a/basis/images/normalization/normalization-docs.factor b/basis/images/normalization/normalization-docs.factor index 8ed4b659ed..39e2fee769 100644 --- a/basis/images/normalization/normalization-docs.factor +++ b/basis/images/normalization/normalization-docs.factor @@ -6,14 +6,14 @@ IN: images.normalization HELP: normalize-image { $values { "image" image } - { "image" image } + { "image'" image } } { $description "Converts the image to RGBA with ubyte-components. If the image is upside-down, it will be flipped right side up such that the 1st byte in the bitmap slot's byte array corresponds to the first color component of the pixel in the upper-left corner of the image." } ; HELP: reorder-components { $values { "image" image } { "component-order" component-order } - { "image" image } + { "image'" image } } { $description "Convert the bitmap in " { $snippet "image" } " such that the pixel sample layout corresponds to " { $snippet "component-order" } ". If the destination layout cannot find a corresponding value from the source layout, the value " { $snippet "255" } " will be substituted for that byte." } { $warning "The image's " { $snippet "component-type" } " will be changed to " { $snippet "ubyte-components" } " if it is not already in that format." diff --git a/basis/images/normalization/normalization.factor b/basis/images/normalization/normalization.factor index 2bd7e6883f..6eaca01e15 100644 --- a/basis/images/normalization/normalization.factor +++ b/basis/images/normalization/normalization.factor @@ -55,7 +55,7 @@ M: ushort-components normalize-component-type* M: ubyte-components normalize-component-type* drop ; -: normalize-scan-line-order ( image -- image ) +: normalize-scan-line-order ( image -- image' ) dup upside-down?>> [ dup dim>> first 4 * '[ _ reverse concat @@ -71,14 +71,14 @@ M: ubyte-components normalize-component-type* PRIVATE> -: reorder-components ( image component-order -- image ) +: reorder-components ( image component-order -- image' ) [ dup component-type>> '[ _ normalize-component-type* ] change-bitmap dup component-order>> ] dip validate-request [ (reorder-components) ] keep >>component-order ; -: normalize-image ( image -- image ) +: normalize-image ( image -- image' ) [ >byte-array ] change-bitmap RGBA reorder-components normalize-scan-line-order ; diff --git a/basis/io/backend/unix/bsd/platforms.txt b/basis/io/backend/unix/bsd/platforms.txt new file mode 100644 index 0000000000..df796f15d4 --- /dev/null +++ b/basis/io/backend/unix/bsd/platforms.txt @@ -0,0 +1 @@ +bsd diff --git a/basis/io/backend/unix/bsd/tags.txt b/basis/io/backend/unix/bsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/unix/bsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/unix/freebsd/platforms.txt b/basis/io/backend/unix/freebsd/platforms.txt new file mode 100644 index 0000000000..edfe86017d --- /dev/null +++ b/basis/io/backend/unix/freebsd/platforms.txt @@ -0,0 +1 @@ +freebsd diff --git a/basis/io/backend/unix/freebsd/tags.txt b/basis/io/backend/unix/freebsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/unix/freebsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/unix/linux/platforms.txt b/basis/io/backend/unix/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/io/backend/unix/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/io/backend/unix/linux/tags.txt b/basis/io/backend/unix/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/unix/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/unix/macosx/platforms.txt b/basis/io/backend/unix/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/io/backend/unix/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/io/backend/unix/macosx/tags.txt b/basis/io/backend/unix/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/unix/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/unix/multiplexers/epoll/platforms.txt b/basis/io/backend/unix/multiplexers/epoll/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/io/backend/unix/multiplexers/epoll/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/io/backend/unix/multiplexers/epoll/tags.txt b/basis/io/backend/unix/multiplexers/epoll/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/unix/multiplexers/epoll/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/unix/multiplexers/kqueue/platforms.txt b/basis/io/backend/unix/multiplexers/kqueue/platforms.txt new file mode 100644 index 0000000000..df796f15d4 --- /dev/null +++ b/basis/io/backend/unix/multiplexers/kqueue/platforms.txt @@ -0,0 +1 @@ +bsd diff --git a/basis/io/backend/unix/multiplexers/kqueue/tags.txt b/basis/io/backend/unix/multiplexers/kqueue/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/unix/multiplexers/kqueue/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/unix/multiplexers/platforms.txt b/basis/io/backend/unix/multiplexers/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/backend/unix/multiplexers/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/backend/unix/multiplexers/run-loop/platforms.txt b/basis/io/backend/unix/multiplexers/run-loop/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/io/backend/unix/multiplexers/run-loop/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/io/backend/unix/multiplexers/run-loop/tags.txt b/basis/io/backend/unix/multiplexers/run-loop/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/unix/multiplexers/run-loop/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/unix/multiplexers/select/platforms.txt b/basis/io/backend/unix/multiplexers/select/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/backend/unix/multiplexers/select/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/backend/unix/multiplexers/select/select.factor b/basis/io/backend/unix/multiplexers/select/select.factor index f2d1a3a3b7..5a3dab4dcc 100644 --- a/basis/io/backend/unix/multiplexers/select/select.factor +++ b/basis/io/backend/unix/multiplexers/select/select.factor @@ -1,8 +1,9 @@ ! Copyright (C) 2004, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.c-types kernel bit-arrays sequences assocs unix -math namespaces accessors math.order locals unix.time fry -io.ports io.backend.unix io.backend.unix.multiplexers ; +USING: alien.c-types kernel bit-arrays sequences assocs math +namespaces accessors math.order locals fry io.ports +io.backend.unix io.backend.unix.multiplexers unix unix.ffi +unix.time ; IN: io.backend.unix.multiplexers.select TUPLE: select-mx < mx read-fdset write-fdset ; diff --git a/basis/io/backend/unix/multiplexers/select/tags.txt b/basis/io/backend/unix/multiplexers/select/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/unix/multiplexers/select/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/unix/multiplexers/tags.txt b/basis/io/backend/unix/multiplexers/tags.txt deleted file mode 100755 index 6abe115b12..0000000000 --- a/basis/io/backend/unix/multiplexers/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/unix/netbsd/platforms.txt b/basis/io/backend/unix/netbsd/platforms.txt new file mode 100644 index 0000000000..dccfe71042 --- /dev/null +++ b/basis/io/backend/unix/netbsd/platforms.txt @@ -0,0 +1 @@ +netbsd diff --git a/basis/io/backend/unix/netbsd/tags.txt b/basis/io/backend/unix/netbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/unix/netbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/unix/openbsd/platforms.txt b/basis/io/backend/unix/openbsd/platforms.txt new file mode 100644 index 0000000000..389b028aca --- /dev/null +++ b/basis/io/backend/unix/openbsd/platforms.txt @@ -0,0 +1 @@ +openbsd diff --git a/basis/io/backend/unix/openbsd/tags.txt b/basis/io/backend/unix/openbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/unix/openbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/unix/platforms.txt b/basis/io/backend/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/backend/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/backend/unix/tags.txt b/basis/io/backend/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/windows/nt/platforms.txt b/basis/io/backend/windows/nt/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/io/backend/windows/nt/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/io/backend/windows/nt/privileges/platforms.txt b/basis/io/backend/windows/nt/privileges/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/io/backend/windows/nt/privileges/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/io/backend/windows/nt/privileges/tags.txt b/basis/io/backend/windows/nt/privileges/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/windows/nt/privileges/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/windows/nt/tags.txt b/basis/io/backend/windows/nt/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/windows/nt/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/windows/platforms.txt b/basis/io/backend/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/io/backend/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/io/backend/windows/privileges/platforms.txt b/basis/io/backend/windows/privileges/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/io/backend/windows/privileges/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/io/backend/windows/privileges/tags.txt b/basis/io/backend/windows/privileges/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/backend/windows/privileges/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/backend/windows/tags.txt b/basis/io/backend/windows/tags.txt deleted file mode 100755 index 6bf68304bb..0000000000 --- a/basis/io/backend/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/directories/search/windows/platforms.txt b/basis/io/directories/search/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/io/directories/search/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/io/directories/search/windows/tags.txt b/basis/io/directories/search/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/directories/search/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/directories/unix/linux/platforms.txt b/basis/io/directories/unix/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/io/directories/unix/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/io/directories/unix/linux/tags.txt b/basis/io/directories/unix/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/directories/unix/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/directories/unix/platforms.txt b/basis/io/directories/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/directories/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/directories/unix/tags.txt b/basis/io/directories/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/directories/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/directories/windows/platforms.txt b/basis/io/directories/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/io/directories/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/io/directories/windows/tags.txt b/basis/io/directories/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/directories/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/info/unix/bsd/platforms.txt b/basis/io/files/info/unix/bsd/platforms.txt new file mode 100644 index 0000000000..df796f15d4 --- /dev/null +++ b/basis/io/files/info/unix/bsd/platforms.txt @@ -0,0 +1 @@ +bsd diff --git a/basis/io/files/info/unix/bsd/tags.txt b/basis/io/files/info/unix/bsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/info/unix/bsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/info/unix/freebsd/platforms.txt b/basis/io/files/info/unix/freebsd/platforms.txt new file mode 100644 index 0000000000..edfe86017d --- /dev/null +++ b/basis/io/files/info/unix/freebsd/platforms.txt @@ -0,0 +1 @@ +freebsd diff --git a/basis/io/files/info/unix/freebsd/tags.txt b/basis/io/files/info/unix/freebsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/info/unix/freebsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/info/unix/linux/platforms.txt b/basis/io/files/info/unix/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/io/files/info/unix/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/io/files/info/unix/linux/tags.txt b/basis/io/files/info/unix/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/info/unix/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/info/unix/macosx/platforms.txt b/basis/io/files/info/unix/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/io/files/info/unix/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/io/files/info/unix/macosx/tags.txt b/basis/io/files/info/unix/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/info/unix/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/info/unix/netbsd/platforms.txt b/basis/io/files/info/unix/netbsd/platforms.txt new file mode 100644 index 0000000000..dccfe71042 --- /dev/null +++ b/basis/io/files/info/unix/netbsd/platforms.txt @@ -0,0 +1 @@ +netbsd diff --git a/basis/io/files/info/unix/netbsd/tags.txt b/basis/io/files/info/unix/netbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/info/unix/netbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/info/unix/openbsd/platforms.txt b/basis/io/files/info/unix/openbsd/platforms.txt new file mode 100644 index 0000000000..389b028aca --- /dev/null +++ b/basis/io/files/info/unix/openbsd/platforms.txt @@ -0,0 +1 @@ +openbsd diff --git a/basis/io/files/info/unix/openbsd/tags.txt b/basis/io/files/info/unix/openbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/info/unix/openbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/info/unix/platforms.txt b/basis/io/files/info/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/files/info/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/files/info/unix/tags.txt b/basis/io/files/info/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/info/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/info/windows/platforms.txt b/basis/io/files/info/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/io/files/info/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/io/files/info/windows/tags.txt b/basis/io/files/info/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/info/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/links/unix/platforms.txt b/basis/io/files/links/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/files/links/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/files/links/unix/tags.txt b/basis/io/files/links/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/links/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/unique/unix/platforms.txt b/basis/io/files/unique/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/files/unique/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/files/unique/unix/tags.txt b/basis/io/files/unique/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/unique/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/unique/windows/platforms.txt b/basis/io/files/unique/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/io/files/unique/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/io/files/unique/windows/tags.txt b/basis/io/files/unique/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/unique/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/unix/platforms.txt b/basis/io/files/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/files/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/files/unix/tags.txt b/basis/io/files/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/windows/nt/platforms.txt b/basis/io/files/windows/nt/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/io/files/windows/nt/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/io/files/windows/nt/tags.txt b/basis/io/files/windows/nt/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/windows/nt/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/files/windows/platforms.txt b/basis/io/files/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/io/files/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/io/files/windows/tags.txt b/basis/io/files/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/files/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/launcher/unix/parser/platforms.txt b/basis/io/launcher/unix/parser/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/launcher/unix/parser/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/launcher/unix/parser/tags.txt b/basis/io/launcher/unix/parser/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/launcher/unix/parser/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/launcher/unix/platforms.txt b/basis/io/launcher/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/launcher/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/launcher/unix/tags.txt b/basis/io/launcher/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/launcher/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/launcher/windows/nt/platforms.txt b/basis/io/launcher/windows/nt/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/io/launcher/windows/nt/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/io/launcher/windows/nt/tags.txt b/basis/io/launcher/windows/nt/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/launcher/windows/nt/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/launcher/windows/platforms.txt b/basis/io/launcher/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/io/launcher/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/io/launcher/windows/tags.txt b/basis/io/launcher/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/launcher/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/mmap/unix/platforms.txt b/basis/io/mmap/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/mmap/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/mmap/unix/tags.txt b/basis/io/mmap/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/mmap/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/mmap/windows/platforms.txt b/basis/io/mmap/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/io/mmap/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/io/mmap/windows/tags.txt b/basis/io/mmap/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/mmap/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/monitors/linux/linux.factor b/basis/io/monitors/linux/linux.factor index 7653eaa84c..eacc920303 100644 --- a/basis/io/monitors/linux/linux.factor +++ b/basis/io/monitors/linux/linux.factor @@ -59,7 +59,9 @@ M: linux-monitor dispose* ( monitor -- ) [ inotify>> handle>> handle-fd ] [ wd>> ] bi inotify_rm_watch io-error ] if - ] bi ; + ] + [ call-next-method ] + tri ; : ignore-flags? ( mask -- ? ) { diff --git a/basis/io/monitors/linux/platforms.txt b/basis/io/monitors/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/io/monitors/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/io/monitors/linux/tags.txt b/basis/io/monitors/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/monitors/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/monitors/macosx/macosx.factor b/basis/io/monitors/macosx/macosx.factor index e71fb2eca2..dbbbe7c7e3 100644 --- a/basis/io/monitors/macosx/macosx.factor +++ b/basis/io/monitors/macosx/macosx.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2008 Slava Pestov. +! Copyright (C) 2008, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: io.backend io.monitors core-foundation.fsevents continuations kernel sequences @@ -16,6 +16,7 @@ M:: macosx (monitor) ( path recursive? mailbox -- monitor ) dup [ enqueue-notifications ] curry path 1array 0 0 >>handle ; -M: macosx-monitor dispose* handle>> dispose ; +M: macosx-monitor dispose* + [ handle>> dispose ] [ call-next-method ] bi ; macosx set-io-backend diff --git a/basis/io/monitors/macosx/platforms.txt b/basis/io/monitors/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/io/monitors/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/io/monitors/macosx/tags.txt b/basis/io/monitors/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/monitors/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/monitors/monitors-tests.factor b/basis/io/monitors/monitors-tests.factor index 576ac7ca30..ac17c4a39f 100644 --- a/basis/io/monitors/monitors-tests.factor +++ b/basis/io/monitors/monitors-tests.factor @@ -3,7 +3,7 @@ USING: io.monitors tools.test io.files system sequences continuations namespaces concurrency.count-downs kernel io threads calendar prettyprint destructors io.timeouts io.files.temp io.directories io.directories.hierarchy -io.pathnames accessors ; +io.pathnames accessors concurrency.promises ; os { winnt linux macosx } member? [ [ @@ -110,4 +110,23 @@ os { winnt linux macosx } member? [ [ [ t ] [ "m" get next-change drop ] while ] must-fail [ ] [ "m" get dispose ] unit-test ] with-monitors + + ! Disposing a monitor should throw an error in any threads + ! waiting on notifications + [ + [ ] [ + "p" set + "monitor-test" temp-file t "m" set + 10 seconds "m" get set-timeout + ] unit-test + + [ + [ "m" get next-change ] [ ] recover + "p" get fulfill + ] in-thread + + [ ] [ 1 seconds sleep ] unit-test + [ ] [ "m" get dispose ] unit-test + [ t ] [ "p" get 10 seconds ?promise-timeout already-disposed? ] unit-test + ] with-monitors ] when diff --git a/basis/io/monitors/monitors.factor b/basis/io/monitors/monitors.factor index cb2f552a32..731798c424 100644 --- a/basis/io/monitors/monitors.factor +++ b/basis/io/monitors/monitors.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2008, 2009 Slava Pestov. +! Copyright (C) 2008, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: io.backend kernel continuations destructors namespaces sequences assocs hashtables sorting arrays threads boxes @@ -26,6 +26,15 @@ M: monitor timeout timeout>> ; M: monitor set-timeout (>>timeout) ; + + +M: monitor dispose* + [ monitor-disposed ] dip queue>> mailbox-put ; + : new-monitor ( path mailbox class -- monitor ) new-disposable swap >>queue @@ -34,8 +43,11 @@ M: monitor set-timeout (>>timeout) ; TUPLE: file-change path changed monitor ; : queue-change ( path changes monitor -- ) - 3dup and and - [ [ file-change boa ] keep queue>> mailbox-put ] [ 3drop ] if ; + 3dup and and [ + [ check-disposed ] keep + [ file-change boa ] keep + queue>> mailbox-put + ] [ 3drop ] if ; HOOK: (monitor) io-backend ( path recursive? mailbox -- monitor ) @@ -43,7 +55,11 @@ HOOK: (monitor) io-backend ( path recursive? mailbox -- monitor ) (monitor) ; : next-change ( monitor -- change ) - [ queue>> ] [ timeout ] bi mailbox-get-timeout ; + [ check-disposed ] + [ + [ ] [ queue>> ] [ timeout ] tri mailbox-get-timeout + dup monitor-disposed eq? [ drop already-disposed ] [ nip ] if + ] bi ; SYMBOL: +add-file+ SYMBOL: +remove-file+ diff --git a/basis/io/monitors/recursive/recursive.factor b/basis/io/monitors/recursive/recursive.factor index 33477abdb6..b573e2fa2b 100644 --- a/basis/io/monitors/recursive/recursive.factor +++ b/basis/io/monitors/recursive/recursive.factor @@ -39,17 +39,19 @@ DEFER: add-child-monitor : remove-child-monitor ( monitor -- ) monitor tget children>> delete-at* [ dispose ] [ drop ] if ; +SYMBOL: +stop+ + M: recursive-monitor dispose* - [ "stop" swap thread>> send-synchronous drop ] - [ queue>> dispose ] - bi ; + [ [ +stop+ ] dip thread>> send ] [ call-next-method ] bi ; : stop-pump ( -- ) monitor tget children>> values dispose-each ; : pump-step ( msg -- ) - [ [ monitor>> path>> ] [ path>> ] bi append-path ] [ changed>> ] bi - monitor tget queue-change ; + monitor tget disposed>> [ drop ] [ + [ [ monitor>> path>> ] [ path>> ] bi append-path ] [ changed>> ] bi + monitor tget queue-change + ] if ; : child-added ( path monitor -- ) path>> prepend-path add-child-monitor ; @@ -69,8 +71,8 @@ M: recursive-monitor dispose* ] with with each ; : pump-loop ( -- ) - receive dup synchronous? [ - [ stop-pump t ] dip reply-synchronous + receive dup +stop+ eq? [ + drop stop-pump ] [ [ '[ _ update-hierarchy ] ignore-errors ] [ pump-step ] bi pump-loop diff --git a/basis/io/monitors/windows/nt/nt.factor b/basis/io/monitors/windows/nt/nt.factor index 9cd8bc4df8..4d061cbb1a 100644 --- a/basis/io/monitors/windows/nt/nt.factor +++ b/basis/io/monitors/windows/nt/nt.factor @@ -100,4 +100,4 @@ M:: winnt (monitor) ( path recursive? mailbox -- monitor ) ] with-destructors ; M: win32-monitor dispose - port>> dispose ; + [ port>> dispose ] [ call-next-method ] bi ; diff --git a/basis/io/monitors/windows/nt/platforms.txt b/basis/io/monitors/windows/nt/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/io/monitors/windows/nt/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/io/monitors/windows/nt/tags.txt b/basis/io/monitors/windows/nt/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/monitors/windows/nt/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/pipes/unix/platforms.txt b/basis/io/pipes/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/pipes/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/pipes/unix/tags.txt b/basis/io/pipes/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/pipes/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/pipes/windows/nt/platforms.txt b/basis/io/pipes/windows/nt/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/io/pipes/windows/nt/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/io/pipes/windows/nt/tags.txt b/basis/io/pipes/windows/nt/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/pipes/windows/nt/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/sockets/secure/unix/platforms.txt b/basis/io/sockets/secure/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/sockets/secure/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/sockets/secure/unix/tags.txt b/basis/io/sockets/secure/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/sockets/secure/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/sockets/unix/platforms.txt b/basis/io/sockets/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/io/sockets/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/io/sockets/unix/tags.txt b/basis/io/sockets/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/sockets/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/sockets/windows/nt/platforms.txt b/basis/io/sockets/windows/nt/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/io/sockets/windows/nt/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/io/sockets/windows/nt/tags.txt b/basis/io/sockets/windows/nt/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/sockets/windows/nt/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/io/sockets/windows/platforms.txt b/basis/io/sockets/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/io/sockets/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/io/sockets/windows/tags.txt b/basis/io/sockets/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/io/sockets/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/iokit/hid/platforms.txt b/basis/iokit/hid/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/iokit/hid/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/iokit/hid/tags.txt b/basis/iokit/hid/tags.txt index bf2a35f15b..bb863cf9a0 100755 --- a/basis/iokit/hid/tags.txt +++ b/basis/iokit/hid/tags.txt @@ -1,2 +1 @@ bindings -unportable diff --git a/basis/iokit/platforms.txt b/basis/iokit/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/iokit/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/iokit/tags.txt b/basis/iokit/tags.txt index bf2a35f15b..bb863cf9a0 100755 --- a/basis/iokit/tags.txt +++ b/basis/iokit/tags.txt @@ -1,2 +1 @@ bindings -unportable diff --git a/basis/listener/listener-docs.factor b/basis/listener/listener-docs.factor index 77bec12c1a..bb014fef62 100644 --- a/basis/listener/listener-docs.factor +++ b/basis/listener/listener-docs.factor @@ -1,8 +1,9 @@ -USING: help.markup help.syntax kernel io system prettyprint continuations quotations ; +USING: help.markup help.syntax kernel io system prettyprint +continuations quotations vocabs.loader parser ; IN: listener ARTICLE: "listener-watch" "Watching variables in the listener" -"The listener prints the concepts of the data and retain stacks after every expression. It can also print values of dynamic variables which are added to a watch list:" +"The listener prints values of dynamic variables which are added to a watch list:" { $subsections visible-vars } "To add or remove a single variable:" { $subsections @@ -14,7 +15,7 @@ ARTICLE: "listener-watch" "Watching variables in the listener" show-vars hide-vars } -"Hiding all visible variables:" +"Clearing the watch list:" { $subsections hide-all-vars } ; HELP: only-use-vocabs @@ -46,21 +47,33 @@ HELP: hide-all-vars { $description "Removes all variables from the watch list." } ; ARTICLE: "listener" "The listener" -"The listener evaluates Factor expressions read from a stream. The listener is the primary interface to the Factor runtime. Typically, you write Factor code in a text editor, then load it using the listener and test it." +"The listener evaluates Factor expressions read from the input stream. Typically, you write Factor code in a text editor, load it from the listener by calling " { $link require } ", " { $link reload } " or " { $link run-file } ", and then test it from interactively." $nl "The classical first program can be run in the listener:" { $example "\"Hello, world\" print" "Hello, world" } +"New words can also be defined in the listener:" +{ $example + "USE: math.functions" + ": twice ( word -- ) [ execute ] [ execute ] bi ; inline" + "81 \\ sqrt twice ." + "3.0" +} "Multi-line expressions are supported:" { $example "{ 1 2 3 } [\n .\n] each" "1\n2\n3" } -"The listener knows when to expect more input by looking at the height of the stack. Parsing words such as " { $link POSTPONE: { } " leave elements on the parser stack, and corresponding words such as " { $link POSTPONE: } } " pop them." +"The listener will display the current contents of the datastack after every line of input." $nl -"The listener will display the current contents of the datastack after every expression is evaluated. The listener can additionally watch dynamic variables:" +"The listener can watch dynamic variables:" { $subsections "listener-watch" } -"To start a nested listener:" +"Nested listeners can be useful for testing code in other dynamic scopes. For example, when doing database maintanance using the " { $vocab-link "db.tuples" } " vocabulary, it can be useful to start a listener with a database connection:" +{ $code + "USING: db db.sqlite listener ;" + "\"data.db\" [ listener ] with-db" +} +"Starting a nested listener:" { $subsections listener } "To exit a listener, invoke the " { $link return } " word." $nl -"Multi-line quotations can be read independently of the rest of the listener:" +"The listener's mechanism for reading multi-line expressions from the input stream can be called from user code:" { $subsections read-quot } ; ABOUT: "listener" diff --git a/basis/lists/lazy/lazy-docs.factor b/basis/lists/lazy/lazy-docs.factor index 3b23e1186e..201764bd95 100644 --- a/basis/lists/lazy/lazy-docs.factor +++ b/basis/lists/lazy/lazy-docs.factor @@ -144,7 +144,7 @@ HELP: lcomp { $description "Get the cartesian product of the lists in " { $snippet "list" } " and call " { $snippet "quot" } " call with each element from the cartesian product on the stack, the result of which is returned in the final " { $snippet "list" } "." } ; HELP: lcomp* -{ $values { "list" "a list of lists" } { "guards" "a sequence of quotations with stack effect ( seq -- bool )" } { "quot" { $quotation "( seq -- X )" } } { "list" "the resulting list" } { "result" "a list" } } +{ $values { "list" "a list of lists" } { "guards" "a sequence of quotations with stack effect ( seq -- bool )" } { "quot" { $quotation "( seq -- X )" } } { "result" "a list" } } { $description "Get the cartesian product of the lists in " { $snippet "list" } ", filter it by applying each guard quotation to it and call " { $snippet "quot" } " call with each element from the remaining cartesian product items on the stack, the result of which is returned in the final " { $snippet "list" } "." } { $examples { $code "{ 1 2 3 } >list { 4 5 6 } >list 2list { [ first odd? ] } [ first2 + ] lcomp*" } diff --git a/basis/math/bitwise/bitwise-docs.factor b/basis/math/bitwise/bitwise-docs.factor index 5dce9646f4..bbc72d99e4 100644 --- a/basis/math/bitwise/bitwise-docs.factor +++ b/basis/math/bitwise/bitwise-docs.factor @@ -88,10 +88,10 @@ HELP: bit-count HELP: bitroll-32 { $values - { "n" integer } { "s" integer } - { "n'" integer } + { "m" integer } { "s" integer } + { "n" integer } } -{ $description "Rolls the number " { $snippet "n" } " by " { $snippet "s" } " bits to the left, wrapping around after 32 bits." } +{ $description "Rolls the number " { $snippet "m" } " by " { $snippet "s" } " bits to the left, wrapping around after 32 bits." } { $examples { $example "USING: math.bitwise prettyprint ;" "HEX: 1 10 bitroll-32 .h" @@ -105,10 +105,10 @@ HELP: bitroll-32 HELP: bitroll-64 { $values - { "n" integer } { "s" "a shift integer" } - { "n'" integer } + { "m" integer } { "s" "a shift integer" } + { "n" integer } } -{ $description "Rolls the number " { $snippet "n" } " by " { $snippet "s" } " bits to the left, wrapping around after 64 bits." } +{ $description "Rolls the number " { $snippet "m" } " by " { $snippet "s" } " bits to the left, wrapping around after 64 bits." } { $examples { $example "USING: math.bitwise prettyprint ;" "HEX: 1 10 bitroll-64 .h" @@ -226,10 +226,10 @@ HELP: odd-parity? HELP: on-bits { $values - { "n" integer } { "m" integer } + { "n" integer } } -{ $description "Returns an integer with " { $snippet "n" } " bits set." } +{ $description "Returns an integer with " { $snippet "m" } " bits set." } { $examples { $example "USING: math.bitwise kernel prettyprint ;" "6 on-bits .h" @@ -274,7 +274,7 @@ HELP: set-bit HELP: shift-mod { $values - { "n" integer } { "s" integer } { "w" integer } + { "m" integer } { "s" integer } { "w" integer } { "n" integer } } { $description "Calls " { $link shift } " on " { $snippet "n" } " and " { $snippet "s" } ", wrapping the result to " { $snippet "w" } " bits." } ; @@ -307,8 +307,8 @@ HELP: unmask? HELP: w* { $values - { "int" integer } { "int" integer } - { "int" integer } + { "x" integer } { "y" integer } + { "z" integer } } { $description "Multiplies two integers and wraps the result to 32 bits." } { $examples @@ -320,8 +320,8 @@ HELP: w* HELP: w+ { $values - { "int" integer } { "int" integer } - { "int" integer } + { "x" integer } { "y" integer } + { "z" integer } } { $description "Adds two integers and wraps the result to 32 bits." } { $examples @@ -333,8 +333,8 @@ HELP: w+ HELP: w- { $values - { "int" integer } { "int" integer } - { "int" integer } + { "x" integer } { "y" integer } + { "z" integer } } { $description "Subtracts two integers and wraps the result to 32 bits." } { $examples diff --git a/basis/math/bitwise/bitwise.factor b/basis/math/bitwise/bitwise.factor index 6b301fa97b..e508b49a19 100644 --- a/basis/math/bitwise/bitwise.factor +++ b/basis/math/bitwise/bitwise.factor @@ -17,29 +17,32 @@ IN: math.bitwise : wrap ( m n -- m' ) 1 - bitand ; inline : bits ( m n -- m' ) 2^ wrap ; inline : mask-bit ( m n -- m' ) 2^ mask ; inline -: on-bits ( n -- m ) 2^ 1 - ; inline +: on-bits ( m -- n ) 2^ 1 - ; inline : toggle-bit ( m n -- m' ) 2^ bitxor ; inline - -: shift-mod ( n s w -- n ) - [ shift ] dip 2^ wrap ; inline +: >signed ( x n -- y ) 2dup neg 1 + shift 1 = [ 2^ - ] [ drop ] if ; +: >odd ( m -- n ) 0 set-bit ; foldable +: >even ( m -- n ) 0 clear-bit ; foldable +: next-even ( m -- n ) >even 2 + ; foldable +: next-odd ( m -- n ) dup even? [ 1 + ] [ 2 + ] if ; foldable +: shift-mod ( m s w -- n ) [ shift ] dip 2^ wrap ; inline : bitroll ( x s w -- y ) [ wrap ] keep [ shift-mod ] [ [ - ] keep shift-mod ] 3bi bitor ; inline -: bitroll-32 ( n s -- n' ) 32 bitroll ; inline +: bitroll-32 ( m s -- n ) 32 bitroll ; inline -: bitroll-64 ( n s -- n' ) 64 bitroll ; inline +: bitroll-64 ( m s -- n ) 64 bitroll ; inline ! 32-bit arithmetic -: w+ ( int int -- int ) + 32 bits ; inline -: w- ( int int -- int ) - 32 bits ; inline -: w* ( int int -- int ) * 32 bits ; inline +: w+ ( x y -- z ) + 32 bits ; inline +: w- ( x y -- z ) - 32 bits ; inline +: w* ( x y -- z ) * 32 bits ; inline ! 64-bit arithmetic -: W+ ( int int -- int ) + 64 bits ; inline -: W- ( int int -- int ) - 64 bits ; inline -: W* ( int int -- int ) * 64 bits ; inline +: W+ ( x y -- z ) + 64 bits ; inline +: W- ( x y -- z ) - 64 bits ; inline +: W* ( x y -- z ) * 64 bits ; inline ! flags MACRO: flags ( values -- ) @@ -117,17 +120,6 @@ M: object bit-count [ >c-ptr ] [ byte-length ] bi byte-array-bit-count ; -: >signed ( x n -- y ) - 2dup neg 1 + shift 1 = [ 2^ - ] [ drop ] if ; - -: >odd ( n -- int ) 0 set-bit ; foldable - -: >even ( n -- int ) 0 clear-bit ; foldable - -: next-even ( m -- n ) >even 2 + ; foldable - -: next-odd ( m -- n ) dup even? [ 1 + ] [ 2 + ] if ; foldable - : even-parity? ( obj -- ? ) bit-count even? ; : odd-parity? ( obj -- ? ) bit-count odd? ; diff --git a/basis/math/combinatorics/combinatorics-docs.factor b/basis/math/combinatorics/combinatorics-docs.factor index ec3cd6ee76..0a2a0d4011 100644 --- a/basis/math/combinatorics/combinatorics-docs.factor +++ b/basis/math/combinatorics/combinatorics-docs.factor @@ -26,7 +26,7 @@ HELP: nCk } ; HELP: permutation -{ $values { "n" "a non-negative integer" } { "seq" sequence } { "seq" sequence } } +{ $values { "n" "a non-negative integer" } { "seq" sequence } { "seq'" sequence } } { $description "Outputs the " { $snippet "nth" } " lexicographical permutation of " { $snippet "seq" } "." } { $notes "Permutations are 0-based and a bounds error will be thrown if " { $snippet "n" } " is larger than " { $snippet "seq length factorial 1 -" } "." } { $examples @@ -37,7 +37,7 @@ HELP: permutation } ; HELP: all-permutations -{ $values { "seq" sequence } { "seq" sequence } } +{ $values { "seq" sequence } { "seq'" sequence } } { $description "Outputs a sequence containing all permutations of " { $snippet "seq" } " in lexicographical order." } { $examples { $example "USING: math.combinatorics prettyprint ;" @@ -60,7 +60,7 @@ HELP: inverse-permutation } ; HELP: combination -{ $values { "m" "a non-negative integer" } { "seq" sequence } { "k" "a non-negative integer" } { "seq" sequence } } +{ $values { "m" "a non-negative integer" } { "seq" sequence } { "k" "a non-negative integer" } { "seq'" sequence } } { $description "Outputs the " { $snippet "mth" } " lexicographical combination of " { $snippet "seq" } " choosing " { $snippet "k" } " elements." } { $notes "Combinations are 0-based and a bounds error will be thrown if " { $snippet "m" } " is larger than " { $snippet "seq length k nCk" } "." } { $examples @@ -71,7 +71,7 @@ HELP: combination } ; HELP: all-combinations -{ $values { "seq" sequence } { "k" "a non-negative integer" } { "seq" sequence } } +{ $values { "seq" sequence } { "k" "a non-negative integer" } { "seq'" sequence } } { $description "Outputs a sequence containing all combinations of " { $snippet "seq" } " choosing " { $snippet "k" } " elements, in lexicographical order." } { $examples { $example "USING: math.combinatorics prettyprint ;" diff --git a/basis/math/combinatorics/combinatorics.factor b/basis/math/combinatorics/combinatorics.factor index 7c68aede09..5a9f627015 100644 --- a/basis/math/combinatorics/combinatorics.factor +++ b/basis/math/combinatorics/combinatorics.factor @@ -42,10 +42,10 @@ PRIVATE> PRIVATE> -: permutation ( n seq -- seq ) +: permutation ( n seq -- seq' ) [ permutation-indices ] keep nths ; -: all-permutations ( seq -- seq ) +: all-permutations ( seq -- seq' ) [ length factorial iota ] keep '[ _ permutation ] map ; @@ -118,10 +118,10 @@ PRIVATE> : map>assoc-combinations ( seq k quot exemplar -- ) [ combinations-quot ] dip map>assoc ; inline -: combination ( m seq k -- seq ) +: combination ( m seq k -- seq' ) apply-combination ; -: all-combinations ( seq k -- seq ) +: all-combinations ( seq k -- seq' ) [ ] combinations-quot map ; : reduce-combinations ( seq k identity quot -- result ) diff --git a/basis/math/floats/env/ppc/tags.txt b/basis/math/floats/env/ppc/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/math/floats/env/ppc/tags.txt +++ b/basis/math/floats/env/ppc/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/math/floats/env/x86/32/tags.txt b/basis/math/floats/env/x86/32/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/math/floats/env/x86/32/tags.txt +++ b/basis/math/floats/env/x86/32/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/math/floats/env/x86/64/tags.txt b/basis/math/floats/env/x86/64/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/math/floats/env/x86/64/tags.txt +++ b/basis/math/floats/env/x86/64/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/math/floats/env/x86/tags.txt b/basis/math/floats/env/x86/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/math/floats/env/x86/tags.txt +++ b/basis/math/floats/env/x86/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/math/polynomials/polynomials-docs.factor b/basis/math/polynomials/polynomials-docs.factor index 9c16bf8a7e..3b8885cc88 100644 --- a/basis/math/polynomials/polynomials-docs.factor +++ b/basis/math/polynomials/polynomials-docs.factor @@ -36,12 +36,12 @@ HELP: p= { $examples { $example "USING: math.polynomials prettyprint ;" "{ 0 1 } { 0 1 0 } p= ." "t" } } ; HELP: ptrim -{ $values { "p" "a polynomial" } { "p" "a polynomial" } } +{ $values { "p" "a polynomial" } { "q" "a polynomial" } } { $description "Trims excess zeros from a polynomial." } { $examples { $example "USING: math.polynomials prettyprint ;" "{ 0 1 0 0 } ptrim ." "{ 0 1 }" } } ; HELP: 2ptrim -{ $values { "p" "a polynomial" } { "q" "a polynomial" } { "p" "a polynomial" } { "q" "a polynomial" } } +{ $values { "p" "a polynomial" } { "q" "a polynomial" } { "p'" "a polynomial" } { "q'" "a polynomial" } } { $description "Trims excess zeros from two polynomials." } { $examples { $example "USING: kernel math.polynomials prettyprint ;" "{ 0 1 0 0 } { 1 0 0 } 2ptrim [ . ] bi@" "{ 0 1 }\n{ 1 }" } } ; @@ -61,7 +61,7 @@ HELP: n*p { $examples { $example "USING: math.polynomials prettyprint ;" "4 { 3 0 1 } n*p ." "{ 12 0 4 }" } } ; HELP: pextend-conv -{ $values { "p" "a polynomial" } { "q" "a polynomial" } { "p" "a polynomial" } { "q" "a polynomial" } } +{ $values { "p" "a polynomial" } { "q" "a polynomial" } { "p'" "a polynomial" } { "q'" "a polynomial" } } { $description "Convulution, extending to " { $snippet "p_m + q_n - 1" } "." } { $examples { $example "USING: kernel math.polynomials prettyprint ;" "{ 1 0 1 } { 0 1 } pextend-conv [ . ] bi@" "V{ 1 0 1 0 }\nV{ 0 1 0 0 }" } } ; diff --git a/basis/math/polynomials/polynomials.factor b/basis/math/polynomials/polynomials.factor index b994410283..31152016ea 100644 --- a/basis/math/polynomials/polynomials.factor +++ b/basis/math/polynomials/polynomials.factor @@ -20,15 +20,15 @@ PRIVATE> : p= ( p q -- ? ) pextend = ; -: ptrim ( p -- p ) +: ptrim ( p -- q ) dup length 1 = [ [ zero? ] trim-tail ] unless ; -: 2ptrim ( p q -- p q ) [ ptrim ] bi@ ; +: 2ptrim ( p q -- p' q' ) [ ptrim ] bi@ ; : p+ ( p q -- r ) pextend v+ ; : p- ( p q -- r ) pextend v- ; : n*p ( n p -- n*p ) n*v ; -: pextend-conv ( p q -- p q ) +: pextend-conv ( p q -- p' q' ) 2dup [ length ] bi@ + 1 - 2pad-tail [ >vector ] bi@ ; : p* ( p q -- r ) diff --git a/basis/math/quaternions/quaternions-docs.factor b/basis/math/quaternions/quaternions-docs.factor index 1a381c6287..d3bead7dea 100644 --- a/basis/math/quaternions/quaternions-docs.factor +++ b/basis/math/quaternions/quaternions-docs.factor @@ -30,7 +30,7 @@ HELP: q/ { $examples { $example "USING: math.quaternions prettyprint ;" "{ 0 0 0 1 } { 0 0 1 0 } q/ ." "{ 0 1 0 0 }" } } ; HELP: q*n -{ $values { "q" "a quaternion" } { "n" real } { "q" "a quaternion" } } +{ $values { "q" "a quaternion" } { "n" real } { "r" "a quaternion" } } { $description "Multiplies each element of " { $snippet "q" } " by real value " { $snippet "n" } "." } { $notes "To multiply a quaternion with a complex value, use " { $link c>q } " " { $link q* } "." } ; diff --git a/basis/math/quaternions/quaternions.factor b/basis/math/quaternions/quaternions.factor index e659cf5f61..4173507e6c 100644 --- a/basis/math/quaternions/quaternions.factor +++ b/basis/math/quaternions/quaternions.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2005, 2007 Slava Pestov. +! Copyright (C) 2005, 2010 Joe Groff, Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: arrays combinators kernel locals math math.functions math.libm math.order math.vectors sequences ; @@ -35,10 +35,10 @@ M: object qconjugate ( u -- u' ) : q/ ( u v -- u/v ) qrecip q* ; inline -: n*q ( q n -- q ) +: n*q ( q n -- r ) v*n ; inline -: q*n ( q n -- q ) +: q*n ( q n -- r ) v*n ; inline : n>q ( n -- q ) diff --git a/basis/math/statistics/statistics-docs.factor b/basis/math/statistics/statistics-docs.factor index 6fa7d79f77..f7d108dddb 100644 --- a/basis/math/statistics/statistics-docs.factor +++ b/basis/math/statistics/statistics-docs.factor @@ -87,7 +87,6 @@ HELP: histogram HELP: histogram! { $values { "hashtable" hashtable } { "seq" sequence } - { "hashtable" hashtable } } { $examples { $example "! Count the number of times the elements of two sequences appear." @@ -128,7 +127,6 @@ HELP: sequence>assoc HELP: sequence>assoc! { $values { "assoc" assoc } { "seq" sequence } { "quot" quotation } - { "assoc" assoc } } { $examples { $example "! Iterate over a sequence and add the counts to an existing assoc" diff --git a/basis/math/vectors/simd/simd.factor b/basis/math/vectors/simd/simd.factor index acf13599c1..a60026317d 100644 --- a/basis/math/vectors/simd/simd.factor +++ b/basis/math/vectors/simd/simd.factor @@ -251,7 +251,7 @@ BOA-EFFECT [ N "n" { "v" } ] WHERE -TUPLE: A < simd-128 ; +TUPLE: A < simd-128 ; final M: A new-underlying drop \ A boa ; inline M: A simd-rep drop A-rep ; inline diff --git a/basis/opengl/gl/macosx/platforms.txt b/basis/opengl/gl/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/opengl/gl/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/opengl/gl/macosx/tags.txt b/basis/opengl/gl/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/opengl/gl/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/opengl/gl/unix/platforms.txt b/basis/opengl/gl/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/opengl/gl/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/opengl/gl/unix/tags.txt b/basis/opengl/gl/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/opengl/gl/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/opengl/gl/windows/platforms.txt b/basis/opengl/gl/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/opengl/gl/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/opengl/gl/windows/tags.txt b/basis/opengl/gl/windows/tags.txt deleted file mode 100755 index 6bf68304bb..0000000000 --- a/basis/opengl/gl/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/opengl/shaders/shaders-docs.factor b/basis/opengl/shaders/shaders-docs.factor index 1a10071ddf..c3e4d045ef 100644 --- a/basis/opengl/shaders/shaders-docs.factor +++ b/basis/opengl/shaders/shaders-docs.factor @@ -52,7 +52,7 @@ HELP: delete-gl-shader { $description "Deletes the shader object, invalidating it and releasing any resources allocated for it by the OpenGL implementation." } ; HELP: gl-shader-info-log -{ $values { "shader" "A " { $link gl-shader } " object" } { "shader" "a new " { $link gl-shader } } { "log" string } } +{ $values { "shader" "A " { $link gl-shader } " object" } { "log" string } } { $description "Retrieves the info log for " { $snippet "shader" } ", including any errors or warnings generated in compiling the shader object." } ; HELP: gl-program diff --git a/basis/prettyprint/config/config-docs.factor b/basis/prettyprint/config/config-docs.factor index ccc63c61cb..7cd4b31c8b 100644 --- a/basis/prettyprint/config/config-docs.factor +++ b/basis/prettyprint/config/config-docs.factor @@ -1,5 +1,5 @@ USING: help.markup help.syntax io kernel -prettyprint.sections words ; +prettyprint.sections words quotations ; IN: prettyprint.config ABOUT: "prettyprint-variables" @@ -31,3 +31,11 @@ HELP: boa-tuples? HELP: c-object-pointers? { $var-description "Toggles whether C objects such as structs and direct arrays only print their underlying address. If this flag isn't set, C objects will attempt to print their contents. If a C object points to invalid memory, it will display only its address regardless." } ; + +HELP: with-short-limits +{ $values { "quot" quotation } } +{ $description "Calls a quotation in a new dynamic scope with prettyprinter limits set to produce a single line of output." } ; + +HELP: without-limits +{ $values { "quot" quotation } } +{ $description "Calls a quotation in a new dynamic scope with prettyprinter limits set to produce unlimited output." } ; diff --git a/basis/prettyprint/config/config.factor b/basis/prettyprint/config/config.factor index dd61e3e23d..a8848f9061 100644 --- a/basis/prettyprint/config/config.factor +++ b/basis/prettyprint/config/config.factor @@ -1,8 +1,6 @@ -! Copyright (C) 2003, 2008 Slava Pestov. +! Copyright (C) 2003, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: arrays generic assocs io kernel math -namespaces sequences strings vectors words -continuations ; +USING: kernel namespaces ; IN: prettyprint.config ! Configuration @@ -18,4 +16,28 @@ SYMBOL: c-object-pointers? 4 tab-size set-global 64 margin set-global +15 nesting-limit set-global +100 length-limit set-global 10 number-base set-global +string-limit? on + +: with-short-limits ( quot -- ) + [ + 1 line-limit set + 15 length-limit set + 2 nesting-limit set + string-limit? on + boa-tuples? on + c-object-pointers? on + call + ] with-scope ; inline + +: without-limits ( quot -- ) + [ + nesting-limit off + length-limit off + line-limit off + string-limit? off + c-object-pointers? off + call + ] with-scope ; inline diff --git a/basis/prettyprint/prettyprint-docs.factor b/basis/prettyprint/prettyprint-docs.factor index bd2c4bd924..33e1857260 100644 --- a/basis/prettyprint/prettyprint-docs.factor +++ b/basis/prettyprint/prettyprint-docs.factor @@ -38,12 +38,9 @@ ARTICLE: "prettyprint-variables" "Prettyprint control variables" boa-tuples? c-object-pointers? } -"Note that the " { $link short. } " and " { $link pprint-short } " variables override some of these variables." -{ - $warning "Treat the global variables as essentially being constants. Only ever rebind them in a nested scope." - $nl - "Some of the globals are safe to change, like the tab size and wrap margin. However setting limits globally could break code which uses the prettyprinter as a serialization mechanism." -} ; +"The default limits are meant to strike a balance between readability, and not producing too much output when large structures are given. There are two combinators that override the defaults:" +{ $subsections with-short-limits without-limits } +"That the " { $link short. } " and " { $link pprint-short } " words wrap calls to " { $link . } " and " { $link pprint } " in " { $link with-short-limits } ". Code that uses the prettyprinter for serialization should use " { $link without-limits } " to avoid producing unreadable output." ; ARTICLE: "prettyprint-limitations" "Prettyprinter limitations" "When using the prettyprinter as a serialization mechanism, keep the following points in mind:" diff --git a/basis/prettyprint/prettyprint-tests.factor b/basis/prettyprint/prettyprint-tests.factor index 8ba6e94a49..ec0e20a393 100644 --- a/basis/prettyprint/prettyprint-tests.factor +++ b/basis/prettyprint/prettyprint-tests.factor @@ -362,3 +362,15 @@ TUPLE: tuple-with-initial-declared-slot { x integer initial: 123 } ; ] [ [ \ tuple-with-initial-declared-slot see ] with-string-writer "\n" split ] unit-test + +TUPLE: final-tuple ; final + +[ + { + "IN: prettyprint.tests" + "TUPLE: final-tuple ; final" + "" + } +] [ + [ \ final-tuple see ] with-string-writer "\n" split +] unit-test diff --git a/basis/prettyprint/prettyprint.factor b/basis/prettyprint/prettyprint.factor index 7b1538b1dc..23cf956a1d 100644 --- a/basis/prettyprint/prettyprint.factor +++ b/basis/prettyprint/prettyprint.factor @@ -26,13 +26,7 @@ IN: prettyprint : unparse-use ( obj -- str ) [ pprint-use ] with-string-writer ; : pprint-short ( obj -- ) - H{ - { line-limit 1 } - { length-limit 15 } - { nesting-limit 2 } - { string-limit? t } - { boa-tuples? t } - } clone [ pprint ] bind ; + [ pprint ] with-short-limits ; : unparse-short ( obj -- str ) [ pprint-short ] with-string-writer ; diff --git a/basis/random/random-docs.factor b/basis/random/random-docs.factor index 175c34ad9d..20d5dc0214 100644 --- a/basis/random/random-docs.factor +++ b/basis/random/random-docs.factor @@ -75,7 +75,7 @@ HELP: with-system-random HELP: randomize { $values { "seq" sequence } - { "seq" sequence } + { "randomized" sequence } } { $description "Randomizes a sequence in-place with the Fisher-Yates algorithm and returns the sequence." } ; diff --git a/basis/random/random.factor b/basis/random/random.factor index eeaa1f8f2c..ba5d9c7ca3 100644 --- a/basis/random/random.factor +++ b/basis/random/random.factor @@ -67,7 +67,7 @@ M: sequence random [ [ random ] [ 1 - ] bi [ pick exchange ] keep ] while drop ; -: randomize ( seq -- seq ) +: randomize ( seq -- randomized ) dup length randomize-n-last ; ERROR: too-many-samples seq n ; diff --git a/basis/random/unix/platforms.txt b/basis/random/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/random/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/random/unix/tags.txt b/basis/random/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/random/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/random/windows/platforms.txt b/basis/random/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/random/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/random/windows/tags.txt b/basis/random/windows/tags.txt deleted file mode 100755 index 6bf68304bb..0000000000 --- a/basis/random/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/roman/roman-docs.factor b/basis/roman/roman-docs.factor index c81ed0ae42..c9c3db71b5 100644 --- a/basis/roman/roman-docs.factor +++ b/basis/roman/roman-docs.factor @@ -39,7 +39,7 @@ HELP: roman> { >roman >ROMAN roman> } related-words HELP: roman+ -{ $values { "x" string } { "x" string } { "x" string } } +{ $values { "x" string } { "y" string } { "z" string } } { $description "Adds two Roman numerals." } { $examples { $example "USING: io roman ;" @@ -49,7 +49,7 @@ HELP: roman+ } ; HELP: roman- -{ $values { "x" string } { "x" string } { "x" string } } +{ $values { "x" string } { "y" string } { "z" string } } { $description "Subtracts two Roman numerals." } { $examples { $example "USING: io roman ;" @@ -61,7 +61,7 @@ HELP: roman- { roman+ roman- } related-words HELP: roman* -{ $values { "x" string } { "x" string } { "x" string } } +{ $values { "x" string } { "y" string } { "z" string } } { $description "Multiplies two Roman numerals." } { $examples { $example "USING: io roman ;" @@ -71,7 +71,7 @@ HELP: roman* } ; HELP: roman/i -{ $values { "x" string } { "x" string } { "x" string } } +{ $values { "x" string } { "y" string } { "z" string } } { $description "Computes the integer division of two Roman numerals." } { $examples { $example "USING: io roman ;" @@ -81,7 +81,7 @@ HELP: roman/i } ; HELP: roman/mod -{ $values { "x" string } { "x" string } { "x" string } { "x" string } } +{ $values { "x" string } { "y" string } { "z" string } { "w" string } } { $description "Computes the quotient and remainder of two Roman numerals." } { $examples { $example "USING: kernel io roman ;" diff --git a/basis/roman/roman.factor b/basis/roman/roman.factor index a783e7973c..588166829a 100644 --- a/basis/roman/roman.factor +++ b/basis/roman/roman.factor @@ -2,8 +2,9 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays assocs effects fry generalizations grouping kernel lexer macros math math.order math.vectors -namespaces parser quotations sequences sequences.private -splitting.monotonic stack-checker strings unicode.case words ; +namespaces parser effects.parser quotations sequences +sequences.private splitting.monotonic stack-checker strings +unicode.case words ; IN: roman SYNTAX: ROMAN-OP: scan-word [ name>> "roman" prepend create-in ] keep 1quotation '[ _ binary-roman-op ] - dup infer define-declared ; + complete-effect define-declared ; >> -ROMAN-OP: + -ROMAN-OP: - -ROMAN-OP: * -ROMAN-OP: /i -ROMAN-OP: /mod +ROMAN-OP: + ( x y -- z ) +ROMAN-OP: - ( x y -- z ) +ROMAN-OP: * ( x y -- z ) +ROMAN-OP: /i ( x y -- z ) +ROMAN-OP: /mod ( x y -- z w ) SYNTAX: ROMAN: scan roman> suffix! ; diff --git a/basis/see/see.factor b/basis/see/see.factor index 0d2388114a..326e051219 100644 --- a/basis/see/see.factor +++ b/basis/see/see.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2009 Slava Pestov. +! Copyright (C) 2009, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays assocs classes classes.builtin classes.intersection classes.mixin classes.predicate classes.singleton @@ -182,14 +182,21 @@ M: array pprint-slot-name dup length 1 = [ first ] when pprint-slot-name ; +: tuple-declarations. ( class -- ) + \ final declaration. ; + +: superclass. ( class -- ) + superclass dup tuple eq? [ drop ] [ "<" text pprint-word ] if ; + M: tuple-class see-class* - pprint-; block> ; + { + [ pprint-word ] + [ superclass. ] + [ pprint-; ] + [ tuple-declarations. ] + } cleave + block> ; M: word see-class* drop ; diff --git a/basis/sequences/cords/cords.factor b/basis/sequences/cords/cords.factor index fca005fa6e..4a2d267a12 100644 --- a/basis/sequences/cords/cords.factor +++ b/basis/sequences/cords/cords.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2008 Slava Pestov. +! Copyright (C) 2008, 2010 Slava Pestov, Joe Groff. ! See http://factorcode.org/license.txt for BSD license. USING: accessors assocs sequences sorting binary-search fry math math.order arrays classes combinators kernel functors math.functions @@ -8,7 +8,7 @@ IN: sequences.cords MIXIN: cord TUPLE: generic-cord - { head read-only } { tail read-only } ; + { head read-only } { tail read-only } ; final INSTANCE: generic-cord cord M: cord length @@ -34,7 +34,7 @@ T-cord DEFINES-CLASS ${C} WHERE TUPLE: T-cord - { head T read-only } { tail T read-only } ; + { head T read-only } { tail T read-only } ; final INSTANCE: T-cord cord M: T cord-append diff --git a/basis/sequences/deep/deep-docs.factor b/basis/sequences/deep/deep-docs.factor index e8b9ddea6d..6f479e48b6 100644 --- a/basis/sequences/deep/deep-docs.factor +++ b/basis/sequences/deep/deep-docs.factor @@ -31,7 +31,7 @@ HELP: flatten { $description "Creates a sequence of all of the leaf nodes (non-sequence nodes, but including strings and numbers) in the object." } ; HELP: deep-map! -{ $values { "obj" object } { "quot" { $quotation "( elt -- newelt )" } } { "obj" object } } +{ $values { "obj" object } { "quot" { $quotation "( elt -- newelt )" } } } { $description "Modifies each sub-node of an object in place, in preorder, and returns that object." } { $see-also map! } ; diff --git a/basis/specialized-arrays/specialized-arrays.factor b/basis/specialized-arrays/specialized-arrays.factor index eda793ff22..e2840b89dd 100644 --- a/basis/specialized-arrays/specialized-arrays.factor +++ b/basis/specialized-arrays/specialized-arrays.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2008, 2009 Slava Pestov. +! Copyright (C) 2008, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien alien.c-types alien.data alien.parser assocs byte-arrays classes compiler.units functors kernel lexer @@ -19,6 +19,11 @@ ERROR: bad-byte-array-length byte-array type ; M: bad-byte-array-length summary drop "Byte array length doesn't divide type width" ; +ERROR: not-a-byte-array alien ; + +M: not-a-byte-array summary + drop "Not a byte array" ; + : (underlying) ( n c-type -- array ) heap-size * (byte-array) ; inline @@ -47,7 +52,7 @@ WHERE TUPLE: A { underlying c-ptr read-only } -{ length array-capacity read-only } ; +{ length array-capacity read-only } ; final : ( alien len -- specialized-array ) A boa ; inline @@ -61,9 +66,11 @@ TUPLE: A [ \ T heap-size calloc ] keep ; inline : byte-array>A ( byte-array -- specialized-array ) - >c-ptr dup length \ T heap-size /mod 0 = - [ drop \ T bad-byte-array-length ] unless - ; inline + >c-ptr dup byte-array? [ + dup length \ T heap-size /mod 0 = + [ ] + [ drop \ T bad-byte-array-length ] if + ] [ not-a-byte-array ] if ; inline M: A clone [ underlying>> clone ] [ length>> ] bi ; inline diff --git a/basis/stack-checker/dependencies/dependencies.factor b/basis/stack-checker/dependencies/dependencies.factor index d995354a52..ece943acac 100644 --- a/basis/stack-checker/dependencies/dependencies.factor +++ b/basis/stack-checker/dependencies/dependencies.factor @@ -1,8 +1,10 @@ ! Copyright (C) 2009, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: assocs accessors classes.algebra fry generic kernel math -namespaces sequences words sets combinators.short-circuit ; +USING: assocs accessors classes classes.algebra fry generic +kernel math namespaces sequences words sets +combinators.short-circuit classes.tuple ; FROM: classes.tuple.private => tuple-layout ; +FROM: assocs => change-at ; IN: stack-checker.dependencies ! Words that the current quotation depends on @@ -56,28 +58,26 @@ GENERIC: satisfied? ( dependency -- ? ) boa conditional-dependencies get dup [ conjoin ] [ 2drop ] if ; inline -TUPLE: depends-on-class<= class1 class2 ; +TUPLE: depends-on-class-predicate class1 class2 result ; -: depends-on-class<= ( class1 class2 -- ) - \ depends-on-class<= add-conditional-dependency ; +: depends-on-class-predicate ( class1 class2 result -- ) + \ depends-on-class-predicate add-conditional-dependency ; -M: depends-on-class<= satisfied? +M: depends-on-class-predicate satisfied? { - [ class1>> classoid? ] - [ class2>> classoid? ] - [ [ class1>> ] [ class2>> ] bi class<= ] + [ [ class1>> classoid? ] [ class2>> classoid? ] bi and ] + [ [ [ class1>> ] [ class2>> ] bi compare-classes ] [ result>> ] bi eq? ] } 1&& ; -TUPLE: depends-on-classes-disjoint class1 class2 ; +TUPLE: depends-on-instance-predicate object class result ; -: depends-on-classes-disjoint ( class1 class2 -- ) - \ depends-on-classes-disjoint add-conditional-dependency ; +: depends-on-instance-predicate ( object class result -- ) + \ depends-on-instance-predicate add-conditional-dependency ; -M: depends-on-classes-disjoint satisfied? +M: depends-on-instance-predicate satisfied? { - [ class1>> classoid? ] - [ class2>> classoid? ] - [ [ class1>> ] [ class2>> ] bi classes-intersect? not ] + [ class>> classoid? ] + [ [ [ object>> ] [ class>> ] bi instance? ] [ result>> ] bi eq? ] } 1&& ; TUPLE: depends-on-next-method class generic next-method ; @@ -122,6 +122,15 @@ TUPLE: depends-on-flushable word ; M: depends-on-flushable satisfied? word>> flushable? ; +TUPLE: depends-on-final class ; + +: depends-on-final ( word -- ) + [ depends-on-conditionally ] + [ \ depends-on-final add-conditional-dependency ] bi ; + +M: depends-on-final satisfied? + class>> final-class? ; + : init-dependencies ( -- ) H{ } clone dependencies set H{ } clone generic-dependencies set diff --git a/basis/system-info/linux/platforms.txt b/basis/system-info/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/system-info/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/system-info/linux/tags.txt b/basis/system-info/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/system-info/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/system-info/macosx/platforms.txt b/basis/system-info/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/system-info/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/system-info/macosx/tags.txt b/basis/system-info/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/system-info/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/system-info/windows/ce/platforms.txt b/basis/system-info/windows/ce/platforms.txt new file mode 100644 index 0000000000..cd0d980f6f --- /dev/null +++ b/basis/system-info/windows/ce/platforms.txt @@ -0,0 +1 @@ +wince diff --git a/basis/system-info/windows/ce/tags.txt b/basis/system-info/windows/ce/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/system-info/windows/ce/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/system-info/windows/nt/platforms.txt b/basis/system-info/windows/nt/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/system-info/windows/nt/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/system-info/windows/nt/tags.txt b/basis/system-info/windows/nt/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/system-info/windows/nt/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/system-info/windows/platforms.txt b/basis/system-info/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/system-info/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/system-info/windows/tags.txt b/basis/system-info/windows/tags.txt deleted file mode 100755 index 6bf68304bb..0000000000 --- a/basis/system-info/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/tools/cocoa/platforms.txt b/basis/tools/cocoa/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/tools/cocoa/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/tools/cocoa/tags.txt b/basis/tools/cocoa/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/tools/cocoa/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/tools/crossref/crossref.factor b/basis/tools/crossref/crossref.factor index 3bdf2f83ae..50034822b2 100644 --- a/basis/tools/crossref/crossref.factor +++ b/basis/tools/crossref/crossref.factor @@ -71,7 +71,7 @@ M: word crossref-def : defs-to-crossref ( -- seq ) [ - all-words + all-words [ generic? not ] filter all-articles [ >link ] map source-files get keys [ ] map ] append-outputs ; diff --git a/basis/tools/deploy/backend/backend.factor b/basis/tools/deploy/backend/backend.factor index fe63071998..9f25808c9e 100644 --- a/basis/tools/deploy/backend/backend.factor +++ b/basis/tools/deploy/backend/backend.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2007, 2009 Slava Pestov. +! Copyright (C) 2007, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: namespaces make continuations.private kernel.private init assocs kernel vocabs words sequences memory io system arrays @@ -19,13 +19,12 @@ TUPLE: vocab-manifest vocabs libraries ; : copy-resources ( manifest name dir -- ) append-path swap vocabs>> [ copy-vocab-resources ] with each ; -ERROR: cant-deploy-library-file library ; - + [ swap over file-name append-path copy-file ] + [ can't-deploy-library-file ] ?if ; : copy-libraries ( manifest name dir -- ) append-path swap libraries>> [ copy-library ] with each ; diff --git a/basis/tools/deploy/config/editor/editor.factor b/basis/tools/deploy/config/editor/editor.factor index 78d86a4707..e10d20e8b3 100644 --- a/basis/tools/deploy/config/editor/editor.factor +++ b/basis/tools/deploy/config/editor/editor.factor @@ -1,7 +1,8 @@ -! Copyright (C) 2008 Slava Pestov. +! Copyright (C) 2008, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: assocs io.pathnames kernel parser prettyprint sequences -splitting tools.deploy.config vocabs.loader vocabs.metadata ; +USING: assocs io.pathnames kernel parser prettyprint +prettyprint.config sequences splitting tools.deploy.config +vocabs.loader vocabs.metadata ; IN: tools.deploy.config.editor : deploy-config-path ( vocab -- string ) @@ -13,7 +14,7 @@ IN: tools.deploy.config.editor parse-fresh [ first assoc-union ] unless-empty ; : set-deploy-config ( assoc vocab -- ) - [ unparse-use string-lines ] dip + [ [ unparse-use ] without-limits string-lines ] dip dup deploy-config-path set-vocab-file-contents ; : set-deploy-flag ( value key vocab -- ) diff --git a/basis/tools/deploy/deploy-tests.factor b/basis/tools/deploy/deploy-tests.factor index 8e25afdcfe..4f470af202 100644 --- a/basis/tools/deploy/deploy-tests.factor +++ b/basis/tools/deploy/deploy-tests.factor @@ -1,129 +1,129 @@ -USING: tools.test system io io.encodings.ascii io.pathnames -io.files io.files.info io.files.temp kernel tools.deploy.config -tools.deploy.config.editor tools.deploy.backend math sequences -io.launcher arrays namespaces continuations layouts accessors -urls math.parser io.directories tools.deploy.test ; -IN: tools.deploy.tests - -[ ] [ "hello-world" shake-and-bake 500000 small-enough? ] unit-test - -[ ] [ "sudoku" shake-and-bake 800000 small-enough? ] unit-test - -[ ] [ "hello-ui" shake-and-bake 1300000 small-enough? ] unit-test - -[ "staging.math-threads-compiler-ui.image" ] [ - "hello-ui" deploy-config - [ bootstrap-profile staging-image-name file-name ] bind -] unit-test - -[ ] [ "maze" shake-and-bake 1200000 small-enough? ] unit-test - -[ ] [ "tetris" shake-and-bake 1500000 small-enough? ] unit-test - -[ ] [ "spheres" shake-and-bake 1500000 small-enough? ] unit-test - -[ ] [ "terrain" shake-and-bake 1700000 small-enough? ] unit-test - -[ ] [ "gpu.demos.raytrace" shake-and-bake 2500000 small-enough? ] unit-test - -[ ] [ "bunny" shake-and-bake 2500000 small-enough? ] unit-test - -[ ] [ "gpu.demos.bunny" shake-and-bake 3500000 small-enough? ] unit-test - -os macosx? [ - [ ] [ "webkit-demo" shake-and-bake 500000 small-enough? ] unit-test -] when - -[ ] [ "benchmark.regex-dna" shake-and-bake 900000 small-enough? ] unit-test - -{ - "tools.deploy.test.1" - "tools.deploy.test.2" - "tools.deploy.test.3" - "tools.deploy.test.4" -} [ - [ ] swap [ - shake-and-bake - run-temp-image - ] curry unit-test -] each - -USING: http.client http.server http.server.dispatchers -http.server.responses http.server.static io.servers.connection ; - -SINGLETON: quit-responder - -M: quit-responder call-responder* - 2drop stop-this-server "Goodbye" "text/html" ; - -: add-quot-responder ( responder -- responder ) - quit-responder "quit" add-responder ; - -: test-httpd ( responder -- ) - [ - main-responder set - - 0 >>insecure - f >>secure - dup start-server* - sockets>> first addr>> port>> - dup number>string "resource:temp/port-number" ascii set-file-contents - ] with-scope - "port" set ; - -[ ] [ - - add-quot-responder - "vocab:http/test" >>default - - test-httpd -] unit-test - -[ ] [ - "tools.deploy.test.5" shake-and-bake - run-temp-image -] unit-test - -: add-port ( url -- url' ) - >url clone "port" get >>port ; - -[ ] [ "http://localhost/quit" add-port http-get 2drop ] unit-test - -{ - "tools.deploy.test.6" - "tools.deploy.test.7" - "tools.deploy.test.9" - "tools.deploy.test.10" - "tools.deploy.test.11" - "tools.deploy.test.12" -} [ - [ ] swap [ - shake-and-bake - run-temp-image - ] curry unit-test -] each - -os windows? os macosx? or [ - [ ] [ "tools.deploy.test.8" shake-and-bake run-temp-image ] unit-test -] when - -os macosx? [ - [ ] [ "tools.deploy.test.14" shake-and-bake run-temp-image ] unit-test -] when - -[ { "a" "b" "c" } ] [ - "tools.deploy.test.15" shake-and-bake deploy-test-command - { "a" "b" "c" } append - ascii [ lines ] with-process-reader - rest -] unit-test - -[ ] [ "tools.deploy.test.16" shake-and-bake run-temp-image ] unit-test - -[ ] [ "tools.deploy.test.17" shake-and-bake run-temp-image ] unit-test - -[ t ] [ - "tools.deploy.test.18" shake-and-bake - deploy-test-command ascii [ readln ] with-process-reader - "test.image" temp-file = -] unit-test +USING: tools.test system io io.encodings.ascii io.pathnames +io.files io.files.info io.files.temp kernel tools.deploy.config +tools.deploy.config.editor tools.deploy.backend math sequences +io.launcher arrays namespaces continuations layouts accessors +urls math.parser io.directories tools.deploy.test ; +IN: tools.deploy.tests + +[ ] [ "hello-world" shake-and-bake 500000 small-enough? ] unit-test + +[ ] [ "sudoku" shake-and-bake 800000 small-enough? ] unit-test + +[ ] [ "hello-ui" shake-and-bake 1300000 small-enough? ] unit-test + +[ "staging.math-threads-compiler-ui.image" ] [ + "hello-ui" deploy-config + [ bootstrap-profile staging-image-name file-name ] bind +] unit-test + +[ ] [ "maze" shake-and-bake 1200000 small-enough? ] unit-test + +[ ] [ "tetris" shake-and-bake 1500000 small-enough? ] unit-test + +[ ] [ "spheres" shake-and-bake 1500000 small-enough? ] unit-test + +[ ] [ "terrain" shake-and-bake 1700000 small-enough? ] unit-test + +[ ] [ "gpu.demos.raytrace" shake-and-bake 2500000 small-enough? ] unit-test + +[ ] [ "bunny" shake-and-bake 2500000 small-enough? ] unit-test + +[ ] [ "gpu.demos.bunny" shake-and-bake 3500000 small-enough? ] unit-test + +os macosx? [ + [ ] [ "webkit-demo" shake-and-bake 500000 small-enough? ] unit-test +] when + +[ ] [ "benchmark.regex-dna" shake-and-bake 900000 small-enough? ] unit-test + +{ + "tools.deploy.test.1" + "tools.deploy.test.2" + "tools.deploy.test.3" + "tools.deploy.test.4" +} [ + [ ] swap [ + shake-and-bake + run-temp-image + ] curry unit-test +] each + +USING: http.client http.server http.server.dispatchers +http.server.responses http.server.static io.servers.connection ; + +SINGLETON: quit-responder + +M: quit-responder call-responder* + 2drop stop-this-server "Goodbye" "text/html" ; + +: add-quot-responder ( responder -- responder ) + quit-responder "quit" add-responder ; + +: test-httpd ( responder -- ) + [ + main-responder set + + 0 >>insecure + f >>secure + dup start-server* + sockets>> first addr>> port>> + dup number>string "resource:temp/port-number" ascii set-file-contents + ] with-scope + "port" set ; + +[ ] [ + + add-quot-responder + "vocab:http/test" >>default + + test-httpd +] unit-test + +[ ] [ + "tools.deploy.test.5" shake-and-bake + run-temp-image +] unit-test + +: add-port ( url -- url' ) + >url clone "port" get >>port ; + +[ ] [ "http://localhost/quit" add-port http-get 2drop ] unit-test + +{ + "tools.deploy.test.6" + "tools.deploy.test.7" + "tools.deploy.test.9" + "tools.deploy.test.10" + "tools.deploy.test.11" + "tools.deploy.test.12" +} [ + [ ] swap [ + shake-and-bake + run-temp-image + ] curry unit-test +] each + +os windows? os macosx? or [ + [ ] [ "tools.deploy.test.8" shake-and-bake run-temp-image ] unit-test +] when + +os macosx? [ + [ ] [ "tools.deploy.test.14" shake-and-bake run-temp-image ] unit-test +] when + +[ { "a" "b" "c" } ] [ + "tools.deploy.test.15" shake-and-bake deploy-test-command + { "a" "b" "c" } append + ascii [ lines ] with-process-reader + rest +] unit-test + +[ ] [ "tools.deploy.test.16" shake-and-bake run-temp-image ] unit-test + +[ ] [ "tools.deploy.test.17" shake-and-bake run-temp-image ] unit-test + +[ t ] [ + "tools.deploy.test.18" shake-and-bake + deploy-test-command ascii [ readln ] with-process-reader + "test.image" temp-file = +] unit-test diff --git a/basis/tools/deploy/libraries/tags.txt b/basis/tools/deploy/libraries/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/tools/deploy/libraries/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/tools/deploy/libraries/unix/platforms.txt b/basis/tools/deploy/libraries/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/tools/deploy/libraries/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/tools/deploy/libraries/unix/tags.txt b/basis/tools/deploy/libraries/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/tools/deploy/libraries/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/tools/deploy/libraries/windows/platforms.txt b/basis/tools/deploy/libraries/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/tools/deploy/libraries/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/tools/deploy/macosx/platforms.txt b/basis/tools/deploy/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/tools/deploy/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/tools/deploy/macosx/tags.txt b/basis/tools/deploy/macosx/tags.txt index 660d511420..ef1aab0d0e 100644 --- a/basis/tools/deploy/macosx/tags.txt +++ b/basis/tools/deploy/macosx/tags.txt @@ -1,2 +1 @@ -unportable tools diff --git a/basis/tools/deploy/test/14/platforms.txt b/basis/tools/deploy/test/14/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/tools/deploy/test/14/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/tools/deploy/test/14/tags.txt b/basis/tools/deploy/test/14/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/tools/deploy/test/14/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/tools/deploy/unix/platforms.txt b/basis/tools/deploy/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/tools/deploy/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/tools/deploy/unix/tags.txt b/basis/tools/deploy/unix/tags.txt index 660d511420..ef1aab0d0e 100644 --- a/basis/tools/deploy/unix/tags.txt +++ b/basis/tools/deploy/unix/tags.txt @@ -1,2 +1 @@ -unportable tools diff --git a/basis/tools/deploy/windows/ico/ico.factor b/basis/tools/deploy/windows/ico/ico.factor index 8ea7af348d..46610c487d 100755 --- a/basis/tools/deploy/windows/ico/ico.factor +++ b/basis/tools/deploy/windows/ico/ico.factor @@ -1,72 +1,72 @@ -USING: accessors alien alien.c-types arrays classes.struct combinators -io.backend kernel locals math sequences specialized-arrays -tools.deploy.windows windows.kernel32 windows.types ; -IN: tools.deploy.windows.ico - -group-directory-entry ( ico i -- group ) - [ { - [ Width>> ] [ Height>> ] [ Colors>> ] [ Reserved>> ] - [ Planes>> ] [ BitsPerPixel>> ] [ ImageSize>> ] - } cleave ] [ 1 + ] bi* group-directory-entry >c-ptr ; inline - -: ico-icon ( directory-entry bytes -- subbytes ) - [ [ ImageOffset>> dup ] [ ImageSize>> + ] bi ] dip subseq ; inline - -:: ico-group-and-icons ( bytes -- group-bytes icon-bytes ) - bytes ico-header memory>struct :> header - - ico-header heap-size bytes - header ImageCount>> :> directory - - directory dup length iota [ ico>group-directory-entry ] { } 2map-as - :> group-directory - directory [ bytes ico-icon ] { } map-as :> icon-bytes - - header clone >c-ptr group-directory concat append - icon-bytes ; inline - -PRIVATE> - -:: embed-icon-resource ( exe ico-bytes id -- ) - exe normalize-path 1 BeginUpdateResource :> hUpdate - hUpdate [ - ico-bytes ico-group-and-icons :> ( group icons ) - hUpdate RT_GROUP_ICON id 0 group dup byte-length - UpdateResource drop - - icons [| icon i | - hUpdate RT_ICON i 1 + MAKEINTRESOURCE 0 icon dup byte-length - UpdateResource drop - ] each-index - - hUpdate 0 EndUpdateResource drop - ] when ; - +USING: accessors alien alien.c-types arrays classes.struct combinators +io.backend kernel locals math sequences specialized-arrays +tools.deploy.windows windows.kernel32 windows.types ; +IN: tools.deploy.windows.ico + +group-directory-entry ( ico i -- group ) + [ { + [ Width>> ] [ Height>> ] [ Colors>> ] [ Reserved>> ] + [ Planes>> ] [ BitsPerPixel>> ] [ ImageSize>> ] + } cleave ] [ 1 + ] bi* group-directory-entry >c-ptr ; inline + +: ico-icon ( directory-entry bytes -- subbytes ) + [ [ ImageOffset>> dup ] [ ImageSize>> + ] bi ] dip subseq ; inline + +:: ico-group-and-icons ( bytes -- group-bytes icon-bytes ) + bytes ico-header memory>struct :> header + + ico-header heap-size bytes + header ImageCount>> :> directory + + directory dup length iota [ ico>group-directory-entry ] { } 2map-as + :> group-directory + directory [ bytes ico-icon ] { } map-as :> icon-bytes + + header clone >c-ptr group-directory concat append + icon-bytes ; inline + +PRIVATE> + +:: embed-icon-resource ( exe ico-bytes id -- ) + exe normalize-path 1 BeginUpdateResource :> hUpdate + hUpdate [ + ico-bytes ico-group-and-icons :> ( group icons ) + hUpdate RT_GROUP_ICON id 0 group dup byte-length + UpdateResource drop + + icons [| icon i | + hUpdate RT_ICON i 1 + MAKEINTRESOURCE 0 icon dup byte-length + UpdateResource drop + ] each-index + + hUpdate 0 EndUpdateResource drop + ] when ; + diff --git a/basis/tools/deploy/windows/ico/platforms.txt b/basis/tools/deploy/windows/ico/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/tools/deploy/windows/ico/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/tools/deploy/windows/ico/tags.txt b/basis/tools/deploy/windows/ico/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/tools/deploy/windows/ico/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/tools/deploy/windows/platforms.txt b/basis/tools/deploy/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/tools/deploy/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/tools/deploy/windows/tags.txt b/basis/tools/deploy/windows/tags.txt index 660d511420..ef1aab0d0e 100755 --- a/basis/tools/deploy/windows/tags.txt +++ b/basis/tools/deploy/windows/tags.txt @@ -1,2 +1 @@ -unportable tools diff --git a/basis/tools/disassembler/gdb/tags.txt b/basis/tools/disassembler/gdb/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/tools/disassembler/gdb/tags.txt +++ b/basis/tools/disassembler/gdb/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/tools/disassembler/udis/tags.txt b/basis/tools/disassembler/udis/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/tools/disassembler/udis/tags.txt +++ b/basis/tools/disassembler/udis/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/tools/files/tags.txt b/basis/tools/files/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/tools/files/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/tools/files/unix/platforms.txt b/basis/tools/files/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/tools/files/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/tools/files/unix/tags.txt b/basis/tools/files/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/tools/files/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/tools/files/windows/platforms.txt b/basis/tools/files/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/tools/files/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/tools/files/windows/tags.txt b/basis/tools/files/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/tools/files/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/tools/scaffold/scaffold.factor b/basis/tools/scaffold/scaffold.factor index 936d388b01..a8565fccf9 100644 --- a/basis/tools/scaffold/scaffold.factor +++ b/basis/tools/scaffold/scaffold.factor @@ -2,11 +2,11 @@ ! See http://factorcode.org/license.txt for BSD license. USING: assocs io.files io.pathnames io.directories io.encodings.utf8 hashtables kernel namespaces sequences -vocabs.loader io combinators calendar accessors math.parser -io.streams.string ui.tools.operations quotations strings arrays -prettyprint words vocabs sorting sets classes math alien urls -splitting ascii combinators.short-circuit alarms words.symbol -system summary ; +vocabs.loader vocabs.metadata io combinators calendar accessors +math.parser io.streams.string ui.tools.operations quotations +strings arrays prettyprint words vocabs sorting sets classes +math alien urls splitting ascii combinators.short-circuit alarms +words.symbol system summary ; IN: tools.scaffold SYMBOL: developer-name @@ -15,7 +15,6 @@ SYMBOL: using ERROR: not-a-vocab-root string ; ERROR: vocab-name-contains-separator path ; ERROR: vocab-name-contains-dot path ; -ERROR: no-vocab vocab ; ERROR: bad-developer-name name ; M: bad-developer-name summary @@ -40,9 +39,6 @@ M: bad-developer-name summary : check-root ( string -- string ) dup vocab-root? [ not-a-vocab-root ] unless ; -: check-vocab ( vocab -- vocab ) - dup find-vocab-root [ no-vocab ] unless ; - : check-vocab-root/vocab ( vocab-root string -- vocab-root string ) [ check-root ] [ check-vocab-name ] bi* ; diff --git a/basis/tools/scaffold/windows/platforms.txt b/basis/tools/scaffold/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/tools/scaffold/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/tools/scaffold/windows/tags.txt b/basis/tools/scaffold/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/tools/scaffold/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/tuple-arrays/tuple-arrays-docs.factor b/basis/tuple-arrays/tuple-arrays-docs.factor index 5e70e15aa7..72a5ae4df3 100644 --- a/basis/tuple-arrays/tuple-arrays-docs.factor +++ b/basis/tuple-arrays/tuple-arrays-docs.factor @@ -3,20 +3,24 @@ USING: help.markup help.syntax sequences ; HELP: TUPLE-ARRAY: { $syntax "TUPLE-ARRAY: class" } +{ $values { "class" "a final tuple class" } } { $description "Generates a new data type in the current vocabulary named " { $snippet { $emphasis "class" } "-array" } " for holding instances of " { $snippet "class" } ", which must be a tuple class word. Together with the class itself, this also generates words named " { $snippet "<" { $emphasis "class" } "-array>" } " and " { $snippet ">" { $emphasis "class" } "-array" } ", for creating new instances of this tuple array type." } ; ARTICLE: "tuple-arrays" "Tuple arrays" -"The " { $vocab-link "tuple-arrays" } " vocabulary implements space-efficient unboxed tuple arrays. Whereas an ordinary array of tuples would consist of pointers to heap-allocated objects, a tuple array stores its elements inline. Calling " { $link nth } " copies an element into a new tuple, and calling " { $link set-nth } " copies an existing tuple's slots into an array." +"The " { $vocab-link "tuple-arrays" } " vocabulary implements space-efficient unboxed tuple arrays. Whereas an ordinary array of tuples would consist of references to heap-allocated objects, a tuple array stores its elements as values." $nl -"Since value semantics differ from reference semantics, it is best to use tuple arrays with tuples where all slots are declared " { $link read-only } "." +"Calling " { $link nth } " copies an element into a new tuple, and calling " { $link set-nth } " copies an existing tuple's slots into an array." +$nl +"Since value semantics are incompatible with inheritance, the base type of a tuple array must be declared " { $link POSTPONE: final } ". A best practice that is not enforced is to have all slots in the tuple declared " { $link read-only } "." +$nl +"Tuple arrays do not get updated if tuples are redefined to add or remove slots, so caution should be exercised when doing interactive development on code that uses tuple arrays." $nl -"Tuple arrays should not be used with inheritance; storing an instance of a subclass in a tuple array will slice off the subclass slots, and getting the same value out again will yield an instance of the superclass. Also, tuple arrays do not get updated if tuples are redefined to add or remove slots, so caution should be exercised when doing interactive development on code that uses tuple arrays." { $subsections POSTPONE: TUPLE-ARRAY: } "An example:" { $example "USE: tuple-arrays" "IN: scratchpad" - "TUPLE: point x y ;" + "TUPLE: point x y ; final" "TUPLE-ARRAY: point" "{ T{ point f 1 2 } T{ point f 1 3 } T{ point f 2 3 } } >point-array first short." "T{ point f 1 2 }" diff --git a/basis/tuple-arrays/tuple-arrays-tests.factor b/basis/tuple-arrays/tuple-arrays-tests.factor index 2eeae20aa1..0fbf0eeaa0 100644 --- a/basis/tuple-arrays/tuple-arrays-tests.factor +++ b/basis/tuple-arrays/tuple-arrays-tests.factor @@ -1,9 +1,9 @@ USING: tuple-arrays sequences tools.test namespaces kernel -math accessors ; +math accessors classes.tuple eval ; IN: tuple-arrays.tests SYMBOL: mat -TUPLE: foo bar ; +TUPLE: foo bar ; final C: foo TUPLE-ARRAY: foo @@ -18,15 +18,27 @@ TUPLE-ARRAY: foo [ T{ foo } ] [ mat get first ] unit-test [ T{ foo f 1 } ] [ T{ foo f 1 } 0 mat get [ set-nth ] keep first ] unit-test -TUPLE: baz { bing integer } bong ; +TUPLE: baz { bing integer } bong ; final TUPLE-ARRAY: baz [ 0 ] [ 1 first bing>> ] unit-test [ f ] [ 1 first bong>> ] unit-test -TUPLE: broken x ; +TUPLE: broken x ; final : broken ( -- ) ; TUPLE-ARRAY: broken -[ 100 ] [ 100 length ] unit-test \ No newline at end of file +[ 100 ] [ 100 length ] unit-test + +! Can't define a tuple array for a non-tuple class +[ "IN: tuple-arrays.tests USING: tuple-arrays words ; TUPLE-ARRAY: word" eval( -- ) ] +[ error>> not-a-tuple? ] +must-fail-with + +! Can't define a tuple array for a non-final class +TUPLE: non-final x ; + +[ "IN: tuple-arrays.tests USE: tuple-arrays TUPLE-ARRAY: non-final" eval( -- ) ] +[ error>> not-final? ] +must-fail-with \ No newline at end of file diff --git a/basis/tuple-arrays/tuple-arrays.factor b/basis/tuple-arrays/tuple-arrays.factor index aea51f7820..1a3091c1e2 100644 --- a/basis/tuple-arrays/tuple-arrays.factor +++ b/basis/tuple-arrays/tuple-arrays.factor @@ -1,11 +1,13 @@ -! Copyright (C) 2009 Slava Pestov. +! Copyright (C) 2009, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays combinators.smart fry functors kernel kernel.private macros sequences combinators sequences.private -stack-checker parser math classes.tuple.private ; +stack-checker parser math classes.tuple classes.tuple.private ; FROM: inverse => undo ; IN: tuple-arrays +ERROR: not-final class ; + ] ; @@ -29,6 +31,13 @@ MACRO: write-tuple ( class -- quot ) [ tuple-arity iota [ '[ [ _ ] dip set-nth-unsafe ] ] map '[ _ cleave ] ] bi '[ _ dip @ ] ; +: check-final ( class -- ) + { + { [ dup tuple-class? not ] [ not-a-tuple ] } + { [ dup final-class? not ] [ not-final ] } + [ drop ] + } cond ; + PRIVATE> FUNCTOR: define-tuple-array ( CLASS -- ) @@ -43,6 +52,8 @@ CLASS-array? IS ${CLASS-array}? WHERE +CLASS check-final + TUPLE: CLASS-array { seq array read-only } { n array-capacity read-only } diff --git a/basis/typed/typed-docs.factor b/basis/typed/typed-docs.factor index 0b6838379c..c6f80a48bc 100644 --- a/basis/typed/typed-docs.factor +++ b/basis/typed/typed-docs.factor @@ -58,10 +58,18 @@ HELP: output-mismatch-error ARTICLE: "typed" "Strongly-typed word definitions" "The Factor compiler supports advanced compiler optimizations that take advantage of the type information it can glean from source code. The " { $vocab-link "typed" } " vocabulary provides syntax that allows words to provide checked type information about their inputs and outputs and improve the performance of compiled code." +$nl +"Parameters and return values of typed words where the type is declared to be a " { $link POSTPONE: final } " tuple class with all slots " { $link read-only } " are passed by value." { $subsections POSTPONE: TYPED: POSTPONE: TYPED:: +} +"Defining typed words at run time:" +{ $subsections define-typed +} +"Errors:" +{ $subsections input-mismatch-error output-mismatch-error } ; diff --git a/basis/typed/typed-tests.factor b/basis/typed/typed-tests.factor index f7b853cff7..7f984ccaf2 100644 --- a/basis/typed/typed-tests.factor +++ b/basis/typed/typed-tests.factor @@ -14,8 +14,8 @@ TYPED: fix+ ( a: fixnum b: fixnum -- c: fixnum ) most-positive-fixnum neg 1 - 1quotation [ most-positive-fixnum 1 fix+ ] unit-test -TUPLE: tweedle-dee ; -TUPLE: tweedle-dum ; +TUPLE: tweedle-dee ; final +TUPLE: tweedle-dum ; final TYPED: dee ( x: tweedle-dee -- y ) drop \ tweedle-dee ; @@ -39,11 +39,11 @@ TYPED:: f+locals ( a: float b: float -- c: float ) TUPLE: unboxable { x fixnum read-only } - { y fixnum read-only } ; + { y fixnum read-only } ; final TUPLE: unboxable2 { u unboxable read-only } - { xy fixnum read-only } ; + { xy fixnum read-only } ; final TYPED: unboxy ( in: unboxable -- out: unboxable2 ) dup [ x>> ] [ y>> ] bi - unboxable2 boa ; @@ -63,7 +63,7 @@ IN: typed.tests TUPLE: unboxable { x fixnum read-only } { y fixnum read-only } - { z float read-only } ; + { z float read-only } ; final """ eval( -- ) """ @@ -79,13 +79,15 @@ TYPED: no-inputs ( -- out: integer ) [ 1 ] [ no-inputs ] unit-test TUPLE: unboxable3 - { x read-only } ; + { x read-only } ; final TYPED: no-inputs-unboxable-output ( -- out: unboxable3 ) T{ unboxable3 } ; [ T{ unboxable3 } ] [ no-inputs-unboxable-output ] unit-test +[ f ] [ no-inputs-unboxable-output no-inputs-unboxable-output eq? ] unit-test + SYMBOL: buh TYPED: no-outputs ( x: integer -- ) @@ -97,3 +99,26 @@ TYPED: no-outputs-unboxable-input ( x: unboxable3 -- ) buh set ; [ T{ unboxable3 } ] [ T{ unboxable3 } no-outputs-unboxable-input buh get ] unit-test + +[ f ] [ + T{ unboxable3 } no-outputs-unboxable-input buh get + T{ unboxable3 } no-outputs-unboxable-input buh get + eq? +] unit-test + +! Reported by littledan +TUPLE: superclass { x read-only } ; +TUPLE: subclass < superclass { y read-only } ; final + +TYPED: unbox-fail ( a: superclass -- ? ) subclass? ; + +[ t ] [ subclass new unbox-fail ] unit-test + +! If a final class becomes non-final, typed words need to be recompiled +TYPED: recompile-fail ( a: subclass -- ? ) buh get eq? ; + +[ f ] [ subclass new [ buh set ] [ recompile-fail ] bi ] unit-test + +[ ] [ "IN: typed.tests TUPLE: subclass < superclass { y read-only } ;" eval( -- ) ] unit-test + +[ t ] [ subclass new [ buh set ] [ recompile-fail ] bi ] unit-test diff --git a/basis/typed/typed.factor b/basis/typed/typed.factor index e71196e3ee..8a85ca1afb 100644 --- a/basis/typed/typed.factor +++ b/basis/typed/typed.factor @@ -20,6 +20,7 @@ PREDICATE: typed-word < word "typed-word" word-prop ; { [ all-slots empty? not ] [ immutable-tuple-class? ] + [ final-class? ] } 1&& ; ! typed inputs @@ -30,9 +31,14 @@ PREDICATE: typed-word < word "typed-word" word-prop ; : input-mismatch-quot ( word types -- quot ) [ input-mismatch-error ] 2curry ; +: depends-on-unboxing ( class -- ) + [ dup tuple-layout depends-on-tuple-layout ] + [ depends-on-final ] + bi ; + : (unboxer) ( type -- quot ) dup unboxable-tuple-class? [ - dup dup tuple-layout depends-on-tuple-layout + dup depends-on-unboxing all-slots [ [ name>> reader-word 1quotation ] [ class>> (unboxer) ] bi compose @@ -52,7 +58,7 @@ PREDICATE: typed-word < word "typed-word" word-prop ; : (unboxed-types) ( type -- types ) dup unboxable-tuple-class? [ - dup dup tuple-layout depends-on-tuple-layout + dup depends-on-unboxing all-slots [ class>> (unboxed-types) ] map concat ] [ 1array ] if ; @@ -81,7 +87,7 @@ DEFER: make-boxer : boxer ( type -- quot ) dup unboxable-tuple-class? [ - dup dup tuple-layout depends-on-tuple-layout + dup depends-on-unboxing [ all-slots [ class>> ] map make-boxer ] [ [ boa ] curry ] bi compose diff --git a/basis/ui/backend/cocoa/platforms.txt b/basis/ui/backend/cocoa/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/ui/backend/cocoa/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/ui/backend/cocoa/tags.txt b/basis/ui/backend/cocoa/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/ui/backend/cocoa/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/ui/backend/cocoa/tools/platforms.txt b/basis/ui/backend/cocoa/tools/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/ui/backend/cocoa/tools/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/ui/backend/cocoa/tools/tags.txt b/basis/ui/backend/cocoa/tools/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/ui/backend/cocoa/tools/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/ui/backend/cocoa/views/platforms.txt b/basis/ui/backend/cocoa/views/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/ui/backend/cocoa/views/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/ui/backend/cocoa/views/tags.txt b/basis/ui/backend/cocoa/views/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/ui/backend/cocoa/views/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/ui/backend/windows/platforms.txt b/basis/ui/backend/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/ui/backend/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/ui/backend/windows/tags.txt b/basis/ui/backend/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/ui/backend/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/ui/backend/x11/tags.txt b/basis/ui/backend/x11/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/ui/backend/x11/tags.txt +++ b/basis/ui/backend/x11/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/ui/backend/x11/x11.factor b/basis/ui/backend/x11/x11.factor index 4c977f17a4..673dd8e9c3 100644 --- a/basis/ui/backend/x11/x11.factor +++ b/basis/ui/backend/x11/x11.factor @@ -1,14 +1,13 @@ ! Copyright (C) 2005, 2009 Eduardo Cavazos and Slava Pestov ! See http://factorcode.org/license.txt for BSD license. -USING: accessors alien.c-types arrays ascii assocs colors -classes.struct combinators io.encodings.ascii -io.encodings.string io.encodings.utf8 kernel literals math -namespaces sequences strings ui ui.backend ui.clipboards -ui.event-loop ui.gadgets ui.gadgets.private ui.gadgets.worlds -ui.gestures ui.pixel-formats ui.pixel-formats.private -ui.private x11 x11.clipboard x11.constants x11.events x11.glx -x11.io x11.windows x11.xim x11.xlib environment command-line -combinators.short-circuit ; +USING: accessors alien.c-types ascii assocs classes.struct combinators +combinators.short-circuit command-line environment io.encodings.ascii +io.encodings.string io.encodings.utf8 kernel literals locals math +namespaces sequences specialized-arrays.instances.alien.c-types.uchar +strings ui ui.backend ui.clipboards ui.event-loop ui.gadgets +ui.gadgets.private ui.gadgets.worlds ui.gestures ui.pixel-formats +ui.pixel-formats.private ui.private x11 x11.clipboard x11.constants +x11.events x11.glx x11.io x11.windows x11.xim x11.xlib ; IN: ui.backend.x11 SINGLETON: x11-ui-backend @@ -328,6 +327,22 @@ M: x11-ui-backend (with-ui) ( quot -- ) M: x11-ui-backend beep ( -- ) dpy get 100 XBell drop ; +: black ( -- xcolor ) 0 0 0 0 0 0 XColor ; inline + +M:: x11-ui-backend (grab-input) ( handle -- ) + handle window>> :> wnd + dpy get :> dpy + dpy wnd uchar-array{ 0 0 0 0 0 0 0 0 } 8 8 XCreateBitmapFromData :> pixmap + dpy pixmap dup black dup 0 0 XCreatePixmapCursor :> cursor + + dpy wnd 1 NoEventMask GrabModeAsync dup wnd cursor CurrentTime XGrabPointer drop + + dpy cursor XFreeCursor drop + dpy pixmap XFreePixmap drop ; + +M: x11-ui-backend (ungrab-input) + drop dpy get CurrentTime XUngrabPointer drop ; + x11-ui-backend ui-backend set-global [ "DISPLAY" os-env "ui.tools" "listener" ? ] diff --git a/basis/ui/gadgets/editors/editors.factor b/basis/ui/gadgets/editors/editors.factor index f42fdf4616..da60d66aff 100644 --- a/basis/ui/gadgets/editors/editors.factor +++ b/basis/ui/gadgets/editors/editors.factor @@ -365,7 +365,6 @@ editor "editing" f { { undo-action com-undo } { redo-action com-redo } { T{ key-down f f "DELETE" } delete-next-character } - { T{ key-down f { S+ } "DELETE" } delete-next-character } { T{ key-down f f "BACKSPACE" } delete-previous-character } { T{ key-down f { S+ } "BACKSPACE" } delete-previous-character } { T{ key-down f { C+ } "DELETE" } delete-previous-word } diff --git a/basis/ui/gadgets/worlds/worlds-docs.factor b/basis/ui/gadgets/worlds/worlds-docs.factor index 83d042db43..0d7e40a789 100644 --- a/basis/ui/gadgets/worlds/worlds-docs.factor +++ b/basis/ui/gadgets/worlds/worlds-docs.factor @@ -33,7 +33,7 @@ HELP: set-gl-context { $description "Selects an OpenGL context to be the implicit destination for subsequent GL rendering calls. This word is called automatically by the UI before drawing a " { $link world } "." } ; HELP: window-resource -{ $values { "resource" disposable } { "resource" disposable } } +{ $values { "resource" disposable } } { $description "Marks " { $snippet "resource" } " to be destroyed with " { $link dispose } " when the window with the currently active OpenGL context (set by " { $link set-gl-context } ") is closed. " { $snippet "resource" } " is left unmodified at the top of the stack." } ; HELP: flush-gl-context diff --git a/basis/ui/gadgets/worlds/worlds.factor b/basis/ui/gadgets/worlds/worlds.factor index 7e54b823e8..526fc77c57 100644 --- a/basis/ui/gadgets/worlds/worlds.factor +++ b/basis/ui/gadgets/worlds/worlds.factor @@ -230,6 +230,7 @@ action-gestures [ bi* ] H{ } assoc-map-as H{ + { T{ key-down f { S+ } "DELETE" } [ \ cut-action send-action ] } { T{ button-down f { C+ } 1 } [ drop T{ button-down f f 3 } button-gesture ] } { T{ button-down f { A+ } 1 } [ drop T{ button-down f f 2 } button-gesture ] } { T{ button-down f { M+ } 1 } [ drop T{ button-down f f 2 } button-gesture ] } diff --git a/basis/ui/text/core-text/platforms.txt b/basis/ui/text/core-text/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/ui/text/core-text/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/ui/text/core-text/tags.txt b/basis/ui/text/core-text/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/ui/text/core-text/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/ui/text/pango/tags.txt b/basis/ui/text/pango/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/ui/text/pango/tags.txt +++ b/basis/ui/text/pango/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/ui/text/uniscribe/platforms.txt b/basis/ui/text/uniscribe/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/ui/text/uniscribe/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/ui/text/uniscribe/tags.txt b/basis/ui/text/uniscribe/tags.txt deleted file mode 100755 index 6abe115b12..0000000000 --- a/basis/ui/text/uniscribe/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/ui/tools/listener/listener-docs.factor b/basis/ui/tools/listener/listener-docs.factor index b762e036e6..966ac37d30 100644 --- a/basis/ui/tools/listener/listener-docs.factor +++ b/basis/ui/tools/listener/listener-docs.factor @@ -9,7 +9,7 @@ HELP: interactor $nl "Interactors are created by calling " { $link } "." $nl -"Interactors implement the " { $link stream-readln } ", " { $link stream-read } " and " { $link read-quot } " generic words." } ; +"Interactors implement the " { $link stream-readln } ", " { $link stream-read } " and " { $link stream-read-quot } " generic words." } ; ARTICLE: "ui-listener" "UI listener" "The graphical listener adds input history and word and vocabulary completion. See " { $link "listener" } " for general information on the listener." diff --git a/basis/unix/debugger/platforms.txt b/basis/unix/debugger/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/debugger/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/debugger/tags.txt b/basis/unix/debugger/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/debugger/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/ffi/bsd/freebsd/platforms.txt b/basis/unix/ffi/bsd/freebsd/platforms.txt new file mode 100644 index 0000000000..edfe86017d --- /dev/null +++ b/basis/unix/ffi/bsd/freebsd/platforms.txt @@ -0,0 +1 @@ +freebsd diff --git a/basis/unix/ffi/bsd/freebsd/tags.txt b/basis/unix/ffi/bsd/freebsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/ffi/bsd/freebsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/ffi/bsd/macosx/platforms.txt b/basis/unix/ffi/bsd/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/unix/ffi/bsd/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/unix/ffi/bsd/macosx/tags.txt b/basis/unix/ffi/bsd/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/ffi/bsd/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/ffi/bsd/netbsd/platforms.txt b/basis/unix/ffi/bsd/netbsd/platforms.txt new file mode 100644 index 0000000000..dccfe71042 --- /dev/null +++ b/basis/unix/ffi/bsd/netbsd/platforms.txt @@ -0,0 +1 @@ +netbsd diff --git a/basis/unix/ffi/bsd/netbsd/tags.txt b/basis/unix/ffi/bsd/netbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/ffi/bsd/netbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/ffi/bsd/openbsd/platforms.txt b/basis/unix/ffi/bsd/openbsd/platforms.txt new file mode 100644 index 0000000000..389b028aca --- /dev/null +++ b/basis/unix/ffi/bsd/openbsd/platforms.txt @@ -0,0 +1 @@ +openbsd diff --git a/basis/unix/ffi/bsd/openbsd/tags.txt b/basis/unix/ffi/bsd/openbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/ffi/bsd/openbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/ffi/bsd/platforms.txt b/basis/unix/ffi/bsd/platforms.txt new file mode 100644 index 0000000000..df796f15d4 --- /dev/null +++ b/basis/unix/ffi/bsd/platforms.txt @@ -0,0 +1 @@ +bsd diff --git a/basis/unix/ffi/bsd/tags.txt b/basis/unix/ffi/bsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/ffi/bsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/ffi/linux/platforms.txt b/basis/unix/ffi/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/unix/ffi/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/unix/ffi/linux/tags.txt b/basis/unix/ffi/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/ffi/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/ffi/platforms.txt b/basis/unix/ffi/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/ffi/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/ffi/solaris/platforms.txt b/basis/unix/ffi/solaris/platforms.txt new file mode 100644 index 0000000000..613a93b535 --- /dev/null +++ b/basis/unix/ffi/solaris/platforms.txt @@ -0,0 +1 @@ +solaris diff --git a/basis/unix/ffi/solaris/tags.txt b/basis/unix/ffi/solaris/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/ffi/solaris/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/ffi/tags.txt b/basis/unix/ffi/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/ffi/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/getfsstat/freebsd/platforms.txt b/basis/unix/getfsstat/freebsd/platforms.txt new file mode 100644 index 0000000000..edfe86017d --- /dev/null +++ b/basis/unix/getfsstat/freebsd/platforms.txt @@ -0,0 +1 @@ +freebsd diff --git a/basis/unix/getfsstat/freebsd/tags.txt b/basis/unix/getfsstat/freebsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/getfsstat/freebsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/getfsstat/macosx/platforms.txt b/basis/unix/getfsstat/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/unix/getfsstat/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/unix/getfsstat/macosx/tags.txt b/basis/unix/getfsstat/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/getfsstat/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/getfsstat/netbsd/platforms.txt b/basis/unix/getfsstat/netbsd/platforms.txt new file mode 100644 index 0000000000..dccfe71042 --- /dev/null +++ b/basis/unix/getfsstat/netbsd/platforms.txt @@ -0,0 +1 @@ +netbsd diff --git a/basis/unix/getfsstat/netbsd/tags.txt b/basis/unix/getfsstat/netbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/getfsstat/netbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/getfsstat/openbsd/platforms.txt b/basis/unix/getfsstat/openbsd/platforms.txt new file mode 100644 index 0000000000..389b028aca --- /dev/null +++ b/basis/unix/getfsstat/openbsd/platforms.txt @@ -0,0 +1 @@ +openbsd diff --git a/basis/unix/getfsstat/openbsd/tags.txt b/basis/unix/getfsstat/openbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/getfsstat/openbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/groups/platforms.txt b/basis/unix/groups/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/groups/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/groups/tags.txt b/basis/unix/groups/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/groups/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/kqueue/freebsd/platforms.txt b/basis/unix/kqueue/freebsd/platforms.txt new file mode 100644 index 0000000000..edfe86017d --- /dev/null +++ b/basis/unix/kqueue/freebsd/platforms.txt @@ -0,0 +1 @@ +freebsd diff --git a/basis/unix/kqueue/freebsd/tags.txt b/basis/unix/kqueue/freebsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/kqueue/freebsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/kqueue/macosx/platforms.txt b/basis/unix/kqueue/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/unix/kqueue/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/unix/kqueue/macosx/tags.txt b/basis/unix/kqueue/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/kqueue/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/kqueue/netbsd/platforms.txt b/basis/unix/kqueue/netbsd/platforms.txt new file mode 100644 index 0000000000..dccfe71042 --- /dev/null +++ b/basis/unix/kqueue/netbsd/platforms.txt @@ -0,0 +1 @@ +netbsd diff --git a/basis/unix/kqueue/netbsd/tags.txt b/basis/unix/kqueue/netbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/kqueue/netbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/kqueue/openbsd/platforms.txt b/basis/unix/kqueue/openbsd/platforms.txt new file mode 100644 index 0000000000..389b028aca --- /dev/null +++ b/basis/unix/kqueue/openbsd/platforms.txt @@ -0,0 +1 @@ +openbsd diff --git a/basis/unix/kqueue/openbsd/tags.txt b/basis/unix/kqueue/openbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/kqueue/openbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/kqueue/platforms.txt b/basis/unix/kqueue/platforms.txt new file mode 100644 index 0000000000..df796f15d4 --- /dev/null +++ b/basis/unix/kqueue/platforms.txt @@ -0,0 +1 @@ +bsd diff --git a/basis/unix/kqueue/tags.txt b/basis/unix/kqueue/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/kqueue/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/linux/epoll/platforms.txt b/basis/unix/linux/epoll/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/unix/linux/epoll/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/unix/linux/epoll/tags.txt b/basis/unix/linux/epoll/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/linux/epoll/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/linux/inotify/platforms.txt b/basis/unix/linux/inotify/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/unix/linux/inotify/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/unix/linux/inotify/tags.txt b/basis/unix/linux/inotify/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/linux/inotify/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/linux/platforms.txt b/basis/unix/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/unix/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/unix/linux/tags.txt b/basis/unix/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/platforms.txt b/basis/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/process/platforms.txt b/basis/unix/process/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/process/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/process/tags.txt b/basis/unix/process/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/process/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/stat/freebsd/platforms.txt b/basis/unix/stat/freebsd/platforms.txt new file mode 100644 index 0000000000..edfe86017d --- /dev/null +++ b/basis/unix/stat/freebsd/platforms.txt @@ -0,0 +1 @@ +freebsd diff --git a/basis/unix/stat/freebsd/tags.txt b/basis/unix/stat/freebsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/stat/freebsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/stat/linux/32/tags.txt b/basis/unix/stat/linux/32/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/unix/stat/linux/32/tags.txt +++ b/basis/unix/stat/linux/32/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/unix/stat/linux/64/tags.txt b/basis/unix/stat/linux/64/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/unix/stat/linux/64/tags.txt +++ b/basis/unix/stat/linux/64/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/unix/stat/linux/platforms.txt b/basis/unix/stat/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/unix/stat/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/unix/stat/linux/tags.txt b/basis/unix/stat/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/stat/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/stat/macosx/platforms.txt b/basis/unix/stat/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/unix/stat/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/unix/stat/macosx/tags.txt b/basis/unix/stat/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/stat/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/stat/netbsd/32/tags.txt b/basis/unix/stat/netbsd/32/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/unix/stat/netbsd/32/tags.txt +++ b/basis/unix/stat/netbsd/32/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/unix/stat/netbsd/64/tags.txt b/basis/unix/stat/netbsd/64/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/unix/stat/netbsd/64/tags.txt +++ b/basis/unix/stat/netbsd/64/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/unix/stat/netbsd/platforms.txt b/basis/unix/stat/netbsd/platforms.txt new file mode 100644 index 0000000000..dccfe71042 --- /dev/null +++ b/basis/unix/stat/netbsd/platforms.txt @@ -0,0 +1 @@ +netbsd diff --git a/basis/unix/stat/netbsd/tags.txt b/basis/unix/stat/netbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/stat/netbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/stat/openbsd/platforms.txt b/basis/unix/stat/openbsd/platforms.txt new file mode 100644 index 0000000000..389b028aca --- /dev/null +++ b/basis/unix/stat/openbsd/platforms.txt @@ -0,0 +1 @@ +openbsd diff --git a/basis/unix/stat/openbsd/tags.txt b/basis/unix/stat/openbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/stat/openbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/stat/platforms.txt b/basis/unix/stat/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/stat/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/stat/tags.txt b/basis/unix/stat/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/stat/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/statfs/freebsd/platforms.txt b/basis/unix/statfs/freebsd/platforms.txt new file mode 100644 index 0000000000..edfe86017d --- /dev/null +++ b/basis/unix/statfs/freebsd/platforms.txt @@ -0,0 +1 @@ +freebsd diff --git a/basis/unix/statfs/freebsd/tags.txt b/basis/unix/statfs/freebsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/statfs/freebsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/statfs/linux/platforms.txt b/basis/unix/statfs/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/unix/statfs/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/unix/statfs/linux/tags.txt b/basis/unix/statfs/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/statfs/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/statfs/macosx/platforms.txt b/basis/unix/statfs/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/unix/statfs/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/unix/statfs/macosx/tags.txt b/basis/unix/statfs/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/statfs/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/statfs/openbsd/platforms.txt b/basis/unix/statfs/openbsd/platforms.txt new file mode 100644 index 0000000000..389b028aca --- /dev/null +++ b/basis/unix/statfs/openbsd/platforms.txt @@ -0,0 +1 @@ +openbsd diff --git a/basis/unix/statfs/openbsd/tags.txt b/basis/unix/statfs/openbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/statfs/openbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/statvfs/freebsd/platforms.txt b/basis/unix/statvfs/freebsd/platforms.txt new file mode 100644 index 0000000000..edfe86017d --- /dev/null +++ b/basis/unix/statvfs/freebsd/platforms.txt @@ -0,0 +1 @@ +freebsd diff --git a/basis/unix/statvfs/freebsd/tags.txt b/basis/unix/statvfs/freebsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/statvfs/freebsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/statvfs/linux/platforms.txt b/basis/unix/statvfs/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/unix/statvfs/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/unix/statvfs/linux/tags.txt b/basis/unix/statvfs/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/statvfs/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/statvfs/macosx/platforms.txt b/basis/unix/statvfs/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/unix/statvfs/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/unix/statvfs/macosx/tags.txt b/basis/unix/statvfs/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/statvfs/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/statvfs/netbsd/platforms.txt b/basis/unix/statvfs/netbsd/platforms.txt new file mode 100644 index 0000000000..dccfe71042 --- /dev/null +++ b/basis/unix/statvfs/netbsd/platforms.txt @@ -0,0 +1 @@ +netbsd diff --git a/basis/unix/statvfs/netbsd/tags.txt b/basis/unix/statvfs/netbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/statvfs/netbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/statvfs/openbsd/platforms.txt b/basis/unix/statvfs/openbsd/platforms.txt new file mode 100644 index 0000000000..389b028aca --- /dev/null +++ b/basis/unix/statvfs/openbsd/platforms.txt @@ -0,0 +1 @@ +openbsd diff --git a/basis/unix/statvfs/openbsd/tags.txt b/basis/unix/statvfs/openbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/statvfs/openbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/statvfs/platforms.txt b/basis/unix/statvfs/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/statvfs/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/statvfs/tags.txt b/basis/unix/statvfs/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/statvfs/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/tags.txt b/basis/unix/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/unix/tags.txt +++ b/basis/unix/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/unix/time/platforms.txt b/basis/unix/time/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/time/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/time/tags.txt b/basis/unix/time/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/time/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/types/freebsd/platforms.txt b/basis/unix/types/freebsd/platforms.txt new file mode 100644 index 0000000000..edfe86017d --- /dev/null +++ b/basis/unix/types/freebsd/platforms.txt @@ -0,0 +1 @@ +freebsd diff --git a/basis/unix/types/freebsd/tags.txt b/basis/unix/types/freebsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/types/freebsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/types/linux/platforms.txt b/basis/unix/types/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/basis/unix/types/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/basis/unix/types/linux/tags.txt b/basis/unix/types/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/types/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/types/macosx/platforms.txt b/basis/unix/types/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/unix/types/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/unix/types/macosx/tags.txt b/basis/unix/types/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/types/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/types/netbsd/32/tags.txt b/basis/unix/types/netbsd/32/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/unix/types/netbsd/32/tags.txt +++ b/basis/unix/types/netbsd/32/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/unix/types/netbsd/64/tags.txt b/basis/unix/types/netbsd/64/tags.txt index 6bf68304bb..5d77766703 100644 --- a/basis/unix/types/netbsd/64/tags.txt +++ b/basis/unix/types/netbsd/64/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/basis/unix/types/netbsd/platforms.txt b/basis/unix/types/netbsd/platforms.txt new file mode 100644 index 0000000000..dccfe71042 --- /dev/null +++ b/basis/unix/types/netbsd/platforms.txt @@ -0,0 +1 @@ +netbsd diff --git a/basis/unix/types/netbsd/tags.txt b/basis/unix/types/netbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/types/netbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/types/openbsd/platforms.txt b/basis/unix/types/openbsd/platforms.txt new file mode 100644 index 0000000000..389b028aca --- /dev/null +++ b/basis/unix/types/openbsd/platforms.txt @@ -0,0 +1 @@ +openbsd diff --git a/basis/unix/types/openbsd/tags.txt b/basis/unix/types/openbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/types/openbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/types/platforms.txt b/basis/unix/types/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/types/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/types/tags.txt b/basis/unix/types/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/types/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/users/bsd/platforms.txt b/basis/unix/users/bsd/platforms.txt new file mode 100644 index 0000000000..df796f15d4 --- /dev/null +++ b/basis/unix/users/bsd/platforms.txt @@ -0,0 +1 @@ +bsd diff --git a/basis/unix/users/bsd/tags.txt b/basis/unix/users/bsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/users/bsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/users/platforms.txt b/basis/unix/users/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/users/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/users/tags.txt b/basis/unix/users/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/users/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/utilities/platforms.txt b/basis/unix/utilities/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/utilities/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/utilities/tags.txt b/basis/unix/utilities/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/utilities/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/utmpx/macosx/macosx.factor b/basis/unix/utmpx/macosx/macosx.factor index 92a0d9e3a4..faae29ffa4 100644 --- a/basis/unix/utmpx/macosx/macosx.factor +++ b/basis/unix/utmpx/macosx/macosx.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax unix.bsd.macosx ; +USING: alien.syntax unix.ffi.bsd.macosx ; IN: unix.utmpx.macosx ! empty diff --git a/basis/unix/utmpx/macosx/platforms.txt b/basis/unix/utmpx/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/unix/utmpx/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/unix/utmpx/macosx/tags.txt b/basis/unix/utmpx/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/utmpx/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/utmpx/netbsd/platforms.txt b/basis/unix/utmpx/netbsd/platforms.txt new file mode 100644 index 0000000000..dccfe71042 --- /dev/null +++ b/basis/unix/utmpx/netbsd/platforms.txt @@ -0,0 +1 @@ +netbsd diff --git a/basis/unix/utmpx/netbsd/tags.txt b/basis/unix/utmpx/netbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/utmpx/netbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/utmpx/platforms.txt b/basis/unix/utmpx/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/unix/utmpx/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/unix/utmpx/tags.txt b/basis/unix/utmpx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/utmpx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/utmpx/utmpx.factor b/basis/unix/utmpx/utmpx.factor index 6083776fc6..78556ab225 100644 --- a/basis/unix/utmpx/utmpx.factor +++ b/basis/unix/utmpx/utmpx.factor @@ -2,8 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: alien.c-types alien.data alien.syntax combinators continuations io.encodings.string io.encodings.utf8 kernel -sequences strings unix calendar system accessors unix.time -calendar.unix vocabs.loader classes.struct ; +sequences strings calendar system accessors unix unix.time +unix.ffi calendar.unix vocabs.loader classes.struct ; IN: unix.utmpx CONSTANT: EMPTY 0 @@ -19,6 +19,8 @@ CONSTANT: ACCOUNTING 9 CONSTANT: SIGNATURE 10 CONSTANT: SHUTDOWN_TIME 11 +C-TYPE: utmpx + FUNCTION: void setutxent ( ) ; FUNCTION: void endutxent ( ) ; FUNCTION: utmpx* getutxent ( ) ; diff --git a/basis/vocabs/metadata/authors.txt b/basis/vocabs/metadata/authors.txt index d4f5d6b3ae..1ad6ff84f7 100644 --- a/basis/vocabs/metadata/authors.txt +++ b/basis/vocabs/metadata/authors.txt @@ -1 +1,2 @@ -Slava Pestov \ No newline at end of file +Slava Pestov +Joe Groff \ No newline at end of file diff --git a/basis/vocabs/metadata/metadata.factor b/basis/vocabs/metadata/metadata.factor index 04a0ea7546..09ca012fcc 100644 --- a/basis/vocabs/metadata/metadata.factor +++ b/basis/vocabs/metadata/metadata.factor @@ -1,23 +1,26 @@ -! Copyright (C) 2009 Slava Pestov. +! Copyright (C) 2009, 2010 Slava Pestov, Joe Groff. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors arrays assocs io.encodings.utf8 io.files -io.pathnames kernel make math.parser memoize sequences sets -sorting summary vocabs vocabs.loader ; +USING: accessors arrays assocs io.directories io.encodings.utf8 +io.files io.pathnames kernel make math.parser memoize sequences +sets sorting summary vocabs vocabs.loader words system +classes.algebra combinators.short-circuit fry continuations +namespaces ; IN: vocabs.metadata +: check-vocab ( vocab -- vocab ) + dup find-vocab-root [ no-vocab ] unless ; + MEMO: vocab-file-contents ( vocab name -- seq ) vocab-append-path dup [ dup exists? [ utf8 file-lines ] [ drop f ] if ] when ; +: ?delete-file ( pathname -- ) '[ _ delete-file ] ignore-errors ; + : set-vocab-file-contents ( seq vocab name -- ) dupd vocab-append-path [ - utf8 set-file-lines + swap [ ?delete-file ] [ swap utf8 set-file-lines ] if-empty \ vocab-file-contents reset-memoized - ] [ - "The " swap vocab-name - " vocabulary was not loaded from the file system" - 3append throw - ] ?if ; + ] [ vocab-name no-vocab ] ?if ; : vocab-windows-icon-path ( vocab -- string ) vocab-dir "icon.ico" append-path ; @@ -72,6 +75,9 @@ M: vocab-link summary vocab-summary ; : add-vocab-tags ( tags vocab -- ) [ vocab-tags append prune ] keep set-vocab-tags ; +: remove-vocab-tags ( tags vocab -- ) + [ vocab-tags swap diff ] keep set-vocab-tags ; + : vocab-authors-path ( vocab -- string ) vocab-dir "authors.txt" append-path ; @@ -81,5 +87,37 @@ M: vocab-link summary vocab-summary ; : set-vocab-authors ( authors vocab -- ) dup vocab-authors-path set-vocab-file-contents ; +: vocab-platforms-path ( vocab -- string ) + vocab-dir "platforms.txt" append-path ; + +ERROR: bad-platform name ; + +: vocab-platforms ( vocab -- platforms ) + dup vocab-platforms-path vocab-file-contents + [ dup "system" lookup [ ] [ bad-platform ] ?if ] map ; + +: set-vocab-platforms ( platforms vocab -- ) + [ [ name>> ] map ] dip + dup vocab-platforms-path set-vocab-file-contents ; + +: supported-platform? ( platforms -- ? ) + [ t ] [ [ os swap class<= ] any? ] if-empty ; + : unportable? ( vocab -- ? ) - vocab-tags "unportable" swap member? ; + { + [ vocab-tags "untested" swap member? ] + [ vocab-platforms supported-platform? not ] + } 1|| ; + +TUPLE: unsupported-platform vocab requires ; + +: unsupported-platform ( vocab requires -- ) + \ unsupported-platform boa throw-continue ; + +M: unsupported-platform summary + drop "Current operating system not supported by this vocabulary" ; + +[ + dup vocab-platforms dup supported-platform? + [ 2drop ] [ [ vocab-name ] dip unsupported-platform ] if +] check-vocab-hook set-global diff --git a/basis/windows/advapi32/platforms.txt b/basis/windows/advapi32/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/advapi32/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/advapi32/tags.txt b/basis/windows/advapi32/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/advapi32/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/ce/platforms.txt b/basis/windows/ce/platforms.txt new file mode 100644 index 0000000000..cd0d980f6f --- /dev/null +++ b/basis/windows/ce/platforms.txt @@ -0,0 +1 @@ +wince diff --git a/basis/windows/ce/tags.txt b/basis/windows/ce/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/ce/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/com/platforms.txt b/basis/windows/com/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/com/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/com/prettyprint/platforms.txt b/basis/windows/com/prettyprint/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/com/prettyprint/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/com/prettyprint/tags.txt b/basis/windows/com/prettyprint/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/com/prettyprint/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/com/syntax/platforms.txt b/basis/windows/com/syntax/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/com/syntax/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/com/syntax/tags.txt b/basis/windows/com/syntax/tags.txt index 2320bdd648..bb863cf9a0 100755 --- a/basis/windows/com/syntax/tags.txt +++ b/basis/windows/com/syntax/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/com/tags.txt b/basis/windows/com/tags.txt index 86dd9eeb91..40fc52b29b 100755 --- a/basis/windows/com/tags.txt +++ b/basis/windows/com/tags.txt @@ -1,3 +1,2 @@ -unportable bindings ffi diff --git a/basis/windows/com/wrapper/platforms.txt b/basis/windows/com/wrapper/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/com/wrapper/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/com/wrapper/tags.txt b/basis/windows/com/wrapper/tags.txt index 2320bdd648..bb863cf9a0 100755 --- a/basis/windows/com/wrapper/tags.txt +++ b/basis/windows/com/wrapper/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/audiodefs/platforms.txt b/basis/windows/directx/audiodefs/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/audiodefs/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/audiodefs/tags.txt b/basis/windows/directx/audiodefs/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/audiodefs/tags.txt +++ b/basis/windows/directx/audiodefs/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d2d1/platforms.txt b/basis/windows/directx/d2d1/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d2d1/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d2d1/tags.txt b/basis/windows/directx/d2d1/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d2d1/tags.txt +++ b/basis/windows/directx/d2d1/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d2dbasetypes/platforms.txt b/basis/windows/directx/d2dbasetypes/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d2dbasetypes/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d2dbasetypes/tags.txt b/basis/windows/directx/d2dbasetypes/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d2dbasetypes/tags.txt +++ b/basis/windows/directx/d2dbasetypes/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d2derr/platforms.txt b/basis/windows/directx/d2derr/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d2derr/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d2derr/tags.txt b/basis/windows/directx/d2derr/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d2derr/tags.txt +++ b/basis/windows/directx/d2derr/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3d10/platforms.txt b/basis/windows/directx/d3d10/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3d10/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3d10/tags.txt b/basis/windows/directx/d3d10/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3d10/tags.txt +++ b/basis/windows/directx/d3d10/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3d10_1/platforms.txt b/basis/windows/directx/d3d10_1/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3d10_1/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3d10_1/tags.txt b/basis/windows/directx/d3d10_1/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3d10_1/tags.txt +++ b/basis/windows/directx/d3d10_1/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3d10_1shader/platforms.txt b/basis/windows/directx/d3d10_1shader/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3d10_1shader/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3d10_1shader/tags.txt b/basis/windows/directx/d3d10_1shader/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3d10_1shader/tags.txt +++ b/basis/windows/directx/d3d10_1shader/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3d10effect/platforms.txt b/basis/windows/directx/d3d10effect/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3d10effect/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3d10effect/tags.txt b/basis/windows/directx/d3d10effect/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3d10effect/tags.txt +++ b/basis/windows/directx/d3d10effect/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3d10misc/platforms.txt b/basis/windows/directx/d3d10misc/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3d10misc/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3d10misc/tags.txt b/basis/windows/directx/d3d10misc/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3d10misc/tags.txt +++ b/basis/windows/directx/d3d10misc/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3d10shader/platforms.txt b/basis/windows/directx/d3d10shader/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3d10shader/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3d10shader/tags.txt b/basis/windows/directx/d3d10shader/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3d10shader/tags.txt +++ b/basis/windows/directx/d3d10shader/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3d11/platforms.txt b/basis/windows/directx/d3d11/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3d11/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3d11/tags.txt b/basis/windows/directx/d3d11/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3d11/tags.txt +++ b/basis/windows/directx/d3d11/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3d11shader/platforms.txt b/basis/windows/directx/d3d11shader/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3d11shader/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3d11shader/tags.txt b/basis/windows/directx/d3d11shader/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3d11shader/tags.txt +++ b/basis/windows/directx/d3d11shader/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3d9/platforms.txt b/basis/windows/directx/d3d9/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3d9/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3d9/tags.txt b/basis/windows/directx/d3d9/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3d9/tags.txt +++ b/basis/windows/directx/d3d9/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3d9caps/platforms.txt b/basis/windows/directx/d3d9caps/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3d9caps/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3d9caps/tags.txt b/basis/windows/directx/d3d9caps/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3d9caps/tags.txt +++ b/basis/windows/directx/d3d9caps/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3d9types/d3d9types.factor b/basis/windows/directx/d3d9types/d3d9types.factor index 9f4358f658..dc02849553 100644 --- a/basis/windows/directx/d3d9types/d3d9types.factor +++ b/basis/windows/directx/d3d9types/d3d9types.factor @@ -900,12 +900,6 @@ CONSTANT: D3DMULTISAMPLE_14_SAMPLES 14 CONSTANT: D3DMULTISAMPLE_15_SAMPLES 15 CONSTANT: D3DMULTISAMPLE_16_SAMPLES 16 CONSTANT: D3DMULTISAMPLE_FORCE_DWORD HEX: 7fffffff - -:: MAKEFOURCC ( ch0 ch1 ch2 ch3 -- n ) - ch3 HEX: ff bitand 24 shift - ch2 HEX: ff bitand 16 shift - ch1 HEX: ff bitand 8 shift - ch0 HEX: ff bitand bitor bitor bitor ; inline TYPEDEF: int D3DFORMAT CONSTANT: D3DFMT_UNKNOWN 0 @@ -937,15 +931,15 @@ CONSTANT: D3DFMT_X8L8V8U8 62 CONSTANT: D3DFMT_Q8W8V8U8 63 CONSTANT: D3DFMT_V16U16 64 CONSTANT: D3DFMT_A2W10V10U10 67 -#! : D3DFMT_UYVY ( -- n ) 'U' 'Y' 'V' 'Y' MAKEFOURCC -#! D3DFMT_R8G8_B8G8 = MAKEFOURCC('R', 'G', 'B', 'G'), -#! D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'), -#! D3DFMT_G8R8_G8B8 = MAKEFOURCC('G', 'R', 'G', 'B'), -#! D3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', '1'), -#! D3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', '2'), -#! D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'), -#! D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'), -#! D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'), +CONSTANT: D3DFMT_UYVY HEX: 55595659 +CONSTANT: D3DFMT_R8G8_B8G8 HEX: 52474247 +CONSTANT: D3DFMT_YUY2 HEX: 59555932 +CONSTANT: D3DFMT_G8R8_G8B8 HEX: 47524742 +CONSTANT: D3DFMT_DXT1 HEX: 44585431 +CONSTANT: D3DFMT_DXT2 HEX: 44585432 +CONSTANT: D3DFMT_DXT3 HEX: 44585433 +CONSTANT: D3DFMT_DXT4 HEX: 44585434 +CONSTANT: D3DFMT_DXT5 HEX: 44585435 CONSTANT: D3DFMT_D16_LOCKABLE 70 CONSTANT: D3DFMT_D32 71 CONSTANT: D3DFMT_D15S1 73 @@ -962,7 +956,7 @@ CONSTANT: D3DFMT_VERTEXDATA 100 CONSTANT: D3DFMT_INDEX16 101 CONSTANT: D3DFMT_INDEX32 102 CONSTANT: D3DFMT_Q16W16V16U16 110 -#! D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M', 'E', 'T', '1'), +CONSTANT: D3DFMT_MULTI2_ARGB8 HEX: 4d455431 CONSTANT: D3DFMT_R16F 111 CONSTANT: D3DFMT_G16R16F 112 CONSTANT: D3DFMT_A16B16G16R16F 113 diff --git a/basis/windows/directx/d3d9types/platforms.txt b/basis/windows/directx/d3d9types/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3d9types/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3d9types/tags.txt b/basis/windows/directx/d3d9types/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3d9types/tags.txt +++ b/basis/windows/directx/d3d9types/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dcommon/platforms.txt b/basis/windows/directx/d3dcommon/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dcommon/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dcommon/tags.txt b/basis/windows/directx/d3dcommon/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dcommon/tags.txt +++ b/basis/windows/directx/d3dcommon/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dcompiler/platforms.txt b/basis/windows/directx/d3dcompiler/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dcompiler/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dcompiler/tags.txt b/basis/windows/directx/d3dcompiler/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dcompiler/tags.txt +++ b/basis/windows/directx/d3dcompiler/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dcsx/platforms.txt b/basis/windows/directx/d3dcsx/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dcsx/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dcsx/tags.txt b/basis/windows/directx/d3dcsx/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dcsx/tags.txt +++ b/basis/windows/directx/d3dcsx/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx10/platforms.txt b/basis/windows/directx/d3dx10/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx10/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx10/tags.txt b/basis/windows/directx/d3dx10/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx10/tags.txt +++ b/basis/windows/directx/d3dx10/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx10async/platforms.txt b/basis/windows/directx/d3dx10async/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx10async/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx10async/tags.txt b/basis/windows/directx/d3dx10async/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx10async/tags.txt +++ b/basis/windows/directx/d3dx10async/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx10core/platforms.txt b/basis/windows/directx/d3dx10core/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx10core/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx10core/tags.txt b/basis/windows/directx/d3dx10core/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx10core/tags.txt +++ b/basis/windows/directx/d3dx10core/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx10math/platforms.txt b/basis/windows/directx/d3dx10math/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx10math/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx10math/tags.txt b/basis/windows/directx/d3dx10math/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx10math/tags.txt +++ b/basis/windows/directx/d3dx10math/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx10mesh/platforms.txt b/basis/windows/directx/d3dx10mesh/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx10mesh/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx10mesh/tags.txt b/basis/windows/directx/d3dx10mesh/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx10mesh/tags.txt +++ b/basis/windows/directx/d3dx10mesh/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx10tex/platforms.txt b/basis/windows/directx/d3dx10tex/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx10tex/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx10tex/tags.txt b/basis/windows/directx/d3dx10tex/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx10tex/tags.txt +++ b/basis/windows/directx/d3dx10tex/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx11/platforms.txt b/basis/windows/directx/d3dx11/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx11/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx11/tags.txt b/basis/windows/directx/d3dx11/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx11/tags.txt +++ b/basis/windows/directx/d3dx11/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx11async/platforms.txt b/basis/windows/directx/d3dx11async/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx11async/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx11async/tags.txt b/basis/windows/directx/d3dx11async/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx11async/tags.txt +++ b/basis/windows/directx/d3dx11async/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx11core/platforms.txt b/basis/windows/directx/d3dx11core/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx11core/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx11core/tags.txt b/basis/windows/directx/d3dx11core/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx11core/tags.txt +++ b/basis/windows/directx/d3dx11core/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx11tex/platforms.txt b/basis/windows/directx/d3dx11tex/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx11tex/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx11tex/tags.txt b/basis/windows/directx/d3dx11tex/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx11tex/tags.txt +++ b/basis/windows/directx/d3dx11tex/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx9/platforms.txt b/basis/windows/directx/d3dx9/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx9/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx9/tags.txt b/basis/windows/directx/d3dx9/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx9/tags.txt +++ b/basis/windows/directx/d3dx9/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx9anim/platforms.txt b/basis/windows/directx/d3dx9anim/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx9anim/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx9anim/tags.txt b/basis/windows/directx/d3dx9anim/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx9anim/tags.txt +++ b/basis/windows/directx/d3dx9anim/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx9core/platforms.txt b/basis/windows/directx/d3dx9core/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx9core/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx9core/tags.txt b/basis/windows/directx/d3dx9core/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx9core/tags.txt +++ b/basis/windows/directx/d3dx9core/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx9effect/platforms.txt b/basis/windows/directx/d3dx9effect/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx9effect/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx9effect/tags.txt b/basis/windows/directx/d3dx9effect/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx9effect/tags.txt +++ b/basis/windows/directx/d3dx9effect/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx9math/platforms.txt b/basis/windows/directx/d3dx9math/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx9math/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx9math/tags.txt b/basis/windows/directx/d3dx9math/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx9math/tags.txt +++ b/basis/windows/directx/d3dx9math/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx9mesh/platforms.txt b/basis/windows/directx/d3dx9mesh/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx9mesh/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx9mesh/tags.txt b/basis/windows/directx/d3dx9mesh/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx9mesh/tags.txt +++ b/basis/windows/directx/d3dx9mesh/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx9shader/platforms.txt b/basis/windows/directx/d3dx9shader/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx9shader/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx9shader/tags.txt b/basis/windows/directx/d3dx9shader/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx9shader/tags.txt +++ b/basis/windows/directx/d3dx9shader/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx9shape/platforms.txt b/basis/windows/directx/d3dx9shape/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx9shape/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx9shape/tags.txt b/basis/windows/directx/d3dx9shape/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx9shape/tags.txt +++ b/basis/windows/directx/d3dx9shape/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx9tex/platforms.txt b/basis/windows/directx/d3dx9tex/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx9tex/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx9tex/tags.txt b/basis/windows/directx/d3dx9tex/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx9tex/tags.txt +++ b/basis/windows/directx/d3dx9tex/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/d3dx9xof/platforms.txt b/basis/windows/directx/d3dx9xof/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/d3dx9xof/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/d3dx9xof/tags.txt b/basis/windows/directx/d3dx9xof/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/d3dx9xof/tags.txt +++ b/basis/windows/directx/d3dx9xof/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/dcommon/platforms.txt b/basis/windows/directx/dcommon/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/dcommon/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/dcommon/tags.txt b/basis/windows/directx/dcommon/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/dcommon/tags.txt +++ b/basis/windows/directx/dcommon/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/dinput/constants/platforms.txt b/basis/windows/directx/dinput/constants/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/dinput/constants/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/dinput/constants/tags.txt b/basis/windows/directx/dinput/constants/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/directx/dinput/constants/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/directx/dinput/platforms.txt b/basis/windows/directx/dinput/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/dinput/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/dinput/tags.txt b/basis/windows/directx/dinput/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/dinput/tags.txt +++ b/basis/windows/directx/dinput/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/dwrite/platforms.txt b/basis/windows/directx/dwrite/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/dwrite/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/dwrite/tags.txt b/basis/windows/directx/dwrite/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/dwrite/tags.txt +++ b/basis/windows/directx/dwrite/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/dxfile/platforms.txt b/basis/windows/directx/dxfile/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/dxfile/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/dxfile/tags.txt b/basis/windows/directx/dxfile/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/dxfile/tags.txt +++ b/basis/windows/directx/dxfile/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/dxgi/platforms.txt b/basis/windows/directx/dxgi/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/dxgi/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/dxgi/tags.txt b/basis/windows/directx/dxgi/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/dxgi/tags.txt +++ b/basis/windows/directx/dxgi/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/dxgiformat/platforms.txt b/basis/windows/directx/dxgiformat/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/dxgiformat/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/dxgiformat/tags.txt b/basis/windows/directx/dxgiformat/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/dxgiformat/tags.txt +++ b/basis/windows/directx/dxgiformat/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/dxgitype/platforms.txt b/basis/windows/directx/dxgitype/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/dxgitype/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/dxgitype/tags.txt b/basis/windows/directx/dxgitype/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/dxgitype/tags.txt +++ b/basis/windows/directx/dxgitype/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/x3daudio/platforms.txt b/basis/windows/directx/x3daudio/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/x3daudio/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/x3daudio/tags.txt b/basis/windows/directx/x3daudio/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/x3daudio/tags.txt +++ b/basis/windows/directx/x3daudio/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/xact3/platforms.txt b/basis/windows/directx/xact3/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/xact3/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/xact3/tags.txt b/basis/windows/directx/xact3/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/xact3/tags.txt +++ b/basis/windows/directx/xact3/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/xapo/platforms.txt b/basis/windows/directx/xapo/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/xapo/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/xapo/tags.txt b/basis/windows/directx/xapo/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/xapo/tags.txt +++ b/basis/windows/directx/xapo/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/xapofx/platforms.txt b/basis/windows/directx/xapofx/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/xapofx/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/xapofx/tags.txt b/basis/windows/directx/xapofx/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/xapofx/tags.txt +++ b/basis/windows/directx/xapofx/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/xaudio2/platforms.txt b/basis/windows/directx/xaudio2/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/xaudio2/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/xaudio2/tags.txt b/basis/windows/directx/xaudio2/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/xaudio2/tags.txt +++ b/basis/windows/directx/xaudio2/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/xaudio2fx/platforms.txt b/basis/windows/directx/xaudio2fx/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/xaudio2fx/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/xaudio2fx/tags.txt b/basis/windows/directx/xaudio2fx/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/xaudio2fx/tags.txt +++ b/basis/windows/directx/xaudio2fx/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/directx/xinput/platforms.txt b/basis/windows/directx/xinput/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/directx/xinput/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/directx/xinput/tags.txt b/basis/windows/directx/xinput/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/directx/xinput/tags.txt +++ b/basis/windows/directx/xinput/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/dragdrop-listener/platforms.txt b/basis/windows/dragdrop-listener/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/dragdrop-listener/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/dragdrop-listener/tags.txt b/basis/windows/dragdrop-listener/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/dragdrop-listener/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/dwmapi/platforms.txt b/basis/windows/dwmapi/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/dwmapi/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/dwmapi/tags.txt b/basis/windows/dwmapi/tags.txt index 43bc035447..8e1a55995e 100755 --- a/basis/windows/dwmapi/tags.txt +++ b/basis/windows/dwmapi/tags.txt @@ -1,2 +1 @@ windows -unportable diff --git a/basis/windows/errors/platforms.txt b/basis/windows/errors/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/errors/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/errors/tags.txt b/basis/windows/errors/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/errors/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/fonts/platforms.txt b/basis/windows/fonts/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/fonts/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/fonts/tags.txt b/basis/windows/fonts/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/fonts/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/gdi32/platforms.txt b/basis/windows/gdi32/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/gdi32/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/gdi32/tags.txt b/basis/windows/gdi32/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/gdi32/tags.txt +++ b/basis/windows/gdi32/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/kernel32/platforms.txt b/basis/windows/kernel32/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/kernel32/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/kernel32/tags.txt b/basis/windows/kernel32/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/kernel32/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/messages/platforms.txt b/basis/windows/messages/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/messages/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/messages/tags.txt b/basis/windows/messages/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/messages/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/nt/platforms.txt b/basis/windows/nt/platforms.txt new file mode 100644 index 0000000000..205e64323d --- /dev/null +++ b/basis/windows/nt/platforms.txt @@ -0,0 +1 @@ +winnt diff --git a/basis/windows/nt/tags.txt b/basis/windows/nt/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/nt/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/offscreen/platforms.txt b/basis/windows/offscreen/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/offscreen/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/offscreen/tags.txt b/basis/windows/offscreen/tags.txt deleted file mode 100755 index 6abe115b12..0000000000 --- a/basis/windows/offscreen/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/ole32/platforms.txt b/basis/windows/ole32/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/ole32/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/ole32/tags.txt b/basis/windows/ole32/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/ole32/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/opengl32/platforms.txt b/basis/windows/opengl32/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/opengl32/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/opengl32/tags.txt b/basis/windows/opengl32/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/opengl32/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/platforms.txt b/basis/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/psapi/platforms.txt b/basis/windows/psapi/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/psapi/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/psapi/tags.txt b/basis/windows/psapi/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/psapi/tags.txt +++ b/basis/windows/psapi/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/shell32/platforms.txt b/basis/windows/shell32/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/shell32/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/shell32/tags.txt b/basis/windows/shell32/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/shell32/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/tags.txt b/basis/windows/tags.txt index 2320bdd648..bb863cf9a0 100755 --- a/basis/windows/tags.txt +++ b/basis/windows/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/time/platforms.txt b/basis/windows/time/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/time/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/time/tags.txt b/basis/windows/time/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/time/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/types/platforms.txt b/basis/windows/types/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/types/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/types/tags.txt b/basis/windows/types/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/types/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/uniscribe/platforms.txt b/basis/windows/uniscribe/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/uniscribe/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/uniscribe/tags.txt b/basis/windows/uniscribe/tags.txt deleted file mode 100755 index 6abe115b12..0000000000 --- a/basis/windows/uniscribe/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/user32/platforms.txt b/basis/windows/user32/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/user32/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/user32/tags.txt b/basis/windows/user32/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/user32/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/windows/usp10/platforms.txt b/basis/windows/usp10/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/usp10/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/usp10/tags.txt b/basis/windows/usp10/tags.txt index 2320bdd648..bb863cf9a0 100644 --- a/basis/windows/usp10/tags.txt +++ b/basis/windows/usp10/tags.txt @@ -1,2 +1 @@ -unportable bindings diff --git a/basis/windows/winsock/platforms.txt b/basis/windows/winsock/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/winsock/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/winsock/tags.txt b/basis/windows/winsock/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/windows/winsock/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/x11/io/unix/platforms.txt b/basis/x11/io/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/x11/io/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/x11/io/unix/tags.txt b/basis/x11/io/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/x11/io/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/x11/windows/platforms.txt b/basis/x11/windows/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/x11/windows/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/x11/windows/tags.txt b/basis/x11/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/x11/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/x11/xlib/xlib.factor b/basis/x11/xlib/xlib.factor index a6097c9dad..7235aaf679 100644 --- a/basis/x11/xlib/xlib.factor +++ b/basis/x11/xlib/xlib.factor @@ -284,6 +284,11 @@ X-FUNCTION: int XConvertSelection ( Display* display, Atom selection, Atom targe X-FUNCTION: Pixmap XCreatePixmap ( Display* display, Drawable d, uint width, uint height, uint depth ) ; X-FUNCTION: int XFreePixmap ( Display* display, Pixmap pixmap ) ; +! 5.2 - Creating, Recoloring, and Freeing Cursors + +C-TYPE: XColor +X-FUNCTION: Cursor XCreatePixmapCursor ( Display* display, Pixmap source, Pixmap mask, XColor* foreground_color, XColor* background_color, uint x, uint y ) ; +X-FUNCTION: int XFreeCursor ( Display* display, Cursor cursor ) ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 6 - Color Management Functions @@ -1096,6 +1101,7 @@ X-FUNCTION: int XGrabPointer ( X-FUNCTION: Status XUngrabPointer ( Display* display, Time time ) ; X-FUNCTION: Status XChangeActivePointerGrab ( Display* display, uint event_mask, Cursor cursor, Time time ) ; X-FUNCTION: Status XGrabKey ( Display* display, int keycode, uint modifiers, Window grab_window, Bool owner_events, int pointer_mode, int keyboard_mode ) ; +X-FUNCTION: int XGrabKeyboard ( Display* display, Window grab_window, Bool owner_events, int pointer_mode, int keyboard_mode, Time time ) ; X-FUNCTION: Status XSetInputFocus ( Display* display, Window focus, int revert_to, Time time ) ; X-FUNCTION: Status XGetInputFocus ( Display* display, @@ -1210,6 +1216,14 @@ STRUCT: XVisualInfo { colormap_size int } { bits_per_rgb int } ; +! 16.9 Manipulating Bitmaps +X-FUNCTION: Pixmap XCreateBitmapFromData ( + Display* display, + Drawable d, + char* data, + uint width, + uint height ) ; + ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Appendix D - Compatibility Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/basis/xml-rpc/xml-rpc-docs.factor b/basis/xml-rpc/xml-rpc-docs.factor index 113fc00407..aeb29c5d07 100644 --- a/basis/xml-rpc/xml-rpc-docs.factor +++ b/basis/xml-rpc/xml-rpc-docs.factor @@ -49,7 +49,7 @@ HELP: rpc-fault HELP: post-rpc { $values { "rpc" "an XML-RPC input tuple" } { "url" "a URL" } - { "rpc" "an XML-RPC output tuple" } } + { "rpc'" "an XML-RPC output tuple" } } { $description "posts an XML-RPC document to the specified URL, receives the response and parses it as XML-RPC, returning the tuple" } ; ARTICLE: { "xml-rpc" "intro" } "XML-RPC" diff --git a/basis/xml-rpc/xml-rpc.factor b/basis/xml-rpc/xml-rpc.factor index 370c778787..4c6570c4de 100644 --- a/basis/xml-rpc/xml-rpc.factor +++ b/basis/xml-rpc/xml-rpc.factor @@ -186,7 +186,7 @@ TAG: array xml>item PRIVATE> -: post-rpc ( rpc url -- rpc ) +: post-rpc ( rpc url -- rpc' ) ! This needs to do something in the event of an error rpc-post-request http-request nip string>xml receive-rpc ; diff --git a/basis/xml/traversal/traversal-docs.factor b/basis/xml/traversal/traversal-docs.factor index bb7ce7ce31..d8032d99fc 100644 --- a/basis/xml/traversal/traversal-docs.factor +++ b/basis/xml/traversal/traversal-docs.factor @@ -58,7 +58,7 @@ HELP: children-tags { $see-also first-child-tag } ; HELP: first-child-tag -{ $values { "tag" "an XML tag or document" } { "tag" tag } } +{ $values { "tag" "an XML tag or document" } { "child" tag } } { $description "Returns the first child of the given tag that is a tag." } { $see-also children-tags } ; diff --git a/basis/xml/traversal/traversal.factor b/basis/xml/traversal/traversal.factor index b337ea1472..46a5896814 100644 --- a/basis/xml/traversal/traversal.factor +++ b/basis/xml/traversal/traversal.factor @@ -18,7 +18,7 @@ IN: xml.traversal : children-tags ( tag -- sequence ) children>> [ tag? ] filter ; -: first-child-tag ( tag -- tag ) +: first-child-tag ( tag -- child ) children>> [ tag? ] find nip ; : tag-named? ( name elem -- ? ) diff --git a/core/arrays/arrays.factor b/core/arrays/arrays.factor index fa4d4b2f69..62a0774444 100644 --- a/core/arrays/arrays.factor +++ b/core/arrays/arrays.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2005, 2008 Slava Pestov. +! Copyright (C) 2005, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors kernel kernel.private math math.private sequences sequences.private ; @@ -9,24 +9,16 @@ M: array length length>> ; inline M: array nth-unsafe [ >fixnum ] dip array-nth ; inline M: array set-nth-unsafe [ >fixnum ] dip set-array-nth ; inline M: array resize resize-array ; inline - -: >array ( seq -- array ) { } clone-like ; - +M: array equal? over array? [ sequence= ] [ 2drop f ] if ; M: object new-sequence drop 0 ; inline - M: f new-sequence drop [ f ] [ 0 ] if-zero ; inline -M: array equal? - over array? [ sequence= ] [ 2drop f ] if ; - INSTANCE: array sequence +: >array ( seq -- array ) { } clone-like ; : 1array ( x -- array ) 1 swap ; inline - : 2array ( x y -- array ) { } 2sequence ; inline - : 3array ( x y z -- array ) { } 3sequence ; inline - : 4array ( w x y z -- array ) { } 4sequence ; inline PREDICATE: pair < array length 2 number= ; diff --git a/core/assocs/assocs-docs.factor b/core/assocs/assocs-docs.factor index 0d5a884832..8f93c5a9d1 100644 --- a/core/assocs/assocs-docs.factor +++ b/core/assocs/assocs-docs.factor @@ -221,7 +221,7 @@ HELP: assoc-size HELP: assoc-like { $values { "assoc" assoc } { "exemplar" assoc } { "newassoc" "a new assoc" } } -{ $contract "Creates a new assoc having the same entries as "{ $snippet "assoc" } " and the same type as " { $snippet "exemplar" } "." } ; +{ $contract "Creates a new assoc having the same entries as " { $snippet "assoc" } " and the same type as " { $snippet "exemplar" } "." } ; HELP: assoc-empty? { $values { "assoc" assoc } { "?" "a boolean" } } @@ -383,7 +383,7 @@ HELP: cache { $side-effects "assoc" } ; HELP: 2cache -{ $values { "key1" "a key" } { "key2" "a key" } { "assoc" assoc } { "quot" { $quotation "( key -- value )" } } { "value" "a previously-retained or freshly-computed value" } } +{ $values { "key1" "a key" } { "key2" "a key" } { "assoc" assoc } { "quot" { $quotation "( key1 key2 -- value )" } } { "value" "a previously-retained or freshly-computed value" } } { $description "If a single key composed of the input keys is present in the assoc, outputs the associated value, otherwise calls the quotation to produce a value and stores the keys/value pair into the assoc. Returns the value stored in the assoc. Returns a value either looked up or newly stored in the assoc." } { $side-effects "assoc" } ; @@ -432,7 +432,7 @@ HELP: assoc-combine HELP: assoc-map-as { $values - { "assoc" assoc } { "quot" quotation } { "exemplar" assoc } + { "assoc" assoc } { "quot" { $quotation "( key value -- newkey newvalue )" } } { "exemplar" assoc } { "newassoc" assoc } } { $description "Applies the quotation to each entry in the input assoc and collects the results in a new assoc of the stame type as the exemplar." } { $examples { $example "USING: prettyprint assocs hashtables math ;" " H{ { 1 2 } { 3 4 } } [ sq ] { } assoc-map-as ." "{ { 1 4 } { 3 16 } }" } } ; diff --git a/core/bootstrap/syntax.factor b/core/bootstrap/syntax.factor index bb159f04df..1870f4ac1b 100644 --- a/core/bootstrap/syntax.factor +++ b/core/bootstrap/syntax.factor @@ -49,6 +49,7 @@ IN: bootstrap.syntax "SYMBOLS:" "CONSTANT:" "TUPLE:" + "final" "SLOT:" "T{" "UNION:" diff --git a/core/classes/algebra/algebra.factor b/core/classes/algebra/algebra.factor index 69289600e4..f9aaf3eaa5 100644 --- a/core/classes/algebra/algebra.factor +++ b/core/classes/algebra/algebra.factor @@ -234,3 +234,12 @@ ERROR: topological-sort-failed ; : flatten-class ( class -- assoc ) [ (flatten-class) ] H{ } make-assoc ; + +SYMBOL: +incomparable+ + +: compare-classes ( class1 class2 -- ? ) + { + { [ 2dup class<= ] [ t ] } + { [ 2dup classes-intersect? not ] [ f ] } + [ +incomparable+ ] + } cond 2nip ; diff --git a/core/classes/parser/parser.factor b/core/classes/parser/parser.factor index 8233d8cff3..41ce32105d 100644 --- a/core/classes/parser/parser.factor +++ b/core/classes/parser/parser.factor @@ -8,8 +8,9 @@ IN: classes.parser : create-class-in ( string -- word ) current-vocab create + dup set-word dup save-class-location - dup create-predicate-word dup set-word save-location ; + dup create-predicate-word save-location ; : CREATE-CLASS ( -- word ) scan create-class-in ; diff --git a/core/classes/tuple/tuple-docs.factor b/core/classes/tuple/tuple-docs.factor index 2b3e80da1d..7f6078e321 100644 --- a/core/classes/tuple/tuple-docs.factor +++ b/core/classes/tuple/tuple-docs.factor @@ -191,6 +191,8 @@ $nl "tuple-inheritance-example" "tuple-inheritance-anti-example" } +"Declaring a tuple class final prohibits other classes from subclassing it:" +{ $subsections POSTPONE: final } { $see-also "call-next-method" "parametrized-constructors" "unions" "mixins" } ; ARTICLE: "tuple-introspection" "Tuple introspection" @@ -441,3 +443,6 @@ HELP: boa { $description "Creates a new instance of " { $snippet "class" } " and fill in the slots from the stack, with the top-most stack element being stored in the right-most slot." } { $notes "The name " { $snippet "boa" } " is shorthand for “by order of arguments”, and “BOA constructor” is a pun on “boa constrictor”." } { $errors "Throws an error if the slot values do not match class declarations on slots (see" { $link "tuple-declarations" } ")." } ; + +HELP: bad-superclass +{ $error-description "Thrown if an attempt is made to subclass a class that is not a tuple class, or a tuple class declared " { $link POSTPONE: final } "." } ; diff --git a/core/classes/tuple/tuple-tests.factor b/core/classes/tuple/tuple-tests.factor index 36d402c61d..276c6b407c 100644 --- a/core/classes/tuple/tuple-tests.factor +++ b/core/classes/tuple/tuple-tests.factor @@ -770,3 +770,30 @@ TUPLE: tuple-predicate-redefine-test ; [ ] [ "IN: classes.tuple.tests TUPLE: tuple-predicate-redefine-test ;" eval( -- ) ] unit-test [ t ] [ \ tuple-predicate-redefine-test? predicate? ] unit-test + +! Final classes +TUPLE: final-superclass ; +TUPLE: final-subclass < final-superclass ; + +[ final-superclass ] [ final-subclass superclass ] unit-test + +! Making the superclass final should change the superclass of the subclass +[ ] [ "IN: classes.tuple.tests TUPLE: final-superclass ; final" eval( -- ) ] unit-test + +[ tuple ] [ final-subclass superclass ] unit-test + +[ f ] [ \ final-subclass final-class? ] unit-test + +! Subclassing a final class should fail +[ "IN: classes.tuple.tests TUPLE: final-subclass < final-superclass ;" eval( -- ) ] +[ error>> bad-superclass? ] must-fail-with + +! Making a final class non-final should work +[ ] [ "IN: classes.tuple.tests TUPLE: final-superclass ;" eval( -- ) ] unit-test + +[ ] [ "IN: classes.tuple.tests TUPLE: final-subclass < final-superclass ; final" eval( -- ) ] unit-test + +! Changing a superclass should not change the final status of a subclass +[ ] [ "IN: classes.tuple.tests TUPLE: final-superclass x ;" eval( -- ) ] unit-test + +[ t ] [ \ final-subclass final-class? ] unit-test diff --git a/core/classes/tuple/tuple.factor b/core/classes/tuple/tuple.factor index 363c2879e9..64c34d221a 100644 --- a/core/classes/tuple/tuple.factor +++ b/core/classes/tuple/tuple.factor @@ -93,6 +93,14 @@ ERROR: bad-superclass class ; ] [ 2drop f ] if ] [ 2drop f ] if ; inline +GENERIC: final-class? ( class -- ? ) + +M: tuple-class final-class? "final" word-prop ; + +M: builtin-class final-class? tuple eq? not ; + +M: class final-class? drop t ; + : define-tuple-class ( class superclass slots -- ) @@ -268,10 +275,18 @@ PRIVATE> over prepare-slots (define-tuple-class) ; +GENERIC: make-final ( class -- ) + +M: tuple-class make-final + [ dup class-usage keys ?metaclass-changed ] + [ t "final" set-word-prop ] + bi ; + M: word (define-tuple-class) define-new-tuple-class ; M: tuple-class (define-tuple-class) + pick reset-final 3dup tuple-class-unchanged? [ 2drop ?define-symbol ] [ redefine-tuple-class ] if ; @@ -301,7 +316,7 @@ M: tuple-class reset-class ] with each ] [ [ call-next-method ] - [ { "layout" "slots" "boa-check" "prototype" } reset-props ] + [ { "layout" "slots" "boa-check" "prototype" "final" } reset-props ] bi ] bi ; diff --git a/core/combinators/combinators.factor b/core/combinators/combinators.factor index 95b62fc3f3..7b9481825b 100644 --- a/core/combinators/combinators.factor +++ b/core/combinators/combinators.factor @@ -5,6 +5,10 @@ kernel kernel.private math assocs quotations vectors hashtables sorting words sets math.order make ; IN: combinators +! Most of these combinators have compile-time expansions in +! the optimizing compiler. See stack-checker.transforms and +! compiler.tree.propagation.call-effect + -ERROR: wrong-values quot effect ; +ERROR: wrong-values quot call-site ; ! We can't USE: effects here so we forward reference slots instead SLOT: in diff --git a/core/compiler/units/units.factor b/core/compiler/units/units.factor index 9582ebadb6..b024ed2c65 100644 --- a/core/compiler/units/units.factor +++ b/core/compiler/units/units.factor @@ -12,8 +12,7 @@ SYMBOL: new-definitions TUPLE: redefine-error def ; : redefine-error ( definition -- ) - \ redefine-error boa - { { "Continue" t } } throw-restarts drop ; + \ redefine-error boa throw-continue ; condition ( error restarts cc -- condition ) : rethrow-restarts ( error restarts -- restart ) [ rethrow ] callcc1 2nip ; +: throw-continue ( error -- ) + { { "Continue" t } } throw-restarts drop ; + TUPLE: restart name obj continuation ; C: restart diff --git a/core/generic/generic-docs.factor b/core/generic/generic-docs.factor index 3a9314fb56..8d4f1f61a5 100644 --- a/core/generic/generic-docs.factor +++ b/core/generic/generic-docs.factor @@ -166,7 +166,13 @@ HELP: create-method HELP: (call-next-method) { $values { "method" method } } { $description "Low-level word implementing " { $link POSTPONE: call-next-method } "." } -{ $notes "In most cases, " { $link POSTPONE: call-next-method } " should be used instead." } ; +{ $notes + "The " { $link POSTPONE: call-next-method } " word parses into this word. The following are equivalent:" + { $code + "M: class generic call-next-method ;" + "M: class generic M\\ class generic (call-next-method) ;" + } +} ; HELP: no-next-method { $error-description "Thrown by " { $link POSTPONE: call-next-method } " if the current method is already the least specific method." } diff --git a/core/io/pathnames/pathnames-docs.factor b/core/io/pathnames/pathnames-docs.factor index 8dacef6f8c..cc637b59c3 100644 --- a/core/io/pathnames/pathnames-docs.factor +++ b/core/io/pathnames/pathnames-docs.factor @@ -92,7 +92,7 @@ HELP: normalize-path { $values { "path" "a pathname string" } { "path'" "a new pathname string" } } { $description "Prepends the " { $link current-directory } " to the pathname, resolves a " { $snippet "resource:" } " or " { $snippet "vocab:" } " prefix, if present (see " { $link "io.pathnames.special" } "). Also converts the path into a UNC path on Windows." } { $notes "High-level words, such as " { $link } " and " { $link delete-file } " call this word for you. It only needs to be called directly when passing pathnames to C functions or external processes. This is because Factor does not use the operating system's notion of a current directory, and instead maintains its own dynamically-scoped " { $link current-directory } " variable." } -{ $notes "On Windows NT platforms, this word does prepends the Unicode path prefix." } +{ $notes "On Windows NT platforms, this word prepends the Unicode path prefix." } { $examples "For example, if you create a file named " { $snippet "data.txt" } " in the current directory, and wish to pass it to a process, you must normalize it:" { $code diff --git a/core/kernel/kernel-docs.factor b/core/kernel/kernel-docs.factor index c92ef7d599..8b9650fc31 100644 --- a/core/kernel/kernel-docs.factor +++ b/core/kernel/kernel-docs.factor @@ -708,7 +708,7 @@ HELP: 3curry { $notes "This operation is efficient and does not copy the quotation." } ; HELP: with -{ $values { "param" object } { "obj" object } { "quot" { $quotation "( param elt -- ... )" } } { "obj" object } { "curry" curry } } +{ $values { "param" object } { "obj" object } { "quot" { $quotation "( param elt -- ... )" } } { "curry" curry } } { $description "Partial application on the left. The following two lines are equivalent:" { $code "swap [ swap A ] curry B" } { $code "[ A ] with B" } diff --git a/core/make/make-docs.factor b/core/make/make-docs.factor index 5e4e04c270..2cbf82ae33 100644 --- a/core/make/make-docs.factor +++ b/core/make/make-docs.factor @@ -63,7 +63,7 @@ HELP: building HELP: make { $values { "quot" quotation } { "exemplar" sequence } { "seq" "a new sequence" } } -{ $description "Calls the quotation in a new " { $emphasis "dynamic scope" } ". The quotation and any words it calls can execute the " { $link , } " and " { $link % } " words to accumulate elements. When the quotation returns, all accumulated elements are collected into a sequence with the same type as " { $snippet "exemplar" } "." } +{ $description "Calls the quotation in a new dynamic scope with the " { $link building } " variable bound to a new resizable mutable sequence. The quotation and any words it calls can execute the " { $link , } " and " { $link % } " words to accumulate elements. When the quotation returns, all accumulated elements are collected into a sequence with the same type as " { $snippet "exemplar" } "." } { $examples { $example "USING: make prettyprint ;" "[ 1 , 2 , 3 , ] { } make ." "{ 1 2 3 }" } } ; HELP: , diff --git a/core/math/math-docs.factor b/core/math/math-docs.factor index 1e107124a2..6357c8bd98 100644 --- a/core/math/math-docs.factor +++ b/core/math/math-docs.factor @@ -212,7 +212,7 @@ HELP: recip HELP: rem { $values { "x" rational } { "y" rational } { "z" rational } } { $description - "Computes the remainder of dividing " { $snippet "x" } " by " { $snippet "y" } ", with the remainder always positive." + "Computes the remainder of dividing " { $snippet "x" } " by " { $snippet "y" } ", with the remainder always positive or zero." { $list "Given fixnums, always yields a fixnum." "Given bignums, always yields a bignum." diff --git a/core/parser/parser-docs.factor b/core/parser/parser-docs.factor index 3062f55a42..b024d1d968 100644 --- a/core/parser/parser-docs.factor +++ b/core/parser/parser-docs.factor @@ -177,7 +177,7 @@ HELP: parse-lines { $errors "Throws a " { $link lexer-error } " if the input is malformed." } ; HELP: parse-base -{ $values { "parsed" integer } { "base" "an integer between 2 and 36" } { "parsed" integer } } +{ $values { "parsed" integer } { "base" "an integer between 2 and 36" } } { $description "Reads an integer in a specific numerical base from the parser input." } $parsing-note ; diff --git a/core/parser/parser-tests.factor b/core/parser/parser-tests.factor index f30eb68684..266a65b957 100644 --- a/core/parser/parser-tests.factor +++ b/core/parser/parser-tests.factor @@ -339,7 +339,7 @@ IN: parser.tests ] unit-test [ t ] [ - "foo?" "parser.tests" lookup word eq? + "foo" "parser.tests" lookup word eq? ] unit-test [ ] [ diff --git a/core/sequences/sequences-docs.factor b/core/sequences/sequences-docs.factor index 02dadb323c..dc26933af4 100644 --- a/core/sequences/sequences-docs.factor +++ b/core/sequences/sequences-docs.factor @@ -269,7 +269,7 @@ HELP: reduce HELP: reduce-index { $values - { "seq" sequence } { "identity" object } { "quot" quotation } } + { "seq" sequence } { "identity" object } { "quot" { $quotation "( prev elt index -- result )" } } } { $description "Combines successive elements of the sequence and their indices binary operations, and outputs the final result. On the first iteration, the three inputs to the quotation are " { $snippet "identity" } ", the first element of the sequence, and its index, 0. On successive iterations, the first input is the result of the previous iteration, the second input is the corresponding element of the sequence, and the third is its index." } { $examples { $example "USING: sequences prettyprint math ;" "{ 10 50 90 } 0 [ + + ] reduce-index ." @@ -296,7 +296,7 @@ $nl } ; HELP: accumulate! -{ $values { "seq" sequence } { "identity" object } { "quot" { $quotation "( prev elt -- next )" } } { "final" "the final result" } { "seq" sequence } } +{ $values { "seq" sequence } { "identity" object } { "quot" { $quotation "( prev elt -- next )" } } { "final" "the final result" } } { $description "Combines successive elements of the sequence using a binary operation, and outputs the original sequence of intermediate results, together with the final result." $nl "The first element of the new sequence is " { $snippet "identity" } ". Then, on the first iteration, the two inputs to the quotation are " { $snippet "identity" } ", and the first element of the old sequence. On successive iterations, the first input is the result of the previous iteration, and the second input is the corresponding element of the old sequence." @@ -321,20 +321,20 @@ HELP: map-as HELP: each-index { $values - { "seq" sequence } { "quot" quotation } } + { "seq" sequence } { "quot" { $quotation "( elt index -- )" } } } { $description "Calls the quotation with the element of the sequence and its index on the stack, with the index on the top of the stack." } -{ $examples { $example "USING: sequences prettyprint math ;" -"{ 10 20 30 } [ + . ] each-index" -"10\n21\n32" +{ $examples { $example "USING: arrays sequences prettyprint ;" +"{ 10 20 30 } [ 2array . ] each-index" +"{ 10 0 }\n{ 20 1 }\n{ 30 2 }" } } ; HELP: map-index { $values - { "seq" sequence } { "quot" quotation } { "newseq" sequence } } + { "seq" sequence } { "quot" { $quotation "( elt index -- result )" } } { "newseq" sequence } } { $description "Calls the quotation with the element of the sequence and its index on the stack, with the index on the top of the stack. Collects the outputs of the quotation and outputs them in a sequence of the same type as the input sequence." } -{ $examples { $example "USING: sequences prettyprint math ;" -"{ 10 20 30 } [ + ] map-index ." -"{ 10 21 32 }" +{ $examples { $example "USING: arrays sequences prettyprint ;" +"{ 10 20 30 } [ 2array ] map-index ." +"{ { 10 0 } { 20 1 } { 30 2 } }" } } ; HELP: change-nth @@ -344,7 +344,7 @@ HELP: change-nth { $side-effects "seq" } ; HELP: map! -{ $values { "seq" "a mutable sequence" } { "quot" { $quotation "( old -- new )" } } { "seq" "a mutable sequence" } } +{ $values { "seq" "a mutable sequence" } { "quot" { $quotation "( old -- new )" } } } { $description "Applies the quotation to each element yielding a new element, storing the new elements back in the original sequence. Returns the original sequence." } { $errors "Throws an error if the sequence is immutable, or the sequence cannot hold elements of the type output by " { $snippet "quot" } "." } { $side-effects "seq" } ; @@ -442,7 +442,7 @@ HELP: filter-as { $description "Applies the quotation to each element in turn, and outputs a new sequence of the same type as " { $snippet "exemplar" } " containing the elements of the original sequence for which the quotation output a true value." } ; HELP: filter! -{ $values { "seq" "a resizable mutable sequence" } { "quot" { $quotation "( elt -- ? )" } } { "seq" "a resizable mutable sequence" } } +{ $values { "seq" "a resizable mutable sequence" } { "quot" { $quotation "( elt -- ? )" } } } { $description "Applies the quotation to each element in turn, and removes elements for which the quotation outputs a false value." } { $side-effects "seq" } ; @@ -503,19 +503,19 @@ HELP: move { $side-effects "seq" } ; HELP: remove! -{ $values { "elt" object } { "seq" "a resizable mutable sequence" } { "elt" object } } +{ $values { "elt" object } { "seq" "a resizable mutable sequence" } } { $description "Removes all elements equal to " { $snippet "elt" } " from " { $snippet "seq" } " and returns " { $snippet "seq" } "." } { $notes "This word uses equality comparison (" { $link = } ")." } { $side-effects "seq" } ; HELP: remove-eq! -{ $values { "elt" object } { "seq" "a resizable mutable sequence" } { "seq" "a resizable mutable sequence" } } +{ $values { "elt" object } { "seq" "a resizable mutable sequence" } } { $description "Outputs a new sequence containing all elements of the input sequence except the given element." } { $notes "This word uses identity comparison (" { $link eq? } ")." } { $side-effects "seq" } ; HELP: remove-nth! -{ $values { "n" "a non-negative integer" } { "seq" "a resizable mutable sequence" } { "seq" "a resizable mutable sequence" } } +{ $values { "n" "a non-negative integer" } { "seq" "a resizable mutable sequence" } } { $description "Removes the " { $snippet "n" } "th element from the sequence, shifting all other elements down and reducing its length by one." } { $side-effects "seq" } ; @@ -540,7 +540,7 @@ HELP: suffix } ; HELP: suffix! -{ $values { "seq" sequence } { "elt" object } { "seq" sequence } } +{ $values { "seq" sequence } { "elt" object } } { $description "Modifiers a sequence in-place by adding " { $snippet "elt" } " to the end of " { $snippet "seq" } ". Outputs " { $snippet "seq" } "." } { $errors "Throws an error if the type of " { $snippet "elt" } " is not permitted in sequences of the same class as " { $snippet "seq" } "." } { $examples @@ -548,7 +548,7 @@ HELP: suffix! } ; HELP: append! -{ $values { "seq1" sequence } { "seq2" sequence } { "seq1" sequence } } +{ $values { "seq1" sequence } { "seq2" sequence } } { $description "Modifiers " { $snippet "seq1" } " in-place by adding the elements from " { $snippet "seq2" } " to the end and outputs " { $snippet "seq1" } "." } { $examples { $example "USING: prettyprint sequences ;" "V{ 1 2 3 } { 4 5 6 } append! ." "V{ 1 2 3 4 5 6 }" } @@ -995,8 +995,8 @@ HELP: count HELP: selector { $values - { "quot" "a predicate quotation" } - { "quot" quotation } { "accum" vector } } + { "quot" { $quotation "( elt -- ? )" } } + { "selector" { $quotation "( elt -- )" } } { "accum" vector } } { $description "Creates a new vector to accumulate the values which return true for a predicate. Returns a new quotation which accepts an object to be tested and stored in the collector if the test yields true. The collector is left on the stack for convenience." } { $example "! Find all the even numbers:" "USING: prettyprint sequences math kernel ;" "10 iota [ even? ] selector [ each ] dip ." @@ -1152,7 +1152,7 @@ HELP: replicate HELP: replicate-as { $values - { "len" integer } { "quot" quotation } { "exemplar" sequence } + { "len" integer } { "quot" { $quotation "( -- elt )" } } { "exemplar" sequence } { "newseq" sequence } } { $description "Calls the quotation " { $snippet "len" } " times, collecting results into a new sequence of the same type as the exemplar sequence." } { $examples @@ -1190,7 +1190,7 @@ HELP: virtual@ HELP: 2map-reduce { $values - { "seq1" sequence } { "seq2" sequence } { "map-quot" quotation } { "reduce-quot" quotation } + { "seq1" sequence } { "seq2" sequence } { "map-quot" { $quotation "( elt1 elt2 -- intermediate )" } } { "reduce-quot" { $quotation "( prev intermediate -- result )" } } { "result" object } } { $description "Calls " { $snippet "map-quot" } " on each pair of elements from " { $snippet "seq1" } " and " { $snippet "seq2" } " and combines the results using " { $snippet "reduce-quot" } " in the same manner as " { $link reduce } ", except that there is no identity element, and the sequence must have a length of at least 1." } { $errors "Throws an error if the sequence is empty." } @@ -1202,7 +1202,7 @@ HELP: 2map-reduce HELP: 2selector { $values { "quot" quotation } - { "quot" quotation } { "accum1" vector } { "accum2" vector } } + { "selector" quotation } { "accum1" vector } { "accum2" vector } } { $description "Creates two new vectors to accumultate values based on a predicate. The first vector accumulates values for which the predicate yields true; the second for false." } ; HELP: 2reverse-each @@ -1236,7 +1236,7 @@ HELP: collector HELP: binary-reduce { $values - { "seq" sequence } { "start" integer } { "quot" quotation } + { "seq" sequence } { "start" integer } { "quot" { $quotation "( elt1 elt2 -- newelt )" } } { "value" object } } { $description "Like " { $link reduce } ", but splits the sequence in half recursively until each sequence is small enough, and calls the quotation on these smaller sequences. If the quotation computes values that depend on the size of their input, such as bignum arithmetic, then this algorithm can be more efficient than using " { $link reduce } "." } { $examples "Computing factorial:" @@ -1247,7 +1247,7 @@ HELP: binary-reduce HELP: follow { $values - { "obj" object } { "quot" quotation } + { "obj" object } { "quot" { $quotation "( prev -- result/f )" } } { "seq" sequence } } { $description "Outputs a sequence containing the input object and all of the objects generated by successively feeding the result of the quotation called on the input object to the quotation recursuively. Objects yielded by the quotation are added to the output sequence until the quotation yields " { $link f } ", at which point the recursion terminates." } { $examples "Get random numbers until zero is reached:" @@ -1323,8 +1323,7 @@ HELP: sequence-hashcode-step HELP: short { $values - { "seq" sequence } { "n" integer } - { "seq" sequence } { "n'" integer } } + { "seq" sequence } { "n" integer } { "n'" integer } } { $description "Returns the input sequence and its length or " { $snippet "n" } ", whichever is less." } { $examples { $example "USING: sequences kernel prettyprint ;" "\"abcd\" 3 short [ . ] bi@" diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 23ab4b5d84..2eafe2ceb8 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -486,10 +486,10 @@ PRIVATE> : push-if ( elt quot accum -- ) [ keep ] dip rot [ push ] [ 2drop ] if ; inline -: selector-for ( quot exemplar -- quot accum ) +: selector-for ( quot exemplar -- selector accum ) [ length ] keep new-resizable [ [ push-if ] 2curry ] keep ; inline -: selector ( quot -- quot accum ) +: selector ( quot -- selector accum ) V{ } selector-for ; inline : filter-as ( seq quot exemplar -- subseq ) @@ -501,7 +501,7 @@ PRIVATE> : push-either ( elt quot accum1 accum2 -- ) [ keep swap ] 2dip ? push ; inline -: 2selector ( quot -- quot accum1 accum2 ) +: 2selector ( quot -- selector accum1 accum2 ) V{ } clone V{ } clone [ [ push-either ] 3curry ] 2keep ; inline : partition ( seq quot -- trueseq falseseq ) diff --git a/core/syntax/syntax-docs.factor b/core/syntax/syntax-docs.factor index 8ad6084188..4a1af4c578 100644 --- a/core/syntax/syntax-docs.factor +++ b/core/syntax/syntax-docs.factor @@ -792,6 +792,10 @@ $nl { $code "TUPLE: person" "{ age integer initial: 0 }" "{ department string initial: \"Marketing\" }" "manager ;" } } ; +HELP: final +{ $syntax "TUPLE: ... ; final" } +{ $description "Declares the most recently defined word as a final tuple class which cannot be subclassed. Attempting to subclass a final class raises a " { $link bad-superclass } " error." } ; + HELP: initial: { $syntax "TUPLE: ... { slot initial: value } ... ;" } { $values { "slot" "a slot name" } { "value" "any literal" } } diff --git a/core/syntax/syntax.factor b/core/syntax/syntax.factor index cf2c49fff9..0b5b32e289 100644 --- a/core/syntax/syntax.factor +++ b/core/syntax/syntax.factor @@ -204,6 +204,10 @@ IN: bootstrap.syntax parse-tuple-definition define-tuple-class ] define-core-syntax + "final" [ + word make-final + ] define-core-syntax + "SLOT:" [ scan define-protocol-slot ] define-core-syntax diff --git a/core/vocabs/loader/loader.factor b/core/vocabs/loader/loader.factor index 2c0f67641d..67d7d7677d 100644 --- a/core/vocabs/loader/loader.factor +++ b/core/vocabs/loader/loader.factor @@ -99,6 +99,11 @@ PRIVATE> SYMBOL: blacklist +! Defined by vocabs.metadata +SYMBOL: check-vocab-hook + +check-vocab-hook [ [ drop ] ] initialize + diff --git a/core/vocabs/loader/test/a/a.factor b/core/vocabs/loader/test/a/a.factor index 03a2f8a091..b1fa5aaed8 100644 --- a/core/vocabs/loader/test/a/a.factor +++ b/core/vocabs/loader/test/a/a.factor @@ -3,8 +3,8 @@ IN: vocabs.loader.test.a << global [ "count-me" inc ] bind >> -: v-l-t-a-hello 4 ; +: v-l-t-a-hello ( -- a ) 4 ; -: byebye v-l-t-a-hello ; +: byebye ( -- a ) v-l-t-a-hello ; [ this is an error diff --git a/core/vocabs/loader/test/a/tags.txt b/core/vocabs/loader/test/a/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/a/tags.txt +++ b/core/vocabs/loader/test/a/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/core/vocabs/loader/test/b/tags.txt b/core/vocabs/loader/test/b/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/b/tags.txt +++ b/core/vocabs/loader/test/b/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/core/vocabs/loader/test/c/tags.txt b/core/vocabs/loader/test/c/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/c/tags.txt +++ b/core/vocabs/loader/test/c/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/core/vocabs/loader/test/d/tags.txt b/core/vocabs/loader/test/d/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/d/tags.txt +++ b/core/vocabs/loader/test/d/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/core/vocabs/loader/test/e/tags.txt b/core/vocabs/loader/test/e/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/e/tags.txt +++ b/core/vocabs/loader/test/e/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/core/vocabs/loader/test/f/tags.txt b/core/vocabs/loader/test/f/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/f/tags.txt +++ b/core/vocabs/loader/test/f/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/core/vocabs/loader/test/g/tags.txt b/core/vocabs/loader/test/g/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/g/tags.txt +++ b/core/vocabs/loader/test/g/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/core/vocabs/loader/test/h/tags.txt b/core/vocabs/loader/test/h/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/h/tags.txt +++ b/core/vocabs/loader/test/h/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/core/vocabs/loader/test/i/tags.txt b/core/vocabs/loader/test/i/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/i/tags.txt +++ b/core/vocabs/loader/test/i/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/core/vocabs/loader/test/j/tags.txt b/core/vocabs/loader/test/j/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/j/tags.txt +++ b/core/vocabs/loader/test/j/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/core/vocabs/loader/test/k/tags.txt b/core/vocabs/loader/test/k/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/k/tags.txt +++ b/core/vocabs/loader/test/k/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/core/vocabs/loader/test/l/tags.txt b/core/vocabs/loader/test/l/tags.txt index 6bf68304bb..5d77766703 100644 --- a/core/vocabs/loader/test/l/tags.txt +++ b/core/vocabs/loader/test/l/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/extra/benchmark/tuple-arrays/tuple-arrays.factor b/extra/benchmark/tuple-arrays/tuple-arrays.factor index 701db77135..80c31553c1 100644 --- a/extra/benchmark/tuple-arrays/tuple-arrays.factor +++ b/extra/benchmark/tuple-arrays/tuple-arrays.factor @@ -1,10 +1,10 @@ -! Copyright (C) 2009 Slava Pestov. +! Copyright (C) 2009, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: kernel math math.functions tuple-arrays accessors fry sequences prettyprint ; IN: benchmark.tuple-arrays -TUPLE: point { x float } { y float } { z float } ; +TUPLE: point { x float } { y float } { z float } ; final TUPLE-ARRAY: point diff --git a/extra/chipmunk/demo/demo.factor b/extra/chipmunk/demo/demo.factor index 031ed576b6..06f3c32dbe 100644 --- a/extra/chipmunk/demo/demo.factor +++ b/extra/chipmunk/demo/demo.factor @@ -1,9 +1,8 @@ ! Copyright (C) 2010 Erik Charlebois ! See http:// factorcode.org/license.txt for BSD license. -USING: accessors chipmunk classes.struct game.loop game.worlds gpu -gpu.util.wasd kernel literals locals math method-chains opengl.gl -random sequences specialized-arrays -specialized-arrays.instances.alien.c-types.void* ui.gadgets.worlds +USING: accessors chipmunk classes.struct game.worlds kernel locals +math method-chains opengl.gl random sequences specialized-arrays +specialized-arrays.instances.alien.c-types.void* ui ui.gadgets.worlds ui.pixel-formats ; IN: chipmunk.demo @@ -56,7 +55,7 @@ CONSTANT: image-bitmap B{ cpCircleShapeAlloc body 0.95 0 0 cpv cpCircleShapeInit cpCircleShape memory>struct [ shape>> 0 >>e ] [ shape>> 0 >>u ] bi drop ; -TUPLE: chipmunk-world < wasd-world +TUPLE: chipmunk-world < game-world space ; AFTER: chipmunk-world tick-game-world @@ -97,8 +96,6 @@ M:: chipmunk-world draw-world* ( world -- ) M:: chipmunk-world begin-game-world ( world -- ) cpInitChipmunk - init-gpu - world { -0.2 0.13 0.1 } 1.1 0.2 set-wasd-view drop cpSpaceAlloc cpSpaceInit cpSpace memory>struct :> space @@ -132,20 +129,19 @@ M: chipmunk-world end-game-world [ cpSpaceFreeChildren ] [ cpSpaceFree ] bi ; -M: chipmunk-world wasd-movement-speed drop 1/160. ; -M: chipmunk-world wasd-near-plane drop 1/32. ; -M: chipmunk-world wasd-far-plane drop 256.0 ; +: chipmunk-demo ( -- ) + [ + f + T{ game-attributes + { world-class chipmunk-world } + { title "Chipmunk Physics Demo" } + { pixel-format-attributes + { windowed double-buffered } + } + { pref-dim { 640 480 } } + { tick-interval-micros 16666 } + } + clone + open-window + ] with-ui ; -GAME: chipmunk-demo { - { world-class chipmunk-world } - { title "Chipmunk Physics Demo" } - { pixel-format-attributes { - windowed - double-buffered - T{ depth-bits { value 24 } } - } } - { grab-input? t } - { use-game-input? t } - { pref-dim { 640 480 } } - { tick-interval-micros $[ 60 fps ] } - } ; diff --git a/extra/chipmunk/summary.txt b/extra/chipmunk/summary.txt index ebc56a79ed..2859b353f2 100644 --- a/extra/chipmunk/summary.txt +++ b/extra/chipmunk/summary.txt @@ -1 +1 @@ -FFI bindings to the Chipmunk 2D physics library. +Chipmunk 2D physics library binding diff --git a/extra/chipmunk/tags.txt b/extra/chipmunk/tags.txt new file mode 100644 index 0000000000..bb863cf9a0 --- /dev/null +++ b/extra/chipmunk/tags.txt @@ -0,0 +1 @@ +bindings diff --git a/extra/couchdb/tags.txt b/extra/couchdb/tags.txt index 6bf68304bb..5d77766703 100644 --- a/extra/couchdb/tags.txt +++ b/extra/couchdb/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/extra/curses/ffi/platforms.txt b/extra/curses/ffi/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/extra/curses/ffi/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/extra/curses/ffi/tags.txt b/extra/curses/ffi/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/curses/ffi/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/curses/platforms.txt b/extra/curses/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/extra/curses/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/extra/curses/tags.txt b/extra/curses/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/curses/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/ecdsa/tags.txt b/extra/ecdsa/tags.txt index 6bf68304bb..5d77766703 100644 --- a/extra/ecdsa/tags.txt +++ b/extra/ecdsa/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/extra/game/models/collada/collada-docs.factor b/extra/game/models/collada/collada-docs.factor index 5be2e19790..b8dad530a4 100644 --- a/extra/game/models/collada/collada-docs.factor +++ b/extra/game/models/collada/collada-docs.factor @@ -33,7 +33,7 @@ HELP: y-up { $class-description "Right-handed 3D coordinate system where Y is up HELP: z-up { $class-description "Right-handed 3D coordinate system where Z is up." } ; HELP: >y-up-axis! -{ $values { "seq" sequence } { "from-axis" rh-up } { "seq" sequence } } +{ $values { "seq" sequence } { "from-axis" rh-up } } { $description "Destructively swizzles the first three elements of the input sequence to a right-handed 3D coordinate system where Y is up and returns the modified sequence." } ; HELP: source>seq @@ -53,7 +53,7 @@ HELP: mesh>vertices { $description "Convert the mesh tag's vertices element to a pair for further lookup in " { $link collect-sources } ". " } ; HELP: collect-sources -{ $values { "sources" hashtable } { "vertices" pair } { "inputs" tag sequence } { "sources" sequence } } +{ $values { "sources" hashtable } { "vertices" pair } { "inputs" tag sequence } { "seq" sequence } } { $description "Look up the sources for these " { $emphasis "input" } " elements and return a sequence of " { $link source } " tuples." } ; HELP: group-indices diff --git a/extra/game/models/collada/collada.factor b/extra/game/models/collada/collada.factor index ef1c55049b..bb7c73c2c7 100644 --- a/extra/game/models/collada/collada.factor +++ b/extra/game/models/collada/collada.factor @@ -94,7 +94,7 @@ M: z-up >y-up-axis! ] x* ] bi 2array ; -:: collect-sources ( sources vertices inputs -- sources ) +:: collect-sources ( sources vertices inputs -- seq ) inputs [| input | input "source" x@ rest vertices first = diff --git a/extra/game/models/obj/obj-docs.factor b/extra/game/models/obj/obj-docs.factor index ceb61dbb17..a41ca13b8e 100644 --- a/extra/game/models/obj/obj-docs.factor +++ b/extra/game/models/obj/obj-docs.factor @@ -58,7 +58,7 @@ HELP: face>aos { $description "Convert a face line to a sequence of vertex attributes." } ; HELP: push* -{ $values { "elt" "an object" } { "seq" sequence } { "seq" sequence } } +{ $values { "elt" "an object" } { "seq" sequence } } { $description "Push the value onto the sequence, keeping the sequence on the stack." } ; HELP: push-current-model diff --git a/extra/gpu/gpu-docs.factor b/extra/gpu/gpu-docs.factor index 3c0c24e97e..103e0c60a1 100644 --- a/extra/gpu/gpu-docs.factor +++ b/extra/gpu/gpu-docs.factor @@ -42,6 +42,6 @@ ARTICLE: "gpu-summary" "GPU-accelerated rendering" "gpu.shaders" "gpu.render" } -"The library is built on top of the OpenGL API, but it aims to be complete enough that raw OpenGL calls are never needed. OpenGL 2.0 with the vertex array object extension (" { $snippet "GL_APPLE_vertex_array_object" } " or " { $snippet "GL_ARB_vertex_array_object" } ") is required. Some features require later OpenGL versions or additional extensions; these requirements are documented alongside individual words. To make full use of the library, an OpenGL 3.1 or later implementation is recommended." ; +"The library is built on top of the OpenGL API, but it aims to be complete enough that raw OpenGL calls are never needed. OpenGL 2.0 is required. Some features require later OpenGL versions or additional extensions; these requirements are documented alongside individual words. To make full use of the library, an OpenGL 3.1 or later implementation is recommended." ; ABOUT: "gpu-summary" diff --git a/extra/gpu/gpu.factor b/extra/gpu/gpu.factor old mode 100644 new mode 100755 index 6a61e2ec4f..1d02b3f07a --- a/extra/gpu/gpu.factor +++ b/extra/gpu/gpu.factor @@ -9,10 +9,12 @@ TUPLE: gpu-object < identity-tuple handle ; VARIANT: gpu-api opengl-2 opengl-3 ; +SYMBOL: has-vertex-array-objects? + : set-gpu-api ( -- ) "2.0" require-gl-version "3.0" { { "GL_ARB_vertex_array_object" "GL_APPLE_vertex_array_object" } } - require-gl-version-or-extensions + has-gl-version-or-extensions? has-vertex-array-objects? set-global "3.0" has-gl-version? opengl-3 opengl-2 ? gpu-api set-global ; HOOK: init-gpu-api gpu-api ( -- ) diff --git a/extra/gpu/render/render.factor b/extra/gpu/render/render.factor old mode 100644 new mode 100755 index 1d4813ab54..2b7d75a3ae --- a/extra/gpu/render/render.factor +++ b/extra/gpu/render/render.factor @@ -520,9 +520,6 @@ SYNTAX: UNIFORM-TUPLE: > glBindVertexArray ; - : bind-unnamed-output-attachments ( framebuffer attachments -- ) [ gl-attachment ] with map dup length 1 = @@ -567,7 +564,7 @@ UNION: transform-feedback-output buffer buffer-range POSTPONE: f ; TUPLE: render-set { primitive-mode primitive-mode read-only } - { vertex-array vertex-array read-only } + { vertex-array vertex-array initial: T{ vertex-array-collection } read-only } { uniforms uniform-tuple read-only } { indexes vertex-indexes initial: T{ index-range } read-only } { instances ?integer initial: f read-only } diff --git a/extra/gpu/shaders/shaders-docs.factor b/extra/gpu/shaders/shaders-docs.factor index dd16224529..54822c2fbb 100644 --- a/extra/gpu/shaders/shaders-docs.factor +++ b/extra/gpu/shaders/shaders-docs.factor @@ -167,14 +167,23 @@ HELP: vertex-shader { $class-description "This " { $link shader-kind } " indicates that a " { $link shader } " is a vertex shader." } ; HELP: vertex-array -{ $class-description "A " { $snippet "vertex-array" } " object associates a shader " { $link program-instance } " with vertex attribute data from one or more " { $link buffer } "s. The format of the binary data inside these buffers is described using " { $link vertex-format } "s. " { $snippet "vertex-array" } "s are constructed using the " { $link } " or " { $link } " words." } ; +{ $class-description "A " { $snippet "vertex-array" } " object associates a shader " { $link program-instance } " with vertex attribute data from one or more " { $link buffer } "s. The format of the binary data inside these buffers is described using " { $link vertex-format } "s. " { $snippet "vertex-array" } "s are constructed using the " { $link } " or " { $link } " words. The actual type of a vertex-array object is opaque, but the " { $link vertex-array-buffers } " word can be used to query a vertex array object for its component buffers." } ; + +HELP: vertex-array-buffers +{ $values + { "vertex-array" vertex-array } + { "buffers" sequence } +} +{ $description "Returns a sequence containing all of the " { $link buffer } " objects that make up " { $snippet "vertex-array" } "." } ; HELP: vertex-array-buffer { $values { "vertex-array" vertex-array } { "vertex-buffer" buffer } } -{ $description "Returns the first " { $link buffer } " object comprised in " { $snippet "vertex-array" } "." } ; +{ $description "Returns the first " { $link buffer } " object that makes up " { $snippet "vertex-array" } "." } ; + +{ vertex-array-buffer vertex-array-buffers } related-words HELP: vertex-attribute { $class-description "This tuple type is passed to " { $link define-vertex-format } " to define a new " { $link vertex-format } " type." } ; @@ -204,7 +213,8 @@ ARTICLE: "gpu.shaders" "Shader objects" { $subsections vertex-array - vertex-array + + POSTPONE: VERTEX-FORMAT: } ; diff --git a/extra/gpu/shaders/shaders.factor b/extra/gpu/shaders/shaders.factor old mode 100644 new mode 100755 index 0401584f7c..025acba896 --- a/extra/gpu/shaders/shaders.factor +++ b/extra/gpu/shaders/shaders.factor @@ -2,9 +2,9 @@ USING: accessors alien alien.c-types alien.data alien.strings arrays assocs byte-arrays classes.mixin classes.parser classes.singleton classes.struct combinators combinators.short-circuit -definitions destructors fry generic.parser gpu gpu.buffers hashtables -images io.encodings.ascii io.files io.pathnames kernel lexer -literals locals math math.parser memoize multiline namespaces +definitions destructors fry generic.parser gpu gpu.buffers gpu.private +gpu.state hashtables images io.encodings.ascii io.files io.pathnames +kernel lexer literals locals math math.parser memoize multiline namespaces opengl opengl.gl opengl.shaders parser quotations sequences specialized-arrays splitting strings tr ui.gadgets.worlds variants vectors vocabs vocabs.loader vocabs.parser words @@ -319,11 +319,18 @@ SYNTAX: VERTEX-FORMAT: SYNTAX: VERTEX-STRUCT: CREATE-CLASS scan-word define-vertex-struct ; -TUPLE: vertex-array < gpu-object +TUPLE: vertex-array-object < gpu-object { program-instance program-instance read-only } { vertex-buffers sequence read-only } ; -M: vertex-array dispose +TUPLE: vertex-array-collection + { vertex-formats sequence read-only } + { program-instance program-instance read-only } ; + +UNION: vertex-array + vertex-array-object vertex-array-collection ; + +M: vertex-array-object dispose [ [ delete-vertex-array ] when* f ] change-handle drop ; : ?>buffer-ptr ( buffer/ptr -- buffer-ptr ) @@ -331,26 +338,73 @@ M: vertex-array dispose : ?>buffer ( buffer/ptr -- buffer ) dup buffer? [ buffer>> ] unless ; inline -:: ( vertex-formats program-instance -- vertex-array ) +buffer-ptr ] dip 2array ] map ; inline + +: (bind-vertex-array) ( vertex-formats program-instance -- ) + '[ _ swap first2 bind-vertex-format ] each ; inline + +: (reset-vertex-array) ( -- ) + GL_MAX_VERTEX_ATTRIBS get-gl-int iota [ glDisableVertexAttribArray ] each ; inline + +:: ( vertex-formats program-instance -- vertex-array ) gen-vertex-array :> handle handle glBindVertexArray - vertex-formats [ program-instance swap first2 [ ?>buffer-ptr ] dip bind-vertex-format ] each - handle program-instance vertex-formats [ first ?>buffer ] map - vertex-array boa window-resource ; inline + vertex-formats normalize-vertex-formats program-instance (bind-vertex-array) -:: ( vertex-buffer program-instance format -- vertex-array ) + handle program-instance vertex-formats [ first ?>buffer ] map + vertex-array-object boa window-resource ; inline + +: ( vertex-formats program-instance -- vertex-array ) + [ normalize-vertex-formats ] dip vertex-array-collection boa ; inline + +:: ( vertex-buffer program-instance format -- vertex-array ) gen-vertex-array :> handle handle glBindVertexArray program-instance vertex-buffer ?>buffer-ptr format bind-vertex-format handle program-instance vertex-buffer ?>buffer 1array - vertex-array boa window-resource ; inline + vertex-array-object boa window-resource ; inline + +: ( vertex-buffer program-instance format -- vertex-array ) + swap [ [ ?>buffer-ptr ] dip 2array 1array ] dip ; inline + +PRIVATE> + +GENERIC: bind-vertex-array ( vertex-array -- ) + +M: vertex-array-object bind-vertex-array + handle>> glBindVertexArray ; inline + +M: vertex-array-collection bind-vertex-array + (reset-vertex-array) + [ vertex-formats>> ] [ program-instance>> ] bi (bind-vertex-array) ; inline + +: ( vertex-formats program-instance -- vertex-array ) + has-vertex-array-objects? get + [ ] + [ ] if ; inline + +: ( vertex-buffer program-instance format -- vertex-array ) + has-vertex-array-objects? get + [ ] + [ ] if ; inline : ( vertex-buffer program-instance -- vertex-array ) dup program>> vertex-formats>> first ; inline -TYPED: vertex-array-buffer ( vertex-array: vertex-array -- vertex-buffer: buffer ) - vertex-buffers>> first ; +GENERIC: vertex-array-buffers ( vertex-array -- buffers ) + +M: vertex-array-object vertex-array-buffers + vertex-buffers>> ; inline + +M: vertex-array-collection vertex-array-buffers + vertex-formats>> [ first buffer>> ] map ; inline + +: vertex-array-buffer ( vertex-array: vertex-array -- vertex-buffer: buffer ) + vertex-array-buffers first ; inline TUPLE: compile-shader-error shader log ; TUPLE: link-program-error program log ; diff --git a/extra/gpu/state/state.factor b/extra/gpu/state/state.factor old mode 100644 new mode 100755 index 3064ed4b82..db76774038 --- a/extra/gpu/state/state.factor +++ b/extra/gpu/state/state.factor @@ -415,8 +415,6 @@ M: mask-state set-gpu-state* [ [ set-gpu-state* ] each ] [ set-gpu-state* ] if ; inline - [ glGetBooleanv ] keep *uchar c-bool> ; : get-gl-int ( enum -- value ) @@ -437,8 +435,6 @@ M: mask-state set-gpu-state* : gl-enabled? ( enum -- ? ) glIsEnabled c-bool> ; -PRIVATE> - TYPED: get-viewport-state ( -- viewport-state: viewport-state ) GL_VIEWPORT get-gl-rect ; diff --git a/extra/infix/infix-docs.factor b/extra/infix/infix-docs.factor index 9c42bf256b..3885fcc613 100644 --- a/extra/infix/infix-docs.factor +++ b/extra/infix/infix-docs.factor @@ -65,14 +65,6 @@ $nl "[let { 1 2 3 4 } :> myarr [infix myarr[4/2]*3 infix] ] ." "9" } -"Please note: in Factor " { $emphasis "fixnums are sequences too." } " If you are not careful with sequence accesses you may introduce subtle bugs:" -{ $example - "USING: arrays infix locals ;" - ":: add-2nd-elements ( x y -- res )" - " [infix x[1] + y[1] infix] ;" - "{ 1 2 3 } { 0 1 2 3 } add-2nd-elements ." - "3" -} ; ABOUT: "infix" diff --git a/extra/io/serial/tags.txt b/extra/io/serial/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/io/serial/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/io/serial/unix/bsd/platforms.txt b/extra/io/serial/unix/bsd/platforms.txt new file mode 100644 index 0000000000..df796f15d4 --- /dev/null +++ b/extra/io/serial/unix/bsd/platforms.txt @@ -0,0 +1 @@ +bsd diff --git a/extra/io/serial/unix/bsd/tags.txt b/extra/io/serial/unix/bsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/io/serial/unix/bsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/io/serial/unix/linux/platforms.txt b/extra/io/serial/unix/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/extra/io/serial/unix/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/extra/io/serial/unix/linux/tags.txt b/extra/io/serial/unix/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/io/serial/unix/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/io/serial/unix/platforms.txt b/extra/io/serial/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/extra/io/serial/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/extra/io/serial/unix/tags.txt b/extra/io/serial/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/io/serial/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/io/serial/unix/termios/bsd/platforms.txt b/extra/io/serial/unix/termios/bsd/platforms.txt new file mode 100644 index 0000000000..df796f15d4 --- /dev/null +++ b/extra/io/serial/unix/termios/bsd/platforms.txt @@ -0,0 +1 @@ +bsd diff --git a/extra/io/serial/unix/termios/bsd/tags.txt b/extra/io/serial/unix/termios/bsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/io/serial/unix/termios/bsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/io/serial/unix/termios/linux/platforms.txt b/extra/io/serial/unix/termios/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/extra/io/serial/unix/termios/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/extra/io/serial/unix/termios/linux/tags.txt b/extra/io/serial/unix/termios/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/io/serial/unix/termios/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/io/serial/unix/termios/platforms.txt b/extra/io/serial/unix/termios/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/extra/io/serial/unix/termios/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/extra/io/serial/unix/termios/tags.txt b/extra/io/serial/unix/termios/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/io/serial/unix/termios/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/io/serial/unix/unix.factor b/extra/io/serial/unix/unix.factor index 8ee115ca45..6c0de55ec8 100644 --- a/extra/io/serial/unix/unix.factor +++ b/extra/io/serial/unix/unix.factor @@ -2,8 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien.c-types alien.syntax alien.data classes.struct combinators io.ports io.streams.duplex -system kernel math math.bitwise vocabs.loader unix io.serial -io.serial.unix.termios io.backend.unix ; +system kernel math math.bitwise vocabs.loader io.serial +io.serial.unix.termios io.backend.unix unix unix.ffi ; IN: io.serial.unix << { diff --git a/extra/io/serial/windows/platforms.txt b/extra/io/serial/windows/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/extra/io/serial/windows/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/extra/io/serial/windows/tags.txt b/extra/io/serial/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/io/serial/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/libusb/authors.txt b/extra/libusb/authors.txt new file mode 100644 index 0000000000..67cf648cf5 --- /dev/null +++ b/extra/libusb/authors.txt @@ -0,0 +1 @@ +Erik Charlebois \ No newline at end of file diff --git a/extra/libusb/libusb.factor b/extra/libusb/libusb.factor new file mode 100644 index 0000000000..d521015d6f --- /dev/null +++ b/extra/libusb/libusb.factor @@ -0,0 +1,422 @@ +! Copyright (C) 2010 Erik Charlebois. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors alien alien.c-types alien.libraries +alien.syntax classes.struct combinators endian io.binary +kernel locals math sequences specialized-arrays +system unix.time unix.types ; +FROM: alien.c-types => short ; +IN: libusb + +<< "libusb" { + { [ os windows? ] [ "libusb-1.0.dll" ] } + { [ os macosx? ] [ "libusb-1.0.dylib" ] } + { [ os unix? ] [ "libusb-1.0.so" ] } + } cond "cdecl" add-library >> +LIBRARY: libusb + +: libusb_cpu_to_le16 ( x -- y ) + 2 >native-endian le> ; inline + +ALIAS: libusb_le16_to_cpu libusb_cpu_to_le16 + +CONSTANT: LIBUSB_CLASS_PER_INTERFACE 0 +CONSTANT: LIBUSB_CLASS_AUDIO 1 +CONSTANT: LIBUSB_CLASS_COMM 2 +CONSTANT: LIBUSB_CLASS_HID 3 +CONSTANT: LIBUSB_CLASS_PRINTER 7 +CONSTANT: LIBUSB_CLASS_PTP 6 +CONSTANT: LIBUSB_CLASS_MASS_STORAGE 8 +CONSTANT: LIBUSB_CLASS_HUB 9 +CONSTANT: LIBUSB_CLASS_DATA 10 +CONSTANT: LIBUSB_CLASS_VENDOR_SPEC HEX: ff +TYPEDEF: int libusb_class_code + +CONSTANT: LIBUSB_DT_DEVICE HEX: 01 +CONSTANT: LIBUSB_DT_CONFIG HEX: 02 +CONSTANT: LIBUSB_DT_STRING HEX: 03 +CONSTANT: LIBUSB_DT_INTERFACE HEX: 04 +CONSTANT: LIBUSB_DT_ENDPOINT HEX: 05 +CONSTANT: LIBUSB_DT_HID HEX: 21 +CONSTANT: LIBUSB_DT_REPORT HEX: 22 +CONSTANT: LIBUSB_DT_PHYSICAL HEX: 23 +CONSTANT: LIBUSB_DT_HUB HEX: 29 +TYPEDEF: int libusb_descriptor_type + +CONSTANT: LIBUSB_DT_DEVICE_SIZE 18 +CONSTANT: LIBUSB_DT_CONFIG_SIZE 9 +CONSTANT: LIBUSB_DT_INTERFACE_SIZE 9 +CONSTANT: LIBUSB_DT_ENDPOINT_SIZE 7 +CONSTANT: LIBUSB_DT_ENDPOINT_AUDIO_SIZE 9 +CONSTANT: LIBUSB_DT_HUB_NONVAR_SIZE 7 + +CONSTANT: LIBUSB_ENDPOINT_ADDRESS_MASK HEX: 0f +CONSTANT: LIBUSB_ENDPOINT_DIR_MASK HEX: 80 + +CONSTANT: LIBUSB_ENDPOINT_IN HEX: 80 +CONSTANT: LIBUSB_ENDPOINT_OUT HEX: 00 +TYPEDEF: int libusb_endpoint_direction + +CONSTANT: LIBUSB_TRANSFER_TYPE_MASK HEX: 03 + +CONSTANT: LIBUSB_TRANSFER_TYPE_CONTROL 0 +CONSTANT: LIBUSB_TRANSFER_TYPE_ISOCHRONOUS 1 +CONSTANT: LIBUSB_TRANSFER_TYPE_BULK 2 +CONSTANT: LIBUSB_TRANSFER_TYPE_INTERRUPT 3 +TYPEDEF: int libusb_transfer_type + +CONSTANT: LIBUSB_REQUEST_GET_STATUS HEX: 00 +CONSTANT: LIBUSB_REQUEST_CLEAR_FEATURE HEX: 01 +CONSTANT: LIBUSB_REQUEST_SET_FEATURE HEX: 03 +CONSTANT: LIBUSB_REQUEST_SET_ADDRESS HEX: 05 +CONSTANT: LIBUSB_REQUEST_GET_DESCRIPTOR HEX: 06 +CONSTANT: LIBUSB_REQUEST_SET_DESCRIPTOR HEX: 07 +CONSTANT: LIBUSB_REQUEST_GET_CONFIGURATION HEX: 08 +CONSTANT: LIBUSB_REQUEST_SET_CONFIGURATION HEX: 09 +CONSTANT: LIBUSB_REQUEST_GET_INTERFACE HEX: 0A +CONSTANT: LIBUSB_REQUEST_SET_INTERFACE HEX: 0B +CONSTANT: LIBUSB_REQUEST_SYNCH_FRAME HEX: 0C +TYPEDEF: int libusb_standard_request + +CONSTANT: LIBUSB_REQUEST_TYPE_STANDARD HEX: 00 +CONSTANT: LIBUSB_REQUEST_TYPE_CLASS HEX: 20 +CONSTANT: LIBUSB_REQUEST_TYPE_VENDOR HEX: 40 +CONSTANT: LIBUSB_REQUEST_TYPE_RESERVED HEX: 60 + +CONSTANT: LIBUSB_RECIPIENT_DEVICE HEX: 00 +CONSTANT: LIBUSB_RECIPIENT_INTERFACE HEX: 01 +CONSTANT: LIBUSB_RECIPIENT_ENDPOINT HEX: 02 +CONSTANT: LIBUSB_RECIPIENT_OTHER HEX: 03 +TYPEDEF: int libusb_request_recipient + +CONSTANT: LIBUSB_ISO_SYNC_TYPE_MASK HEX: 0C + +CONSTANT: LIBUSB_ISO_SYNC_TYPE_NONE 0 +CONSTANT: LIBUSB_ISO_SYNC_TYPE_ASYNC 1 +CONSTANT: LIBUSB_ISO_SYNC_TYPE_ADAPTIVE 2 +CONSTANT: LIBUSB_ISO_SYNC_TYPE_SYNC 3 +TYPEDEF: int libusb_iso_sync_type + +CONSTANT: LIBUSB_ISO_USAGE_TYPE_MASK HEX: 30 + +CONSTANT: LIBUSB_ISO_USAGE_TYPE_DATA 0 +CONSTANT: LIBUSB_ISO_USAGE_TYPE_FEEDBACK 1 +CONSTANT: LIBUSB_ISO_USAGE_TYPE_IMPLICIT 2 +TYPEDEF: int libusb_iso_usage_type + +STRUCT: libusb_device_descriptor + { bLength uint8_t } + { bDescriptorType uint8_t } + { bcdUSB uint16_t } + { bDeviceClass uint8_t } + { bDeviceSubClass uint8_t } + { bDeviceProtocol uint8_t } + { bMaxPacketSize0 uint8_t } + { idVendor uint16_t } + { idProduct uint16_t } + { bcdDevice uint16_t } + { iManufacturer uint8_t } + { iProduct uint8_t } + { iSerialNumber uint8_t } + { bNumConfigurations uint8_t } ; + +STRUCT: libusb_endpoint_descriptor + { bLength uint8_t } + { bDescriptorType uint8_t } + { bEndpointAddress uint8_t } + { bmAttributes uint8_t } + { wMaxPacketSize uint16_t } + { bInterval uint8_t } + { bRefresh uint8_t } + { bSynchAddress uint8_t } + { extra uchar* } + { extra_length int } ; + +STRUCT: libusb_interface_descriptor + { bLength uint8_t } + { bDescriptorType uint8_t } + { bInterfaceNumber uint8_t } + { bAlternateSetting uint8_t } + { bNumEndpoints uint8_t } + { bInterfaceClass uint8_t } + { bInterfaceSubClass uint8_t } + { bInterfaceProtocol uint8_t } + { iInterface uint8_t } + { endpoint libusb_endpoint_descriptor* } + { extra uchar* } + { extra_length int } ; + +STRUCT: libusb_interface + { altsetting libusb_interface_descriptor* } + { num_altsetting int } ; + +STRUCT: libusb_config_descriptor + { bLength uint8_t } + { bDescriptorType uint8_t } + { wTotalLength uint16_t } + { bNumInterfaces uint8_t } + { bConfigurationValue uint8_t } + { iConfiguration uint8_t } + { bmAttributes uint8_t } + { MaxPower uint8_t } + { interface libusb_interface* } + { extra uchar* } + { extra_length int } ; + +STRUCT: libusb_control_setup + { bmRequestType uint8_t } + { bRequest uint8_t } + { wValue uint16_t } + { wIndex uint16_t } + { wLength uint16_t } ; + +: LIBUSB_CONTROL_SETUP_SIZE ( -- x ) libusb_control_setup heap-size ; inline + +C-TYPE: libusb_context +C-TYPE: libusb_device +C-TYPE: libusb_device_handle + +CONSTANT: LIBUSB_SUCCESS 0 +CONSTANT: LIBUSB_ERROR_IO -1 +CONSTANT: LIBUSB_ERROR_INVALID_PARAM -2 +CONSTANT: LIBUSB_ERROR_ACCESS -3 +CONSTANT: LIBUSB_ERROR_NO_DEVICE -4 +CONSTANT: LIBUSB_ERROR_NOT_FOUND -5 +CONSTANT: LIBUSB_ERROR_BUSY -6 +CONSTANT: LIBUSB_ERROR_TIMEOUT -7 +CONSTANT: LIBUSB_ERROR_OVERFLOW -8 +CONSTANT: LIBUSB_ERROR_PIPE -9 +CONSTANT: LIBUSB_ERROR_INTERRUPTED -10 +CONSTANT: LIBUSB_ERROR_NO_MEM -11 +CONSTANT: LIBUSB_ERROR_NOT_SUPPORTED -12 +CONSTANT: LIBUSB_ERROR_OTHER -99 +TYPEDEF: int libusb_error + +C-ENUM: + LIBUSB_TRANSFER_COMPLETED + LIBUSB_TRANSFER_ERROR + LIBUSB_TRANSFER_TIMED_OUT + LIBUSB_TRANSFER_CANCELLED + LIBUSB_TRANSFER_STALL + LIBUSB_TRANSFER_NO_DEVICE + LIBUSB_TRANSFER_OVERFLOW ; +TYPEDEF: int libusb_transfer_status + +CONSTANT: LIBUSB_TRANSFER_SHORT_NOT_OK 1 +CONSTANT: LIBUSB_TRANSFER_FREE_BUFFER 2 +CONSTANT: LIBUSB_TRANSFER_FREE_TRANSFER 4 +TYPEDEF: int libusb_transfer_flags + +STRUCT: libusb_iso_packet_descriptor + { length uint } + { actual_length uint } + { status libusb_transfer_status } ; +SPECIALIZED-ARRAY: libusb_iso_packet_descriptor + +C-TYPE: libusb_transfer + +CALLBACK: void libusb_transfer_cb_fn ( libusb_transfer* transfer ) ; + +STRUCT: libusb_transfer + { dev_handle libusb_device_handle* } + { flags uint8_t } + { endpoint uchar } + { type uchar } + { timeout uint } + { status libusb_transfer_status } + { length int } + { actual_length int } + { callback libusb_transfer_cb_fn } + { user_data void* } + { buffer uchar* } + { num_iso_packets int } + { iso_packet_desc libusb_iso_packet_descriptor[0] } ; + +FUNCTION: int libusb_init ( libusb_context** ctx ) ; +FUNCTION: void libusb_exit ( libusb_context* ctx ) ; +FUNCTION: void libusb_set_debug ( libusb_context* ctx, int level ) ; + +FUNCTION: ssize_t libusb_get_device_list ( libusb_context* ctx, libusb_device*** list ) ; +FUNCTION: void libusb_free_device_list ( libusb_device** list, int unref_devices ) ; +FUNCTION: libusb_device* libusb_ref_device ( libusb_device* dev ) ; +FUNCTION: void libusb_unref_device ( libusb_device* dev ) ; + +FUNCTION: int libusb_get_configuration ( libusb_device_handle* dev, int* config ) ; +FUNCTION: int libusb_get_device_descriptor ( libusb_device* dev, libusb_device_descriptor* desc ) ; +FUNCTION: int libusb_get_active_config_descriptor ( libusb_device* dev, libusb_config_descriptor** config ) ; +FUNCTION: int libusb_get_config_descriptor ( libusb_device* dev, uint8_t config_index, libusb_config_descriptor** config ) ; +FUNCTION: int libusb_get_config_descriptor_by_value ( libusb_device* dev, uint8_t bConfigurationValue, libusb_config_descriptor** config ) ; +FUNCTION: void libusb_free_config_descriptor ( libusb_config_descriptor* config ) ; +FUNCTION: uint8_t libusb_get_bus_number ( libusb_device* dev ) ; +FUNCTION: uint8_t libusb_get_device_address ( libusb_device* dev ) ; +FUNCTION: int libusb_get_max_packet_size ( libusb_device* dev, uchar endpoint ) ; + +FUNCTION: int libusb_open ( libusb_device* dev, libusb_device_handle** handle ) ; +FUNCTION: void libusb_close ( libusb_device_handle* dev_handle ) ; +FUNCTION: libusb_device* libusb_get_device ( libusb_device_handle* dev_handle ) ; + +FUNCTION: int libusb_set_configuration ( libusb_device_handle* dev, int configuration ) ; +FUNCTION: int libusb_claim_interface ( libusb_device_handle* dev, int iface ) ; +FUNCTION: int libusb_release_interface ( libusb_device_handle* dev, int iface ) ; + +FUNCTION: libusb_device_handle* libusb_open_device_with_vid_pid ( libusb_context* ctx, uint16_t vendor_id, uint16_t product_id ) ; + +FUNCTION: int libusb_set_interface_alt_setting ( libusb_device_handle* dev, int interface_number, int alternate_setting ) ; +FUNCTION: int libusb_clear_halt ( libusb_device_handle* dev, uchar endpoint ) ; +FUNCTION: int libusb_reset_device ( libusb_device_handle* dev ) ; + +FUNCTION: int libusb_kernel_driver_active ( libusb_device_handle* dev, int interface ) ; +FUNCTION: int libusb_detach_kernel_driver ( libusb_device_handle* dev, int interface ) ; +FUNCTION: int libusb_attach_kernel_driver ( libusb_device_handle* dev, int interface ) ; + +: libusb_control_transfer_get_data ( transfer -- data ) + buffer>> LIBUSB_CONTROL_SETUP_SIZE swap ; inline + +: libusb_control_transfer_get_setup ( transfer -- setup ) + buffer>> libusb_control_setup memory>struct ; inline + +:: libusb_fill_control_setup ( buffer bmRequestType bRequest wValue wIndex wLength -- ) + buffer libusb_control_setup memory>struct + bmRequestType >>bmRequestType + bRequest >>bRequest + wValue libusb_cpu_to_le16 >>wValue + wIndex libusb_cpu_to_le16 >>wIndex + wLength libusb_cpu_to_le16 >>wLength drop ; inline + +FUNCTION: libusb_transfer* libusb_alloc_transfer ( int iso_packets ) ; +FUNCTION: int libusb_submit_transfer ( libusb_transfer* transfer ) ; +FUNCTION: int libusb_cancel_transfer ( libusb_transfer* transfer ) ; +FUNCTION: void libusb_free_transfer ( libusb_transfer* transfer ) ; + +:: libusb_fill_control_transfer ( transfer dev_handle buffer callback user_data timeout -- ) + transfer + dev_handle >>dev_handle + 0 >>endpoint + LIBUSB_TRANSFER_TYPE_CONTROL >>type + timeout >>timeout + buffer >>buffer + user_data >>user_data + callback >>callback + + buffer [ + libusb_control_setup memory>struct wLength>> LIBUSB_CONTROL_SETUP_SIZE + + ] [ 0 ] if* >>length drop ; inline + +:: libusb_fill_bulk_transfer ( transfer dev_handle endpoint buffer length callback user_data timeout -- ) + transfer + dev_handle >>dev_handle + endpoint >>endpoint + LIBUSB_TRANSFER_TYPE_BULK >>type + timeout >>timeout + buffer >>buffer + length >>length + user_data >>user_data + callback >>callback + drop ; inline + +:: libusb_fill_interrupt_transfer ( transfer dev_handle endpoint buffer length callback user_data timeout -- ) + transfer + dev_handle >>dev_handle + endpoint >>endpoint + LIBUSB_TRANSFER_TYPE_INTERRUPT >>type + timeout >>timeout + buffer >>buffer + length >>length + user_data >>user_data + callback >>callback + drop ; inline + +:: libusb_fill_iso_transfer ( transfer dev_handle endpoint buffer length num_iso_packets callback user_data timeout -- ) + transfer + dev_handle >>dev_handle + endpoint >>endpoint + LIBUSB_TRANSFER_TYPE_ISOCHRONOUS >>type + timeout >>timeout + buffer >>buffer + length >>length + num_iso_packets >>num_iso_packets + user_data >>user_data + callback >>callback + drop ; inline + +: libusb_set_iso_packet_lengths ( transfer length -- ) + [ [ iso_packet_desc>> >c-ptr ] + [ num_iso_packets>> ] bi + + ] dip [ >>length drop ] curry each ; inline + +:: libusb_get_iso_packet_buffer ( transfer packet -- data ) + packet transfer num_iso_packets>> >= + [ f ] + [ + transfer + [ iso_packet_desc>> >c-ptr ] + [ num_iso_packets>> ] bi + 0 + [ length>> + ] reduce + transfer buffer>> + ] if ; + +:: libusb_get_iso_packet_buffer_simple ( transfer packet -- data ) + packet transfer num_iso_packets>> >= + [ f ] + [ + 0 transfer + [ iso_packet_desc>> >c-ptr ] + [ num_iso_packets>> ] bi + nth + length>> packet * + transfer buffer>> + ] if ; + +FUNCTION: int libusb_control_transfer ( libusb_device_handle* dev_handle, + uint8_t request_type, uint8_t request, uint16_t value, uint16_t index, + uchar* data, uint16_t length, uint timeout ) ; + +FUNCTION: int libusb_bulk_transfer ( libusb_device_handle* dev_handle, + uchar endpoint, uchar* data, int length, + int* actual_length, uint timeout ) ; + +FUNCTION: int libusb_interrupt_transfer ( libusb_device_handle* dev_handle, + uchar endpoint, uchar* data, int length, + int* actual_length, int timeout ) ; + +:: libusb_get_descriptor ( dev desc_type desc_index data length -- int ) + dev LIBUSB_ENDPOINT_IN LIBUSB_REQUEST_GET_DESCRIPTOR + desc_type 8 shift desc_index bitor 0 data + length 1000 libusb_control_transfer ; inline + +:: libusb_get_string_descriptor ( dev desc_index langid data length -- int ) + dev LIBUSB_ENDPOINT_IN LIBUSB_REQUEST_GET_DESCRIPTOR + LIBUSB_DT_STRING 8 shift desc_index bitor + langid data length 1000 libusb_control_transfer ; inline + +FUNCTION: int libusb_get_string_descriptor_ascii ( libusb_device_handle* dev, + uint8_t index, + uchar* data, + int length ) ; + +FUNCTION: int libusb_try_lock_events ( libusb_context* ctx ) ; +FUNCTION: void libusb_lock_events ( libusb_context* ctx ) ; +FUNCTION: void libusb_unlock_events ( libusb_context* ctx ) ; +FUNCTION: int libusb_event_handling_ok ( libusb_context* ctx ) ; +FUNCTION: int libusb_event_handler_active ( libusb_context* ctx ) ; +FUNCTION: void libusb_lock_event_waiters ( libusb_context* ctx ) ; +FUNCTION: void libusb_unlock_event_waiters ( libusb_context* ctx ) ; +FUNCTION: int libusb_wait_for_event ( libusb_context* ctx, timeval* tv ) ; +FUNCTION: int libusb_handle_events_timeout ( libusb_context* ctx, timeval* tv ) ; +FUNCTION: int libusb_handle_events ( libusb_context* ctx ) ; +FUNCTION: int libusb_handle_events_locked ( libusb_context* ctx, timeval* tv ) ; +FUNCTION: int libusb_get_next_timeout ( libusb_context* ctx, timeval* tv ) ; + +STRUCT: libusb_pollfd + { fd int } + { events short } ; + +CALLBACK: void libusb_pollfd_added_cb ( int fd, short events, void* user_data ) ; +CALLBACK: void libusb_pollfd_removed_cb ( int fd, void* user_data ) ; + +FUNCTION: libusb_pollfd** libusb_get_pollfds ( libusb_context* ctx ) ; +FUNCTION: void libusb_set_pollfd_notifiers ( libusb_context* ctx, + libusb_pollfd_added_cb added_cb, + libusb_pollfd_removed_cb removed_cb, + void* user_data ) ; diff --git a/extra/libusb/platforms.txt b/extra/libusb/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/extra/libusb/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/extra/libusb/summary.txt b/extra/libusb/summary.txt new file mode 100644 index 0000000000..fc00ac5307 --- /dev/null +++ b/extra/libusb/summary.txt @@ -0,0 +1 @@ +Bindings to libusb diff --git a/extra/libusb/tags.txt b/extra/libusb/tags.txt new file mode 100644 index 0000000000..bb863cf9a0 --- /dev/null +++ b/extra/libusb/tags.txt @@ -0,0 +1 @@ +bindings diff --git a/extra/llvm/core/tags.txt b/extra/llvm/core/tags.txt index 6bf68304bb..5d77766703 100644 --- a/extra/llvm/core/tags.txt +++ b/extra/llvm/core/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/extra/llvm/engine/tags.txt b/extra/llvm/engine/tags.txt index 6bf68304bb..5d77766703 100644 --- a/extra/llvm/engine/tags.txt +++ b/extra/llvm/engine/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/extra/llvm/invoker/tags.txt b/extra/llvm/invoker/tags.txt index 6bf68304bb..5d77766703 100644 --- a/extra/llvm/invoker/tags.txt +++ b/extra/llvm/invoker/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/extra/llvm/jit/tags.txt b/extra/llvm/jit/tags.txt index 6bf68304bb..5d77766703 100644 --- a/extra/llvm/jit/tags.txt +++ b/extra/llvm/jit/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/extra/llvm/reader/tags.txt b/extra/llvm/reader/tags.txt index 6bf68304bb..5d77766703 100644 --- a/extra/llvm/reader/tags.txt +++ b/extra/llvm/reader/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/extra/llvm/tags.txt b/extra/llvm/tags.txt index bf2a35f15b..a9d28becd8 100644 --- a/extra/llvm/tags.txt +++ b/extra/llvm/tags.txt @@ -1,2 +1,2 @@ bindings -unportable +untested diff --git a/extra/llvm/types/tags.txt b/extra/llvm/types/tags.txt index 6bf68304bb..5d77766703 100644 --- a/extra/llvm/types/tags.txt +++ b/extra/llvm/types/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/extra/llvm/wrappers/tags.txt b/extra/llvm/wrappers/tags.txt index 6bf68304bb..5d77766703 100644 --- a/extra/llvm/wrappers/tags.txt +++ b/extra/llvm/wrappers/tags.txt @@ -1 +1 @@ -unportable +untested diff --git a/extra/math/splines/authors.txt b/extra/math/splines/authors.txt new file mode 100644 index 0000000000..6f03a12101 --- /dev/null +++ b/extra/math/splines/authors.txt @@ -0,0 +1 @@ +Erik Charlebois diff --git a/extra/math/splines/splines-docs.factor b/extra/math/splines/splines-docs.factor new file mode 100644 index 0000000000..62ff1418cd --- /dev/null +++ b/extra/math/splines/splines-docs.factor @@ -0,0 +1,44 @@ +! Copyright (C) 2010 Erik Charlebois. +! See http://factorcode.org/license.txt for BSD license. +USING: help.markup help.syntax math ; +IN: math.splines + +HELP: +{ $values + { "control-points" "sequence of control points same dimension" } + { "polynomials" "sequence of polynomials for each dimension" } +} +{ $description "Creates bezier curve polynomials for the given control points." } ; + +HELP: +{ $values + { "points" "points on the spline" } { "m0" "initial tangent vector" } { "mn" "final tangent vector" } + { "polynomials-sequence" "sequence of sequences of polynomials" } +} +{ $description "Creates a sequence of cubic hermite curves (each a sequence of polynomials) passing through the given points and generating tangents for C1 continuity." } ; + +HELP: +{ $values + { "p0" "start point" } { "m0" "start tangent" } { "p1" "end point" } { "m1" "end tangent" } + { "polynomials" "sequence of polynomials" } +} +{ $description "Creates a sequence of polynomials (one per dimension) for the curve passing through " { $emphasis "p0" } " and " { $emphasis "p1" } "." } ; + +HELP: +{ $values + { "point-tangent-pairs" "sequence of point and tangent pairs" } + { "polynomials-sequence" "sequence of sequences of polynomials" } +} +{ $description "Creates a sequence of cubic hermite curves (each a sequence of polynomials) passing through the given points with the given tangents." } ; + +HELP: +{ $values + { "points" "points on the spline" } { "m0" "start tangent" } { "mn" "end tangent" } { "tension" number } { "bias" number } { "continuity" number } + { "polynomials-sequence" "sequence of sequence of polynomials" } +} +{ $description "Creates a sequence of cubic hermite curves (each a sequence of polynomials) passing through the given points, generating tangents with the given tuning parameters." } ; + +ARTICLE: "math.splines" "Common parametric curves." +"The curve creating functions create sequences of polynomials, one for each degree of the input points. The spline creating functions create sequences of these curve polynomial sequences. The " { $vocab-link "math.splines.viewer" } " vocabulary provides a gadget to evaluate the generated polynomials and view the results."; + +ABOUT: "math.splines" diff --git a/extra/math/splines/splines.factor b/extra/math/splines/splines.factor new file mode 100644 index 0000000000..dc22224416 --- /dev/null +++ b/extra/math/splines/splines.factor @@ -0,0 +1,84 @@ +! Copyright (C) 2010 Erik Charlebois +! See http://factorcode.org/license.txt for BSD license. +USING: accessors combinators kernel locals math math.combinatorics +math.polynomials opengl.gl sequences ui.gadgets ui.gadgets.panes +ui.render arrays grouping math.vectors assocs +ui.gestures ; +IN: math.splines + + ( pi-1 pi pi+1 ) + pi pi-1 v- c1 v*n + pi+1 pi v- c2 v*n v+ + ] map + m0 prefix + mn suffix ; +PRIVATE> + +:: ( control-points -- polynomials ) + control-points + [ length 1 - ] + [ first length [ { 0 } ] replicate ] + bi :> ( n acc ) + + control-points [| pt i | + n i bernstein-polynomial-ith :> poly + pt [| v j | + j acc [ v poly n*p p+ ] change-nth + ] each-index + ] each-index + acc ; + +:: ( p0 m0 p1 m1 -- polynomials ) + p0 length iota [ + { + [ p0 nth ] [ m0 nth ] + [ p1 nth ] [ m1 nth ] + } cleave + hermite-polynomial + ] map ; + + + ] map ; +PRIVATE> + +: ( point-tangent-pairs -- polynomials-sequence ) + 2 clump [ first2 [ first2 ] bi@ ] map ; + +:: ( points m0 mn tension bias continuity -- polynomials-sequence ) + tension bias continuity kochanek-bartels-coefficients :> ( s1 d1 s2 d2 ) + points m0 mn + [ s1 s2 kochanek-bartels-tangents ] + [ d1 d2 kochanek-bartels-tangents ] 3bi :> ( in out ) + points in out [ 3array ] 3map (cubic-hermite-spline) ; + +: ( points m0 mn -- polynomials-sequence ) + 0 0 0 ; diff --git a/extra/math/splines/summary.txt b/extra/math/splines/summary.txt new file mode 100644 index 0000000000..229b05edc9 --- /dev/null +++ b/extra/math/splines/summary.txt @@ -0,0 +1 @@ +Common parametric curves diff --git a/extra/math/splines/testing/authors.txt b/extra/math/splines/testing/authors.txt new file mode 100644 index 0000000000..67cf648cf5 --- /dev/null +++ b/extra/math/splines/testing/authors.txt @@ -0,0 +1 @@ +Erik Charlebois \ No newline at end of file diff --git a/extra/math/splines/testing/testing.factor b/extra/math/splines/testing/testing.factor new file mode 100644 index 0000000000..bbb5cd6a6a --- /dev/null +++ b/extra/math/splines/testing/testing.factor @@ -0,0 +1,49 @@ +! Copyright (C) 2010 Erik Charlebois. +! See http://factorcode.org/license.txt for BSD license. +USING: locals math.splines math.splines.viewer arrays ; +IN: math.splines.testing + +: test1 ( -- ) + { + { { 0 0 } { 0 200 } } + { { 100 50 } { 0 -200 } } + { { 300 300 } { 500 200 } } + { { 400 400 } { 300 0 } } + } { 50 100 } 4 spline. ; + +: test2 ( -- ) + { + { 50 50 } + { 100 100 } + { 300 200 } + { 350 0 } + { 400 400 } + } { 0 100 } { 100 0 } { 100 50 } 50 spline. ; + +:: test3 ( x y z -- ) + { + { 100 50 } + { 200 350 } + { 300 50 } + } { 0 100 } { 0 -100 } x y z { 50 50 } 1000 spline. ; + +: test4 ( -- ) + { + { 0 5 } + { 0.5 3 } + { 10 10 } + { 12 4 } + { 15 5 } + } 1array { 100 100 } 100 spline. ; + +: test-splines ( -- ) + test1 test2 + 1 0 0 test3 + -1 0 0 test3 + 0 1 0 test3 + 0 -1 0 test3 + 0 0 1 test3 + 0 0 -1 test3 + test4 ; + + diff --git a/extra/math/splines/viewer/authors.txt b/extra/math/splines/viewer/authors.txt new file mode 100644 index 0000000000..67cf648cf5 --- /dev/null +++ b/extra/math/splines/viewer/authors.txt @@ -0,0 +1 @@ +Erik Charlebois \ No newline at end of file diff --git a/extra/math/splines/viewer/viewer.factor b/extra/math/splines/viewer/viewer.factor new file mode 100644 index 0000000000..f1ec1a2445 --- /dev/null +++ b/extra/math/splines/viewer/viewer.factor @@ -0,0 +1,49 @@ +! Copyright (C) 2010 Erik Charlebois. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors kernel locals math math.order math.polynomials +math.splines opengl.gl sequences ui.gadgets ui.gadgets.panes ui.render +arrays ; +IN: math.splines.viewer + + + +TUPLE: spline-gadget < gadget polynomials steps spline-dim ; + +M: spline-gadget pref-dim* spline-dim>> ; + +M:: spline-gadget draw-gadget* ( gadget -- ) + 0 0 0 glColor3f + + gadget [ polynomials>> ] [ steps>> ] bi eval-polynomials :> pts + + pts [ first ] [ max ] map-reduce :> x-max + pts [ first ] [ min ] map-reduce :> x-min + pts [ second ] [ max ] map-reduce :> y-max + pts [ second ] [ min ] map-reduce :> y-min + + pts [ + [ first x-min - x-max x-min - / gadget spline-dim>> first * ] + [ second y-min - y-max y-min - / gadget spline-dim>> second * ] bi 2array + ] map :> pts + + GL_LINE_STRIP glBegin + pts [ + first2 neg gadget spline-dim>> second + glVertex2f + ] each + glEnd ; + +:: ( polynomials dim steps -- gadget ) + spline-gadget new + dim >>spline-dim + polynomials >>polynomials + steps >>steps ; + +: spline. ( curve dim steps -- ) + gadget. ; diff --git a/extra/math/transforms/fft/fft-docs.factor b/extra/math/transforms/fft/fft-docs.factor index 430058b362..93d72f39a4 100644 --- a/extra/math/transforms/fft/fft-docs.factor +++ b/extra/math/transforms/fft/fft-docs.factor @@ -2,6 +2,6 @@ USING: help.markup help.syntax sequences ; IN: math.transforms.fft HELP: fft -{ $values { "seq" sequence } { "seq" sequence } } +{ $values { "seq" sequence } { "seq'" sequence } } { $description "Fast Fourier transform function." } ; diff --git a/extra/math/transforms/fft/fft.factor b/extra/math/transforms/fft/fft.factor index 0688c00468..440243a968 100644 --- a/extra/math/transforms/fft/fft.factor +++ b/extra/math/transforms/fft/fft.factor @@ -13,26 +13,26 @@ IN: math.transforms.fft : omega ( n -- n' ) recip -2 pi i* * * exp ; -: twiddle ( seq -- seq ) +: twiddle ( seq -- seq' ) dup length [ omega ] [ n^v ] bi v* ; PRIVATE> DEFER: fft -: two ( seq -- seq ) +: two ( seq -- seq' ) fft 2 v/n dup append ; ; -: odd ( seq -- seq ) 2 group 1 ; +: even ( seq -- seq' ) 2 group 0 ; +: odd ( seq -- seq' ) 2 group 1 ; -: (fft) ( seq -- seq ) +: (fft) ( seq -- seq' ) [ odd two twiddle ] [ even two ] bi v+ ; PRIVATE> -: fft ( seq -- seq ) +: fft ( seq -- seq' ) dup length 1 = [ (fft) ] unless ; diff --git a/extra/math/transforms/haar/haar-docs.factor b/extra/math/transforms/haar/haar-docs.factor index 218a63a480..a9a4fd111f 100644 --- a/extra/math/transforms/haar/haar-docs.factor +++ b/extra/math/transforms/haar/haar-docs.factor @@ -2,13 +2,13 @@ USING: help.markup help.syntax sequences ; IN: math.transforms.haar HELP: haar -{ $values { "seq" sequence } { "seq" sequence } } +{ $values { "seq" sequence } { "seq'" sequence } } { $description "Haar wavelet transform function." } { $notes "The sequence length should be a power of two." } { $examples { $example "USING: math.transforms.haar prettyprint ;" "{ 7 1 6 6 3 -5 4 2 } haar ." "{ 3 2 -1 -2 3 0 4 1 }" } } ; HELP: rev-haar -{ $values { "seq" sequence } { "seq" sequence } } +{ $values { "seq" sequence } { "seq'" sequence } } { $description "Reverse Haar wavelet transform function." } { $notes "The sequence length should be a power of two." } { $examples { $example "USING: math.transforms.haar prettyprint ;" "{ 3 2 -1 -2 3 0 4 1 } rev-haar ." "{ 7 1 6 6 3 -5 4 2 }" } } ; diff --git a/extra/math/transforms/haar/haar.factor b/extra/math/transforms/haar/haar.factor index c0359b8e7b..e9b430a802 100644 --- a/extra/math/transforms/haar/haar.factor +++ b/extra/math/transforms/haar/haar.factor @@ -8,7 +8,7 @@ IN: math.transforms.haar -: haar ( seq -- seq ) +: haar ( seq -- seq' ) dup length 1 <= [ haar-step haar prepend ] unless ; -: rev-haar ( seq -- seq ) +: rev-haar ( seq -- seq' ) dup length 2 > [ halves swap rev-haar prepend ] when rev-haar-step ; diff --git a/extra/memory/piles/piles-docs.factor b/extra/memory/piles/piles-docs.factor index 20568f2226..94a3e7736f 100644 --- a/extra/memory/piles/piles-docs.factor +++ b/extra/memory/piles/piles-docs.factor @@ -21,7 +21,6 @@ HELP: pile HELP: pile-align { $values { "pile" pile } { "align" "a power of two" } - { "pile" pile } } { $description "Adjusts a " { $link pile } "'s internal state so that the next call to " { $link pile-alloc } " will return a pointer aligned to " { $snippet "align" } " bytes relative to the pile's initial offset." } ; diff --git a/extra/merger/platforms.txt b/extra/merger/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/extra/merger/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/extra/merger/tags.txt b/extra/merger/tags.txt deleted file mode 100644 index c80b8b4fe1..0000000000 --- a/extra/merger/tags.txt +++ /dev/null @@ -1,2 +0,0 @@ -unportable - diff --git a/extra/mongodb/driver/driver-docs.factor b/extra/mongodb/driver/driver-docs.factor index 532dfe1dce..95acd523b3 100644 --- a/extra/mongodb/driver/driver-docs.factor +++ b/extra/mongodb/driver/driver-docs.factor @@ -49,7 +49,6 @@ HELP: HELP: >upsert { $values { "mdb-update-msg" "a mdb-update-msg" } - { "mdb-update-msg" "mdb-update-msg with the upsert indicator set to t" } } { $description "Marks a mdb-update-msg as upsert operation" "(inserts object identified by the update selector if it doesn't exist in the collection)" } ; @@ -162,7 +161,6 @@ HELP: hint { $values { "mdb-query-msg" "a query" } { "index-hint" "a hint to an index" } - { "mdb-query-msg" "modified query object" } } { $description "Annotates the query with a hint to an index. " "For detailed information see: " { $url "http://www.mongodb.org/display/DOCS/Optimizing+Mongo+Performance#OptimizingMongoPerformance-Hint" } } @@ -183,7 +181,6 @@ HELP: limit { $values { "mdb-query-msg" "a query" } { "limit#" "number of objects that should be returned at most" } - { "mdb-query-msg" "modified query object" } } { $description "Limits the number of returned objects to limit#" } { $examples @@ -243,7 +240,6 @@ HELP: skip { $values { "mdb-query-msg" "a query message" } { "skip#" "number of objects to skip" } - { "mdb-query-msg" "annotated query message" } } { $description "annotates a query message with a number of objects to skip when returning the results" } ; @@ -251,7 +247,6 @@ HELP: sort { $values { "mdb-query-msg" "a query message" } { "sort-quot" "a quotation with sort specifiers" } - { "mdb-query-msg" "annotated query message" } } { $description "annotates the query message for sort specifiers" } ; diff --git a/extra/openal/alut/macosx/platforms.txt b/extra/openal/alut/macosx/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/extra/openal/alut/macosx/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/extra/openal/alut/macosx/tags.txt b/extra/openal/alut/macosx/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/openal/alut/macosx/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/qtkit/platforms.txt b/extra/qtkit/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/extra/qtkit/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/extra/qtkit/qtkit.factor b/extra/qtkit/qtkit.factor index b573cd51ab..919e0d2d29 100644 --- a/extra/qtkit/qtkit.factor +++ b/extra/qtkit/qtkit.factor @@ -1,5 +1,6 @@ -USING: classes.struct cocoa cocoa.application cocoa.classes -cocoa.enumeration cocoa.plists core-foundation.strings kernel ; +USING: alien.c-types classes.struct cocoa cocoa.application +cocoa.classes cocoa.enumeration cocoa.plists core-foundation +core-foundation.strings kernel ; IN: qtkit STRUCT: QTTime diff --git a/extra/qtkit/tags.txt b/extra/qtkit/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/qtkit/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/spider/spider-docs.factor b/extra/spider/spider-docs.factor index 83d93268b5..a39515379a 100644 --- a/extra/spider/spider-docs.factor +++ b/extra/spider/spider-docs.factor @@ -12,7 +12,6 @@ HELP: HELP: run-spider { $values - { "spider" spider } { "spider" spider } } { $description "Runs a spider until completion. See the " { $subsection "spider-tutorial" } " for a complete description of the tuple slots that affect how thet spider works." } ; diff --git a/extra/webkit-demo/platforms.txt b/extra/webkit-demo/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/extra/webkit-demo/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/extra/webkit-demo/tags.txt b/extra/webkit-demo/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/webkit-demo/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable