]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://github.com/slavapestov/factor
authorErik Charlebois <erikcharlebois@gmail.com>
Sun, 21 Feb 2010 11:36:54 +0000 (03:36 -0800)
committerErik Charlebois <erikcharlebois@gmail.com>
Sun, 21 Feb 2010 11:36:54 +0000 (03:36 -0800)
667 files changed:
basis/bootstrap/compiler/timing/tags.txt
basis/calendar/unix/platforms.txt [new file with mode: 0644]
basis/calendar/unix/tags.txt [deleted file]
basis/calendar/windows/platforms.txt [new file with mode: 0644]
basis/calendar/windows/tags.txt [deleted file]
basis/cocoa/application/platforms.txt [new file with mode: 0644]
basis/cocoa/application/tags.txt [deleted file]
basis/cocoa/callbacks/callbacks.factor
basis/cocoa/callbacks/platforms.txt [new file with mode: 0644]
basis/cocoa/callbacks/tags.txt [deleted file]
basis/cocoa/dialogs/platforms.txt [new file with mode: 0644]
basis/cocoa/dialogs/tags.txt [deleted file]
basis/cocoa/enumeration/platforms.txt [new file with mode: 0644]
basis/cocoa/enumeration/tags.txt [deleted file]
basis/cocoa/messages/messages.factor
basis/cocoa/messages/platforms.txt [new file with mode: 0644]
basis/cocoa/messages/tags.txt [deleted file]
basis/cocoa/nibs/platforms.txt [new file with mode: 0644]
basis/cocoa/nibs/tags.txt [deleted file]
basis/cocoa/pasteboard/platforms.txt [new file with mode: 0644]
basis/cocoa/pasteboard/tags.txt [deleted file]
basis/cocoa/platforms.txt [new file with mode: 0644]
basis/cocoa/plists/platforms.txt [new file with mode: 0644]
basis/cocoa/plists/tags.txt [deleted file]
basis/cocoa/runtime/platforms.txt [new file with mode: 0644]
basis/cocoa/runtime/tags.txt [deleted file]
basis/cocoa/subclassing/platforms.txt [new file with mode: 0644]
basis/cocoa/subclassing/tags.txt [deleted file]
basis/cocoa/tags.txt
basis/cocoa/types/platforms.txt [new file with mode: 0644]
basis/cocoa/types/tags.txt [deleted file]
basis/cocoa/views/platforms.txt [new file with mode: 0644]
basis/cocoa/views/tags.txt [deleted file]
basis/cocoa/windows/platforms.txt [new file with mode: 0644]
basis/cocoa/windows/tags.txt [deleted file]
basis/compiler/crossref/crossref-tests.factor [new file with mode: 0644]
basis/compiler/tests/redefine22.factor [new file with mode: 0644]
basis/compiler/tests/redefine23.factor [new file with mode: 0644]
basis/compiler/tree/cleanup/cleanup.factor
basis/compiler/tree/propagation/info/info.factor
basis/compiler/tree/propagation/propagation-tests.factor
basis/compiler/tree/propagation/simple/simple.factor
basis/core-foundation/arrays/platforms.txt [new file with mode: 0644]
basis/core-foundation/arrays/tags.txt
basis/core-foundation/attributed-strings/platforms.txt [new file with mode: 0644]
basis/core-foundation/attributed-strings/tags.txt
basis/core-foundation/bundles/platforms.txt [new file with mode: 0644]
basis/core-foundation/bundles/tags.txt
basis/core-foundation/data/platforms.txt [new file with mode: 0644]
basis/core-foundation/data/tags.txt
basis/core-foundation/dictionaries/platforms.txt [new file with mode: 0644]
basis/core-foundation/dictionaries/tags.txt
basis/core-foundation/file-descriptors/platforms.txt [new file with mode: 0644]
basis/core-foundation/file-descriptors/tags.txt
basis/core-foundation/fsevents/platforms.txt [new file with mode: 0644]
basis/core-foundation/fsevents/tags.txt [deleted file]
basis/core-foundation/numbers/platforms.txt [new file with mode: 0644]
basis/core-foundation/numbers/tags.txt [deleted file]
basis/core-foundation/platforms.txt [new file with mode: 0644]
basis/core-foundation/run-loop/platforms.txt [new file with mode: 0644]
basis/core-foundation/run-loop/tags.txt [deleted file]
basis/core-foundation/strings/platforms.txt [new file with mode: 0644]
basis/core-foundation/strings/tags.txt
basis/core-foundation/tags.txt
basis/core-foundation/timers/platforms.txt [new file with mode: 0644]
basis/core-foundation/timers/tags.txt
basis/core-foundation/urls/platforms.txt [new file with mode: 0644]
basis/core-foundation/urls/tags.txt
basis/core-foundation/utilities/platforms.txt [new file with mode: 0644]
basis/core-foundation/utilities/tags.txt [deleted file]
basis/core-graphics/platforms.txt [new file with mode: 0644]
basis/core-graphics/tags.txt
basis/core-text/fonts/platforms.txt [new file with mode: 0644]
basis/core-text/fonts/tags.txt
basis/core-text/platforms.txt [new file with mode: 0644]
basis/core-text/tags.txt
basis/cpu/ppc/assembler/backend/tags.txt [deleted file]
basis/cpu/ppc/linux/tags.txt
basis/cpu/ppc/macosx/tags.txt
basis/cpu/ppc/tags.txt
basis/cpu/x86/32/tags.txt
basis/cpu/x86/64/tags.txt
basis/cpu/x86/64/unix/tags.txt
basis/cpu/x86/64/winnt/tags.txt
basis/cpu/x86/assembler/syntax/tags.txt [deleted file]
basis/cpu/x86/features/tags.txt
basis/cpu/x86/tags.txt
basis/debugger/windows/platforms.txt [new file with mode: 0644]
basis/debugger/windows/tags.txt [deleted file]
basis/editors/editpadlite/tags.txt
basis/editors/editpadpro/tags.txt
basis/editors/editplus/tags.txt
basis/editors/emacs/tags.txt
basis/editors/emacs/windows/tags.txt
basis/editors/emeditor/tags.txt
basis/editors/etexteditor/tags.txt
basis/editors/gedit/tags.txt
basis/editors/gvim/tags.txt
basis/editors/gvim/unix/tags.txt
basis/editors/gvim/windows/tags.txt
basis/editors/jedit/tags.txt
basis/editors/macvim/tags.txt
basis/editors/notepad/tags.txt
basis/editors/notepad2/tags.txt
basis/editors/notepadpp/tags.txt
basis/editors/scite/tags.txt
basis/editors/ted-notepad/tags.txt
basis/editors/textedit/tags.txt
basis/editors/textmate/tags.txt
basis/editors/textpad/tags.txt
basis/editors/textwrangler/tags.txt
basis/editors/ultraedit/tags.txt
basis/editors/vim/generate-syntax/tags.txt
basis/editors/vim/tags.txt
basis/editors/wordpad/tags.txt
basis/environment/unix/macosx/platforms.txt [new file with mode: 0644]
basis/environment/unix/macosx/tags.txt [deleted file]
basis/environment/unix/platforms.txt [new file with mode: 0644]
basis/environment/unix/tags.txt [deleted file]
basis/environment/winnt/platforms.txt [new file with mode: 0644]
basis/environment/winnt/tags.txt [deleted file]
basis/ftp/server/server.factor
basis/game/input/dinput/platforms.txt [new file with mode: 0644]
basis/game/input/dinput/tags.txt
basis/game/input/input-docs.factor
basis/game/input/input-tests.factor
basis/game/input/input.factor
basis/game/input/iokit/platforms.txt [new file with mode: 0644]
basis/game/input/iokit/tags.txt
basis/game/input/linux/platforms.txt [new file with mode: 0644]
basis/game/input/linux/tags.txt
basis/game/input/xinput/platforms.txt [new file with mode: 0644]
basis/game/input/xinput/tags.txt
basis/io/backend/unix/bsd/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/bsd/tags.txt [deleted file]
basis/io/backend/unix/freebsd/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/freebsd/tags.txt [deleted file]
basis/io/backend/unix/linux/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/linux/tags.txt [deleted file]
basis/io/backend/unix/macosx/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/macosx/tags.txt [deleted file]
basis/io/backend/unix/multiplexers/epoll/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/multiplexers/epoll/tags.txt [deleted file]
basis/io/backend/unix/multiplexers/kqueue/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/multiplexers/kqueue/tags.txt [deleted file]
basis/io/backend/unix/multiplexers/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/multiplexers/run-loop/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/multiplexers/run-loop/tags.txt [deleted file]
basis/io/backend/unix/multiplexers/select/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/multiplexers/select/select.factor
basis/io/backend/unix/multiplexers/select/tags.txt [deleted file]
basis/io/backend/unix/multiplexers/tags.txt [deleted file]
basis/io/backend/unix/netbsd/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/netbsd/tags.txt [deleted file]
basis/io/backend/unix/openbsd/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/openbsd/tags.txt [deleted file]
basis/io/backend/unix/platforms.txt [new file with mode: 0644]
basis/io/backend/unix/tags.txt [deleted file]
basis/io/backend/windows/nt/platforms.txt [new file with mode: 0644]
basis/io/backend/windows/nt/privileges/platforms.txt [new file with mode: 0644]
basis/io/backend/windows/nt/privileges/tags.txt [deleted file]
basis/io/backend/windows/nt/tags.txt [deleted file]
basis/io/backend/windows/platforms.txt [new file with mode: 0644]
basis/io/backend/windows/privileges/platforms.txt [new file with mode: 0644]
basis/io/backend/windows/privileges/tags.txt [deleted file]
basis/io/backend/windows/tags.txt [deleted file]
basis/io/directories/search/windows/platforms.txt [new file with mode: 0644]
basis/io/directories/search/windows/tags.txt [deleted file]
basis/io/directories/unix/linux/platforms.txt [new file with mode: 0644]
basis/io/directories/unix/linux/tags.txt [deleted file]
basis/io/directories/unix/platforms.txt [new file with mode: 0644]
basis/io/directories/unix/tags.txt [deleted file]
basis/io/directories/windows/platforms.txt [new file with mode: 0644]
basis/io/directories/windows/tags.txt [deleted file]
basis/io/files/info/unix/bsd/platforms.txt [new file with mode: 0644]
basis/io/files/info/unix/bsd/tags.txt [deleted file]
basis/io/files/info/unix/freebsd/platforms.txt [new file with mode: 0644]
basis/io/files/info/unix/freebsd/tags.txt [deleted file]
basis/io/files/info/unix/linux/platforms.txt [new file with mode: 0644]
basis/io/files/info/unix/linux/tags.txt [deleted file]
basis/io/files/info/unix/macosx/platforms.txt [new file with mode: 0644]
basis/io/files/info/unix/macosx/tags.txt [deleted file]
basis/io/files/info/unix/netbsd/platforms.txt [new file with mode: 0644]
basis/io/files/info/unix/netbsd/tags.txt [deleted file]
basis/io/files/info/unix/openbsd/platforms.txt [new file with mode: 0644]
basis/io/files/info/unix/openbsd/tags.txt [deleted file]
basis/io/files/info/unix/platforms.txt [new file with mode: 0644]
basis/io/files/info/unix/tags.txt [deleted file]
basis/io/files/info/windows/platforms.txt [new file with mode: 0644]
basis/io/files/info/windows/tags.txt [deleted file]
basis/io/files/links/unix/platforms.txt [new file with mode: 0644]
basis/io/files/links/unix/tags.txt [deleted file]
basis/io/files/unique/unix/platforms.txt [new file with mode: 0644]
basis/io/files/unique/unix/tags.txt [deleted file]
basis/io/files/unique/windows/platforms.txt [new file with mode: 0644]
basis/io/files/unique/windows/tags.txt [deleted file]
basis/io/files/unix/platforms.txt [new file with mode: 0644]
basis/io/files/unix/tags.txt [deleted file]
basis/io/files/windows/nt/platforms.txt [new file with mode: 0644]
basis/io/files/windows/nt/tags.txt [deleted file]
basis/io/files/windows/platforms.txt [new file with mode: 0644]
basis/io/files/windows/tags.txt [deleted file]
basis/io/launcher/unix/parser/parser-tests.factor [deleted file]
basis/io/launcher/unix/parser/parser.factor [deleted file]
basis/io/launcher/unix/parser/tags.txt [deleted file]
basis/io/launcher/unix/platforms.txt [new file with mode: 0644]
basis/io/launcher/unix/tags.txt [deleted file]
basis/io/launcher/unix/unix.factor
basis/io/launcher/windows/nt/platforms.txt [new file with mode: 0644]
basis/io/launcher/windows/nt/tags.txt [deleted file]
basis/io/launcher/windows/platforms.txt [new file with mode: 0644]
basis/io/launcher/windows/tags.txt [deleted file]
basis/io/mmap/unix/platforms.txt [new file with mode: 0644]
basis/io/mmap/unix/tags.txt [deleted file]
basis/io/mmap/windows/platforms.txt [new file with mode: 0644]
basis/io/mmap/windows/tags.txt [deleted file]
basis/io/monitors/linux/platforms.txt [new file with mode: 0644]
basis/io/monitors/linux/tags.txt [deleted file]
basis/io/monitors/macosx/platforms.txt [new file with mode: 0644]
basis/io/monitors/macosx/tags.txt [deleted file]
basis/io/monitors/windows/nt/platforms.txt [new file with mode: 0644]
basis/io/monitors/windows/nt/tags.txt [deleted file]
basis/io/pipes/unix/platforms.txt [new file with mode: 0644]
basis/io/pipes/unix/tags.txt [deleted file]
basis/io/pipes/windows/nt/platforms.txt [new file with mode: 0644]
basis/io/pipes/windows/nt/tags.txt [deleted file]
basis/io/sockets/secure/unix/platforms.txt [new file with mode: 0644]
basis/io/sockets/secure/unix/tags.txt [deleted file]
basis/io/sockets/unix/platforms.txt [new file with mode: 0644]
basis/io/sockets/unix/tags.txt [deleted file]
basis/io/sockets/windows/nt/platforms.txt [new file with mode: 0644]
basis/io/sockets/windows/nt/tags.txt [deleted file]
basis/io/sockets/windows/platforms.txt [new file with mode: 0644]
basis/io/sockets/windows/tags.txt [deleted file]
basis/iokit/hid/platforms.txt [new file with mode: 0644]
basis/iokit/hid/tags.txt
basis/iokit/platforms.txt [new file with mode: 0644]
basis/iokit/tags.txt
basis/math/floats/env/ppc/tags.txt
basis/math/floats/env/x86/32/tags.txt
basis/math/floats/env/x86/64/tags.txt
basis/math/floats/env/x86/tags.txt
basis/opengl/gl/macosx/platforms.txt [new file with mode: 0644]
basis/opengl/gl/macosx/tags.txt [deleted file]
basis/opengl/gl/unix/platforms.txt [new file with mode: 0644]
basis/opengl/gl/unix/tags.txt [deleted file]
basis/opengl/gl/windows/platforms.txt [new file with mode: 0644]
basis/opengl/gl/windows/tags.txt [deleted file]
basis/prettyprint/config/config-docs.factor
basis/prettyprint/config/config.factor
basis/prettyprint/prettyprint-docs.factor
basis/prettyprint/prettyprint.factor
basis/random/unix/platforms.txt [new file with mode: 0644]
basis/random/unix/tags.txt [deleted file]
basis/random/windows/platforms.txt [new file with mode: 0644]
basis/random/windows/tags.txt [deleted file]
basis/simple-tokenizer/authors.txt [new file with mode: 0644]
basis/simple-tokenizer/simple-tokenizer-docs.factor [new file with mode: 0644]
basis/simple-tokenizer/simple-tokenizer-tests.factor [new file with mode: 0644]
basis/simple-tokenizer/simple-tokenizer.factor [new file with mode: 0644]
basis/simple-tokenizer/tags.txt [new file with mode: 0644]
basis/specialized-arrays/specialized-arrays.factor
basis/stack-checker/dependencies/dependencies.factor
basis/system-info/linux/platforms.txt [new file with mode: 0644]
basis/system-info/linux/tags.txt [deleted file]
basis/system-info/macosx/platforms.txt [new file with mode: 0644]
basis/system-info/macosx/tags.txt [deleted file]
basis/system-info/windows/ce/platforms.txt [new file with mode: 0644]
basis/system-info/windows/ce/tags.txt [deleted file]
basis/system-info/windows/nt/platforms.txt [new file with mode: 0644]
basis/system-info/windows/nt/tags.txt [deleted file]
basis/system-info/windows/platforms.txt [new file with mode: 0644]
basis/system-info/windows/tags.txt [deleted file]
basis/tools/cocoa/platforms.txt [new file with mode: 0644]
basis/tools/cocoa/tags.txt [deleted file]
basis/tools/crossref/crossref.factor
basis/tools/deploy/config/editor/editor.factor
basis/tools/deploy/deploy-docs.factor
basis/tools/deploy/libraries/tags.txt [deleted file]
basis/tools/deploy/libraries/unix/platforms.txt [new file with mode: 0644]
basis/tools/deploy/libraries/unix/tags.txt [deleted file]
basis/tools/deploy/libraries/windows/platforms.txt [new file with mode: 0644]
basis/tools/deploy/libraries/windows/tags.txt [deleted file]
basis/tools/deploy/macosx/platforms.txt [new file with mode: 0644]
basis/tools/deploy/macosx/tags.txt
basis/tools/deploy/test/14/platforms.txt [new file with mode: 0644]
basis/tools/deploy/test/14/tags.txt [deleted file]
basis/tools/deploy/unix/platforms.txt [new file with mode: 0644]
basis/tools/deploy/unix/tags.txt
basis/tools/deploy/windows/ico/platforms.txt [new file with mode: 0644]
basis/tools/deploy/windows/ico/tags.txt [deleted file]
basis/tools/deploy/windows/platforms.txt [new file with mode: 0644]
basis/tools/deploy/windows/tags.txt
basis/tools/disassembler/gdb/tags.txt
basis/tools/disassembler/udis/tags.txt
basis/tools/files/tags.txt [deleted file]
basis/tools/files/unix/platforms.txt [new file with mode: 0644]
basis/tools/files/unix/tags.txt [deleted file]
basis/tools/files/windows/platforms.txt [new file with mode: 0644]
basis/tools/files/windows/tags.txt [deleted file]
basis/tools/scaffold/scaffold.factor
basis/tools/scaffold/windows/platforms.txt [new file with mode: 0644]
basis/tools/scaffold/windows/tags.txt [deleted file]
basis/ui/backend/cocoa/platforms.txt [new file with mode: 0644]
basis/ui/backend/cocoa/tags.txt [deleted file]
basis/ui/backend/cocoa/tools/platforms.txt [new file with mode: 0644]
basis/ui/backend/cocoa/tools/tags.txt [deleted file]
basis/ui/backend/cocoa/views/platforms.txt [new file with mode: 0644]
basis/ui/backend/cocoa/views/tags.txt [deleted file]
basis/ui/backend/windows/platforms.txt [new file with mode: 0644]
basis/ui/backend/windows/tags.txt [deleted file]
basis/ui/backend/x11/tags.txt
basis/ui/gadgets/editors/editors.factor
basis/ui/gadgets/worlds/worlds.factor
basis/ui/text/core-text/platforms.txt [new file with mode: 0644]
basis/ui/text/core-text/tags.txt [deleted file]
basis/ui/text/pango/platforms.txt [new file with mode: 0644]
basis/ui/text/pango/tags.txt [deleted file]
basis/ui/text/uniscribe/platforms.txt [new file with mode: 0644]
basis/ui/text/uniscribe/tags.txt [deleted file]
basis/unix/debugger/platforms.txt [new file with mode: 0644]
basis/unix/debugger/tags.txt [deleted file]
basis/unix/ffi/bsd/freebsd/platforms.txt [new file with mode: 0644]
basis/unix/ffi/bsd/freebsd/tags.txt [deleted file]
basis/unix/ffi/bsd/macosx/platforms.txt [new file with mode: 0644]
basis/unix/ffi/bsd/macosx/tags.txt [deleted file]
basis/unix/ffi/bsd/netbsd/platforms.txt [new file with mode: 0644]
basis/unix/ffi/bsd/netbsd/tags.txt [deleted file]
basis/unix/ffi/bsd/openbsd/platforms.txt [new file with mode: 0644]
basis/unix/ffi/bsd/openbsd/tags.txt [deleted file]
basis/unix/ffi/bsd/platforms.txt [new file with mode: 0644]
basis/unix/ffi/bsd/tags.txt [deleted file]
basis/unix/ffi/linux/platforms.txt [new file with mode: 0644]
basis/unix/ffi/linux/tags.txt [deleted file]
basis/unix/ffi/platforms.txt [new file with mode: 0644]
basis/unix/ffi/solaris/platforms.txt [new file with mode: 0644]
basis/unix/ffi/solaris/tags.txt [deleted file]
basis/unix/ffi/tags.txt [deleted file]
basis/unix/getfsstat/freebsd/platforms.txt [new file with mode: 0644]
basis/unix/getfsstat/freebsd/tags.txt [deleted file]
basis/unix/getfsstat/macosx/platforms.txt [new file with mode: 0644]
basis/unix/getfsstat/macosx/tags.txt [deleted file]
basis/unix/getfsstat/netbsd/platforms.txt [new file with mode: 0644]
basis/unix/getfsstat/netbsd/tags.txt [deleted file]
basis/unix/getfsstat/openbsd/platforms.txt [new file with mode: 0644]
basis/unix/getfsstat/openbsd/tags.txt [deleted file]
basis/unix/groups/platforms.txt [new file with mode: 0644]
basis/unix/groups/tags.txt [deleted file]
basis/unix/kqueue/freebsd/platforms.txt [new file with mode: 0644]
basis/unix/kqueue/freebsd/tags.txt [deleted file]
basis/unix/kqueue/macosx/platforms.txt [new file with mode: 0644]
basis/unix/kqueue/macosx/tags.txt [deleted file]
basis/unix/kqueue/netbsd/platforms.txt [new file with mode: 0644]
basis/unix/kqueue/netbsd/tags.txt [deleted file]
basis/unix/kqueue/openbsd/platforms.txt [new file with mode: 0644]
basis/unix/kqueue/openbsd/tags.txt [deleted file]
basis/unix/kqueue/platforms.txt [new file with mode: 0644]
basis/unix/kqueue/tags.txt [deleted file]
basis/unix/linux/epoll/platforms.txt [new file with mode: 0644]
basis/unix/linux/epoll/tags.txt [deleted file]
basis/unix/linux/inotify/platforms.txt [new file with mode: 0644]
basis/unix/linux/inotify/tags.txt [deleted file]
basis/unix/linux/platforms.txt [new file with mode: 0644]
basis/unix/linux/tags.txt [deleted file]
basis/unix/platforms.txt [new file with mode: 0644]
basis/unix/process/platforms.txt [new file with mode: 0644]
basis/unix/process/tags.txt [deleted file]
basis/unix/stat/freebsd/platforms.txt [new file with mode: 0644]
basis/unix/stat/freebsd/tags.txt [deleted file]
basis/unix/stat/linux/32/tags.txt
basis/unix/stat/linux/64/tags.txt
basis/unix/stat/linux/platforms.txt [new file with mode: 0644]
basis/unix/stat/linux/tags.txt [deleted file]
basis/unix/stat/macosx/platforms.txt [new file with mode: 0644]
basis/unix/stat/macosx/tags.txt [deleted file]
basis/unix/stat/netbsd/32/tags.txt
basis/unix/stat/netbsd/64/tags.txt
basis/unix/stat/netbsd/platforms.txt [new file with mode: 0644]
basis/unix/stat/netbsd/tags.txt [deleted file]
basis/unix/stat/openbsd/platforms.txt [new file with mode: 0644]
basis/unix/stat/openbsd/tags.txt [deleted file]
basis/unix/stat/platforms.txt [new file with mode: 0644]
basis/unix/stat/tags.txt [deleted file]
basis/unix/statfs/freebsd/platforms.txt [new file with mode: 0644]
basis/unix/statfs/freebsd/tags.txt [deleted file]
basis/unix/statfs/linux/platforms.txt [new file with mode: 0644]
basis/unix/statfs/linux/tags.txt [deleted file]
basis/unix/statfs/macosx/platforms.txt [new file with mode: 0644]
basis/unix/statfs/macosx/tags.txt [deleted file]
basis/unix/statfs/openbsd/platforms.txt [new file with mode: 0644]
basis/unix/statfs/openbsd/tags.txt [deleted file]
basis/unix/statvfs/freebsd/platforms.txt [new file with mode: 0644]
basis/unix/statvfs/freebsd/tags.txt [deleted file]
basis/unix/statvfs/linux/platforms.txt [new file with mode: 0644]
basis/unix/statvfs/linux/tags.txt [deleted file]
basis/unix/statvfs/macosx/platforms.txt [new file with mode: 0644]
basis/unix/statvfs/macosx/tags.txt [deleted file]
basis/unix/statvfs/netbsd/platforms.txt [new file with mode: 0644]
basis/unix/statvfs/netbsd/tags.txt [deleted file]
basis/unix/statvfs/openbsd/platforms.txt [new file with mode: 0644]
basis/unix/statvfs/openbsd/tags.txt [deleted file]
basis/unix/statvfs/platforms.txt [new file with mode: 0644]
basis/unix/statvfs/tags.txt [deleted file]
basis/unix/tags.txt
basis/unix/time/platforms.txt [new file with mode: 0644]
basis/unix/time/tags.txt [deleted file]
basis/unix/types/freebsd/platforms.txt [new file with mode: 0644]
basis/unix/types/freebsd/tags.txt [deleted file]
basis/unix/types/linux/platforms.txt [new file with mode: 0644]
basis/unix/types/linux/tags.txt [deleted file]
basis/unix/types/macosx/platforms.txt [new file with mode: 0644]
basis/unix/types/macosx/tags.txt [deleted file]
basis/unix/types/netbsd/32/tags.txt
basis/unix/types/netbsd/64/tags.txt
basis/unix/types/netbsd/platforms.txt [new file with mode: 0644]
basis/unix/types/netbsd/tags.txt [deleted file]
basis/unix/types/openbsd/platforms.txt [new file with mode: 0644]
basis/unix/types/openbsd/tags.txt [deleted file]
basis/unix/types/platforms.txt [new file with mode: 0644]
basis/unix/types/tags.txt [deleted file]
basis/unix/users/bsd/platforms.txt [new file with mode: 0644]
basis/unix/users/bsd/tags.txt [deleted file]
basis/unix/users/platforms.txt [new file with mode: 0644]
basis/unix/users/tags.txt [deleted file]
basis/unix/utilities/tags.txt [deleted file]
basis/unix/utmpx/macosx/macosx.factor
basis/unix/utmpx/macosx/platforms.txt [new file with mode: 0644]
basis/unix/utmpx/macosx/tags.txt [deleted file]
basis/unix/utmpx/netbsd/netbsd.factor
basis/unix/utmpx/netbsd/platforms.txt [new file with mode: 0644]
basis/unix/utmpx/netbsd/tags.txt [deleted file]
basis/unix/utmpx/platforms.txt [new file with mode: 0644]
basis/unix/utmpx/tags.txt [deleted file]
basis/unix/utmpx/utmpx.factor
basis/vocabs/metadata/authors.txt
basis/vocabs/metadata/metadata-docs.factor
basis/vocabs/metadata/metadata.factor
basis/windows/advapi32/platforms.txt [new file with mode: 0644]
basis/windows/advapi32/tags.txt [deleted file]
basis/windows/ce/platforms.txt [new file with mode: 0644]
basis/windows/ce/tags.txt [deleted file]
basis/windows/com/platforms.txt [new file with mode: 0644]
basis/windows/com/prettyprint/platforms.txt [new file with mode: 0644]
basis/windows/com/prettyprint/tags.txt [deleted file]
basis/windows/com/syntax/platforms.txt [new file with mode: 0644]
basis/windows/com/syntax/tags.txt
basis/windows/com/tags.txt
basis/windows/com/wrapper/platforms.txt [new file with mode: 0644]
basis/windows/com/wrapper/tags.txt
basis/windows/directx/audiodefs/platforms.txt [new file with mode: 0644]
basis/windows/directx/audiodefs/tags.txt
basis/windows/directx/d2d1/platforms.txt [new file with mode: 0644]
basis/windows/directx/d2d1/tags.txt
basis/windows/directx/d2dbasetypes/platforms.txt [new file with mode: 0644]
basis/windows/directx/d2dbasetypes/tags.txt
basis/windows/directx/d2derr/platforms.txt [new file with mode: 0644]
basis/windows/directx/d2derr/tags.txt
basis/windows/directx/d3d10/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3d10/tags.txt
basis/windows/directx/d3d10_1/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3d10_1/tags.txt
basis/windows/directx/d3d10_1shader/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3d10_1shader/tags.txt
basis/windows/directx/d3d10effect/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3d10effect/tags.txt
basis/windows/directx/d3d10misc/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3d10misc/tags.txt
basis/windows/directx/d3d10shader/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3d10shader/tags.txt
basis/windows/directx/d3d11/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3d11/tags.txt
basis/windows/directx/d3d11shader/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3d11shader/tags.txt
basis/windows/directx/d3d9/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3d9/tags.txt
basis/windows/directx/d3d9caps/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3d9caps/tags.txt
basis/windows/directx/d3d9types/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3d9types/tags.txt
basis/windows/directx/d3dcommon/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dcommon/tags.txt
basis/windows/directx/d3dcompiler/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dcompiler/tags.txt
basis/windows/directx/d3dcsx/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dcsx/tags.txt
basis/windows/directx/d3dx10/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx10/tags.txt
basis/windows/directx/d3dx10async/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx10async/tags.txt
basis/windows/directx/d3dx10core/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx10core/tags.txt
basis/windows/directx/d3dx10math/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx10math/tags.txt
basis/windows/directx/d3dx10mesh/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx10mesh/tags.txt
basis/windows/directx/d3dx10tex/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx10tex/tags.txt
basis/windows/directx/d3dx11/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx11/tags.txt
basis/windows/directx/d3dx11async/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx11async/tags.txt
basis/windows/directx/d3dx11core/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx11core/tags.txt
basis/windows/directx/d3dx11tex/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx11tex/tags.txt
basis/windows/directx/d3dx9/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx9/tags.txt
basis/windows/directx/d3dx9anim/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx9anim/tags.txt
basis/windows/directx/d3dx9core/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx9core/tags.txt
basis/windows/directx/d3dx9effect/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx9effect/tags.txt
basis/windows/directx/d3dx9math/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx9math/tags.txt
basis/windows/directx/d3dx9mesh/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx9mesh/tags.txt
basis/windows/directx/d3dx9shader/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx9shader/tags.txt
basis/windows/directx/d3dx9shape/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx9shape/tags.txt
basis/windows/directx/d3dx9tex/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx9tex/tags.txt
basis/windows/directx/d3dx9xof/platforms.txt [new file with mode: 0644]
basis/windows/directx/d3dx9xof/tags.txt
basis/windows/directx/dcommon/platforms.txt [new file with mode: 0644]
basis/windows/directx/dcommon/tags.txt
basis/windows/directx/dinput/constants/platforms.txt [new file with mode: 0644]
basis/windows/directx/dinput/constants/tags.txt [deleted file]
basis/windows/directx/dinput/platforms.txt [new file with mode: 0644]
basis/windows/directx/dinput/tags.txt
basis/windows/directx/dwrite/platforms.txt [new file with mode: 0644]
basis/windows/directx/dwrite/tags.txt
basis/windows/directx/dxfile/platforms.txt [new file with mode: 0644]
basis/windows/directx/dxfile/tags.txt
basis/windows/directx/dxgi/platforms.txt [new file with mode: 0644]
basis/windows/directx/dxgi/tags.txt
basis/windows/directx/dxgiformat/platforms.txt [new file with mode: 0644]
basis/windows/directx/dxgiformat/tags.txt
basis/windows/directx/dxgitype/platforms.txt [new file with mode: 0644]
basis/windows/directx/dxgitype/tags.txt
basis/windows/directx/x3daudio/platforms.txt [new file with mode: 0644]
basis/windows/directx/x3daudio/tags.txt
basis/windows/directx/xact3/platforms.txt [new file with mode: 0644]
basis/windows/directx/xact3/tags.txt
basis/windows/directx/xapo/platforms.txt [new file with mode: 0644]
basis/windows/directx/xapo/tags.txt
basis/windows/directx/xapofx/platforms.txt [new file with mode: 0644]
basis/windows/directx/xapofx/tags.txt
basis/windows/directx/xaudio2/platforms.txt [new file with mode: 0644]
basis/windows/directx/xaudio2/tags.txt
basis/windows/directx/xaudio2fx/platforms.txt [new file with mode: 0644]
basis/windows/directx/xaudio2fx/tags.txt
basis/windows/directx/xinput/platforms.txt [new file with mode: 0644]
basis/windows/directx/xinput/tags.txt
basis/windows/dragdrop-listener/dragdrop-listener.factor [deleted file]
basis/windows/dragdrop-listener/tags.txt [deleted file]
basis/windows/dwmapi/platforms.txt [new file with mode: 0644]
basis/windows/dwmapi/tags.txt
basis/windows/errors/platforms.txt [new file with mode: 0644]
basis/windows/errors/tags.txt [deleted file]
basis/windows/fonts/platforms.txt [new file with mode: 0644]
basis/windows/fonts/tags.txt [deleted file]
basis/windows/gdi32/platforms.txt [new file with mode: 0644]
basis/windows/gdi32/tags.txt
basis/windows/kernel32/platforms.txt [new file with mode: 0644]
basis/windows/kernel32/tags.txt [deleted file]
basis/windows/messages/platforms.txt [new file with mode: 0644]
basis/windows/messages/tags.txt [deleted file]
basis/windows/nt/platforms.txt [new file with mode: 0644]
basis/windows/nt/tags.txt [deleted file]
basis/windows/offscreen/platforms.txt [new file with mode: 0644]
basis/windows/offscreen/tags.txt [deleted file]
basis/windows/ole32/platforms.txt [new file with mode: 0644]
basis/windows/ole32/tags.txt [deleted file]
basis/windows/opengl32/platforms.txt [new file with mode: 0644]
basis/windows/opengl32/tags.txt [deleted file]
basis/windows/platforms.txt [new file with mode: 0644]
basis/windows/psapi/platforms.txt [new file with mode: 0644]
basis/windows/psapi/tags.txt
basis/windows/shell32/platforms.txt [new file with mode: 0644]
basis/windows/shell32/tags.txt [deleted file]
basis/windows/tags.txt
basis/windows/time/platforms.txt [new file with mode: 0644]
basis/windows/time/tags.txt [deleted file]
basis/windows/types/platforms.txt [new file with mode: 0644]
basis/windows/types/tags.txt [deleted file]
basis/windows/uniscribe/platforms.txt [new file with mode: 0644]
basis/windows/uniscribe/tags.txt [deleted file]
basis/windows/user32/platforms.txt [new file with mode: 0644]
basis/windows/user32/tags.txt [deleted file]
basis/windows/usp10/platforms.txt [new file with mode: 0644]
basis/windows/usp10/tags.txt
basis/windows/winsock/platforms.txt [new file with mode: 0644]
basis/windows/winsock/tags.txt [deleted file]
basis/x11/io/unix/platforms.txt [new file with mode: 0644]
basis/x11/io/unix/tags.txt [deleted file]
basis/x11/windows/platforms.txt [new file with mode: 0644]
basis/x11/windows/tags.txt [deleted file]
core/alien/strings/strings.factor
core/classes/algebra/algebra.factor
core/compiler/units/units.factor
core/continuations/continuations-docs.factor
core/continuations/continuations.factor
core/make/make-docs.factor
core/vocabs/loader/loader-docs.factor
core/vocabs/loader/loader.factor
core/vocabs/loader/test/a/a.factor
core/vocabs/loader/test/a/tags.txt
core/vocabs/loader/test/b/tags.txt
core/vocabs/loader/test/c/tags.txt
core/vocabs/loader/test/d/tags.txt
core/vocabs/loader/test/e/tags.txt
core/vocabs/loader/test/f/tags.txt
core/vocabs/loader/test/g/tags.txt
core/vocabs/loader/test/h/tags.txt
core/vocabs/loader/test/i/tags.txt
core/vocabs/loader/test/j/tags.txt
core/vocabs/loader/test/k/tags.txt
core/vocabs/loader/test/l/tags.txt
extra/couchdb/tags.txt
extra/curses/ffi/platforms.txt [new file with mode: 0644]
extra/curses/ffi/tags.txt [deleted file]
extra/curses/platforms.txt [new file with mode: 0644]
extra/curses/tags.txt [deleted file]
extra/ecdsa/tags.txt
extra/game/loop/loop-docs.factor
extra/game/loop/loop.factor
extra/io/serial/tags.txt [deleted file]
extra/io/serial/unix/bsd/platforms.txt [new file with mode: 0644]
extra/io/serial/unix/bsd/tags.txt [deleted file]
extra/io/serial/unix/linux/platforms.txt [new file with mode: 0644]
extra/io/serial/unix/linux/tags.txt [deleted file]
extra/io/serial/unix/platforms.txt [new file with mode: 0644]
extra/io/serial/unix/tags.txt [deleted file]
extra/io/serial/unix/termios/bsd/platforms.txt [new file with mode: 0644]
extra/io/serial/unix/termios/bsd/tags.txt [deleted file]
extra/io/serial/unix/termios/linux/platforms.txt [new file with mode: 0644]
extra/io/serial/unix/termios/linux/tags.txt [deleted file]
extra/io/serial/unix/termios/platforms.txt [new file with mode: 0644]
extra/io/serial/unix/termios/tags.txt [deleted file]
extra/io/serial/unix/unix.factor
extra/io/serial/windows/platforms.txt [new file with mode: 0644]
extra/io/serial/windows/tags.txt [deleted file]
extra/io/serial/windows/windows.factor
extra/libusb/platforms.txt [new file with mode: 0644]
extra/libusb/tags.txt
extra/llvm/core/tags.txt
extra/llvm/engine/tags.txt
extra/llvm/invoker/tags.txt
extra/llvm/jit/tags.txt
extra/llvm/reader/tags.txt
extra/llvm/tags.txt
extra/llvm/types/tags.txt
extra/llvm/wrappers/tags.txt
extra/merger/platforms.txt [new file with mode: 0644]
extra/merger/tags.txt [deleted file]
extra/native-thread-test/native-thread-test.factor
extra/openal/alut/macosx/platforms.txt [new file with mode: 0644]
extra/openal/alut/macosx/tags.txt [deleted file]
extra/qtkit/platforms.txt [new file with mode: 0644]
extra/qtkit/qtkit.factor
extra/qtkit/tags.txt [deleted file]
extra/webkit-demo/platforms.txt [new file with mode: 0644]
extra/webkit-demo/tags.txt [deleted file]
unmaintained/dragdrop-listener/dragdrop-listener.factor [new file with mode: 0644]
unmaintained/dragdrop-listener/platforms.txt [new file with mode: 0644]

index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
diff --git a/basis/calendar/unix/platforms.txt b/basis/calendar/unix/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/calendar/unix/tags.txt b/basis/calendar/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/calendar/windows/platforms.txt b/basis/calendar/windows/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/calendar/windows/tags.txt b/basis/calendar/windows/tags.txt
deleted file mode 100755 (executable)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/cocoa/application/platforms.txt b/basis/cocoa/application/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/application/tags.txt b/basis/cocoa/application/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index e1ec43f1dc7c4416b117ccae60a8aedde3c1a2d6..87b5f628a96c9610be72e3d42d6963533d0ba1ff 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/callbacks/tags.txt b/basis/cocoa/callbacks/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/cocoa/dialogs/platforms.txt b/basis/cocoa/dialogs/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/dialogs/tags.txt b/basis/cocoa/dialogs/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/cocoa/enumeration/platforms.txt b/basis/cocoa/enumeration/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/enumeration/tags.txt b/basis/cocoa/enumeration/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 02e6335c54b5f4f2a7a628721d7647df412025a2..eab301add741ec6f347c0c537327f41112080939 100644 (file)
@@ -76,13 +76,13 @@ MACRO: (send) ( selector super? -- quot )
 : super-send ( receiver args... selector -- return... ) t (send) ; inline
 
 ! Runtime introspection
-SYMBOL: class-startup-hooks
+SYMBOL: class-init-hooks
 
-class-startup-hooks [ H{ } clone ] initialize
+class-init-hooks [ H{ } clone ] initialize
 
 : (objc-class) ( name word -- class )
     2dup execute dup [ 2nip ] [
-        drop over class-startup-hooks get at [ call( -- ) ] when*
+        drop over class-init-hooks get at [ call( -- ) ] when*
         2dup execute dup [ 2nip ] [
             2drop "No such class: " prepend throw
         ] if
@@ -229,7 +229,7 @@ ERROR: no-objc-type name ;
 : class-exists? ( string -- class ) objc_getClass >boolean ;
 
 : define-objc-class-word ( quot name -- )
-    [ class-startup-hooks get set-at ]
+    [ class-init-hooks get set-at ]
     [
         [ "cocoa.classes" create ] [ '[ _ objc-class ] ] bi
         (( -- class )) define-declared
@@ -237,8 +237,10 @@ ERROR: no-objc-type name ;
 
 : import-objc-class ( name quot -- )
     over define-objc-class-word
-    [ objc-class register-objc-methods ]
-    [ objc-meta-class register-objc-methods ] bi ;
+    dup objc_getClass [
+        [ objc-class register-objc-methods ]
+        [ objc-meta-class register-objc-methods ] bi
+    ] [ drop ] if ;
 
 : root-class ( class -- root )
     dup class_getSuperclass [ root-class ] [ ] ?if ;
diff --git a/basis/cocoa/messages/platforms.txt b/basis/cocoa/messages/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/messages/tags.txt b/basis/cocoa/messages/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/cocoa/nibs/platforms.txt b/basis/cocoa/nibs/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/nibs/tags.txt b/basis/cocoa/nibs/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/cocoa/pasteboard/platforms.txt b/basis/cocoa/pasteboard/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/pasteboard/tags.txt b/basis/cocoa/pasteboard/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/cocoa/platforms.txt b/basis/cocoa/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/plists/platforms.txt b/basis/cocoa/plists/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/plists/tags.txt b/basis/cocoa/plists/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/cocoa/runtime/platforms.txt b/basis/cocoa/runtime/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/runtime/tags.txt b/basis/cocoa/runtime/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/cocoa/subclassing/platforms.txt b/basis/cocoa/subclassing/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/subclassing/tags.txt b/basis/cocoa/subclassing/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 86dd9eeb911c05e4fb9ec4df73340bba66a0c33b..40fc52b29bc7181d8968cac4813f1c599901e5d0 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/types/tags.txt b/basis/cocoa/types/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/cocoa/views/platforms.txt b/basis/cocoa/views/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/views/tags.txt b/basis/cocoa/views/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/cocoa/windows/platforms.txt b/basis/cocoa/windows/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/cocoa/windows/tags.txt b/basis/cocoa/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..9cd475b
--- /dev/null
@@ -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 (file)
index 0000000..5837d68
--- /dev/null
@@ -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 (file)
index 0000000..e606193
--- /dev/null
@@ -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 <struct-boa> ] my-struct-array{ } map-as ;
+
+[ ] [
+    [
+        "specialized-arrays.instances.compiler.tests.redefine23" forget-vocab
+    ] with-compilation-unit
+] unit-test
index b19c99c360af784109c4a273d165781e9ed51e5d..b69f0538985384250aa5bdd9b2d6f9a3c52d1cea 100644 (file)
@@ -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?
index 28ffb96f8fe83bb1452f7726438429737db17f8d..7f5b9f6fcdf68a73907a7be57de27d6f4f662880 100644 (file)
@@ -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: <literal-info>
 
 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 ] }
index e2bfe587884d02bea894f1a2942f9573c94e1cfd..444a4247660fe2dc20ead127694e161e12226fda 100644 (file)
@@ -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
 
index ccfd6ffabdd0ff373fb8f4df935878c38ce58179..ed417ef9d76102668d1c60b1294698dfbfd98693 100644 (file)
@@ -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 <literal-info> ] }
-        { [ 2dup classes-intersect? not ] [ f <literal-info> ] }
-        [ object-info ]
-    } cond 2nip ;
+    [ class>> ] dip compare-classes
+    dup +incomparable+ eq? [ drop object-info ] [ <literal-info> ] if ;
 
 : predicate-output-infos ( info class -- info )
     over literal?>>
diff --git a/basis/core-foundation/arrays/platforms.txt b/basis/core-foundation/arrays/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/core-foundation/fsevents/tags.txt b/basis/core-foundation/fsevents/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/core-foundation/numbers/tags.txt b/basis/core-foundation/numbers/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/core-foundation/platforms.txt b/basis/core-foundation/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -1,2 +1 @@
-unportable
 bindings
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/core-foundation/utilities/tags.txt b/basis/core-foundation/utilities/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/core-graphics/platforms.txt b/basis/core-graphics/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -1,2 +1 @@
-unportable
 bindings
diff --git a/basis/core-text/platforms.txt b/basis/core-text/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 8e66660f706832bc0afd9989a72856a48f5cf3dd..6c8f59c757453ea3c27b684163949b99832c84f3 100644 (file)
@@ -1,2 +1,2 @@
-unportable
 compiler
+untested
index 8e66660f706832bc0afd9989a72856a48f5cf3dd..50dfc5156eaf27de98ef174f5412cee2e92b37a0 100644 (file)
@@ -1,2 +1,2 @@
-unportable
+untested
 compiler
index 8e66660f706832bc0afd9989a72856a48f5cf3dd..50dfc5156eaf27de98ef174f5412cee2e92b37a0 100644 (file)
@@ -1,2 +1,2 @@
-unportable
+untested
 compiler
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -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 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 8e66660f706832bc0afd9989a72856a48f5cf3dd..50dfc5156eaf27de98ef174f5412cee2e92b37a0 100644 (file)
@@ -1,2 +1,2 @@
-unportable
+untested
 compiler
diff --git a/basis/debugger/windows/platforms.txt b/basis/debugger/windows/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/debugger/windows/tags.txt b/basis/debugger/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100755 (executable)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
diff --git a/basis/environment/unix/macosx/platforms.txt b/basis/environment/unix/macosx/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/environment/unix/macosx/tags.txt b/basis/environment/unix/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/environment/unix/platforms.txt b/basis/environment/unix/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/environment/unix/tags.txt b/basis/environment/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/environment/winnt/platforms.txt b/basis/environment/winnt/platforms.txt
new file mode 100644 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
diff --git a/basis/environment/winnt/tags.txt b/basis/environment/winnt/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 1077aebf079f954bcf61cc794b9c6f61db6bc683..f1bc8adef996aff83726defec4233bec8950e1d0 100644 (file)
@@ -1,15 +1,14 @@
 ! Copyright (C) 2008 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs byte-arrays calendar classes
-combinators combinators.short-circuit concurrency.promises
-continuations destructors ftp io io.backend io.directories
-io.encodings io.encodings.binary
-tools.files io.encodings.utf8 io.files io.files.info
-io.pathnames io.launcher.unix.parser io.servers.connection
-io.sockets io.streams.duplex io.streams.string io.timeouts
-kernel make math math.bitwise math.parser namespaces sequences
-splitting threads unicode.case logging calendar.format
-strings io.files.links io.files.types io.encodings.8-bit.latin1 ;
+USING: accessors assocs byte-arrays calendar classes combinators
+combinators.short-circuit concurrency.promises continuations
+destructors ftp io io.backend io.directories io.encodings
+io.encodings.binary tools.files io.encodings.utf8 io.files
+io.files.info io.pathnames io.servers.connection io.sockets
+io.streams.duplex io.streams.string io.timeouts kernel make math
+math.bitwise math.parser namespaces sequences splitting threads
+unicode.case logging calendar.format strings io.files.links
+io.files.types io.encodings.8-bit.latin1 simple-tokenizer ;
 IN: ftp.server
 
 SYMBOL: server
@@ -24,7 +23,7 @@ TUPLE: ftp-command raw tokenized ;
     dup \ <ftp-command> DEBUG log-message
     ftp-command new
         over >>raw
-        swap tokenize-command >>tokenized ;
+        swap tokenize >>tokenized ;
 
 TUPLE: ftp-get path ;
 : <ftp-get> ( path -- obj )
diff --git a/basis/game/input/dinput/platforms.txt b/basis/game/input/dinput/platforms.txt
new file mode 100644 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 82506ff25057eb75d26306ad84e5c8803450f477..84d4140a708087ed366b2c57729dee056dbc0149 100755 (executable)
@@ -1,2 +1 @@
-unportable
 games
index 29b74ff57064dbc7da1971335a2bfa8a48d1262b..1ea5dcc65098c334b9ac82bc873bf1a2fad8ea91 100644 (file)
@@ -32,6 +32,12 @@ ARTICLE: "game-input" "Game controller input"
     controller-state
     keyboard-state
     mouse-state
+}
+"Convenience functions are provided to convert a pair of key or button state sequences into a sequence of " { $link pressed } "/" { $link released } " deltas:"
+{ $subsections
+    button-delta
+    buttons-delta
+    buttons-delta-as
 } ;
 
 HELP: open-game-input
@@ -136,7 +142,7 @@ HELP: controller-state
     { "A value of " { $link f } " in any slot (besides the elements of " { $snippet "buttons" } ") indicates that the corresponding element is not present on the device." } } } ;
 
 HELP: keyboard-state
-{ $class-description "The " { $link read-keyboard } " word returns objects of this class. The " { $snippet "keys" } " slot of a " { $snippet "keyboard-state" } " object contains a " { $link sequence } " of 256 members representing the state of the keys on the keyboard. Each element is a boolean value indicating whether the corresponding key is pressed. The sequence is indexed by scancode as defined under usage page 7 of the USB HID standard. Named scancode constants are provided in the " { $vocab-link "game.input.scancodes" } " vocabulary." }
+{ $class-description "The " { $link read-keyboard } " word returns objects of this class. The " { $snippet "keys" } " slot of a " { $snippet "keyboard-state" } " object contains a " { $link sequence } " of 256 members representing the state of the keys on the keyboard. Each element is a boolean value indicating whether the corresponding key is pressed. The sequence is indexed by scancode as defined by the USB HID standard. Named scancode constants are provided in the " { $vocab-link "game.input.scancodes" } " vocabulary." }
 { $warning "The scancodes used to index " { $snippet "keyboard-state" } " objects correspond to physical key positions on the keyboard--they are unaffected by keymaps, modifier keys, or other operating environment postprocessing. The face value of the constants in " { $vocab-link "game.input.scancodes" } " do not necessarily correspond to what the user expects the key to type. Because of this, " { $link read-keyboard } " should not be used for text entry purposes. The Factor UI's standard gesture mechanism should be used in cases where the logical meaning of keypresses is needed; see " { $link "keyboard-gestures" } "." } ;
 
 HELP: mouse-state
@@ -151,7 +157,30 @@ HELP: mouse-state
 "Mouse movement is recorded relative to when the game input interface was opened with " { $link open-game-input } " or the mouse state is reset with " { $link reset-mouse } "."
 } ;
 
-
 { keyboard-state read-keyboard } related-words
 
+HELP: button-delta
+{ $values { "old?" boolean } { "new?" boolean } { "delta" { $link pressed } ", " { $link released } ", or " { $link POSTPONE: f } } }
+{ $description "Outputs a symbol representing the change in a key or button's state given a \"before\" and \"after\" sample of its state. Outputs " { $link pressed } " if " { $snippet "old?" } " is false and " { $snippet "new?" } " is true, " { $link released } " if " { $snippet "old?" } " is true and " { $snippet "new?" } " is false, or " { $link POSTPONE: f } " if the two inputs have the same boolean value." } ;
+
+HELP: buttons-delta
+{ $values { "old-buttons" sequence } { "new-buttons" sequence } { "delta" "an array of " { $link pressed } ", " { $link released } ", or " { $link POSTPONE: f } } }
+{ $description "Outputs an array of symbols representing the change in a set of keys or buttons' states given \"before\" and \"after\" samples of their state. For each corresponding pair of values in the two input sequences, outputs " { $link pressed } " if " { $snippet "old-buttons" } " contains a false and " { $snippet "new-buttons" } " a true value, " { $link released } " if " { $snippet "old-buttons" } " contains true and " { $snippet "new-buttons" } " false, or " { $link POSTPONE: f } " if the two elements have the same boolean value."
+$nl
+"This word can be used with two samples of a " { $link keyboard-state } "'s " { $snippet "keys" } " slot or of a " { $link mouse-state } "'s or " { $link controller-state } "'s " { $snippet "buttons" } " slot to convert the button states into pressed/released values. Remember to " { $link clone } " state objects to record snapshots of their state." } ;
+
+HELP: buttons-delta-as
+{ $values { "old-buttons" sequence } { "new-buttons" sequence } { "exemplar" sequence } { "delta" "a sequence of " { $link pressed } ", " { $link released } ", or " { $link POSTPONE: f } } }
+{ $description "Like " { $link buttons-delta } ", but returns a sequence matching the type of the " { $snippet "exemplar" } "." } ;
+
+{ button-delta buttons-delta buttons-delta-as } related-words
+
+HELP: pressed
+{ $class-description "This symbol is returned by " { $link button-delta } " or " { $link buttons-delta } " to represent a button or key being pressed between two samples of its state." } ;
+
+HELP: released
+{ $class-description "This symbol is returned by " { $link button-delta } " or " { $link buttons-delta } " to represent a button or key being released between two samples of its state." } ;
+
+{ pressed released } related-words
+
 ABOUT: "game-input"
index bd993bf811dc3828ae8827dfb26361e91bc2ac03..923815328e74c094a17e59c59236ea7b45fd26d1 100644 (file)
@@ -7,3 +7,14 @@ os { [ windows? ] [ macosx? ] } 1|| [
     [ ] [ 1 seconds sleep ] unit-test
     [ ] [ close-game-input ] unit-test
 ] when
+
+[ f        ] [ t t button-delta ] unit-test
+[ pressed  ] [ f t button-delta ] unit-test
+[ released ] [ t f button-delta ] unit-test
+
+[ f        ] [ 0.5 1.0 button-delta ] unit-test
+[ pressed  ] [ f   0.7 button-delta ] unit-test
+[ released ] [ 0.2 f   button-delta ] unit-test
+
+[  { pressed f f released } ] [ { f t f t } { t t f f }      buttons-delta    ] unit-test
+[ V{ pressed f f released } ] [ { f t f t } { t t f f } V{ } buttons-delta-as ] unit-test
index 8a269cd51a2a690dc31f5d6badc0b557c6277081..f27e1f36d12122c80367aabaa08383caf0bc3ba7 100644 (file)
@@ -90,6 +90,21 @@ TUPLE: mouse-state dx dy scroll-dx scroll-dy buttons ;
 M: mouse-state clone
     call-next-method dup buttons>> clone >>buttons ;
 
+SYMBOLS: pressed released ;
+
+: button-delta ( old? new? -- delta )
+    {
+        { [ 2dup xor not ] [ 2drop f ] }
+        { [ dup  not     ] [ 2drop released ] }
+        { [ over not     ] [ 2drop pressed ] }
+    } cond ; inline
+
+: buttons-delta-as ( old-buttons new-buttons exemplar -- delta )
+    [ button-delta ] swap 2map-as ; inline
+
+: buttons-delta ( old-buttons new-buttons -- delta )
+    { } buttons-delta-as ; inline
+
 {
     { [ os windows? ] [ "game.input.xinput" require ] }
     { [ os macosx? ] [ "game.input.iokit" require ] }
diff --git a/basis/game/input/iokit/platforms.txt b/basis/game/input/iokit/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 82506ff25057eb75d26306ad84e5c8803450f477..84d4140a708087ed366b2c57729dee056dbc0149 100755 (executable)
@@ -1,2 +1 @@
-unportable
 games
diff --git a/basis/game/input/linux/platforms.txt b/basis/game/input/linux/platforms.txt
new file mode 100644 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
index 82506ff25057eb75d26306ad84e5c8803450f477..84d4140a708087ed366b2c57729dee056dbc0149 100644 (file)
@@ -1,2 +1 @@
-unportable
 games
diff --git a/basis/game/input/xinput/platforms.txt b/basis/game/input/xinput/platforms.txt
new file mode 100644 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 82506ff25057eb75d26306ad84e5c8803450f477..84d4140a708087ed366b2c57729dee056dbc0149 100644 (file)
@@ -1,2 +1 @@
-unportable
 games
diff --git a/basis/io/backend/unix/bsd/platforms.txt b/basis/io/backend/unix/bsd/platforms.txt
new file mode 100644 (file)
index 0000000..df796f1
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..edfe860
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..df796f1
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
index f2d1a3a3b78c3cf7a22f5048c3a1e26591cb0741..5a3dab4dcc7d22d8f58a4970ab472ddb5d6d0cbc 100644 (file)
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (executable)
index 6abe115..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable\r
diff --git a/basis/io/backend/unix/netbsd/platforms.txt b/basis/io/backend/unix/netbsd/platforms.txt
new file mode 100644 (file)
index 0000000..dccfe71
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..389b028
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/io/backend/unix/tags.txt b/basis/io/backend/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..205e643
--- /dev/null
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (executable)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/io/directories/unix/tags.txt b/basis/io/directories/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/io/directories/windows/tags.txt b/basis/io/directories/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..df796f1
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..edfe860
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..dccfe71
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..389b028
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/io/files/unix/tags.txt b/basis/io/files/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..205e643
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/io/files/windows/tags.txt b/basis/io/files/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/io/launcher/unix/parser/parser-tests.factor b/basis/io/launcher/unix/parser/parser-tests.factor
deleted file mode 100644 (file)
index 90504cc..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-IN: io.launcher.unix.parser.tests
-USING: io.launcher.unix.parser tools.test ;
-
-[ "" tokenize-command ] must-fail
-[ "   " tokenize-command ] must-fail
-[ V{ "a" } ] [ "a" tokenize-command ] unit-test
-[ V{ "abc" } ] [ "abc" tokenize-command ] unit-test
-[ V{ "abc" } ] [ "abc   " tokenize-command ] unit-test
-[ V{ "abc" } ] [ "   abc" tokenize-command ] unit-test
-[ V{ "abc" "def" } ] [ "abc def" tokenize-command ] unit-test
-[ V{ "abc def" } ] [ "abc\\ def" tokenize-command ] unit-test
-[ V{ "abc\\" "def" } ] [ "abc\\\\ def" tokenize-command ] unit-test
-[ V{ "abc\\ def" } ] [ "\"abc\\\\ def\"" tokenize-command ] unit-test
-[ V{ "abc\\ def" } ] [ "  \"abc\\\\ def\"" tokenize-command ] unit-test
-[ V{ "abc\\ def" "hey" } ] [ "\"abc\\\\ def\" hey" tokenize-command ] unit-test
-[ V{ "abc def" "hey" } ] [ "\"abc def\" \"hey\"" tokenize-command ] unit-test
-[ "\"abc def\" \"hey" tokenize-command ] must-fail
-[ "\"abc def" tokenize-command ] must-fail
-[ V{ "abc def" "h\"ey" } ] [ "\"abc def\" \"h\\\"ey\"  " tokenize-command ] unit-test
-
-[
-    V{
-        "Hello world.app/Contents/MacOS/hello-ui"
-        "-i=boot.macosx-ppc.image"
-        "-include= math compiler ui"
-        "-deploy-vocab=hello-ui"
-        "-output-image=Hello world.app/Contents/Resources/hello-ui.image"
-        "-no-stack-traces"
-        "-no-user-init"
-    }
-] [
-    "\"Hello world.app/Contents/MacOS/hello-ui\" -i=boot.macosx-ppc.image \"-include= math compiler ui\" -deploy-vocab=hello-ui \"-output-image=Hello world.app/Contents/Resources/hello-ui.image\" -no-stack-traces -no-user-init" tokenize-command
-] unit-test
diff --git a/basis/io/launcher/unix/parser/parser.factor b/basis/io/launcher/unix/parser/parser.factor
deleted file mode 100644 (file)
index bcc5f96..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-! Copyright (C) 2008 Slava Pestov
-! See http://factorcode.org/license.txt for BSD license.
-USING: peg peg.ebnf arrays sequences strings kernel ;
-IN: io.launcher.unix.parser
-
-! Our command line parser. Supported syntax:
-! foo bar baz -- simple tokens
-! foo\ bar -- escaping the space
-! "foo bar" -- quotation
-EBNF: tokenize-command
-space = " "
-escaped-char = "\" .:ch => [[ ch ]]
-quoted = '"' (escaped-char | [^"])*:a '"' => [[ a ]]
-unquoted = (escaped-char | [^ "])+
-argument = (quoted | unquoted) => [[ >string ]]
-command = space* (argument:a space* => [[ a ]])+:c !(.) => [[ c ]]
-;EBNF
diff --git a/basis/io/launcher/unix/parser/tags.txt b/basis/io/launcher/unix/parser/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/io/launcher/unix/tags.txt b/basis/io/launcher/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index d8b55d3d1710d73b5026f3d614e0a1bbe6cc8fb8..aaaccd4719e1d9b92a32324763a33da2459accdc 100644 (file)
@@ -1,15 +1,14 @@
-! Copyright (C) 2007, 2008 Slava Pestov.
+! Copyright (C) 2007, 2010 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors alien.c-types arrays assocs combinators
 continuations environment io io.backend io.backend.unix
-io.files io.files.private io.files.unix io.launcher
-io.launcher.unix.parser io.pathnames io.ports kernel math
-namespaces sequences strings system threads unix
-unix.process unix.ffi ;
+io.files io.files.private io.files.unix io.launcher io.pathnames
+io.ports kernel math namespaces sequences strings system threads
+unix unix.process unix.ffi simple-tokenizer ;
 IN: io.launcher.unix
 
 : get-arguments ( process -- seq )
-    command>> dup string? [ tokenize-command ] when ;
+    command>> dup string? [ tokenize ] when ;
 
 : assoc>env ( assoc -- env )
     [ "=" glue ] { } assoc>map ;
diff --git a/basis/io/launcher/windows/nt/platforms.txt b/basis/io/launcher/windows/nt/platforms.txt
new file mode 100644 (file)
index 0000000..205e643
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/io/launcher/windows/tags.txt b/basis/io/launcher/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/io/mmap/unix/tags.txt b/basis/io/mmap/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/io/mmap/windows/tags.txt b/basis/io/mmap/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/io/monitors/linux/platforms.txt b/basis/io/monitors/linux/platforms.txt
new file mode 100644 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/basis/io/monitors/linux/tags.txt b/basis/io/monitors/linux/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/io/monitors/macosx/platforms.txt b/basis/io/monitors/macosx/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/io/monitors/macosx/tags.txt b/basis/io/monitors/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/io/monitors/windows/nt/platforms.txt b/basis/io/monitors/windows/nt/platforms.txt
new file mode 100644 (file)
index 0000000..205e643
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/io/pipes/unix/tags.txt b/basis/io/pipes/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..205e643
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/io/sockets/unix/tags.txt b/basis/io/sockets/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..205e643
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/io/sockets/windows/tags.txt b/basis/io/sockets/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/iokit/hid/platforms.txt b/basis/iokit/hid/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index bf2a35f15b9aa5568577d3cfcacd1e6948f55972..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100755 (executable)
@@ -1,2 +1 @@
 bindings
-unportable
diff --git a/basis/iokit/platforms.txt b/basis/iokit/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index bf2a35f15b9aa5568577d3cfcacd1e6948f55972..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100755 (executable)
@@ -1,2 +1 @@
 bindings
-unportable
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
diff --git a/basis/opengl/gl/macosx/platforms.txt b/basis/opengl/gl/macosx/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/opengl/gl/macosx/tags.txt b/basis/opengl/gl/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/opengl/gl/unix/tags.txt b/basis/opengl/gl/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/opengl/gl/windows/tags.txt b/basis/opengl/gl/windows/tags.txt
deleted file mode 100755 (executable)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index ccc63c61cbaa3a35d71384de603c397b6f8ba2e6..7cd4b31c8bfb2c6b604376636aae29b0b39c4a3c 100644 (file)
@@ -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." } ;
index dd61e3e23d2f06e299f29e3711220522859c4114..a8848f9061d4dcf2e6994dfc16bfaab547b197a7 100644 (file)
@@ -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
index bd2c4bd924d9dffd0546952f07a6c95436e5812a..33e1857260e0d15967fe570ee98c842a888744d1 100644 (file)
@@ -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:"
index 7b1538b1dcf1c46b1a29e7ecbbfe3e63d11018c9..23cf956a1d71afa3364c4c03b22d8bbd6a1bfefa 100644 (file)
@@ -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/unix/platforms.txt b/basis/random/unix/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/random/unix/tags.txt b/basis/random/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/random/windows/platforms.txt b/basis/random/windows/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/random/windows/tags.txt b/basis/random/windows/tags.txt
deleted file mode 100755 (executable)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/simple-tokenizer/authors.txt b/basis/simple-tokenizer/authors.txt
new file mode 100644 (file)
index 0000000..1901f27
--- /dev/null
@@ -0,0 +1 @@
+Slava Pestov
diff --git a/basis/simple-tokenizer/simple-tokenizer-docs.factor b/basis/simple-tokenizer/simple-tokenizer-docs.factor
new file mode 100644 (file)
index 0000000..57e14f0
--- /dev/null
@@ -0,0 +1,13 @@
+USING: help.markup help.syntax strings ;
+IN: simple-tokenizer
+
+HELP: tokenize
+{ $values { "input" string } { "ast" "a sequence of strings" } }
+{ $description
+    "Tokenize a string. Supported syntax:"
+    { $list
+        { { $snippet "foo bar baz" } " - simple tokens" }
+        { { $snippet "foo\\ bar" } " - token with an escaped space"}
+        { { $snippet "\"foo bar\"" } " - quoted token" }
+    }
+} ;
diff --git a/basis/simple-tokenizer/simple-tokenizer-tests.factor b/basis/simple-tokenizer/simple-tokenizer-tests.factor
new file mode 100644 (file)
index 0000000..3b44f03
--- /dev/null
@@ -0,0 +1,33 @@
+IN: simple-tokenizer.tests
+USING: simple-tokenizer tools.test ;
+
+[ "" tokenize ] must-fail
+[ "   " tokenize ] must-fail
+[ V{ "a" } ] [ "a" tokenize ] unit-test
+[ V{ "abc" } ] [ "abc" tokenize ] unit-test
+[ V{ "abc" } ] [ "abc   " tokenize ] unit-test
+[ V{ "abc" } ] [ "   abc" tokenize ] unit-test
+[ V{ "abc" "def" } ] [ "abc def" tokenize ] unit-test
+[ V{ "abc def" } ] [ "abc\\ def" tokenize ] unit-test
+[ V{ "abc\\" "def" } ] [ "abc\\\\ def" tokenize ] unit-test
+[ V{ "abc\\ def" } ] [ "\"abc\\\\ def\"" tokenize ] unit-test
+[ V{ "abc\\ def" } ] [ "  \"abc\\\\ def\"" tokenize ] unit-test
+[ V{ "abc\\ def" "hey" } ] [ "\"abc\\\\ def\" hey" tokenize ] unit-test
+[ V{ "abc def" "hey" } ] [ "\"abc def\" \"hey\"" tokenize ] unit-test
+[ "\"abc def\" \"hey" tokenize ] must-fail
+[ "\"abc def" tokenize ] must-fail
+[ V{ "abc def" "h\"ey" } ] [ "\"abc def\" \"h\\\"ey\"  " tokenize ] unit-test
+
+[
+    V{
+        "Hello world.app/Contents/MacOS/hello-ui"
+        "-i=boot.macosx-ppc.image"
+        "-include= math compiler ui"
+        "-deploy-vocab=hello-ui"
+        "-output-image=Hello world.app/Contents/Resources/hello-ui.image"
+        "-no-stack-traces"
+        "-no-user-init"
+    }
+] [
+    "\"Hello world.app/Contents/MacOS/hello-ui\" -i=boot.macosx-ppc.image \"-include= math compiler ui\" -deploy-vocab=hello-ui \"-output-image=Hello world.app/Contents/Resources/hello-ui.image\" -no-stack-traces -no-user-init" tokenize
+] unit-test
diff --git a/basis/simple-tokenizer/simple-tokenizer.factor b/basis/simple-tokenizer/simple-tokenizer.factor
new file mode 100644 (file)
index 0000000..f6698a6
--- /dev/null
@@ -0,0 +1,13 @@
+! Copyright (C) 2008, 2010 Slava Pestov
+! See http://factorcode.org/license.txt for BSD license.
+USING: peg peg.ebnf arrays sequences strings kernel ;
+IN: simple-tokenizer
+
+EBNF: tokenize
+space = " "
+escaped-char = "\" .:ch => [[ ch ]]
+quoted = '"' (escaped-char | [^"])*:a '"' => [[ a ]]
+unquoted = (escaped-char | [^ "])+
+argument = (quoted | unquoted) => [[ >string ]]
+command = space* (argument:a space* => [[ a ]])+:c !(.) => [[ c ]]
+;EBNF
diff --git a/basis/simple-tokenizer/tags.txt b/basis/simple-tokenizer/tags.txt
new file mode 100644 (file)
index 0000000..8e27be7
--- /dev/null
@@ -0,0 +1 @@
+text
index d3db93e7887a5449314a78b5249fae7c2e89a1e1..e2840b89dd2ced0223a72dff05c75e6b4ed435fb 100644 (file)
@@ -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
 
@@ -61,9 +66,11 @@ TUPLE: A
     [ \ T heap-size calloc ] keep <direct-A> ; inline
 
 : byte-array>A ( byte-array -- specialized-array )
-    >c-ptr dup length \ T heap-size /mod 0 =
-    [ drop \ T bad-byte-array-length ] unless
-    <direct-A> ; inline
+    >c-ptr dup byte-array? [
+        dup length \ T heap-size /mod 0 =
+        [ <direct-A> ]
+        [ drop \ T bad-byte-array-length ] if
+    ] [ not-a-byte-array ] if ; inline
 
 M: A clone [ underlying>> clone ] [ length>> ] bi <direct-A> ; inline
 
index df68fa8961b83ca8069dcb087115a1d3d94d3521..ece943acacdd73a9f357235ef7db8a0bc28bcb46 100644 (file)
@@ -1,9 +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
-classes.tuple ;
+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
@@ -57,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 ;
diff --git a/basis/system-info/linux/platforms.txt b/basis/system-info/linux/platforms.txt
new file mode 100644 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/basis/system-info/linux/tags.txt b/basis/system-info/linux/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/system-info/macosx/tags.txt b/basis/system-info/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..cd0d980
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..205e643
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/system-info/windows/tags.txt b/basis/system-info/windows/tags.txt
deleted file mode 100755 (executable)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/tools/cocoa/platforms.txt b/basis/tools/cocoa/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/tools/cocoa/tags.txt b/basis/tools/cocoa/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 3bdf2f83ae589a46148f8849d8c7255d4c186ca0..30ec4b2b65045bbfaa5d06616a1b4715020c3e05 100644 (file)
@@ -61,18 +61,17 @@ M: pathname uses string>> source-file top-level-form>> [ uses ] [ { } ] if* ;
 ! To make UI browser happy
 M: vocab uses drop f ;
 
-GENERIC: crossref-def ( defspec -- )
-
-M: object crossref-def
+: crossref-def ( defspec -- )
     dup uses crossref get add-vertex ;
 
-M: word crossref-def
-    [ call-next-method ] [ subwords [ crossref-def ] each ] bi ;
-
 : defs-to-crossref ( -- seq )
     [
         all-words
+        [ [ generic? not ] filter ]
+        [ [ subwords ] map concat ] bi
+
         all-articles [ >link ] map
+
         source-files get keys [ <pathname> ] map
     ] append-outputs ;
 
index 78d86a470744bc9101071a7c3ae80a5ceb2414c5..e10d20e8b3828ee567f6e10a21d40b7a9a0f302d 100644 (file)
@@ -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 -- )
index a552bd04fb395cb459cf5b293e04d3b8643567e9..976fc253576204943b433cd1ae470ed5d324a028 100755 (executable)
@@ -13,7 +13,7 @@ ARTICLE: "prepare-deploy" "Preparing to deploy an application"
 ARTICLE: "deploy-resources" "Deployed resource files"
 "To include additional files in your deployed application, specify their names in a vocabulary's " { $snippet "resources.txt" } " file. The " { $snippet "resources.txt" } " file contains one glob pattern per line. These patterns are expanded relative to the vocabulary directory; files outside of the vocabulary directory cannot be referenced. If a file inside the vocabulary directory matches any of these patterns, it will be included in deployed applications that reference the vocabulary. If a subdirectory matches, its contents will be included recursively."
 $nl
-"If the deployed vocabulary includes an icon file for the current platform (" { $snippet "icon.ico" } " on Windows, or " { $snippet "icon.icns" } " on MacOS X), it will be embedded in the deployed application as its GUI icon." ;
+"If the deployed vocabulary includes an icon file for the current platform, it will be embedded in the deployed application as its GUI icon. See " { $link "vocabs.icons" } "." ;
 
 ARTICLE: "tools.deploy.usage" "Deploy tool usage"
 "Once the necessary deployment flags have been set, the application can be deployed:"
diff --git a/basis/tools/deploy/libraries/tags.txt b/basis/tools/deploy/libraries/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/tools/deploy/libraries/windows/tags.txt b/basis/tools/deploy/libraries/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/tools/deploy/macosx/platforms.txt b/basis/tools/deploy/macosx/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index 660d51142094414674fc1b4b5118889d05e64499..ef1aab0d0e80e39c69ee151fac63f9fc11f1f70d 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
index 660d51142094414674fc1b4b5118889d05e64499..ef1aab0d0e80e39c69ee151fac63f9fc11f1f70d 100644 (file)
@@ -1,2 +1 @@
-unportable
 tools
diff --git a/basis/tools/deploy/windows/ico/platforms.txt b/basis/tools/deploy/windows/ico/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
index 660d51142094414674fc1b4b5118889d05e64499..ef1aab0d0e80e39c69ee151fac63f9fc11f1f70d 100755 (executable)
@@ -1,2 +1 @@
-unportable
 tools
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
diff --git a/basis/tools/files/tags.txt b/basis/tools/files/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/tools/files/unix/tags.txt b/basis/tools/files/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/tools/files/windows/tags.txt b/basis/tools/files/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 151d98a1346be75683da6ea19e3890293687ceb3..fee37496c8ffd20c8f6a6451996fb7c441c4c711 100644 (file)
@@ -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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/tools/scaffold/windows/tags.txt b/basis/tools/scaffold/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/ui/backend/cocoa/platforms.txt b/basis/ui/backend/cocoa/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/ui/backend/cocoa/tags.txt b/basis/ui/backend/cocoa/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/ui/backend/windows/tags.txt b/basis/ui/backend/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index f42fdf46167cef0dcb7f6e96aa4c6ae689173010..da60d66afff72794d83ee90b6919bf2b23fc036a 100644 (file)
@@ -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 }
index 7e54b823e8ebc3e814018d1d20df31788f02b582..eea2933b0461d22eaa21378e4f8c5d83efacfdae 100644 (file)
@@ -230,6 +230,9 @@ action-gestures [
     bi*
 ] H{ } assoc-map-as
 H{
+    { T{ key-down f { S+ } "DELETE" } [ \ cut-action send-action ] }
+    { T{ key-down f { S+ } "INSERT" } [ \ paste-action send-action ] }
+    { T{ key-down f { C+ } "INSERT" } [ \ copy-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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/ui/text/pango/platforms.txt b/basis/ui/text/pango/platforms.txt
new file mode 100644 (file)
index 0000000..b60912b
--- /dev/null
@@ -0,0 +1,4 @@
+linux
+freebsd
+netbsd
+openbsd
diff --git a/basis/ui/text/pango/tags.txt b/basis/ui/text/pango/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/ui/text/uniscribe/platforms.txt b/basis/ui/text/uniscribe/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/ui/text/uniscribe/tags.txt b/basis/ui/text/uniscribe/tags.txt
deleted file mode 100755 (executable)
index 6abe115..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable\r
diff --git a/basis/unix/debugger/platforms.txt b/basis/unix/debugger/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/unix/debugger/tags.txt b/basis/unix/debugger/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..edfe860
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..dccfe71
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..389b028
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..df796f1
--- /dev/null
@@ -0,0 +1 @@
+bsd
diff --git a/basis/unix/ffi/bsd/tags.txt b/basis/unix/ffi/bsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/basis/unix/ffi/linux/tags.txt b/basis/unix/ffi/linux/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/ffi/platforms.txt b/basis/unix/ffi/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/unix/ffi/solaris/platforms.txt b/basis/unix/ffi/solaris/platforms.txt
new file mode 100644 (file)
index 0000000..613a93b
--- /dev/null
@@ -0,0 +1 @@
+solaris
diff --git a/basis/unix/ffi/solaris/tags.txt b/basis/unix/ffi/solaris/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/ffi/tags.txt b/basis/unix/ffi/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..edfe860
--- /dev/null
@@ -0,0 +1 @@
+freebsd
diff --git a/basis/unix/getfsstat/freebsd/tags.txt b/basis/unix/getfsstat/freebsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/unix/getfsstat/macosx/tags.txt b/basis/unix/getfsstat/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..dccfe71
--- /dev/null
@@ -0,0 +1 @@
+netbsd
diff --git a/basis/unix/getfsstat/netbsd/tags.txt b/basis/unix/getfsstat/netbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..389b028
--- /dev/null
@@ -0,0 +1 @@
+openbsd
diff --git a/basis/unix/getfsstat/openbsd/tags.txt b/basis/unix/getfsstat/openbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/groups/platforms.txt b/basis/unix/groups/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/unix/groups/tags.txt b/basis/unix/groups/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..edfe860
--- /dev/null
@@ -0,0 +1 @@
+freebsd
diff --git a/basis/unix/kqueue/freebsd/tags.txt b/basis/unix/kqueue/freebsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/unix/kqueue/macosx/tags.txt b/basis/unix/kqueue/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..dccfe71
--- /dev/null
@@ -0,0 +1 @@
+netbsd
diff --git a/basis/unix/kqueue/netbsd/tags.txt b/basis/unix/kqueue/netbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..389b028
--- /dev/null
@@ -0,0 +1 @@
+openbsd
diff --git a/basis/unix/kqueue/openbsd/tags.txt b/basis/unix/kqueue/openbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/kqueue/platforms.txt b/basis/unix/kqueue/platforms.txt
new file mode 100644 (file)
index 0000000..df796f1
--- /dev/null
@@ -0,0 +1 @@
+bsd
diff --git a/basis/unix/kqueue/tags.txt b/basis/unix/kqueue/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/basis/unix/linux/epoll/tags.txt b/basis/unix/linux/epoll/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/basis/unix/linux/inotify/tags.txt b/basis/unix/linux/inotify/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/linux/platforms.txt b/basis/unix/linux/platforms.txt
new file mode 100644 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/basis/unix/linux/tags.txt b/basis/unix/linux/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/platforms.txt b/basis/unix/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/unix/process/platforms.txt b/basis/unix/process/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/unix/process/tags.txt b/basis/unix/process/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..edfe860
--- /dev/null
@@ -0,0 +1 @@
+freebsd
diff --git a/basis/unix/stat/freebsd/tags.txt b/basis/unix/stat/freebsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
diff --git a/basis/unix/stat/linux/platforms.txt b/basis/unix/stat/linux/platforms.txt
new file mode 100644 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/basis/unix/stat/linux/tags.txt b/basis/unix/stat/linux/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/unix/stat/macosx/tags.txt b/basis/unix/stat/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
diff --git a/basis/unix/stat/netbsd/platforms.txt b/basis/unix/stat/netbsd/platforms.txt
new file mode 100644 (file)
index 0000000..dccfe71
--- /dev/null
@@ -0,0 +1 @@
+netbsd
diff --git a/basis/unix/stat/netbsd/tags.txt b/basis/unix/stat/netbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..389b028
--- /dev/null
@@ -0,0 +1 @@
+openbsd
diff --git a/basis/unix/stat/openbsd/tags.txt b/basis/unix/stat/openbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/stat/platforms.txt b/basis/unix/stat/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/unix/stat/tags.txt b/basis/unix/stat/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..edfe860
--- /dev/null
@@ -0,0 +1 @@
+freebsd
diff --git a/basis/unix/statfs/freebsd/tags.txt b/basis/unix/statfs/freebsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/basis/unix/statfs/linux/tags.txt b/basis/unix/statfs/linux/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/unix/statfs/macosx/tags.txt b/basis/unix/statfs/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..389b028
--- /dev/null
@@ -0,0 +1 @@
+openbsd
diff --git a/basis/unix/statfs/openbsd/tags.txt b/basis/unix/statfs/openbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..edfe860
--- /dev/null
@@ -0,0 +1 @@
+freebsd
diff --git a/basis/unix/statvfs/freebsd/tags.txt b/basis/unix/statvfs/freebsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/basis/unix/statvfs/linux/tags.txt b/basis/unix/statvfs/linux/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/unix/statvfs/macosx/tags.txt b/basis/unix/statvfs/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..dccfe71
--- /dev/null
@@ -0,0 +1 @@
+netbsd
diff --git a/basis/unix/statvfs/netbsd/tags.txt b/basis/unix/statvfs/netbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..389b028
--- /dev/null
@@ -0,0 +1 @@
+openbsd
diff --git a/basis/unix/statvfs/openbsd/tags.txt b/basis/unix/statvfs/openbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/statvfs/platforms.txt b/basis/unix/statvfs/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/unix/statvfs/tags.txt b/basis/unix/statvfs/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -1,2 +1 @@
-unportable
 bindings
diff --git a/basis/unix/time/platforms.txt b/basis/unix/time/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/unix/time/tags.txt b/basis/unix/time/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..edfe860
--- /dev/null
@@ -0,0 +1 @@
+freebsd
diff --git a/basis/unix/types/freebsd/tags.txt b/basis/unix/types/freebsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/basis/unix/types/linux/tags.txt b/basis/unix/types/linux/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/unix/types/macosx/tags.txt b/basis/unix/types/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
diff --git a/basis/unix/types/netbsd/platforms.txt b/basis/unix/types/netbsd/platforms.txt
new file mode 100644 (file)
index 0000000..dccfe71
--- /dev/null
@@ -0,0 +1 @@
+netbsd
diff --git a/basis/unix/types/netbsd/tags.txt b/basis/unix/types/netbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..389b028
--- /dev/null
@@ -0,0 +1 @@
+openbsd
diff --git a/basis/unix/types/openbsd/tags.txt b/basis/unix/types/openbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/types/platforms.txt b/basis/unix/types/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/unix/types/tags.txt b/basis/unix/types/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..df796f1
--- /dev/null
@@ -0,0 +1 @@
+bsd
diff --git a/basis/unix/users/bsd/tags.txt b/basis/unix/users/bsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/users/platforms.txt b/basis/unix/users/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/unix/users/tags.txt b/basis/unix/users/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/utilities/tags.txt b/basis/unix/utilities/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 92a0d9e3a49eeaab3f1a69f8b42048abb2b80a34..faae29ffa49b434baf11852a4cbd928eb8f03859 100644 (file)
@@ -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 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/basis/unix/utmpx/macosx/tags.txt b/basis/unix/utmpx/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 40fce746b1f7e60713c1dd6b117801a4e7a27e77..93092a7cbfd26c53e3274a28dbb73adc2faf691f 100644 (file)
@@ -1,22 +1,20 @@
 ! Copyright (C) 2008 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax unix.utmpx unix.bsd.netbsd accessors
-unix.utmpx system kernel unix combinators ;
+USING: alien.syntax unix unix.utmpx unix.ffi.bsd.netbsd accessors
+system kernel combinators ;
 IN: unix.utmpx.netbsd
 
-TUPLE: netbsd-utmpx-record < utmpx-record termination exit
-sockaddr ;
-    
+TUPLE: netbsd-utmpx-record < utmpx-record
+termination exit sockaddr ;
+
 M: netbsd new-utmpx-record ( -- utmpx-record )
-    netbsd-utmpx-record new ; 
-    
+    netbsd-utmpx-record new ;
+
 M: netbsd utmpx>utmpx-record ( utmpx -- record )
-    [ new-utmpx-record ] keep
-    {
-        [
-            utmpx-ut_exit
-            [ exit_struct-e_termination >>termination ]
-            [ exit_struct-e_exit >>exit ] bi
-        ]
-        [ utmpx-ut_ss >>sockaddr ]
-    } cleave ;
+    [ new-utmpx-record ] dip
+    [
+        ut_exit>>
+        [ e_termination>> >>termination ]
+        [ e_exit>> >>exit ] bi
+    ]
+    [ ut_ss>> >>sockaddr ] bi ;
diff --git a/basis/unix/utmpx/netbsd/platforms.txt b/basis/unix/utmpx/netbsd/platforms.txt
new file mode 100644 (file)
index 0000000..dccfe71
--- /dev/null
@@ -0,0 +1 @@
+netbsd
diff --git a/basis/unix/utmpx/netbsd/tags.txt b/basis/unix/utmpx/netbsd/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/unix/utmpx/platforms.txt b/basis/unix/utmpx/platforms.txt
new file mode 100644 (file)
index 0000000..abe56c1
--- /dev/null
@@ -0,0 +1,2 @@
+macosx
+netbsd
diff --git a/basis/unix/utmpx/tags.txt b/basis/unix/utmpx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 6083776fc60059fc1b5ae93b1fc27c6f2b6094ac..78556ab22524d7d5c4a3ba7d5ece2ed3b4ee1de7 100644 (file)
@@ -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 ( ) ;
index d4f5d6b3aeb70f66356d80c70755fbb63ef584df..1ad6ff84f7983ec6040280eaa1c28b0057e58c25 100644 (file)
@@ -1 +1,2 @@
-Slava Pestov
\ No newline at end of file
+Slava Pestov
+Joe Groff
\ No newline at end of file
index 95c8083e0f81eebb61ec53bd8baa6df050e32095..c3dce45c09298d498239fa14b7287ad90f786f4d 100644 (file)
@@ -2,23 +2,36 @@ USING: help.markup help.syntax strings ;
 IN: vocabs.metadata
 
 ARTICLE: "vocabs.metadata" "Vocabulary metadata"
-"Vocabulary summaries:"
+"Vocabulary directories can contain text files with metadata:"
+{ $list
+    { { $snippet "authors.txt" } " - a series of lines, with one author name per line. These are listed under " { $link "vocab-authors" } "." }
+    { { $snippet "platforms.txt" } " - a series of lines, with one operating system name per line." }
+    { { $snippet "resources.txt" } " - a series of lines, with one file glob pattern per line. Files inside the vocabulary directory whose names match any of these glob patterns will be included with the compiled application as " { $link "deploy-resources" } "." }
+    { { $snippet "summary.txt" } " - a one-line description." }
+    { { $snippet "tags.txt" } " - a series of lines, with one tag per line. Tags help classify the vocabulary. Consult " { $link "vocab-tags" } " for a list of existing tags you can reuse." }
+}
+"Words for reading and writing " { $snippet "summary.txt" } ":"
 { $subsections
     vocab-summary
     set-vocab-summary
 }
-"Vocabulary authors:"
+"Words for reading and writing " { $snippet "authors.txt" } ":"
 { $subsections
     vocab-authors
     set-vocab-authors
 }
-"Vocabulary tags:"
+"Words for reading and writing " { $snippet "tags.txt" } ":"
 { $subsections
     vocab-tags
     set-vocab-tags
     add-vocab-tags
 }
-"Vocabulary resources:"
+"Words for reading and writing " { $snippet "platforms.txt" } ":"
+{ $subsections
+    vocab-platforms
+    set-vocab-platforms
+}
+"Words for reading and writing " { $snippet "resources.txt" } ":"
 { $subsections
     vocab-resources
     set-vocab-resources
@@ -55,6 +68,16 @@ HELP: set-vocab-tags
 { $values { "tags" "a sequence of strings" } { "vocab" "a vocabulary specifier" } }
 { $description "Stores a list of short tags classifying the vocabulary to the " { $snippet "tags.txt" } " file in the vocabulary's directory." } ;
 
+HELP: vocab-platforms
+{ $values { "vocab" "a vocabulary specifier" } { "platforms" "a sequence of operating system symbols" } }
+{ $description "Outputs a list of operating systems supported by " { $snippet "vocab" } ", as specified by the " { $snippet "platforms.txt" } " file in the vocabulary's directory. Outputs an empty array if the file doesn't exist." }
+{ $notes "Operating system symbols are defined in the " { $vocab-link "system" } " vocabulary." } ;
+
+HELP: set-vocab-platforms
+{ $values { "platforms" "a sequence of operating system symbols" } { "vocab" "a vocabulary specifier" } }
+{ $description "Stores a list of operating systems supported by " { $snippet "vocab" } " to the " { $snippet "platforms.txt" } " file in the vocabulary's directory." }
+{ $notes "Operating system symbols are defined in the " { $vocab-link "system" } " vocabulary." } ;
+
 HELP: vocab-resources
 { $values { "vocab" "a vocabulary specifier" } { "patterns" "a sequence of glob patterns" } }
 { $description "Outputs a list of glob patterns matching files that will be deployed with an application that includes " { $snippet "vocab" } ", as specified by the " { $snippet "resources.txt" } " file in the vocabulary's directory. Outputs an empty array if the file doesn't exist." }
index 04a0ea7546c0945e5f1f2ab89767b0cb02eecf40..09ca012fcc0ed7f02bc6e597a2f7af402ae8bc42 100644 (file)
@@ -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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/advapi32/tags.txt b/basis/windows/advapi32/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/ce/platforms.txt b/basis/windows/ce/platforms.txt
new file mode 100644 (file)
index 0000000..cd0d980
--- /dev/null
@@ -0,0 +1 @@
+wince
diff --git a/basis/windows/ce/tags.txt b/basis/windows/ce/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/com/platforms.txt b/basis/windows/com/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/com/prettyprint/platforms.txt b/basis/windows/com/prettyprint/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/com/prettyprint/tags.txt b/basis/windows/com/prettyprint/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100755 (executable)
@@ -1,2 +1 @@
-unportable
 bindings
index 86dd9eeb911c05e4fb9ec4df73340bba66a0c33b..40fc52b29bc7181d8968cac4813f1c599901e5d0 100755 (executable)
@@ -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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100755 (executable)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -1,2 +1 @@
-unportable
 bindings
diff --git a/basis/windows/directx/d3d9types/platforms.txt b/basis/windows/directx/d3d9types/platforms.txt
new file mode 100644 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -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 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -1,2 +1 @@
-unportable
 bindings
diff --git a/basis/windows/dragdrop-listener/dragdrop-listener.factor b/basis/windows/dragdrop-listener/dragdrop-listener.factor
deleted file mode 100644 (file)
index 3ed2256..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-USING: alien.strings io.encodings.utf16n windows.com\r
-windows.com.wrapper combinators windows.kernel32 windows.ole32\r
-windows.shell32 kernel accessors windows.types\r
-prettyprint namespaces ui.tools.listener ui.tools.workspace\r
-alien.data alien sequences math classes.struct ;\r
-SPECIALIZED-ARRAY: WCHAR\r
-IN: windows.dragdrop-listener\r
-\r
-: filenames-from-hdrop ( hdrop -- filenames )\r
-    dup HEX: FFFFFFFF f 0 DragQueryFile ! get count of files\r
-    [\r
-        2dup f 0 DragQueryFile 1 + ! get size of filename buffer\r
-        dup WCHAR <c-array>\r
-        [ swap DragQueryFile drop ] keep\r
-        utf16n alien>string\r
-    ] with map ;\r
-\r
-: filenames-from-data-object ( data-object -- filenames )\r
-    FORMATETC <struct>\r
-        CF_HDROP         >>cfFormat\r
-        f                >>ptd\r
-        DVASPECT_CONTENT >>dwAspect\r
-        -1               >>lindex\r
-        TYMED_HGLOBAL    >>tymed\r
-    STGMEDIUM <struct>\r
-    [ IDataObject::GetData ] keep swap succeeded? [\r
-        dup data>>\r
-        [ filenames-from-hdrop ] with-global-lock\r
-        swap ReleaseStgMedium\r
-    ] [ drop f ] if ;\r
-\r
-TUPLE: listener-dragdrop hWnd last-drop-effect ;\r
-\r
-: <listener-dragdrop> ( hWnd -- object )\r
-    DROPEFFECT_NONE listener-dragdrop construct-boa ;\r
-\r
-SYMBOL: +listener-dragdrop-wrapper+\r
-{\r
-    { "IDropTarget" {\r
-        [ ! DragEnter\r
-            [\r
-                2drop\r
-                filenames-from-data-object\r
-                length 1 = [ DROPEFFECT_COPY ] [ DROPEFFECT_NONE ] if\r
-                dup 0\r
-            ] dip set-ulong-nth\r
-            >>last-drop-effect drop\r
-            S_OK\r
-        ] [ ! DragOver\r
-            [ 2drop last-drop-effect>> 0 ] dip set-ulong-nth\r
-            S_OK\r
-        ] [ ! DragLeave\r
-            drop S_OK\r
-        ] [ ! Drop\r
-            [\r
-                2drop nip\r
-                filenames-from-data-object\r
-                dup length 1 = [\r
-                    first unparse [ "USE: parser " % % " run-file" % ] "" make\r
-                    eval-listener\r
-                    DROPEFFECT_COPY\r
-                ] [ 2drop DROPEFFECT_NONE ] if\r
-                0\r
-            ] dip set-ulong-nth\r
-            S_OK\r
-        ]\r
-    } }\r
-} <com-wrapper> +listener-dragdrop-wrapper+ set-global\r
-\r
-: dragdrop-listener-window ( -- )\r
-    get-workspace parent>> handle>> hWnd>>\r
-    dup <listener-dragdrop>\r
-    +listener-dragdrop-wrapper+ get-global com-wrap\r
-    [ RegisterDragDrop ole32-error ] with-com-interface ;\r
diff --git a/basis/windows/dragdrop-listener/tags.txt b/basis/windows/dragdrop-listener/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/dwmapi/platforms.txt b/basis/windows/dwmapi/platforms.txt
new file mode 100644 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
index 43bc035447a98294cbedaa5fbae83cf0f485caed..8e1a55995ee061d80a8c62a725bc30ab9974f154 100755 (executable)
@@ -1,2 +1 @@
 windows
-unportable
diff --git a/basis/windows/errors/platforms.txt b/basis/windows/errors/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/errors/tags.txt b/basis/windows/errors/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/fonts/platforms.txt b/basis/windows/fonts/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/fonts/tags.txt b/basis/windows/fonts/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/gdi32/platforms.txt b/basis/windows/gdi32/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -1,2 +1 @@
-unportable
 bindings
diff --git a/basis/windows/kernel32/platforms.txt b/basis/windows/kernel32/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/kernel32/tags.txt b/basis/windows/kernel32/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/messages/platforms.txt b/basis/windows/messages/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/messages/tags.txt b/basis/windows/messages/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/nt/platforms.txt b/basis/windows/nt/platforms.txt
new file mode 100644 (file)
index 0000000..205e643
--- /dev/null
@@ -0,0 +1 @@
+winnt
diff --git a/basis/windows/nt/tags.txt b/basis/windows/nt/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/offscreen/platforms.txt b/basis/windows/offscreen/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/offscreen/tags.txt b/basis/windows/offscreen/tags.txt
deleted file mode 100755 (executable)
index 6abe115..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable\r
diff --git a/basis/windows/ole32/platforms.txt b/basis/windows/ole32/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/ole32/tags.txt b/basis/windows/ole32/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/opengl32/platforms.txt b/basis/windows/opengl32/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/opengl32/tags.txt b/basis/windows/opengl32/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/platforms.txt b/basis/windows/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/psapi/platforms.txt b/basis/windows/psapi/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -1,2 +1 @@
-unportable
 bindings
diff --git a/basis/windows/shell32/platforms.txt b/basis/windows/shell32/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/shell32/tags.txt b/basis/windows/shell32/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100755 (executable)
@@ -1,2 +1 @@
-unportable
 bindings
diff --git a/basis/windows/time/platforms.txt b/basis/windows/time/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/time/tags.txt b/basis/windows/time/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/types/platforms.txt b/basis/windows/types/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/types/tags.txt b/basis/windows/types/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/uniscribe/platforms.txt b/basis/windows/uniscribe/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/uniscribe/tags.txt b/basis/windows/uniscribe/tags.txt
deleted file mode 100755 (executable)
index 6abe115..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable\r
diff --git a/basis/windows/user32/platforms.txt b/basis/windows/user32/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/user32/tags.txt b/basis/windows/user32/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/windows/usp10/platforms.txt b/basis/windows/usp10/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
index 2320bdd64800598d4f0633f3441065dc20e4018f..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -1,2 +1 @@
-unportable
 bindings
diff --git a/basis/windows/winsock/platforms.txt b/basis/windows/winsock/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/basis/windows/winsock/tags.txt b/basis/windows/winsock/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/x11/io/unix/tags.txt b/basis/x11/io/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/basis/x11/windows/platforms.txt b/basis/x11/windows/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/x11/windows/tags.txt b/basis/x11/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 15e0370ba081daa8f2ed53b25bf5da83e81920fb..0ad4f6c85ad3db2498190977cc8a6699150adfb8 100644 (file)
@@ -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: arrays sequences kernel kernel.private accessors math
 alien.accessors byte-arrays io io.encodings io.encodings.utf8
@@ -37,17 +37,16 @@ M: string string>alien
 
 M: tuple string>alien drop underlying>> ;
 
-HOOK: alien>native-string os ( alien -- string )
+HOOK: native-string-encoding os ( -- encoding ) foldable
 
-M: windows alien>native-string utf16n alien>string ;
+M: unix native-string-encoding utf8 ;
+M: windows native-string-encoding utf16n ;
 
-M: unix alien>native-string utf8 alien>string ;
+: alien>native-string ( alien -- string )
+    native-string-encoding alien>string ; inline
 
-HOOK: native-string>alien os ( string -- alien )
-
-M: windows native-string>alien utf16n string>alien ;
-
-M: unix native-string>alien utf8 string>alien ;
+: native-string>alien ( string -- alien )
+    native-string-encoding string>alien ; inline
 
 : dll-path ( dll -- string )
     path>> alien>native-string ;
index 69289600e4985d7d15fe06d0dff2713eead940dc..f9aaf3eaa571ffec708c393ffa995232ba1d023c 100644 (file)
@@ -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 ;
index 9582ebadb6e3d54bb8318fde5ca3b24d8a03b677..b024ed2c65c4b7843c176d28d845a085c7dc8d75 100644 (file)
@@ -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 ;
 
 <PRIVATE
 
index 84da26a0821a46e6c36b67769a51b53da492ce00..766a78c483970d47b40bc57f1f1f04e447a7ee8e 100644 (file)
@@ -9,9 +9,13 @@ ARTICLE: "errors-restartable" "Restartable errors"
     throw-restarts
     rethrow-restarts
 }
+"A utility word using the above:"
+{ $subsections
+    throw-continue
+}
 "The list of restarts from the most recently-thrown error is stored in a global variable:"
 { $subsections restarts }
-"To invoke restarts, see " { $link "debugger" } "." ;
+"To invoke restarts, use " { $link "debugger" } "." ;
 
 ARTICLE: "errors-post-mortem" "Post-mortem error inspection"
 "The most recently thrown error, together with the continuation at that point, are stored in a pair of global variables:"
@@ -213,7 +217,11 @@ HELP: rethrow-restarts
 { $values { "error" object } { "restarts" "a sequence of " { $snippet "{ string object }" } " pairs" } { "restart" object } }
 { $description "Throws a restartable error using " { $link rethrow } ". Otherwise, this word is identical to " { $link throw-restarts } "." } ;
 
-{ throw rethrow throw-restarts rethrow-restarts } related-words
+{ throw rethrow throw-restarts rethrow-restarts throw-continue } related-words
+
+HELP: throw-continue
+{ $values { "error" object } }
+{ $description "Throws a resumable error. If the user elects to continue execution, this word returns normally." } ;
 
 HELP: compute-restarts
 { $values { "error" object } { "seq" "a sequence" } }
index d63acae8836213fbbef3ae6ad5431717f06e55fa..332354e302ed706b0f938057a8c4ae359cd8d08c 100644 (file)
@@ -149,6 +149,9 @@ C: <condition> condition ( error restarts cc -- condition )
 : rethrow-restarts ( error restarts -- restart )
     [ <condition> rethrow ] callcc1 2nip ;
 
+: throw-continue ( error -- )
+    { { "Continue" t } } throw-restarts drop ;
+
 TUPLE: restart name obj continuation ;
 
 C: <restart> restart
index 5e4e04c2700fbf3d3cdb869474b8185823fa1920..2cbf82ae33228312c16a45a99588dd644903a8a0 100644 (file)
@@ -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: ,
index ce4a319a42095a3fe0d33e15c17f1596a4f0b612..08ab729b6daecd36a806459738b82c10ed8c1fac 100755 (executable)
@@ -27,10 +27,11 @@ ARTICLE: "vocabs.roots" "Vocabulary roots"
 "You can store your own vocabularies in the " { $snippet "work" } " directory."
 { $subsections "add-vocab-roots" } ;
 
+ARTICLE: "vocabs.icons" "Vocabulary icons"
+"An icon file representing the vocabulary can be provided for use by " { $link "tools.deploy" } ". A file named " { $snippet "icon.ico" } " will be used as the application icon when the application is deployed on Windows. A file named " { $snippet "icon.icns" } " will be used when the application is deployed on MacOS X." ;
+
 ARTICLE: "vocabs.loader" "Vocabulary loader"
-"The vocabulary loader combines the vocabulary system with " { $link "parser" } " in order to implement automatic loading of vocabulary source files. The vocabulary loader is implemented in the " { $vocab-link "vocabs.loader" } " vocabulary."
-$nl
-"When an attempt is made to use a vocabulary that has not been loaded into the image, the vocabulary loader is asked to locate the vocabulary's source files, and load them."
+"The " { $link POSTPONE: USE: } " and " { $link POSTPONE: USING: } " words load vocabularies using the vocabulary loader. The vocabulary loader is implemented in the " { $vocab-link "vocabs.loader" } " vocabulary."
 $nl
 "The vocabulary loader searches for vocabularies in a set of directories known as vocabulary roots."
 { $subsections "vocabs.roots" }
@@ -45,17 +46,8 @@ $nl
     { { $snippet "foo/bar/bar-docs.factor" } " - documentation, see " { $link "writing-help" } }
     { { $snippet "foo/bar/bar-tests.factor" } " - unit tests, see " { $link "tools.test" } }
 }
-"Finally, four optional text files may contain metadata:"
-{ $list
-    { { $snippet "foo/bar/authors.txt" } " - a series of lines, with one author name per line. These are listed under " { $link "vocab-authors" } "." }
-    { { $snippet "foo/bar/resources.txt" } " - a series of lines with one file glob pattern per line. Files inside the vocabulary directory whose names match any of these glob patterns will be included with the compiled application as " { $link "deploy-resources" } "." }
-    { { $snippet "foo/bar/summary.txt" } " - a one-line description." }
-    { { $snippet "foo/bar/tags.txt" } " - a whitespace-separated list of tags which classify the vocabulary. Consult " { $link "vocab-tags" } " for a list of existing tags you can reuse." }
-}
-"An icon file representing the vocabulary can also be provided. A file named " { $snippet "icon.ico" } " will be used as the application icon when the application is deployed on Windows. A file named " { $snippet "icon.icns" } " will be used when the application is deployed on MacOS X."
-$nl
-"The " { $link POSTPONE: USE: } " and " { $link POSTPONE: USING: } " words load vocabularies which have not been loaded yet, as needed."
-$nl
+"Optional text files may contain metadata."
+{ $subsections "vocabs.metadata" "vocabs.icons" }
 "Vocabularies can also be loaded at run time, without altering the vocabulary search path. This is done by calling a word which loads a vocabulary if it is not in the image, doing nothing if it is:"
 { $subsections require }
 "The above word will only ever load a vocabulary once in a given session. There is another word which unconditionally loads vocabulary from disk, regardless of whether or not is has already been loaded:"
index 2c0f67641d15ef897aa1372b74b2f64dc8949f95..67d7d7677d212304fd3a36fc4eef5ee8dab13268 100644 (file)
@@ -99,6 +99,11 @@ PRIVATE>
 
 SYMBOL: blacklist
 
+! Defined by vocabs.metadata
+SYMBOL: check-vocab-hook
+
+check-vocab-hook [ [ drop ] ] initialize
+
 <PRIVATE
 
 : add-to-blacklist ( error vocab -- )
@@ -115,10 +120,12 @@ M: vocab (load-vocab)
     ] [ [ swap add-to-blacklist ] keep rethrow ] recover ;
 
 M: vocab-link (load-vocab)
-    vocab-name create-vocab (load-vocab) ;
+    vocab-name (load-vocab) ;
 
 M: string (load-vocab)
-    create-vocab (load-vocab) ;
+    [ check-vocab-hook get call( vocab -- ) ]
+    [ create-vocab (load-vocab) ]
+    bi ;
 
 PRIVATE>
 
index 03a2f8a091e633564765b3defaecbe716275304f..b1fa5aaed853f13278b8d315d8594a82d0b6c565 100644 (file)
@@ -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
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
diff --git a/extra/curses/ffi/platforms.txt b/extra/curses/ffi/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/extra/curses/ffi/tags.txt b/extra/curses/ffi/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/extra/curses/platforms.txt b/extra/curses/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/extra/curses/tags.txt b/extra/curses/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index cd8660e465c9ad3be001bf9f76755d76b7286580..e4946d160c2a94f21eb7257c685d4f5f8b7c1716 100644 (file)
@@ -11,7 +11,20 @@ HELP: <game-loop>
     { "tick-interval-micros" integer } { "delegate" "a " { $link "game.loop-delegates" } }
     { "loop" game-loop }
 }
-{ $description "Constructs a new stopped " { $link game-loop } " object. When started, the game loop will call the " { $link tick* } " method on the " { $snippet "delegate" } " every " { $snippet "tick-interval-micros" } " microseconds, and " { $link draw* } " on the delegate as frequently as possible. The " { $link start-loop } " and " { $link stop-loop } " words start and stop the game loop." } ;
+{ $description "Constructs a new stopped " { $link game-loop } " object. When started, the game loop will call the " { $link tick* } " method on the " { $snippet "delegate" } " every " { $snippet "tick-interval-micros" } " microseconds, and " { $link draw* } " on the same delegate object as frequently as possible. The " { $link start-loop } " and " { $link stop-loop } " words start and stop the game loop."
+$nl
+"To initialize the game loop with separate tick and draw delegates, use " { $link <game-loop*> } "." } ;
+
+HELP: <game-loop*>
+{ $values
+    { "tick-interval-micros" integer } { "tick-delegate" "a " { $link "game.loop-delegates" } } { "draw-delegate" "a " { $link "game.loop-delegates" } }
+    { "loop" game-loop }
+}
+{ $description "Constructs a new stopped " { $link game-loop } " object. When started, the game loop will call the " { $link tick* } " method on the " { $snippet "tick-delegate" } " every " { $snippet "tick-interval-micros" } " microseconds, and " { $link draw* } " on the " { $snippet "draw-delegate" } " as frequently as possible. The " { $link start-loop } " and " { $link stop-loop } " words start and stop the game loop."
+$nl
+"The " { $link <game-loop> } " word provides a shorthand for initializing a game loop that uses the same object for the " { $snippet "tick-delegate" } " and " { $snippet "draw-delegate" } "." } ;
+
+{ <game-loop> <game-loop*> } related-words
 
 HELP: benchmark-frames-per-second
 { $values
@@ -25,7 +38,7 @@ HELP: benchmark-ticks-per-second
     { "loop" game-loop }
     { "n" float }
 }
-{ $description "Returns the average number of times per second the game loop has called " { $link tick* } " on its delegate since the game loop was started with " { $link start-loop } " or since the benchmark counters have been reset with " { $link reset-loop-benchmark } "." } ;
+{ $description "Returns the average number of times per second the game loop has called " { $link tick* } " on its tick delegate since the game loop was started with " { $link start-loop } " or since the benchmark counters have been reset with " { $link reset-loop-benchmark } "." } ;
 
 { reset-loop-benchmark benchmark-frames-per-second benchmark-ticks-per-second } related-words
 
@@ -33,10 +46,12 @@ HELP: draw*
 { $values
     { "tick-slice" float } { "delegate" "a " { $link "game.loop-delegates" } }
 }
-{ $description "This generic word is called by a " { $link game-loop } " on its " { $snippet "delegate" } " object in a tight loop while the game loop is running. The " { $snippet "tick-slice" } " value represents what fraction of the game loop's " { $snippet "tick-interval-micros" } " time period has passed since " { $link tick* } " was most recently called on the delegate." } ;
+{ $description "This generic word is called by a " { $link game-loop } " on its " { $snippet "draw-delegate" } " object in a tight loop while the game loop is running. The " { $snippet "tick-slice" } " value represents what fraction of the game loop's " { $snippet "tick-interval-micros" } " time period has passed since " { $link tick* } " was most recently called on the " { $snippet "tick-delegate" } "." } ;
 
 HELP: game-loop
-{ $class-description "Objects of the " { $snippet "game-loop" } " class manage game loops. See " { $link "game.loop" } " for an overview of the game loop library. To construct a game loop, use " { $link <game-loop> } ". To start and stop a game loop, use the " { $link start-loop } " and " { $link stop-loop } " words." } ;
+{ $class-description "Objects of the " { $snippet "game-loop" } " class manage game loops. See " { $link "game.loop" } " for an overview of the game loop library. To construct a game loop, use " { $link <game-loop> } ". To start and stop a game loop, use the " { $link start-loop } " and " { $link stop-loop } " words."
+$nl
+"The " { $snippet "tick-delegate" } " and " { $snippet "draw-delegate" } " slots of a game loop object determine where the loop sends its " { $link tick* } " and " { $link draw* } " events. These slots can be changed while the game loop is running." } ;
 
 HELP: game-loop-error
 { $values
@@ -68,23 +83,26 @@ HELP: tick*
 { $values
     { "delegate" "a " { $link "game.loop-delegates" } }
 }
-{ $description "This generic word is called by a " { $link game-loop } " on its " { $snippet "delegate" } " object at regular intervals while the game loop is running. The game loop's " { $snippet "tick-interval-micros" } " attribute determines the number of microseconds between invocations of " { $snippet "tick*" } "." } ;
+{ $description "This generic word is called by a " { $link game-loop } " on its " { $snippet "tick-delegate" } " object at regular intervals while the game loop is running. The game loop's " { $snippet "tick-interval-micros" } " attribute determines the number of microseconds between invocations of " { $snippet "tick*" } "." } ;
 
 { draw* tick* } related-words
 
 ARTICLE: "game.loop-delegates" "Game loop delegate"
-"A " { $link game-loop } " object requires a " { $snippet "delegate" } " that implements the logic that controls the game. A game loop delegate can be any object that provides two methods for the following generic words:"
+"A " { $link game-loop } " object requires a " { $snippet "tick-delegate" } " and " { $snippet "draw-delegate" } " that together implement the logic that controls the game. Both delegates can also be the same object. A game loop delegate can be any object that provides two methods for the following generic words:"
 { $subsections
     tick*
     draw*
 }
-{ $snippet "tick*" } " will be called at a regular interval determined by the game loop's " { $snippet "tick-interval-micros" } " attribute. " { $snippet "draw*" } " will be invoked in a tight loop, updating as frequently as possible." ;
+{ $snippet "tick*" } " will be called at a regular interval determined by the game loop's " { $snippet "tick-interval-micros" } " attribute on the tick delegate. " { $snippet "draw*" } " will be invoked on the draw delegate in a tight loop, updating as frequently as possible."
+$nl
+"It is possible to change the " { $snippet "tick-delegate" } " and " { $snippet "draw-delegate" } " slots of a game loop while it is running, for example, to use different delegates to control a game while it's in the menu, paused, or running the main game." ;
 
 ARTICLE: "game.loop" "Game loops"
-"The " { $vocab-link "game.loop" } " vocabulary contains the implementation of a game loop. The game loop supports decoupled rendering and game logic timers; given a delegate object with methods on the " { $link tick* } " and " { $link draw* } " methods, the game loop will invoke the " { $snippet "tick*" } " method at regular intervals while invoking the " { $snippet "draw*" } " method as frequently as possible. Game loop objects must first be constructed:"
+"The " { $vocab-link "game.loop" } " vocabulary contains the implementation of a game loop. The game loop supports decoupled rendering and game logic timers; given a \"tick delegate\" object with a method on the " { $link tick* } " generic and a \"draw delegate\" with a " { $link draw* } " method, the game loop will invoke the " { $snippet "tick*" } " method on the former at regular intervals while invoking the " { $snippet "draw*" } " method on the latter as frequently as possible. Game loop objects must first be constructed:"
 { $subsections
     "game.loop-delegates"
     <game-loop>
+    <game-loop*>
 }
 "Once constructed, the game loop can be started and stopped:"
 { $subsections
index afe011cb7b8501eb98797958c0cb72556479dbf3..9e46535b4eebf12d3c3d0fd785137fb7c4da3259 100644 (file)
@@ -6,7 +6,8 @@ IN: game.loop
 
 TUPLE: game-loop
     { tick-interval-micros integer read-only }
-    delegate
+    tick-delegate
+    draw-delegate
     { last-tick integer }
     thread 
     { running? boolean }
@@ -46,10 +47,10 @@ TUPLE: game-loop-error game-loop error ;
 
 : redraw ( loop -- )
     [ 1 + ] change-frame-number
-    [ tick-slice ] [ delegate>> ] bi draw* ;
+    [ tick-slice ] [ draw-delegate>> ] bi draw* ;
 
 : tick ( loop -- )
-    delegate>> tick* ;
+    tick-delegate>> tick* ;
 
 : increment-tick ( loop -- )
     [ 1 + ] change-tick-number
@@ -101,10 +102,13 @@ PRIVATE>
     f >>thread
     drop ;
 
-: <game-loop> ( tick-interval-micros delegate -- loop )
+: <game-loop*> ( tick-interval-micros tick-delegate draw-delegate -- loop )
     system-micros f f 0 0 system-micros 0 0
     game-loop boa ;
 
+: <game-loop> ( tick-interval-micros delegate -- loop )
+    dup <game-loop*> ; inline
+
 M: game-loop dispose
     stop-loop ;
 
diff --git a/extra/io/serial/tags.txt b/extra/io/serial/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..df796f1
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/extra/io/serial/unix/tags.txt b/extra/io/serial/unix/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..df796f1
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..509143d
--- /dev/null
@@ -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 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 8ee115ca45f80df712b700fa06db2ddf4dbd01b0..6c0de55ec84628b3983e3206f54bce23fdc504d3 100644 (file)
@@ -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 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows
diff --git a/extra/io/serial/windows/tags.txt b/extra/io/serial/windows/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
index 645e4939de0d3416425507932c9ce00da3837dde..4ea3d5e9e44783d858f5320282d0b00d7c8b31be 100644 (file)
@@ -1,9 +1,8 @@
 ! Copyright (C) 2009 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: io.files.windows io.streams.duplex kernel math
-math.bitwise windows.kernel32 accessors alien.c-types
-windows io.files.windows fry locals continuations
-classes.struct ;
+math.bitwise windows windows.kernel32 windows.errors accessors
+alien.c-types fry locals continuations classes.struct ;
 IN: io.serial.windows
 
 : <serial-stream> ( path encoding -- duplex )
diff --git a/extra/libusb/platforms.txt b/extra/libusb/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
index bf2a35f15b9aa5568577d3cfcacd1e6948f55972..bb863cf9a0b54c7c5bfff3a2b9c46f577012fa25 100644 (file)
@@ -1,2 +1 @@
 bindings
-unportable
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index bf2a35f15b9aa5568577d3cfcacd1e6948f55972..a9d28becd86098064474f68b9180f05ecfb31c31 100644 (file)
@@ -1,2 +1,2 @@
 bindings
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
index 6bf68304bb221e6af6772aa750c8024b36773ef3..5d77766703db1089fff42575eddc9e6ad0296848 100644 (file)
@@ -1 +1 @@
-unportable
+untested
diff --git a/extra/merger/platforms.txt b/extra/merger/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/extra/merger/tags.txt b/extra/merger/tags.txt
deleted file mode 100644 (file)
index c80b8b4..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-unportable
-
index 508e590d010275c6ab531a30ac51e07aa1da134b..4d0df1f454e3fad053d8e277d0eac1349c743b79 100644 (file)
@@ -1,26 +1,24 @@
-USING: alien.c-types alien.syntax io io.encodings.utf16n
-io.encodings.utf8 io.files kernel namespaces sequences system threads
+! Copyright (C) 2009 Phil Dawes.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.c-types alien.strings alien.syntax io
+io.encodings.utf8 io.files kernel sequences system threads
 unix.utilities ;
 IN: native-thread-test
 
 FUNCTION: void* start_standalone_factor_in_new_thread ( int argc, char** argv ) ;
 
-HOOK: native-string-encoding os ( -- encoding )
-M: windows native-string-encoding utf16n ;
-M: unix native-string-encoding utf8 ;
-
 : start-vm-in-os-thread ( args -- threadhandle )
-    \ vm get-global prefix 
+    vm prefix
     [ length ] [ native-string-encoding strings>alien ] bi 
-     start_standalone_factor_in_new_thread ;
+    start_standalone_factor_in_new_thread ;
 
 : start-tetris-in-os-thread ( -- )
-     { "-run=tetris" } start-vm-in-os-thread drop ;
+    { "-run=tetris" } start-vm-in-os-thread drop ;
+
+: start-test-thread-in-os-thread ( -- )
+    { "-run=native-thread-test" } start-vm-in-os-thread drop ;
 
-: start-testthread-in-os-thread ( -- )
-     { "-run=native-thread-test" } start-vm-in-os-thread drop ;
-: testthread ( -- )
-     "/tmp/hello" utf8 [ "hello!\n" write ] with-file-appender 5000000 sleep ;
+: test-thread ( -- )
+    "/tmp/hello" utf8 [ "hello!\n" write ] with-file-appender 5000000 sleep ;
 
-MAIN: testthread
+MAIN: test-thread
diff --git a/extra/openal/alut/macosx/platforms.txt b/extra/openal/alut/macosx/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/extra/openal/alut/macosx/tags.txt b/extra/openal/alut/macosx/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/extra/qtkit/platforms.txt b/extra/qtkit/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
index b573cd51aba2d09c04b67a71073c63ac409427c5..919e0d2d29a7b533e3a90b98fa4d2cc42ebd3807 100644 (file)
@@ -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 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/extra/webkit-demo/platforms.txt b/extra/webkit-demo/platforms.txt
new file mode 100644 (file)
index 0000000..6e806f4
--- /dev/null
@@ -0,0 +1 @@
+macosx
diff --git a/extra/webkit-demo/tags.txt b/extra/webkit-demo/tags.txt
deleted file mode 100644 (file)
index 6bf6830..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unportable
diff --git a/unmaintained/dragdrop-listener/dragdrop-listener.factor b/unmaintained/dragdrop-listener/dragdrop-listener.factor
new file mode 100644 (file)
index 0000000..3ed2256
--- /dev/null
@@ -0,0 +1,74 @@
+USING: alien.strings io.encodings.utf16n windows.com\r
+windows.com.wrapper combinators windows.kernel32 windows.ole32\r
+windows.shell32 kernel accessors windows.types\r
+prettyprint namespaces ui.tools.listener ui.tools.workspace\r
+alien.data alien sequences math classes.struct ;\r
+SPECIALIZED-ARRAY: WCHAR\r
+IN: windows.dragdrop-listener\r
+\r
+: filenames-from-hdrop ( hdrop -- filenames )\r
+    dup HEX: FFFFFFFF f 0 DragQueryFile ! get count of files\r
+    [\r
+        2dup f 0 DragQueryFile 1 + ! get size of filename buffer\r
+        dup WCHAR <c-array>\r
+        [ swap DragQueryFile drop ] keep\r
+        utf16n alien>string\r
+    ] with map ;\r
+\r
+: filenames-from-data-object ( data-object -- filenames )\r
+    FORMATETC <struct>\r
+        CF_HDROP         >>cfFormat\r
+        f                >>ptd\r
+        DVASPECT_CONTENT >>dwAspect\r
+        -1               >>lindex\r
+        TYMED_HGLOBAL    >>tymed\r
+    STGMEDIUM <struct>\r
+    [ IDataObject::GetData ] keep swap succeeded? [\r
+        dup data>>\r
+        [ filenames-from-hdrop ] with-global-lock\r
+        swap ReleaseStgMedium\r
+    ] [ drop f ] if ;\r
+\r
+TUPLE: listener-dragdrop hWnd last-drop-effect ;\r
+\r
+: <listener-dragdrop> ( hWnd -- object )\r
+    DROPEFFECT_NONE listener-dragdrop construct-boa ;\r
+\r
+SYMBOL: +listener-dragdrop-wrapper+\r
+{\r
+    { "IDropTarget" {\r
+        [ ! DragEnter\r
+            [\r
+                2drop\r
+                filenames-from-data-object\r
+                length 1 = [ DROPEFFECT_COPY ] [ DROPEFFECT_NONE ] if\r
+                dup 0\r
+            ] dip set-ulong-nth\r
+            >>last-drop-effect drop\r
+            S_OK\r
+        ] [ ! DragOver\r
+            [ 2drop last-drop-effect>> 0 ] dip set-ulong-nth\r
+            S_OK\r
+        ] [ ! DragLeave\r
+            drop S_OK\r
+        ] [ ! Drop\r
+            [\r
+                2drop nip\r
+                filenames-from-data-object\r
+                dup length 1 = [\r
+                    first unparse [ "USE: parser " % % " run-file" % ] "" make\r
+                    eval-listener\r
+                    DROPEFFECT_COPY\r
+                ] [ 2drop DROPEFFECT_NONE ] if\r
+                0\r
+            ] dip set-ulong-nth\r
+            S_OK\r
+        ]\r
+    } }\r
+} <com-wrapper> +listener-dragdrop-wrapper+ set-global\r
+\r
+: dragdrop-listener-window ( -- )\r
+    get-workspace parent>> handle>> hWnd>>\r
+    dup <listener-dragdrop>\r
+    +listener-dragdrop-wrapper+ get-global com-wrap\r
+    [ RegisterDragDrop ole32-error ] with-com-interface ;\r
diff --git a/unmaintained/dragdrop-listener/platforms.txt b/unmaintained/dragdrop-listener/platforms.txt
new file mode 100644 (file)
index 0000000..8e1a559
--- /dev/null
@@ -0,0 +1 @@
+windows