diff --git a/basis/alien/fortran/fortran.factor b/basis/alien/fortran/fortran.factor index 915b7d3d4f..5e3dc24476 100644 --- a/basis/alien/fortran/fortran.factor +++ b/basis/alien/fortran/fortran.factor @@ -170,8 +170,8 @@ M: character-type (fortran-type>c-type) : (parse-fortran-type) ( fortran-type-string -- type ) parse-out swap parse-dims swap parse-size swap - dup >lower fortran>c-types at* - [ nip new-fortran-type ] [ drop misc-type boa ] if ; + >lower fortran>c-types ?at + [ new-fortran-type ] [ misc-type boa ] if ; : parse-fortran-type ( fortran-type-string/f -- type/f ) dup [ (parse-fortran-type) ] when ; diff --git a/basis/bootstrap/image/image.factor b/basis/bootstrap/image/image.factor index 221ffffb91..10cde266cc 100644 --- a/basis/bootstrap/image/image.factor +++ b/basis/bootstrap/image/image.factor @@ -77,20 +77,20 @@ SYMBOL: objects ! Constants -: image-magic HEX: 0f0e0d0c ; inline -: image-version 4 ; inline +CONSTANT: image-magic HEX: 0f0e0d0c +CONSTANT: image-version 4 -: data-base 1024 ; inline +CONSTANT: data-base 1024 -: userenv-size 70 ; inline +CONSTANT: userenv-size 70 -: header-size 10 ; inline +CONSTANT: header-size 10 -: data-heap-size-offset 3 ; inline -: t-offset 6 ; inline -: 0-offset 7 ; inline -: 1-offset 8 ; inline -: -1-offset 9 ; inline +CONSTANT: data-heap-size-offset 3 +CONSTANT: t-offset 6 +CONSTANT: 0-offset 7 +CONSTANT: 1-offset 8 +CONSTANT: -1-offset 9 SYMBOL: sub-primitives diff --git a/basis/calendar/calendar.factor b/basis/calendar/calendar.factor index 522e0c52f3..dc9442259b 100644 --- a/basis/calendar/calendar.factor +++ b/basis/calendar/calendar.factor @@ -61,7 +61,7 @@ PRIVATE> : month-abbreviation ( n -- string ) check-month 1- month-abbreviations nth ; -: day-counts { 0 31 28 31 30 31 30 31 31 30 31 30 31 } ; inline +CONSTANT: day-counts { 0 31 28 31 30 31 30 31 31 30 31 30 31 } : day-names ( -- array ) { diff --git a/basis/checksums/adler-32/adler-32.factor b/basis/checksums/adler-32/adler-32.factor index 1be4bfb584..d5e153ba99 100644 --- a/basis/checksums/adler-32/adler-32.factor +++ b/basis/checksums/adler-32/adler-32.factor @@ -6,7 +6,7 @@ IN: checksums.adler-32 SINGLETON: adler-32 -: adler-32-modulus 65521 ; inline +CONSTANT: adler-32-modulus 65521 M: adler-32 checksum-bytes ( bytes checksum -- value ) drop diff --git a/basis/checksums/sha2/sha2.factor b/basis/checksums/sha2/sha2.factor index 026c4d6f27..3b092a78de 100644 --- a/basis/checksums/sha2/sha2.factor +++ b/basis/checksums/sha2/sha2.factor @@ -9,14 +9,14 @@ IN: checksums.sha2 SYMBOLS: vars M K H S0 S1 process-M word-size block-size ; -: a 0 ; inline -: b 1 ; inline -: c 2 ; inline -: d 3 ; inline -: e 4 ; inline -: f 5 ; inline -: g 6 ; inline -: h 7 ; inline +CONSTANT: a 0 +CONSTANT: b 1 +CONSTANT: c 2 +CONSTANT: d 3 +CONSTANT: e 4 +CONSTANT: f 5 +CONSTANT: g 6 +CONSTANT: h 7 : initial-H-256 ( -- seq ) { diff --git a/basis/cocoa/enumeration/enumeration.factor b/basis/cocoa/enumeration/enumeration.factor index 7f5b777283..919e8f86c5 100644 --- a/basis/cocoa/enumeration/enumeration.factor +++ b/basis/cocoa/enumeration/enumeration.factor @@ -5,7 +5,7 @@ sequences vectors fry libc destructors specialized-arrays.direct.alien ; IN: cocoa.enumeration -: NS-EACH-BUFFER-SIZE 16 ; inline +CONSTANT: NS-EACH-BUFFER-SIZE 16 : with-enumeration-buffers ( quot -- ) [ diff --git a/basis/cocoa/windows/windows.factor b/basis/cocoa/windows/windows.factor index 51f692d02d..4e0f768b96 100644 --- a/basis/cocoa/windows/windows.factor +++ b/basis/cocoa/windows/windows.factor @@ -4,15 +4,15 @@ USING: arrays kernel math cocoa cocoa.messages cocoa.classes sequences math.bitwise ; IN: cocoa.windows -: NSBorderlessWindowMask 0 ; inline -: NSTitledWindowMask 1 ; inline -: NSClosableWindowMask 2 ; inline -: NSMiniaturizableWindowMask 4 ; inline -: NSResizableWindowMask 8 ; inline +CONSTANT: NSBorderlessWindowMask 0 +CONSTANT: NSTitledWindowMask 1 +CONSTANT: NSClosableWindowMask 2 +CONSTANT: NSMiniaturizableWindowMask 4 +CONSTANT: NSResizableWindowMask 8 -: NSBackingStoreRetained 0 ; inline -: NSBackingStoreNonretained 1 ; inline -: NSBackingStoreBuffered 2 ; inline +CONSTANT: NSBackingStoreRetained 0 +CONSTANT: NSBackingStoreNonretained 1 +CONSTANT: NSBackingStoreBuffered 2 : standard-window-type ( -- n ) { diff --git a/basis/colors/colors.factor b/basis/colors/colors.factor index 1183c2e46c..9c55b1f29a 100644 --- a/basis/colors/colors.factor +++ b/basis/colors/colors.factor @@ -18,16 +18,16 @@ M: color red>> ( color -- red ) >rgba red>> ; M: color green>> ( color -- green ) >rgba green>> ; M: color blue>> ( color -- blue ) >rgba blue>> ; -: black T{ rgba f 0.0 0.0 0.0 1.0 } ; inline -: blue T{ rgba f 0.0 0.0 1.0 1.0 } ; inline -: cyan T{ rgba f 0 0.941 0.941 1 } ; inline -: gray T{ rgba f 0.6 0.6 0.6 1.0 } ; inline -: green T{ rgba f 0.0 1.0 0.0 1.0 } ; inline -: light-gray T{ rgba f 0.95 0.95 0.95 0.95 } ; inline -: light-purple T{ rgba f 0.8 0.8 1.0 1.0 } ; inline -: magenta T{ rgba f 0.941 0 0.941 1 } ; inline -: orange T{ rgba f 0.941 0.627 0 1 } ; inline -: purple T{ rgba f 0.627 0 0.941 1 } ; inline -: red T{ rgba f 1.0 0.0 0.0 1.0 } ; inline -: white T{ rgba f 1.0 1.0 1.0 1.0 } ; inline -: yellow T{ rgba f 1.0 1.0 0.0 1.0 } ; inline +CONSTANT: black T{ rgba f 0.0 0.0 0.0 1.0 } +CONSTANT: blue T{ rgba f 0.0 0.0 1.0 1.0 } +CONSTANT: cyan T{ rgba f 0 0.941 0.941 1 } +CONSTANT: gray T{ rgba f 0.6 0.6 0.6 1.0 } +CONSTANT: green T{ rgba f 0.0 1.0 0.0 1.0 } +CONSTANT: light-gray T{ rgba f 0.95 0.95 0.95 0.95 } +CONSTANT: light-purple T{ rgba f 0.8 0.8 1.0 1.0 } +CONSTANT: magenta T{ rgba f 0.941 0 0.941 1 } +CONSTANT: orange T{ rgba f 0.941 0.627 0 1 } +CONSTANT: purple T{ rgba f 0.627 0 0.941 1 } +CONSTANT: red T{ rgba f 1.0 0.0 0.0 1.0 } +CONSTANT: white T{ rgba f 1.0 1.0 1.0 1.0 } +CONSTANT: yellow T{ rgba f 1.0 1.0 0.0 1.0 } diff --git a/basis/compiler/constants/constants.factor b/basis/compiler/constants/constants.factor index 48ea958818..e03c062e9e 100644 --- a/basis/compiler/constants/constants.factor +++ b/basis/compiler/constants/constants.factor @@ -4,8 +4,8 @@ USING: math kernel layouts system strings ; IN: compiler.constants ! These constants must match vm/memory.h -: card-bits 8 ; inline -: deck-bits 18 ; inline +CONSTANT: card-bits 8 +CONSTANT: deck-bits 18 : card-mark ( -- n ) HEX: 40 HEX: 80 bitor ; inline ! These constants must match vm/layouts.h @@ -26,25 +26,25 @@ IN: compiler.constants : compiled-header-size ( -- n ) 4 bootstrap-cells ; inline ! Relocation classes -: rc-absolute-cell 0 ; inline -: rc-absolute 1 ; inline -: rc-relative 2 ; inline -: rc-absolute-ppc-2/2 3 ; inline -: rc-relative-ppc-2 4 ; inline -: rc-relative-ppc-3 5 ; inline -: rc-relative-arm-3 6 ; inline -: rc-indirect-arm 7 ; inline -: rc-indirect-arm-pc 8 ; inline +CONSTANT: rc-absolute-cell 0 +CONSTANT: rc-absolute 1 +CONSTANT: rc-relative 2 +CONSTANT: rc-absolute-ppc-2/2 3 +CONSTANT: rc-relative-ppc-2 4 +CONSTANT: rc-relative-ppc-3 5 +CONSTANT: rc-relative-arm-3 6 +CONSTANT: rc-indirect-arm 7 +CONSTANT: rc-indirect-arm-pc 8 ! Relocation types -: rt-primitive 0 ; inline -: rt-dlsym 1 ; inline -: rt-dispatch 2 ; inline -: rt-xt 3 ; inline -: rt-here 4 ; inline -: rt-label 5 ; inline -: rt-immediate 6 ; inline -: rt-stack-chain 7 ; inline +CONSTANT: rt-primitive 0 +CONSTANT: rt-dlsym 1 +CONSTANT: rt-dispatch 2 +CONSTANT: rt-xt 3 +CONSTANT: rt-here 4 +CONSTANT: rt-label 5 +CONSTANT: rt-immediate 6 +CONSTANT: rt-stack-chain 7 : rc-absolute? ( n -- ? ) [ rc-absolute-ppc-2/2 = ] diff --git a/basis/compiler/tree/propagation/info/info.factor b/basis/compiler/tree/propagation/info/info.factor index 771d3800df..7b1723620b 100644 --- a/basis/compiler/tree/propagation/info/info.factor +++ b/basis/compiler/tree/propagation/info/info.factor @@ -32,9 +32,9 @@ literal? length slots ; -: null-info T{ value-info f null empty-interval } ; inline +CONSTANT: null-info T{ value-info f null empty-interval } -: object-info T{ value-info f object full-interval } ; inline +CONSTANT: object-info T{ value-info f object full-interval } : class-interval ( class -- interval ) dup real class<= diff --git a/basis/compression/lzw/lzw.factor b/basis/compression/lzw/lzw.factor index 67248474d3..29cbe96d69 100644 --- a/basis/compression/lzw/lzw.factor +++ b/basis/compression/lzw/lzw.factor @@ -69,11 +69,11 @@ ERROR: index-too-big n ; : omega-k-in-table? ( lzw -- ? ) [ omega-k>> ] [ table>> ] bi key? ; -ERROR: not-in-table ; +ERROR: not-in-table value ; : write-output ( lzw -- ) [ - [ omega>> ] [ table>> ] bi at* [ not-in-table ] unless + [ omega>> ] [ table>> ] bi ?at [ not-in-table ] unless ] [ [ lzw-bit-width-compress ] [ output>> write-bits ] bi diff --git a/basis/core-foundation/core-foundation.factor b/basis/core-foundation/core-foundation.factor index ec83ba7a8b..40269ae3be 100644 --- a/basis/core-foundation/core-foundation.factor +++ b/basis/core-foundation/core-foundation.factor @@ -6,7 +6,7 @@ IN: core-foundation TYPEDEF: void* CFTypeRef TYPEDEF: void* CFAllocatorRef -: kCFAllocatorDefault f ; inline +CONSTANT: kCFAllocatorDefault f TYPEDEF: bool Boolean TYPEDEF: long CFIndex diff --git a/basis/core-foundation/data/data.factor b/basis/core-foundation/data/data.factor index f4d2babca7..fb5ecaa043 100644 --- a/basis/core-foundation/data/data.factor +++ b/basis/core-foundation/data/data.factor @@ -10,28 +10,28 @@ TYPEDEF: void* CFNumberRef TYPEDEF: void* CFSetRef TYPEDEF: int CFNumberType -: kCFNumberSInt8Type 1 ; inline -: kCFNumberSInt16Type 2 ; inline -: kCFNumberSInt32Type 3 ; inline -: kCFNumberSInt64Type 4 ; inline -: kCFNumberFloat32Type 5 ; inline -: kCFNumberFloat64Type 6 ; inline -: kCFNumberCharType 7 ; inline -: kCFNumberShortType 8 ; inline -: kCFNumberIntType 9 ; inline -: kCFNumberLongType 10 ; inline -: kCFNumberLongLongType 11 ; inline -: kCFNumberFloatType 12 ; inline -: kCFNumberDoubleType 13 ; inline -: kCFNumberCFIndexType 14 ; inline -: kCFNumberNSIntegerType 15 ; inline -: kCFNumberCGFloatType 16 ; inline -: kCFNumberMaxType 16 ; inline +CONSTANT: kCFNumberSInt8Type 1 +CONSTANT: kCFNumberSInt16Type 2 +CONSTANT: kCFNumberSInt32Type 3 +CONSTANT: kCFNumberSInt64Type 4 +CONSTANT: kCFNumberFloat32Type 5 +CONSTANT: kCFNumberFloat64Type 6 +CONSTANT: kCFNumberCharType 7 +CONSTANT: kCFNumberShortType 8 +CONSTANT: kCFNumberIntType 9 +CONSTANT: kCFNumberLongType 10 +CONSTANT: kCFNumberLongLongType 11 +CONSTANT: kCFNumberFloatType 12 +CONSTANT: kCFNumberDoubleType 13 +CONSTANT: kCFNumberCFIndexType 14 +CONSTANT: kCFNumberNSIntegerType 15 +CONSTANT: kCFNumberCGFloatType 16 +CONSTANT: kCFNumberMaxType 16 TYPEDEF: int CFPropertyListMutabilityOptions -: kCFPropertyListImmutable 0 ; inline -: kCFPropertyListMutableContainers 1 ; inline -: kCFPropertyListMutableContainersAndLeaves 2 ; inline +CONSTANT: kCFPropertyListImmutable 0 +CONSTANT: kCFPropertyListMutableContainers 1 +CONSTANT: kCFPropertyListMutableContainersAndLeaves 2 FUNCTION: CFNumberRef CFNumberCreate ( CFAllocatorRef allocator, CFNumberType theType, void* valuePtr ) ; diff --git a/basis/core-foundation/file-descriptors/file-descriptors.factor b/basis/core-foundation/file-descriptors/file-descriptors.factor index 29c4219678..c9fe3131b1 100644 --- a/basis/core-foundation/file-descriptors/file-descriptors.factor +++ b/basis/core-foundation/file-descriptors/file-descriptors.factor @@ -15,8 +15,8 @@ FUNCTION: CFFileDescriptorRef CFFileDescriptorCreate ( CFFileDescriptorContext* context ) ; -: kCFFileDescriptorReadCallBack 1 ; inline -: kCFFileDescriptorWriteCallBack 2 ; inline +CONSTANT: kCFFileDescriptorReadCallBack 1 +CONSTANT: kCFFileDescriptorWriteCallBack 2 FUNCTION: void CFFileDescriptorEnableCallBacks ( CFFileDescriptorRef f, diff --git a/basis/core-foundation/fsevents/fsevents.factor b/basis/core-foundation/fsevents/fsevents.factor index b0c299a831..06b9c6407b 100644 --- a/basis/core-foundation/fsevents/fsevents.factor +++ b/basis/core-foundation/fsevents/fsevents.factor @@ -9,17 +9,17 @@ core-foundation core-foundation.run-loop core-foundation.strings core-foundation.time ; IN: core-foundation.fsevents -: kFSEventStreamCreateFlagUseCFTypes 2 ; inline -: kFSEventStreamCreateFlagWatchRoot 4 ; inline +CONSTANT: kFSEventStreamCreateFlagUseCFTypes 2 +CONSTANT: kFSEventStreamCreateFlagWatchRoot 4 -: kFSEventStreamEventFlagMustScanSubDirs 1 ; inline -: kFSEventStreamEventFlagUserDropped 2 ; inline -: kFSEventStreamEventFlagKernelDropped 4 ; inline -: kFSEventStreamEventFlagEventIdsWrapped 8 ; inline -: kFSEventStreamEventFlagHistoryDone 16 ; inline -: kFSEventStreamEventFlagRootChanged 32 ; inline -: kFSEventStreamEventFlagMount 64 ; inline -: kFSEventStreamEventFlagUnmount 128 ; inline +CONSTANT: kFSEventStreamEventFlagMustScanSubDirs 1 +CONSTANT: kFSEventStreamEventFlagUserDropped 2 +CONSTANT: kFSEventStreamEventFlagKernelDropped 4 +CONSTANT: kFSEventStreamEventFlagEventIdsWrapped 8 +CONSTANT: kFSEventStreamEventFlagHistoryDone 16 +CONSTANT: kFSEventStreamEventFlagRootChanged 32 +CONSTANT: kFSEventStreamEventFlagMount 64 +CONSTANT: kFSEventStreamEventFlagUnmount 128 TYPEDEF: int FSEventStreamCreateFlags TYPEDEF: int FSEventStreamEventFlags @@ -36,7 +36,7 @@ C-STRUCT: FSEventStreamContext ! callback(FSEventStreamRef streamRef, void *clientCallBackInfo, size_t numEvents, void *eventPaths, const FSEventStreamEventFlags eventFlags[], const FSEventStreamEventId eventIds[]); TYPEDEF: void* FSEventStreamCallback -: FSEventStreamEventIdSinceNow HEX: FFFFFFFFFFFFFFFF ; inline +CONSTANT: FSEventStreamEventIdSinceNow HEX: FFFFFFFFFFFFFFFF FUNCTION: FSEventStreamRef FSEventStreamCreate ( CFAllocatorRef allocator, diff --git a/basis/core-foundation/run-loop/run-loop.factor b/basis/core-foundation/run-loop/run-loop.factor index 4b98e9a410..8bdce2ec37 100644 --- a/basis/core-foundation/run-loop/run-loop.factor +++ b/basis/core-foundation/run-loop/run-loop.factor @@ -7,10 +7,10 @@ core-foundation.file-descriptors core-foundation.timers core-foundation.time ; IN: core-foundation.run-loop -: kCFRunLoopRunFinished 1 ; inline -: kCFRunLoopRunStopped 2 ; inline -: kCFRunLoopRunTimedOut 3 ; inline -: kCFRunLoopRunHandledSource 4 ; inline +CONSTANT: kCFRunLoopRunFinished 1 +CONSTANT: kCFRunLoopRunStopped 2 +CONSTANT: kCFRunLoopRunTimedOut 3 +CONSTANT: kCFRunLoopRunHandledSource 4 TYPEDEF: void* CFRunLoopRef TYPEDEF: void* CFRunLoopSourceRef diff --git a/basis/core-foundation/urls/urls.factor b/basis/core-foundation/urls/urls.factor index 9f9d3a67cb..7ffef498b6 100644 --- a/basis/core-foundation/urls/urls.factor +++ b/basis/core-foundation/urls/urls.factor @@ -4,7 +4,7 @@ USING: alien.syntax kernel core-foundation.strings core-foundation ; IN: core-foundation.urls -: kCFURLPOSIXPathStyle 0 ; inline +CONSTANT: kCFURLPOSIXPathStyle 0 TYPEDEF: void* CFURLRef diff --git a/basis/cpu/ppc/ppc.factor b/basis/cpu/ppc/ppc.factor index f245bcb7e1..8b6b4fbb11 100644 --- a/basis/cpu/ppc/ppc.factor +++ b/basis/cpu/ppc/ppc.factor @@ -27,8 +27,8 @@ M: ppc machine-registers { double-float-regs T{ range f 0 29 1 } } } ; -: scratch-reg 28 ; inline -: fp-scratch-reg 30 ; inline +CONSTANT: scratch-reg 28 +CONSTANT: fp-scratch-reg 30 M: ppc two-operand? f ; @@ -40,8 +40,8 @@ M: ppc %load-reference ( reg obj -- ) M: ppc %alien-global ( register symbol dll -- ) [ 0 swap LOAD32 ] 2dip rc-absolute-ppc-2/2 rel-dlsym ; -: ds-reg 29 ; inline -: rs-reg 30 ; inline +CONSTANT: ds-reg 29 +CONSTANT: rs-reg 30 GENERIC: loc-reg ( loc -- reg ) diff --git a/basis/db/errors/errors.factor b/basis/db/errors/errors.factor index 9420dbbfc4..5239086f93 100644 --- a/basis/db/errors/errors.factor +++ b/basis/db/errors/errors.factor @@ -1,18 +1,54 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel ; +USING: accessors kernel continuations fry words ; IN: db.errors ERROR: db-error ; -ERROR: sql-error ; +ERROR: sql-error location ; -ERROR: table-exists ; ERROR: bad-schema ; -ERROR: sql-syntax-error error ; +ERROR: sql-unknown-error < sql-error message ; +: ( message -- error ) + \ sql-unknown-error new + swap >>message ; -ERROR: sql-table-exists table ; -C: sql-table-exists +ERROR: sql-table-exists < sql-error table ; +: ( table -- error ) + \ sql-table-exists new + swap >>table ; -ERROR: sql-table-missing table ; -C: sql-table-missing +ERROR: sql-table-missing < sql-error table ; +: ( table -- error ) + \ sql-table-missing new + swap >>table ; + +ERROR: sql-syntax-error < sql-error message ; +: ( message -- error ) + \ sql-syntax-error new + swap >>message ; + +ERROR: sql-function-exists < sql-error message ; +: ( message -- error ) + \ sql-function-exists new + swap >>message ; + +ERROR: sql-function-missing < sql-error message ; +: ( message -- error ) + \ sql-function-missing new + swap >>message ; + +: ignore-error ( quot word -- ) + '[ dup _ execute [ drop ] [ rethrow ] if ] recover ; inline + +: ignore-table-exists ( quot -- ) + \ sql-table-exists? ignore-error ; inline + +: ignore-table-missing ( quot -- ) + \ sql-table-missing? ignore-error ; inline + +: ignore-function-exists ( quot -- ) + \ sql-function-exists? ignore-error ; inline + +: ignore-function-missing ( quot -- ) + \ sql-function-missing? ignore-error ; inline diff --git a/basis/db/errors/postgresql/postgresql-tests.factor b/basis/db/errors/postgresql/postgresql-tests.factor index 59b9bfe4a8..9dbebe0712 100644 --- a/basis/db/errors/postgresql/postgresql-tests.factor +++ b/basis/db/errors/postgresql/postgresql-tests.factor @@ -1,4 +1,32 @@ ! Copyright (C) 2009 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: tools.test db.errors.postgresql ; +USING: accessors combinators.short-circuit db db.errors +db.errors.postgresql db.postgresql io.files.unique kernel namespaces +tools.test db.tester continuations ; IN: db.errors.postgresql.tests + +postgresql-test-db [ + + [ "drop table foo;" sql-command ] ignore-errors + [ "drop table ship;" sql-command ] ignore-errors + + [ + "insert into foo (id) values('1');" sql-command + ] [ + { [ sql-table-missing? ] [ table>> "foo" = ] } 1&& + ] must-fail-with + + [ + "create table ship(id integer);" sql-command + "create table ship(id integer);" sql-command + ] [ + { [ sql-table-exists? ] [ table>> "ship" = ] } 1&& + ] must-fail-with + + [ + "create table foo(id) lol;" sql-command + ] [ + sql-syntax-error? + ] must-fail-with + +] with-db diff --git a/basis/db/errors/postgresql/postgresql.factor b/basis/db/errors/postgresql/postgresql.factor index e45ff092e8..02b43ecd88 100644 --- a/basis/db/errors/postgresql/postgresql.factor +++ b/basis/db/errors/postgresql/postgresql.factor @@ -1,4 +1,53 @@ ! Copyright (C) 2009 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: ; +USING: kernel db.errors peg.ebnf strings sequences math +combinators.short-circuit accessors math.parser quoting ; IN: db.errors.postgresql + +EBNF: parse-postgresql-sql-error + +Error = "ERROR:" [ ]+ + +TableError = + Error ("relation "|"table ")(!(" already exists").)+:table " already exists" + => [[ table >string unquote ]] + | Error ("relation "|"table ")(!(" does not exist").)+:table " does not exist" + => [[ table >string unquote ]] + +FunctionError = + Error "function" (!(" already exists").)+:table " already exists" + => [[ table >string ]] + | Error "function" (!(" does not exist").)+:table " does not exist" + => [[ table >string ]] + +SyntaxError = + Error "syntax error at end of input":error + => [[ error >string ]] + | Error "syntax error at or near " .+:syntaxerror + => [[ syntaxerror >string unquote ]] + +UnknownError = .* => [[ >string ]] + +PostgresqlSqlError = (TableError | FunctionError | SyntaxError | UnknownError) + +;EBNF + + +ERROR: parse-postgresql-location column line text ; +C: parse-postgresql-location + +EBNF: parse-postgresql-line-error + +Line = "LINE " [0-9]+:line ": " .+:sql + => [[ f line >string string>number sql >string ]] + +;EBNF + +:: set-caret-position ( error caret-line -- error ) + caret-line length + error line>> number>string length "LINE : " length + + - [ error ] dip >>column ; + +: postgresql-location ( line column -- obj ) + [ parse-postgresql-line-error ] dip + set-caret-position ; diff --git a/basis/db/postgresql/postgresql-tests.factor b/basis/db/postgresql/postgresql-tests.factor index e2e2cbf7c0..266337b8c8 100644 --- a/basis/db/postgresql/postgresql-tests.factor +++ b/basis/db/postgresql/postgresql-tests.factor @@ -1,15 +1,8 @@ USING: kernel db.postgresql alien continuations io classes prettyprint sequences namespaces tools.test db db.private -db.tuples db.types unicode.case accessors system ; +db.tuples db.types unicode.case accessors system db.tester ; IN: db.postgresql.tests -: postgresql-test-db ( -- postgresql-db ) - - "localhost" >>host - "postgres" >>username - "thepasswordistrust" >>password - "factor-test" >>database ; - os windows? cpu x86.64? and [ [ ] [ postgresql-test-db [ ] with-db ] unit-test diff --git a/basis/db/postgresql/postgresql.factor b/basis/db/postgresql/postgresql.factor index 1c39166071..9e51f41ff1 100644 --- a/basis/db/postgresql/postgresql.factor +++ b/basis/db/postgresql/postgresql.factor @@ -6,7 +6,7 @@ sequences debugger db db.postgresql.lib db.postgresql.ffi db.tuples db.types tools.annotations math.ranges combinators classes locals words tools.walker db.private nmake accessors random db.queries destructors db.tuples.private -db.postgresql ; +db.postgresql db.errors.postgresql splitting ; IN: db.postgresql TUPLE: postgresql-db host port pgopts pgtty database username password ; @@ -282,4 +282,12 @@ M: postgresql-db-connection compound ( string object -- string' ) } case ; M: postgresql-db-connection parse-db-error - ; + "\n" split dup length { + { 1 [ first parse-postgresql-sql-error ] } + { 3 [ + first3 + [ parse-postgresql-sql-error ] 2dip + postgresql-location >>location + ] } + } case ; + diff --git a/basis/db/sqlite/lib/lib.factor b/basis/db/sqlite/lib/lib.factor index 60141bc830..3565b09856 100644 --- a/basis/db/sqlite/lib/lib.factor +++ b/basis/db/sqlite/lib/lib.factor @@ -11,12 +11,17 @@ IN: db.sqlite.lib ERROR: sqlite-error < db-error n string ; ERROR: sqlite-sql-error < sql-error n string ; +: ( n string -- error ) + \ sqlite-sql-error new + swap >>string + swap >>n ; + : throw-sqlite-error ( n -- * ) dup sqlite-error-messages nth sqlite-error ; : sqlite-statement-error ( -- * ) SQLITE_ERROR - db-connection get handle>> sqlite3_errmsg sqlite-sql-error ; + db-connection get handle>> sqlite3_errmsg throw ; : sqlite-check-result ( n -- ) { diff --git a/basis/db/tester/tester.factor b/basis/db/tester/tester.factor index 490f6bbef5..fcc5abf1cf 100644 --- a/basis/db/tester/tester.factor +++ b/basis/db/tester/tester.factor @@ -2,9 +2,42 @@ ! See http://factorcode.org/license.txt for BSD license. USING: concurrency.combinators db.pools db.sqlite db.tuples db.types kernel math random threads tools.test db sequences -io prettyprint ; +io prettyprint db.postgresql db.sqlite accessors io.files.temp +namespaces fry system ; IN: db.tester +: postgresql-test-db ( -- postgresql-db ) + + "localhost" >>host + "postgres" >>username + "thepasswordistrust" >>password + "factor-test" >>database ; + +: sqlite-test-db ( -- sqlite-db ) + "tuples-test.db" temp-file ; + + +! These words leak resources, but are useful for interactivel testing +: set-sqlite-db ( -- ) + sqlite-db db-open db-connection set ; + +: set-postgresql-db ( -- ) + postgresql-db db-open db-connection set ; + + +: test-sqlite ( quot -- ) + '[ + [ ] [ sqlite-test-db _ with-db ] unit-test + ] call ; inline + +: test-postgresql ( quot -- ) + '[ + os windows? cpu x86.64? and [ + [ ] [ postgresql-test-db _ with-db ] unit-test + ] unless + ] call ; inline + + TUPLE: test-1 id a b c ; test-1 "TEST1" { @@ -23,9 +56,6 @@ test-2 "TEST2" { { "z" "Z" { VARCHAR 256 } +not-null+ } } define-persistent -: sqlite-test-db ( -- db ) "test.db" ; -: test-db ( -- db ) "test.db" ; - : db-tester ( test-db -- ) [ [ diff --git a/basis/db/tuples/tuples-tests.factor b/basis/db/tuples/tuples-tests.factor index 246946c715..af77ce6ac1 100644 --- a/basis/db/tuples/tuples-tests.factor +++ b/basis/db/tuples/tuples-tests.factor @@ -4,40 +4,10 @@ USING: io.files io.files.temp kernel tools.test db db.tuples classes db.types continuations namespaces math math.ranges prettyprint calendar sequences db.sqlite math.intervals db.postgresql accessors random math.bitwise system -math.ranges strings urls fry db.tuples.private db.private ; +math.ranges strings urls fry db.tuples.private db.private +db.tester ; IN: db.tuples.tests -: sqlite-db ( -- sqlite-db ) - "tuples-test.db" temp-file ; - -: test-sqlite ( quot -- ) - '[ - [ ] [ - "tuples-test.db" temp-file _ with-db - ] unit-test - ] call ; inline - -: postgresql-db ( -- postgresql-db ) - - "localhost" >>host - "postgres" >>username - "thepasswordistrust" >>password - "factor-test" >>database ; - -: test-postgresql ( quot -- ) - '[ - os windows? cpu x86.64? and [ - [ ] [ postgresql-db _ with-db ] unit-test - ] unless - ] call ; inline - -! These words leak resources, but are useful for interactivel testing -: sqlite-test-db ( -- ) - sqlite-db db-open db-connection set ; - -: postgresql-test-db ( -- ) - postgresql-db db-open db-connection set ; - TUPLE: person the-id the-name the-number the-real ts date time blob factor-blob url ; diff --git a/basis/db/tuples/tuples.factor b/basis/db/tuples/tuples.factor index 9edd5bac69..19d4be5fc8 100644 --- a/basis/db/tuples/tuples.factor +++ b/basis/db/tuples/tuples.factor @@ -4,7 +4,7 @@ USING: arrays assocs classes db kernel namespaces classes.tuple words sequences slots math accessors math.parser io prettyprint db.types continuations destructors mirrors sets db.types db.private fry -combinators.short-circuit ; +combinators.short-circuit db.errors ; IN: db.tuples HOOK: create-sql-statement db-connection ( class -- object ) @@ -118,13 +118,15 @@ ERROR: no-defined-persistent object ; ensure-defined-persistent [ '[ - _ drop-sql-statement [ execute-statement ] with-disposals - ] ignore-errors + [ + _ drop-sql-statement [ execute-statement ] with-disposals + ] ignore-table-missing + ] ignore-function-missing ] [ create-table ] bi ; : ensure-table ( class -- ) ensure-defined-persistent - '[ _ create-table ] ignore-errors ; + '[ [ _ create-table ] ignore-table-exists ] ignore-function-exists ; : ensure-tables ( classes -- ) [ ensure-table ] each ; diff --git a/basis/db/types/types.factor b/basis/db/types/types.factor index e39a5977ef..30116e3fc5 100755 --- a/basis/db/types/types.factor +++ b/basis/db/types/types.factor @@ -124,9 +124,6 @@ FACTOR-BLOB NULL URL ; ! PostgreSQL Types: ! http://developer.postgresql.org/pgdocs/postgres/datatype.html -: ?at ( obj assoc -- value/obj ? ) - dupd at* [ [ nip ] [ drop ] if ] keep ; - ERROR: unknown-modifier modifier ; : lookup-modifier ( obj -- string ) diff --git a/basis/help/topics/topics.factor b/basis/help/topics/topics.factor index 8c687eb1d5..9fba09913d 100644 --- a/basis/help/topics/topics.factor +++ b/basis/help/topics/topics.factor @@ -54,7 +54,7 @@ M: no-article summary drop "Help article does not exist" ; : article ( name -- article ) - dup articles get at* [ nip ] [ drop no-article ] if ; + articles get ?at [ no-article ] unless ; M: object article-name article article-name ; M: object article-title article article-title ; diff --git a/basis/images/tiff/tiff.factor b/basis/images/tiff/tiff.factor index 02440deea5..a50ac0cad9 100755 --- a/basis/images/tiff/tiff.factor +++ b/basis/images/tiff/tiff.factor @@ -243,9 +243,6 @@ ERROR: bad-tiff-magic bytes ; ERROR: no-tag class ; -: ?at ( key assoc -- value/key ? ) - dupd at* [ nip t ] [ drop f ] if ; inline - : find-tag ( idf class -- tag ) swap processed-tags>> ?at [ no-tag ] unless ; diff --git a/basis/io/files/info/unix/unix.factor b/basis/io/files/info/unix/unix.factor index b7edc14c2c..616f70cccc 100644 --- a/basis/io/files/info/unix/unix.factor +++ b/basis/io/files/info/unix/unix.factor @@ -114,21 +114,21 @@ M: file-info file-mode? [ permissions>> ] dip mask? ; PRIVATE> -: UID OCT: 0004000 ; inline -: GID OCT: 0002000 ; inline -: STICKY OCT: 0001000 ; inline -: USER-ALL OCT: 0000700 ; inline -: USER-READ OCT: 0000400 ; inline -: USER-WRITE OCT: 0000200 ; inline -: USER-EXECUTE OCT: 0000100 ; inline -: GROUP-ALL OCT: 0000070 ; inline -: GROUP-READ OCT: 0000040 ; inline -: GROUP-WRITE OCT: 0000020 ; inline -: GROUP-EXECUTE OCT: 0000010 ; inline -: OTHER-ALL OCT: 0000007 ; inline -: OTHER-READ OCT: 0000004 ; inline -: OTHER-WRITE OCT: 0000002 ; inline -: OTHER-EXECUTE OCT: 0000001 ; inline +CONSTANT: UID OCT: 0004000 +CONSTANT: GID OCT: 0002000 +CONSTANT: STICKY OCT: 0001000 +CONSTANT: USER-ALL OCT: 0000700 +CONSTANT: USER-READ OCT: 0000400 +CONSTANT: USER-WRITE OCT: 0000200 +CONSTANT: USER-EXECUTE OCT: 0000100 +CONSTANT: GROUP-ALL OCT: 0000070 +CONSTANT: GROUP-READ OCT: 0000040 +CONSTANT: GROUP-WRITE OCT: 0000020 +CONSTANT: GROUP-EXECUTE OCT: 0000010 +CONSTANT: OTHER-ALL OCT: 0000007 +CONSTANT: OTHER-READ OCT: 0000004 +CONSTANT: OTHER-WRITE OCT: 0000002 +CONSTANT: OTHER-EXECUTE OCT: 0000001 : uid? ( obj -- ? ) UID file-mode? ; : gid? ( obj -- ? ) GID file-mode? ; diff --git a/basis/io/sockets/unix/unix.factor b/basis/io/sockets/unix/unix.factor index e701874afd..799dfa78d5 100644 --- a/basis/io/sockets/unix/unix.factor +++ b/basis/io/sockets/unix/unix.factor @@ -94,7 +94,7 @@ M: unix (datagram) SYMBOL: receive-buffer -: packet-size 65536 ; inline +CONSTANT: packet-size 65536 [ packet-size malloc receive-buffer set-global ] "io.sockets.unix" add-init-hook diff --git a/basis/math/bitwise/bitwise-tests.factor b/basis/math/bitwise/bitwise-tests.factor index 40eb20642c..7698760f84 100644 --- a/basis/math/bitwise/bitwise-tests.factor +++ b/basis/math/bitwise/bitwise-tests.factor @@ -19,8 +19,8 @@ IN: math.bitwise.tests [ 268 ] [ 1 { 8 { 3 2 } } bitfield ] unit-test [ 512 ] [ 1 { { 1+ 8 } } bitfield ] unit-test -: a 1 ; inline -: b 2 ; inline +CONSTANT: a 1 +CONSTANT: b 2 : foo ( -- flags ) { a b } flags ; diff --git a/basis/mime/multipart/multipart.factor b/basis/mime/multipart/multipart.factor index 37d5e13129..0edfb05a30 100755 --- a/basis/mime/multipart/multipart.factor +++ b/basis/mime/multipart/multipart.factor @@ -3,7 +3,8 @@ USING: multiline kernel sequences io splitting fry namespaces http.parsers hashtables assocs combinators ascii io.files.unique accessors io.encodings.binary io.files byte-arrays math -io.streams.string combinators.short-circuit strings math.order ; +io.streams.string combinators.short-circuit strings math.order +quoting ; IN: mime.multipart CONSTANT: buffer-size 65536 @@ -75,18 +76,6 @@ ERROR: end-of-stream multipart ; : empty-name? ( string -- ? ) { "''" "\"\"" "" f } member? ; -: quote? ( ch -- ? ) "'\"" member? ; - -: quoted? ( str -- ? ) - { - [ length 1 > ] - [ first quote? ] - [ [ first ] [ peek ] bi = ] - } 1&& ; - -: unquote ( str -- newstr ) - dup quoted? [ but-last-slice rest-slice >string ] when ; - : save-uploaded-file ( multipart -- ) dup filename>> empty-name? [ drop diff --git a/basis/openssl/libcrypto/libcrypto.factor b/basis/openssl/libcrypto/libcrypto.factor index 80bf3b1772..3204b83bbb 100644 --- a/basis/openssl/libcrypto/libcrypto.factor +++ b/basis/openssl/libcrypto/libcrypto.factor @@ -48,14 +48,14 @@ C-STRUCT: bio { "void*" "crypto-ex-data-stack" } { "int" "crypto-ex-data-dummy" } ; -: BIO_NOCLOSE HEX: 00 ; inline -: BIO_CLOSE HEX: 01 ; inline +CONSTANT: BIO_NOCLOSE HEX: 00 +CONSTANT: BIO_CLOSE HEX: 01 -: RSA_3 HEX: 3 ; inline -: RSA_F4 HEX: 10001 ; inline +CONSTANT: RSA_3 HEX: 3 +CONSTANT: RSA_F4 HEX: 10001 -: BIO_C_SET_SSL 109 ; inline -: BIO_C_GET_SSL 110 ; inline +CONSTANT: BIO_C_SET_SSL 109 +CONSTANT: BIO_C_GET_SSL 110 LIBRARY: libcrypto diff --git a/basis/persistent/vectors/vectors.factor b/basis/persistent/vectors/vectors.factor index 554db08e70..478fc0ad25 100644 --- a/basis/persistent/vectors/vectors.factor +++ b/basis/persistent/vectors/vectors.factor @@ -20,7 +20,7 @@ TUPLE: persistent-vector M: persistent-vector length count>> ; -: node-size 32 ; inline +CONSTANT: node-size 32 : node-mask ( m -- n ) node-size mod ; inline diff --git a/extra/serial/authors.txt b/basis/quoting/authors.txt similarity index 100% rename from extra/serial/authors.txt rename to basis/quoting/authors.txt diff --git a/basis/quoting/quoting-docs.factor b/basis/quoting/quoting-docs.factor new file mode 100644 index 0000000000..5fb68db719 --- /dev/null +++ b/basis/quoting/quoting-docs.factor @@ -0,0 +1,32 @@ +! Copyright (C) 2009 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: help.markup help.syntax strings ; +IN: quoting + +HELP: quote? +{ $values + { "ch" "a character" } + { "?" "a boolean" } +} +{ $description "Returns true if the character is a single or double quote." } ; + +HELP: quoted? +{ $values + { "str" string } + { "?" "a boolean" } +} +{ $description "Returns true if a string is surrounded by matching single or double quotes as the first and last characters." } ; + +HELP: unquote +{ $values + { "str" string } + { "newstr" string } +} +{ $description "Removes a pair of matching single or double quotes from a string." } ; + +ARTICLE: "quoting" "Quotation marks" +"The " { $vocab-link "quoting" } " vocabulary is for removing quotes from a string." $nl +"Removing quotes:" +{ $subsection unquote } ; + +ABOUT: "quoting" diff --git a/basis/quoting/quoting-tests.factor b/basis/quoting/quoting-tests.factor new file mode 100644 index 0000000000..0cc28a1354 --- /dev/null +++ b/basis/quoting/quoting-tests.factor @@ -0,0 +1,10 @@ +! Copyright (C) 2009 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: tools.test quoting ; +IN: quoting.tests + + +[ "abc" ] [ "'abc'" unquote ] unit-test +[ "abc" ] [ "\"abc\"" unquote ] unit-test +[ "'abc" ] [ "'abc" unquote ] unit-test +[ "abc'" ] [ "abc'" unquote ] unit-test diff --git a/basis/quoting/quoting.factor b/basis/quoting/quoting.factor new file mode 100644 index 0000000000..9e25037cd9 --- /dev/null +++ b/basis/quoting/quoting.factor @@ -0,0 +1,16 @@ +! Copyright (C) 2009 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: combinators.short-circuit kernel math sequences strings ; +IN: quoting + +: quote? ( ch -- ? ) "'\"" member? ; + +: quoted? ( str -- ? ) + { + [ length 1 > ] + [ first quote? ] + [ [ first ] [ peek ] bi = ] + } 1&& ; + +: unquote ( str -- newstr ) + dup quoted? [ but-last-slice rest-slice >string ] when ; diff --git a/basis/random/mersenne-twister/mersenne-twister.factor b/basis/random/mersenne-twister/mersenne-twister.factor index 67b0fa23e7..361ba7719e 100644 --- a/basis/random/mersenne-twister/mersenne-twister.factor +++ b/basis/random/mersenne-twister/mersenne-twister.factor @@ -11,9 +11,9 @@ IN: random.mersenne-twister TUPLE: mersenne-twister { seq uint-array } { i fixnum } ; -: n 624 ; inline -: m 397 ; inline -: a uint-array{ 0 HEX: 9908b0df } ; inline +CONSTANT: n 624 +CONSTANT: m 397 +CONSTANT: a uint-array{ 0 HEX: 9908b0df } : y ( n seq -- y ) [ nth-unsafe 31 mask-bit ] diff --git a/basis/stack-checker/transforms/transforms.factor b/basis/stack-checker/transforms/transforms.factor index a2f616480a..afb7e0843c 100755 --- a/basis/stack-checker/transforms/transforms.factor +++ b/basis/stack-checker/transforms/transforms.factor @@ -105,7 +105,7 @@ IN: stack-checker.transforms ] 1 define-transform ! Membership testing -: bit-member-n 256 ; inline +CONSTANT: bit-member-n 256 : bit-member? ( seq -- ? ) #! Can we use a fast byte array test here? diff --git a/basis/tools/disassembler/udis/udis.factor b/basis/tools/disassembler/udis/udis.factor index cfa2483c7e..8f99e4f440 100644 --- a/basis/tools/disassembler/udis/udis.factor +++ b/basis/tools/disassembler/udis/udis.factor @@ -24,10 +24,10 @@ FUNCTION: void ud_translate_att ( ud* u ) ; : UD_SYN_INTEL ( -- addr ) &: ud_translate_intel ; inline : UD_SYN_ATT ( -- addr ) &: ud_translate_att ; inline -: UD_EOI -1 ; inline -: UD_INP_CACHE_SZ 32 ; inline -: UD_VENDOR_AMD 0 ; inline -: UD_VENDOR_INTEL 1 ; inline +CONSTANT: UD_EOI -1 +CONSTANT: UD_INP_CACHE_SZ 32 +CONSTANT: UD_VENDOR_AMD 0 +CONSTANT: UD_VENDOR_INTEL 1 FUNCTION: void ud_init ( ud* u ) ; FUNCTION: void ud_set_mode ( ud* u, uint8_t mode ) ; diff --git a/basis/tools/scaffold/scaffold-docs.factor b/basis/tools/scaffold/scaffold-docs.factor index 9074c80986..4d1240ad38 100644 --- a/basis/tools/scaffold/scaffold-docs.factor +++ b/basis/tools/scaffold/scaffold-docs.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: help.markup help.syntax kernel strings words ; +USING: help.markup help.syntax kernel strings words vocabs ; IN: tools.scaffold HELP: developer-name @@ -13,7 +13,7 @@ HELP: help. { $description "Prints out scaffold help markup for a given word." } ; HELP: scaffold-help -{ $values { "string" string } } +{ $values { "vocab" vocab } } { $description "Takes an existing vocabulary and creates a help file with scaffolded help for each word. This word only works if no help file yet exists." } ; HELP: scaffold-undocumented @@ -28,6 +28,21 @@ HELP: scaffold-vocab { "vocab-root" "a vocabulary root string" } { "string" string } } { $description "Creates a directory in the given root for a new vocabulary and adds a main .factor file, a tests file, and an authors.txt file." } ; +HELP: scaffold-emacs +{ $description "Touches the .emacs file in your home directory and provides a clickable link to open it in an editor." } ; + +HELP: scaffold-factor-boot-rc +{ $description "Touches the .factor-boot-rc file in your home directory and provides a clickable link to open it in an editor." } ; + +HELP: scaffold-factor-rc +{ $description "Touches the .factor-rc file in your home directory and provides a clickable link to open it in an editor." } ; + +HELP: scaffold-rc +{ $values + { "path" "a pathname string" } +} +{ $description "Touches the given path in your home directory and provides a clickable link to open it in an editor." } ; + HELP: using { $description "Stores the vocabularies that are pulled into the documentation file from looking up the stack effect types." } ; @@ -40,7 +55,12 @@ ARTICLE: "tools.scaffold" "Scaffold tool" { $subsection scaffold-help } { $subsection scaffold-undocumented } { $subsection help. } -"Types that are unrecognized by the scaffold generator will be of type " { $link null } ". The developer should change these to strings that describe the stack effect names instead." +"Types that are unrecognized by the scaffold generator will be of type " { $link null } ". The developer should change these to strings that describe the stack effect names instead." $nl +"Scaffolding a configuration file:" +{ $subsection scaffold-rc } +{ $subsection scaffold-factor-boot-rc } +{ $subsection scaffold-factor-rc } +{ $subsection scaffold-emacs } ; ABOUT: "tools.scaffold" diff --git a/basis/tools/scaffold/scaffold.factor b/basis/tools/scaffold/scaffold.factor index acea984700..16729394bf 100755 --- a/basis/tools/scaffold/scaffold.factor +++ b/basis/tools/scaffold/scaffold.factor @@ -5,7 +5,7 @@ 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 ; +splitting ascii combinators.short-circuit ; IN: tools.scaffold SYMBOL: developer-name @@ -18,37 +18,61 @@ ERROR: no-vocab vocab ; path ( vocab-root vocab -- path ) + check-vocab-root/vocab + [ ] [ replace-vocab-separators ] bi* append-path ; + +: vocab>path ( vocab -- path ) + check-vocab + [ find-vocab-root ] keep vocab-root/vocab>path ; + +: vocab-root/vocab/file>path ( vocab-root vocab file -- path ) + [ vocab-root/vocab>path ] dip append-path ; + +: vocab-root/vocab/suffix>path ( vocab-root vocab suffix -- path ) + [ vocab-root/vocab>path dup file-name append-path ] dip append ; + +: vocab/suffix>path ( vocab suffix -- path ) + [ vocab>path dup file-name append-path ] dip append ; : directory-exists ( path -- ) "Not creating a directory, it already exists: " write print ; -: scaffold-directory ( path -- ) +: scaffold-directory ( vocab-root vocab -- ) + vocab-root/vocab>path dup exists? [ directory-exists ] [ make-directories ] if ; -: not-scaffolding ( path -- ) - "Not creating scaffolding for " write . ; +: not-scaffolding ( path -- path ) + "Not creating scaffolding for " write dup . ; -: scaffolding ( path -- ) - "Creating scaffolding for " write . ; +: scaffolding ( path -- path ) + "Creating scaffolding for " write dup . ; -: (scaffold-path) ( path string -- path ) - dupd [ file-name ] dip append append-path ; - -: scaffold-path ( path string -- path ? ) - (scaffold-path) - dup exists? [ dup not-scaffolding f ] [ dup scaffolding t ] if ; +: scaffolding? ( path -- path ? ) + dup exists? [ not-scaffolding f ] [ scaffolding t ] if ; : scaffold-copyright ( -- ) "! Copyright (C) " write now year>> number>string write @@ -62,37 +86,25 @@ ERROR: no-vocab vocab ; "IN: " write print ] with-string-writer ; -: set-scaffold-main-file ( path vocab -- ) - main-file-string swap utf8 set-file-contents ; +: set-scaffold-main-file ( vocab path -- ) + [ main-file-string ] dip utf8 set-file-contents ; -: scaffold-main ( path vocab -- ) - [ ".factor" scaffold-path ] dip - swap [ set-scaffold-main-file ] [ 2drop ] if ; - -: tests-file-string ( vocab -- string ) - [ - scaffold-copyright - "USING: tools.test " write dup write " ;" print - "IN: " write write ".tests" print - ] with-string-writer ; - -: set-scaffold-tests-file ( path vocab -- ) - tests-file-string swap utf8 set-file-contents ; - -: scaffold-tests ( path vocab -- ) - [ "-tests.factor" scaffold-path ] dip - swap [ set-scaffold-tests-file ] [ 2drop ] if ; - -: scaffold-authors ( path -- ) - "authors.txt" append-path dup exists? [ - not-scaffolding +: scaffold-main ( vocab-root vocab -- ) + tuck ".factor" vocab-root/vocab/suffix>path scaffolding? [ + set-scaffold-main-file ] [ - dup scaffolding - developer-name get swap utf8 set-file-contents + 2drop + ] if ; + +: scaffold-authors ( vocab-root vocab -- ) + "authors.txt" vocab-root/vocab/file>path scaffolding? [ + [ developer-name get ] dip utf8 set-file-contents + ] [ + drop ] if ; : lookup-type ( string -- object/string ? ) - "new" ?head drop [ [ CHAR: ' = ] [ digit? ] bi or ] trim-tail + "new" ?head drop [ { [ CHAR: ' = ] [ digit? ] } 1|| ] trim-tail H{ { "object" object } { "obj" object } { "quot" quotation } @@ -134,6 +146,9 @@ ERROR: no-vocab vocab ; " }" write ] each ; +: 4bl ( -- ) + " " write ; inline + : $values. ( word -- ) "declared-effect" word-prop [ [ in>> ] [ out>> ] bi @@ -141,8 +156,8 @@ ERROR: no-vocab vocab ; 2drop ] [ "{ $values" print - [ " " write ($values.) ] - [ [ nl " " write ($values.) ] unless-empty ] bi* + [ 4bl ($values.) ] + [ [ nl 4bl ($values.) ] unless-empty ] bi* nl "}" print ] if ] when* ; @@ -151,21 +166,21 @@ ERROR: no-vocab vocab ; drop "{ $description \"\" } ;" print ; -: help-header. ( word -- ) +: docs-header. ( word -- ) "HELP: " write name>> print ; : (help.) ( word -- ) - [ help-header. ] [ $values. ] [ $description. ] tri ; + [ docs-header. ] [ $values. ] [ $description. ] tri ; : interesting-words ( vocab -- array ) words - [ [ "help" word-prop ] [ predicate? ] bi or not ] filter + [ { [ "help" word-prop ] [ predicate? ] } 1|| not ] filter natural-sort ; : interesting-words. ( vocab -- ) interesting-words [ (help.) nl ] each ; -: help-file-string ( vocab -- str2 ) +: docs-file-string ( vocab -- str2 ) [ { [ "IN: " write print nl ] @@ -186,62 +201,68 @@ ERROR: no-vocab vocab ; [ bl write ] each " ;" print ; -: set-scaffold-help-file ( path vocab -- ) - swap utf8 [ +: set-scaffold-docs-file ( vocab path -- ) + utf8 [ scaffold-copyright - [ help-file-string ] [ write-using ] bi + [ docs-file-string ] [ write-using ] bi write ] with-output-stream ; -: check-scaffold ( vocab-root string -- vocab-root string ) - [ check-root ] [ check-vocab-name ] bi* ; - -: vocab>scaffold-path ( vocab-root string -- path ) - path-separator first CHAR: . associate substitute - append-path ; - -: prepare-scaffold ( vocab-root string -- string path ) - check-scaffold [ vocab>scaffold-path ] keep ; - : with-scaffold ( quot -- ) [ H{ } clone using ] dip with-variable ; inline -: check-vocab ( vocab -- vocab ) - dup find-vocab-root [ no-vocab ] unless ; - -PRIVATE> - : link-vocab ( vocab -- ) check-vocab "Edit documentation: " write - [ find-vocab-root ] - [ vocab>scaffold-path ] bi - "-docs.factor" (scaffold-path) . ; + "-docs.factor" vocab/suffix>path . ; + +PRIVATE> : help. ( word -- ) [ (help.) ] [ nl vocabulary>> link-vocab ] bi ; -: scaffold-help ( string -- ) +: scaffold-help ( vocab -- ) [ - [ find-vocab-root ] [ check-vocab ] bi - prepare-scaffold - [ "-docs.factor" scaffold-path ] dip - swap [ set-scaffold-help-file ] [ 2drop ] if + dup "-docs.factor" vocab/suffix>path scaffolding? [ + set-scaffold-docs-file + ] [ + 2drop + ] if ] with-scaffold ; : scaffold-undocumented ( string -- ) [ interesting-words. ] [ link-vocab ] bi ; : scaffold-vocab ( vocab-root string -- ) - prepare-scaffold { - [ drop scaffold-directory ] + [ scaffold-directory ] [ scaffold-main ] - [ scaffold-tests ] - [ drop scaffold-authors ] + [ scaffold-authors ] [ nip require ] } 2cleave ; + + +: scaffold-tests ( vocab -- ) + dup "-tests.factor" vocab/suffix>path + scaffolding? [ + set-scaffold-tests-file + ] [ + 2drop + ] if ; + SYMBOL: examples-flag : example ( -- ) @@ -250,7 +271,7 @@ SYMBOL: examples-flag " \"\"" " \"\"" "}" - } [ examples-flag get [ " " write ] when print ] each ; + } [ examples-flag get [ 4bl ] when print ] each ; : examples ( n -- ) t \ examples-flag [ @@ -260,10 +281,11 @@ SYMBOL: examples-flag ] with-variable ; : scaffold-rc ( path -- ) + [ home ] dip append-path [ touch-file ] [ "Click to edit: " write . ] bi ; -: scaffold-factor-boot-rc ( -- ) - home ".factor-boot-rc" append-path scaffold-rc ; +: scaffold-factor-boot-rc ( -- ) ".factor-boot-rc" scaffold-rc ; -: scaffold-factor-rc ( -- ) - home ".factor-rc" append-path scaffold-rc ; +: scaffold-factor-rc ( -- ) ".factor-rc" scaffold-rc ; + +: scaffold-emacs ( -- ) ".emacs" scaffold-rc ; diff --git a/basis/unix/groups/groups.factor b/basis/unix/groups/groups.factor index f4d91df245..b2a50b7374 100644 --- a/basis/unix/groups/groups.factor +++ b/basis/unix/groups/groups.factor @@ -46,7 +46,7 @@ PRIVATE> : group-name ( id -- string ) dup group-cache get [ - dupd at* [ name>> nip ] [ drop number>string ] if + ?at [ name>> ] [ number>string ] if ] [ group-struct [ group-gr_name ] [ f ] if* ] if* diff --git a/basis/unix/stat/netbsd/netbsd.factor b/basis/unix/stat/netbsd/netbsd.factor index 0bcb886417..b60a0b1adc 100644 --- a/basis/unix/stat/netbsd/netbsd.factor +++ b/basis/unix/stat/netbsd/netbsd.factor @@ -6,8 +6,8 @@ cell-bits { { 64 [ "unix.stat.netbsd.64" require ] } } case -: _VFS_NAMELEN 32 ; inline -: _VFS_MNAMELEN 1024 ; inline +CONSTANT: _VFS_NAMELEN 32 +CONSTANT: _VFS_MNAMELEN 1024 C-STRUCT: statvfs { "ulong" "f_flag" } diff --git a/basis/unrolled-lists/unrolled-lists.factor b/basis/unrolled-lists/unrolled-lists.factor index d434632abd..bd4a2c1114 100644 --- a/basis/unrolled-lists/unrolled-lists.factor +++ b/basis/unrolled-lists/unrolled-lists.factor @@ -4,7 +4,7 @@ USING: arrays math kernel accessors sequences sequences.private deques search-deques hashtables ; IN: unrolled-lists -: unroll-factor 32 ; inline +CONSTANT: unroll-factor 32 BOOLEAN ( ? -- 1/0 ) 1 0 ? ; inline +: >BOOLEAN ( ? -- 1/0 ) TRUE FALSE ? ; inline ! typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM); diff --git a/basis/windows/user32/user32.factor b/basis/windows/user32/user32.factor index e2e2c7e150..9daac21697 100644 --- a/basis/windows/user32/user32.factor +++ b/basis/windows/user32/user32.factor @@ -150,377 +150,377 @@ CONSTANT: PM_NOYIELD 2 ! ! Standard Cursor IDs ! -: IDC_ARROW 32512 ; inline -: IDC_IBEAM 32513 ; inline -: IDC_WAIT 32514 ; inline -: IDC_CROSS 32515 ; inline -: IDC_UPARROW 32516 ; inline -: IDC_SIZE 32640 ; inline ! OBSOLETE: use IDC_SIZEALL -: IDC_ICON 32641 ; inline ! OBSOLETE: use IDC_ARROW -: IDC_SIZENWSE 32642 ; inline -: IDC_SIZENESW 32643 ; inline -: IDC_SIZEWE 32644 ; inline -: IDC_SIZENS 32645 ; inline -: IDC_SIZEALL 32646 ; inline -: IDC_NO 32648 ; inline ! not in win3.1 -: IDC_HAND 32649 ; inline -: IDC_APPSTARTING 32650 ; inline ! not in win3.1 -: IDC_HELP 32651 ; inline +CONSTANT: IDC_ARROW 32512 +CONSTANT: IDC_IBEAM 32513 +CONSTANT: IDC_WAIT 32514 +CONSTANT: IDC_CROSS 32515 +CONSTANT: IDC_UPARROW 32516 +CONSTANT: IDC_SIZE 32640 ! OBSOLETE: use IDC_SIZEALL +CONSTANT: IDC_ICON 32641 ! OBSOLETE: use IDC_ARROW +CONSTANT: IDC_SIZENWSE 32642 +CONSTANT: IDC_SIZENESW 32643 +CONSTANT: IDC_SIZEWE 32644 +CONSTANT: IDC_SIZENS 32645 +CONSTANT: IDC_SIZEALL 32646 +CONSTANT: IDC_NO 32648 ! not in win3.1 +CONSTANT: IDC_HAND 32649 +CONSTANT: IDC_APPSTARTING 32650 ! not in win3.1 +CONSTANT: IDC_HELP 32651 ! Predefined Clipboard Formats -: CF_TEXT 1 ; inline -: CF_BITMAP 2 ; inline -: CF_METAFILEPICT 3 ; inline -: CF_SYLK 4 ; inline -: CF_DIF 5 ; inline -: CF_TIFF 6 ; inline -: CF_OEMTEXT 7 ; inline -: CF_DIB 8 ; inline -: CF_PALETTE 9 ; inline -: CF_PENDATA 10 ; inline -: CF_RIFF 11 ; inline -: CF_WAVE 12 ; inline -: CF_UNICODETEXT 13 ; inline -: CF_ENHMETAFILE 14 ; inline -: CF_HDROP 15 ; inline -: CF_LOCALE 16 ; inline -: CF_DIBV5 17 ; inline -: CF_MAX 18 ; inline +CONSTANT: CF_TEXT 1 +CONSTANT: CF_BITMAP 2 +CONSTANT: CF_METAFILEPICT 3 +CONSTANT: CF_SYLK 4 +CONSTANT: CF_DIF 5 +CONSTANT: CF_TIFF 6 +CONSTANT: CF_OEMTEXT 7 +CONSTANT: CF_DIB 8 +CONSTANT: CF_PALETTE 9 +CONSTANT: CF_PENDATA 10 +CONSTANT: CF_RIFF 11 +CONSTANT: CF_WAVE 12 +CONSTANT: CF_UNICODETEXT 13 +CONSTANT: CF_ENHMETAFILE 14 +CONSTANT: CF_HDROP 15 +CONSTANT: CF_LOCALE 16 +CONSTANT: CF_DIBV5 17 +CONSTANT: CF_MAX 18 -: CF_OWNERDISPLAY HEX: 0080 ; inline -: CF_DSPTEXT HEX: 0081 ; inline -: CF_DSPBITMAP HEX: 0082 ; inline -: CF_DSPMETAFILEPICT HEX: 0083 ; inline -: CF_DSPENHMETAFILE HEX: 008E ; inline +CONSTANT: CF_OWNERDISPLAY HEX: 0080 +CONSTANT: CF_DSPTEXT HEX: 0081 +CONSTANT: CF_DSPBITMAP HEX: 0082 +CONSTANT: CF_DSPMETAFILEPICT HEX: 0083 +CONSTANT: CF_DSPENHMETAFILE HEX: 008E ! "Private" formats don't get GlobalFree()'d -: CF_PRIVATEFIRST HEX: 200 ; inline -: CF_PRIVATELAST HEX: 2FF ; inline +CONSTANT: CF_PRIVATEFIRST HEX: 200 +CONSTANT: CF_PRIVATELAST HEX: 2FF ! "GDIOBJ" formats do get DeleteObject()'d -: CF_GDIOBJFIRST HEX: 300 ; inline -: CF_GDIOBJLAST HEX: 3FF ; inline +CONSTANT: CF_GDIOBJFIRST HEX: 300 +CONSTANT: CF_GDIOBJLAST HEX: 3FF ! Virtual Keys, Standard Set -: VK_LBUTTON HEX: 01 ; inline -: VK_RBUTTON HEX: 02 ; inline -: VK_CANCEL HEX: 03 ; inline -: VK_MBUTTON HEX: 04 ; inline ! NOT contiguous with L & RBUTTON -: VK_XBUTTON1 HEX: 05 ; inline ! NOT contiguous with L & RBUTTON -: VK_XBUTTON2 HEX: 06 ; inline ! NOT contiguous with L & RBUTTON +CONSTANT: VK_LBUTTON HEX: 01 +CONSTANT: VK_RBUTTON HEX: 02 +CONSTANT: VK_CANCEL HEX: 03 +CONSTANT: VK_MBUTTON HEX: 04 ! NOT contiguous with L & RBUTTON +CONSTANT: VK_XBUTTON1 HEX: 05 ! NOT contiguous with L & RBUTTON +CONSTANT: VK_XBUTTON2 HEX: 06 ! NOT contiguous with L & RBUTTON ! 0x07 : unassigned -: VK_BACK HEX: 08 ; inline -: VK_TAB HEX: 09 ; inline +CONSTANT: VK_BACK HEX: 08 +CONSTANT: VK_TAB HEX: 09 ! 0x0A - 0x0B : reserved -: VK_CLEAR HEX: 0C ; inline -: VK_RETURN HEX: 0D ; inline +CONSTANT: VK_CLEAR HEX: 0C +CONSTANT: VK_RETURN HEX: 0D -: VK_SHIFT HEX: 10 ; inline -: VK_CONTROL HEX: 11 ; inline -: VK_MENU HEX: 12 ; inline -: VK_PAUSE HEX: 13 ; inline -: VK_CAPITAL HEX: 14 ; inline +CONSTANT: VK_SHIFT HEX: 10 +CONSTANT: VK_CONTROL HEX: 11 +CONSTANT: VK_MENU HEX: 12 +CONSTANT: VK_PAUSE HEX: 13 +CONSTANT: VK_CAPITAL HEX: 14 -: VK_KANA HEX: 15 ; inline -: VK_HANGEUL HEX: 15 ; inline ! old name - here for compatibility -: VK_HANGUL HEX: 15 ; inline -: VK_JUNJA HEX: 17 ; inline -: VK_FINAL HEX: 18 ; inline -: VK_HANJA HEX: 19 ; inline -: VK_KANJI HEX: 19 ; inline +CONSTANT: VK_KANA HEX: 15 +CONSTANT: VK_HANGEUL HEX: 15 ! old name - here for compatibility +CONSTANT: VK_HANGUL HEX: 15 +CONSTANT: VK_JUNJA HEX: 17 +CONSTANT: VK_FINAL HEX: 18 +CONSTANT: VK_HANJA HEX: 19 +CONSTANT: VK_KANJI HEX: 19 -: VK_ESCAPE HEX: 1B ; inline +CONSTANT: VK_ESCAPE HEX: 1B -: VK_CONVERT HEX: 1C ; inline -: VK_NONCONVERT HEX: 1D ; inline -: VK_ACCEPT HEX: 1E ; inline -: VK_MODECHANGE HEX: 1F ; inline +CONSTANT: VK_CONVERT HEX: 1C +CONSTANT: VK_NONCONVERT HEX: 1D +CONSTANT: VK_ACCEPT HEX: 1E +CONSTANT: VK_MODECHANGE HEX: 1F -: VK_SPACE HEX: 20 ; inline -: VK_PRIOR HEX: 21 ; inline -: VK_NEXT HEX: 22 ; inline -: VK_END HEX: 23 ; inline -: VK_HOME HEX: 24 ; inline -: VK_LEFT HEX: 25 ; inline -: VK_UP HEX: 26 ; inline -: VK_RIGHT HEX: 27 ; inline -: VK_DOWN HEX: 28 ; inline -: VK_SELECT HEX: 29 ; inline -: VK_PRINT HEX: 2A ; inline -: VK_EXECUTE HEX: 2B ; inline -: VK_SNAPSHOT HEX: 2C ; inline -: VK_INSERT HEX: 2D ; inline -: VK_DELETE HEX: 2E ; inline -: VK_HELP HEX: 2F ; inline +CONSTANT: VK_SPACE HEX: 20 +CONSTANT: VK_PRIOR HEX: 21 +CONSTANT: VK_NEXT HEX: 22 +CONSTANT: VK_END HEX: 23 +CONSTANT: VK_HOME HEX: 24 +CONSTANT: VK_LEFT HEX: 25 +CONSTANT: VK_UP HEX: 26 +CONSTANT: VK_RIGHT HEX: 27 +CONSTANT: VK_DOWN HEX: 28 +CONSTANT: VK_SELECT HEX: 29 +CONSTANT: VK_PRINT HEX: 2A +CONSTANT: VK_EXECUTE HEX: 2B +CONSTANT: VK_SNAPSHOT HEX: 2C +CONSTANT: VK_INSERT HEX: 2D +CONSTANT: VK_DELETE HEX: 2E +CONSTANT: VK_HELP HEX: 2F -: VK_0 CHAR: 0 ; inline -: VK_1 CHAR: 1 ; inline -: VK_2 CHAR: 2 ; inline -: VK_3 CHAR: 3 ; inline -: VK_4 CHAR: 4 ; inline -: VK_5 CHAR: 5 ; inline -: VK_6 CHAR: 6 ; inline -: VK_7 CHAR: 7 ; inline -: VK_8 CHAR: 8 ; inline -: VK_9 CHAR: 9 ; inline +CONSTANT: VK_0 CHAR: 0 +CONSTANT: VK_1 CHAR: 1 +CONSTANT: VK_2 CHAR: 2 +CONSTANT: VK_3 CHAR: 3 +CONSTANT: VK_4 CHAR: 4 +CONSTANT: VK_5 CHAR: 5 +CONSTANT: VK_6 CHAR: 6 +CONSTANT: VK_7 CHAR: 7 +CONSTANT: VK_8 CHAR: 8 +CONSTANT: VK_9 CHAR: 9 -: VK_A CHAR: A ; inline -: VK_B CHAR: B ; inline -: VK_C CHAR: C ; inline -: VK_D CHAR: D ; inline -: VK_E CHAR: E ; inline -: VK_F CHAR: F ; inline -: VK_G CHAR: G ; inline -: VK_H CHAR: H ; inline -: VK_I CHAR: I ; inline -: VK_J CHAR: J ; inline -: VK_K CHAR: K ; inline -: VK_L CHAR: L ; inline -: VK_M CHAR: M ; inline -: VK_N CHAR: N ; inline -: VK_O CHAR: O ; inline -: VK_P CHAR: P ; inline -: VK_Q CHAR: Q ; inline -: VK_R CHAR: R ; inline -: VK_S CHAR: S ; inline -: VK_T CHAR: T ; inline -: VK_U CHAR: U ; inline -: VK_V CHAR: V ; inline -: VK_W CHAR: W ; inline -: VK_X CHAR: X ; inline -: VK_Y CHAR: Y ; inline -: VK_Z CHAR: Z ; inline +CONSTANT: VK_A CHAR: A +CONSTANT: VK_B CHAR: B +CONSTANT: VK_C CHAR: C +CONSTANT: VK_D CHAR: D +CONSTANT: VK_E CHAR: E +CONSTANT: VK_F CHAR: F +CONSTANT: VK_G CHAR: G +CONSTANT: VK_H CHAR: H +CONSTANT: VK_I CHAR: I +CONSTANT: VK_J CHAR: J +CONSTANT: VK_K CHAR: K +CONSTANT: VK_L CHAR: L +CONSTANT: VK_M CHAR: M +CONSTANT: VK_N CHAR: N +CONSTANT: VK_O CHAR: O +CONSTANT: VK_P CHAR: P +CONSTANT: VK_Q CHAR: Q +CONSTANT: VK_R CHAR: R +CONSTANT: VK_S CHAR: S +CONSTANT: VK_T CHAR: T +CONSTANT: VK_U CHAR: U +CONSTANT: VK_V CHAR: V +CONSTANT: VK_W CHAR: W +CONSTANT: VK_X CHAR: X +CONSTANT: VK_Y CHAR: Y +CONSTANT: VK_Z CHAR: Z -: VK_LWIN HEX: 5B ; inline -: VK_RWIN HEX: 5C ; inline -: VK_APPS HEX: 5D ; inline +CONSTANT: VK_LWIN HEX: 5B +CONSTANT: VK_RWIN HEX: 5C +CONSTANT: VK_APPS HEX: 5D ! 0x5E : reserved -: VK_SLEEP HEX: 5F ; inline +CONSTANT: VK_SLEEP HEX: 5F -: VK_NUMPAD0 HEX: 60 ; inline -: VK_NUMPAD1 HEX: 61 ; inline -: VK_NUMPAD2 HEX: 62 ; inline -: VK_NUMPAD3 HEX: 63 ; inline -: VK_NUMPAD4 HEX: 64 ; inline -: VK_NUMPAD5 HEX: 65 ; inline -: VK_NUMPAD6 HEX: 66 ; inline -: VK_NUMPAD7 HEX: 67 ; inline -: VK_NUMPAD8 HEX: 68 ; inline -: VK_NUMPAD9 HEX: 69 ; inline -: VK_MULTIPLY HEX: 6A ; inline -: VK_ADD HEX: 6B ; inline -: VK_SEPARATOR HEX: 6C ; inline -: VK_SUBTRACT HEX: 6D ; inline -: VK_DECIMAL HEX: 6E ; inline -: VK_DIVIDE HEX: 6F ; inline -: VK_F1 HEX: 70 ; inline -: VK_F2 HEX: 71 ; inline -: VK_F3 HEX: 72 ; inline -: VK_F4 HEX: 73 ; inline -: VK_F5 HEX: 74 ; inline -: VK_F6 HEX: 75 ; inline -: VK_F7 HEX: 76 ; inline -: VK_F8 HEX: 77 ; inline -: VK_F9 HEX: 78 ; inline -: VK_F10 HEX: 79 ; inline -: VK_F11 HEX: 7A ; inline -: VK_F12 HEX: 7B ; inline -: VK_F13 HEX: 7C ; inline -: VK_F14 HEX: 7D ; inline -: VK_F15 HEX: 7E ; inline -: VK_F16 HEX: 7F ; inline -: VK_F17 HEX: 80 ; inline -: VK_F18 HEX: 81 ; inline -: VK_F19 HEX: 82 ; inline -: VK_F20 HEX: 83 ; inline -: VK_F21 HEX: 84 ; inline -: VK_F22 HEX: 85 ; inline -: VK_F23 HEX: 86 ; inline -: VK_F24 HEX: 87 ; inline +CONSTANT: VK_NUMPAD0 HEX: 60 +CONSTANT: VK_NUMPAD1 HEX: 61 +CONSTANT: VK_NUMPAD2 HEX: 62 +CONSTANT: VK_NUMPAD3 HEX: 63 +CONSTANT: VK_NUMPAD4 HEX: 64 +CONSTANT: VK_NUMPAD5 HEX: 65 +CONSTANT: VK_NUMPAD6 HEX: 66 +CONSTANT: VK_NUMPAD7 HEX: 67 +CONSTANT: VK_NUMPAD8 HEX: 68 +CONSTANT: VK_NUMPAD9 HEX: 69 +CONSTANT: VK_MULTIPLY HEX: 6A +CONSTANT: VK_ADD HEX: 6B +CONSTANT: VK_SEPARATOR HEX: 6C +CONSTANT: VK_SUBTRACT HEX: 6D +CONSTANT: VK_DECIMAL HEX: 6E +CONSTANT: VK_DIVIDE HEX: 6F +CONSTANT: VK_F1 HEX: 70 +CONSTANT: VK_F2 HEX: 71 +CONSTANT: VK_F3 HEX: 72 +CONSTANT: VK_F4 HEX: 73 +CONSTANT: VK_F5 HEX: 74 +CONSTANT: VK_F6 HEX: 75 +CONSTANT: VK_F7 HEX: 76 +CONSTANT: VK_F8 HEX: 77 +CONSTANT: VK_F9 HEX: 78 +CONSTANT: VK_F10 HEX: 79 +CONSTANT: VK_F11 HEX: 7A +CONSTANT: VK_F12 HEX: 7B +CONSTANT: VK_F13 HEX: 7C +CONSTANT: VK_F14 HEX: 7D +CONSTANT: VK_F15 HEX: 7E +CONSTANT: VK_F16 HEX: 7F +CONSTANT: VK_F17 HEX: 80 +CONSTANT: VK_F18 HEX: 81 +CONSTANT: VK_F19 HEX: 82 +CONSTANT: VK_F20 HEX: 83 +CONSTANT: VK_F21 HEX: 84 +CONSTANT: VK_F22 HEX: 85 +CONSTANT: VK_F23 HEX: 86 +CONSTANT: VK_F24 HEX: 87 ! 0x88 - 0x8F : unassigned -: VK_NUMLOCK HEX: 90 ; inline -: VK_SCROLL HEX: 91 ; inline +CONSTANT: VK_NUMLOCK HEX: 90 +CONSTANT: VK_SCROLL HEX: 91 ! NEC PC-9800 kbd definitions -: VK_OEM_NEC_EQUAL HEX: 92 ; inline ! '=' key on numpad +CONSTANT: VK_OEM_NEC_EQUAL HEX: 92 ! '=' key on numpad ! Fujitsu/OASYS kbd definitions -: VK_OEM_FJ_JISHO HEX: 92 ; inline ! 'Dictionary' key -: VK_OEM_FJ_MASSHOU HEX: 93 ; inline ! 'Unregister word' key -: VK_OEM_FJ_TOUROKU HEX: 94 ; inline ! 'Register word' key -: VK_OEM_FJ_LOYA HEX: 95 ; inline ! 'Left OYAYUBI' key -: VK_OEM_FJ_ROYA HEX: 96 ; inline ! 'Right OYAYUBI' key +CONSTANT: VK_OEM_FJ_JISHO HEX: 92 ! 'Dictionary' key +CONSTANT: VK_OEM_FJ_MASSHOU HEX: 93 ! 'Unregister word' key +CONSTANT: VK_OEM_FJ_TOUROKU HEX: 94 ! 'Register word' key +CONSTANT: VK_OEM_FJ_LOYA HEX: 95 ! 'Left OYAYUBI' key +CONSTANT: VK_OEM_FJ_ROYA HEX: 96 ! 'Right OYAYUBI' key ! 0x97 - 0x9F : unassigned ! VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys. ! Used only as parameters to GetAsyncKeyState() and GetKeyState(). ! No other API or message will distinguish left and right keys in this way. -: VK_LSHIFT HEX: A0 ; inline -: VK_RSHIFT HEX: A1 ; inline -: VK_LCONTROL HEX: A2 ; inline -: VK_RCONTROL HEX: A3 ; inline -: VK_LMENU HEX: A4 ; inline -: VK_RMENU HEX: A5 ; inline +CONSTANT: VK_LSHIFT HEX: A0 +CONSTANT: VK_RSHIFT HEX: A1 +CONSTANT: VK_LCONTROL HEX: A2 +CONSTANT: VK_RCONTROL HEX: A3 +CONSTANT: VK_LMENU HEX: A4 +CONSTANT: VK_RMENU HEX: A5 -: VK_BROWSER_BACK HEX: A6 ; inline -: VK_BROWSER_FORWARD HEX: A7 ; inline -: VK_BROWSER_REFRESH HEX: A8 ; inline -: VK_BROWSER_STOP HEX: A9 ; inline -: VK_BROWSER_SEARCH HEX: AA ; inline -: VK_BROWSER_FAVORITES HEX: AB ; inline -: VK_BROWSER_HOME HEX: AC ; inline +CONSTANT: VK_BROWSER_BACK HEX: A6 +CONSTANT: VK_BROWSER_FORWARD HEX: A7 +CONSTANT: VK_BROWSER_REFRESH HEX: A8 +CONSTANT: VK_BROWSER_STOP HEX: A9 +CONSTANT: VK_BROWSER_SEARCH HEX: AA +CONSTANT: VK_BROWSER_FAVORITES HEX: AB +CONSTANT: VK_BROWSER_HOME HEX: AC -: VK_VOLUME_MUTE HEX: AD ; inline -: VK_VOLUME_DOWN HEX: AE ; inline -: VK_VOLUME_UP HEX: AF ; inline -: VK_MEDIA_NEXT_TRACK HEX: B0 ; inline -: VK_MEDIA_PREV_TRACK HEX: B1 ; inline -: VK_MEDIA_STOP HEX: B2 ; inline -: VK_MEDIA_PLAY_PAUSE HEX: B3 ; inline -: VK_LAUNCH_MAIL HEX: B4 ; inline -: VK_LAUNCH_MEDIA_SELECT HEX: B5 ; inline -: VK_LAUNCH_APP1 HEX: B6 ; inline -: VK_LAUNCH_APP2 HEX: B7 ; inline +CONSTANT: VK_VOLUME_MUTE HEX: AD +CONSTANT: VK_VOLUME_DOWN HEX: AE +CONSTANT: VK_VOLUME_UP HEX: AF +CONSTANT: VK_MEDIA_NEXT_TRACK HEX: B0 +CONSTANT: VK_MEDIA_PREV_TRACK HEX: B1 +CONSTANT: VK_MEDIA_STOP HEX: B2 +CONSTANT: VK_MEDIA_PLAY_PAUSE HEX: B3 +CONSTANT: VK_LAUNCH_MAIL HEX: B4 +CONSTANT: VK_LAUNCH_MEDIA_SELECT HEX: B5 +CONSTANT: VK_LAUNCH_APP1 HEX: B6 +CONSTANT: VK_LAUNCH_APP2 HEX: B7 ! 0xB8 - 0xB9 : reserved -: VK_OEM_1 HEX: BA ; inline ! ';:' for US -: VK_OEM_PLUS HEX: BB ; inline ! '+' any country -: VK_OEM_COMMA HEX: BC ; inline ! ',' any country -: VK_OEM_MINUS HEX: BD ; inline ! '-' any country -: VK_OEM_PERIOD HEX: BE ; inline ! '.' any country -: VK_OEM_2 HEX: BF ; inline ! '/?' for US -: VK_OEM_3 HEX: C0 ; inline ! '`~' for US +CONSTANT: VK_OEM_1 HEX: BA ! ';:' for US +CONSTANT: VK_OEM_PLUS HEX: BB ! '+' any country +CONSTANT: VK_OEM_COMMA HEX: BC ! ',' any country +CONSTANT: VK_OEM_MINUS HEX: BD ! '-' any country +CONSTANT: VK_OEM_PERIOD HEX: BE ! '.' any country +CONSTANT: VK_OEM_2 HEX: BF ! '/?' for US +CONSTANT: VK_OEM_3 HEX: C0 ! '`~' for US ! 0xC1 - 0xD7 : reserved ! 0xD8 - 0xDA : unassigned -: VK_OEM_4 HEX: DB ; inline ! '[{' for US -: VK_OEM_5 HEX: DC ; inline ! '\|' for US -: VK_OEM_6 HEX: DD ; inline ! ']}' for US -: VK_OEM_7 HEX: DE ; inline ! ''"' for US -: VK_OEM_8 HEX: DF ; inline +CONSTANT: VK_OEM_4 HEX: DB ! '[{' for US +CONSTANT: VK_OEM_5 HEX: DC ! '\|' for US +CONSTANT: VK_OEM_6 HEX: DD ! ']}' for US +CONSTANT: VK_OEM_7 HEX: DE ! ''"' for US +CONSTANT: VK_OEM_8 HEX: DF ! 0xE0 : reserved ! Various extended or enhanced keyboards -: VK_OEM_AX HEX: E1 ; inline ! 'AX' key on Japanese AX kbd -: VK_OEM_102 HEX: E2 ; inline ! "<>" or "\|" on RT 102-key kbd. -: VK_ICO_HELP HEX: E3 ; inline ! Help key on ICO -: VK_ICO_00 HEX: E4 ; inline ! 00 key on ICO +CONSTANT: VK_OEM_AX HEX: E1 ! 'AX' key on Japanese AX kbd +CONSTANT: VK_OEM_102 HEX: E2 ! "<>" or "\|" on RT 102-key kbd. +CONSTANT: VK_ICO_HELP HEX: E3 ! Help key on ICO +CONSTANT: VK_ICO_00 HEX: E4 ! 00 key on ICO -: VK_PROCESSKEY HEX: E5 ; inline +CONSTANT: VK_PROCESSKEY HEX: E5 -: VK_ICO_CLEAR HEX: E6 ; inline +CONSTANT: VK_ICO_CLEAR HEX: E6 -: VK_PACKET HEX: E7 ; inline +CONSTANT: VK_PACKET HEX: E7 ! 0xE8 : unassigned ! Nokia/Ericsson definitions -: VK_OEM_RESET HEX: E9 ; inline -: VK_OEM_JUMP HEX: EA ; inline -: VK_OEM_PA1 HEX: EB ; inline -: VK_OEM_PA2 HEX: EC ; inline -: VK_OEM_PA3 HEX: ED ; inline -: VK_OEM_WSCTRL HEX: EE ; inline -: VK_OEM_CUSEL HEX: EF ; inline -: VK_OEM_ATTN HEX: F0 ; inline -: VK_OEM_FINISH HEX: F1 ; inline -: VK_OEM_COPY HEX: F2 ; inline -: VK_OEM_AUTO HEX: F3 ; inline -: VK_OEM_ENLW HEX: F4 ; inline -: VK_OEM_BACKTAB HEX: F5 ; inline +CONSTANT: VK_OEM_RESET HEX: E9 +CONSTANT: VK_OEM_JUMP HEX: EA +CONSTANT: VK_OEM_PA1 HEX: EB +CONSTANT: VK_OEM_PA2 HEX: EC +CONSTANT: VK_OEM_PA3 HEX: ED +CONSTANT: VK_OEM_WSCTRL HEX: EE +CONSTANT: VK_OEM_CUSEL HEX: EF +CONSTANT: VK_OEM_ATTN HEX: F0 +CONSTANT: VK_OEM_FINISH HEX: F1 +CONSTANT: VK_OEM_COPY HEX: F2 +CONSTANT: VK_OEM_AUTO HEX: F3 +CONSTANT: VK_OEM_ENLW HEX: F4 +CONSTANT: VK_OEM_BACKTAB HEX: F5 -: VK_ATTN HEX: F6 ; inline -: VK_CRSEL HEX: F7 ; inline -: VK_EXSEL HEX: F8 ; inline -: VK_EREOF HEX: F9 ; inline -: VK_PLAY HEX: FA ; inline -: VK_ZOOM HEX: FB ; inline -: VK_NONAME HEX: FC ; inline -: VK_PA1 HEX: FD ; inline -: VK_OEM_CLEAR HEX: FE ; inline +CONSTANT: VK_ATTN HEX: F6 +CONSTANT: VK_CRSEL HEX: F7 +CONSTANT: VK_EXSEL HEX: F8 +CONSTANT: VK_EREOF HEX: F9 +CONSTANT: VK_PLAY HEX: FA +CONSTANT: VK_ZOOM HEX: FB +CONSTANT: VK_NONAME HEX: FC +CONSTANT: VK_PA1 HEX: FD +CONSTANT: VK_OEM_CLEAR HEX: FE ! 0xFF : reserved ! Key State Masks for Mouse Messages -: MK_LBUTTON HEX: 0001 ; inline -: MK_RBUTTON HEX: 0002 ; inline -: MK_SHIFT HEX: 0004 ; inline -: MK_CONTROL HEX: 0008 ; inline -: MK_MBUTTON HEX: 0010 ; inline -: MK_XBUTTON1 HEX: 0020 ; inline -: MK_XBUTTON2 HEX: 0040 ; inline +CONSTANT: MK_LBUTTON HEX: 0001 +CONSTANT: MK_RBUTTON HEX: 0002 +CONSTANT: MK_SHIFT HEX: 0004 +CONSTANT: MK_CONTROL HEX: 0008 +CONSTANT: MK_MBUTTON HEX: 0010 +CONSTANT: MK_XBUTTON1 HEX: 0020 +CONSTANT: MK_XBUTTON2 HEX: 0040 ! Some fields are not defined for win64 ! Window field offsets for GetWindowLong() -: GWL_WNDPROC -4 ; inline -: GWL_HINSTANCE -6 ; inline -: GWL_HWNDPARENT -8 ; inline -: GWL_USERDATA -21 ; inline -: GWL_ID -12 ; inline +CONSTANT: GWL_WNDPROC -4 +CONSTANT: GWL_HINSTANCE -6 +CONSTANT: GWL_HWNDPARENT -8 +CONSTANT: GWL_USERDATA -21 +CONSTANT: GWL_ID -12 -: GWL_STYLE -16 ; inline -: GWL_EXSTYLE -20 ; inline +CONSTANT: GWL_STYLE -16 +CONSTANT: GWL_EXSTYLE -20 -: GWLP_WNDPROC -4 ; inline -: GWLP_HINSTANCE -6 ; inline -: GWLP_HWNDPARENT -8 ; inline -: GWLP_USERDATA -21 ; inline -: GWLP_ID -12 ; inline +CONSTANT: GWLP_WNDPROC -4 +CONSTANT: GWLP_HINSTANCE -6 +CONSTANT: GWLP_HWNDPARENT -8 +CONSTANT: GWLP_USERDATA -21 +CONSTANT: GWLP_ID -12 ! Class field offsets for GetClassLong() -: GCL_MENUNAME -8 ; inline -: GCL_HBRBACKGROUND -10 ; inline -: GCL_HCURSOR -12 ; inline -: GCL_HICON -14 ; inline -: GCL_HMODULE -16 ; inline -: GCL_WNDPROC -24 ; inline -: GCL_HICONSM -34 ; inline -: GCL_CBWNDEXTRA -18 ; inline -: GCL_CBCLSEXTRA -20 ; inline -: GCL_STYLE -26 ; inline -: GCW_ATOM -32 ; inline +CONSTANT: GCL_MENUNAME -8 +CONSTANT: GCL_HBRBACKGROUND -10 +CONSTANT: GCL_HCURSOR -12 +CONSTANT: GCL_HICON -14 +CONSTANT: GCL_HMODULE -16 +CONSTANT: GCL_WNDPROC -24 +CONSTANT: GCL_HICONSM -34 +CONSTANT: GCL_CBWNDEXTRA -18 +CONSTANT: GCL_CBCLSEXTRA -20 +CONSTANT: GCL_STYLE -26 +CONSTANT: GCW_ATOM -32 -: GCLP_MENUNAME -8 ; inline -: GCLP_HBRBACKGROUND -10 ; inline -: GCLP_HCURSOR -12 ; inline -: GCLP_HICON -14 ; inline -: GCLP_HMODULE -16 ; inline -: GCLP_WNDPROC -24 ; inline -: GCLP_HICONSM -34 ; inline +CONSTANT: GCLP_MENUNAME -8 +CONSTANT: GCLP_HBRBACKGROUND -10 +CONSTANT: GCLP_HCURSOR -12 +CONSTANT: GCLP_HICON -14 +CONSTANT: GCLP_HMODULE -16 +CONSTANT: GCLP_WNDPROC -24 +CONSTANT: GCLP_HICONSM -34 -: MB_ICONASTERISK HEX: 00000040 ; inline -: MB_ICONEXCLAMATION HEX: 00000030 ; inline -: MB_ICONHAND HEX: 00000010 ; inline -: MB_ICONQUESTION HEX: 00000020 ; inline -: MB_OK HEX: 00000000 ; inline +CONSTANT: MB_ICONASTERISK HEX: 00000040 +CONSTANT: MB_ICONEXCLAMATION HEX: 00000030 +CONSTANT: MB_ICONHAND HEX: 00000010 +CONSTANT: MB_ICONQUESTION HEX: 00000020 +CONSTANT: MB_OK HEX: 00000000 ALIAS: FVIRTKEY TRUE -: FNOINVERT 2 ; inline -: FSHIFT 4 ; inline -: FCONTROL 8 ; inline -: FALT 16 ; inline +CONSTANT: FNOINVERT 2 +CONSTANT: FSHIFT 4 +CONSTANT: FCONTROL 8 +CONSTANT: FALT 16 -: MAPVK_VK_TO_VSC 0 ; inline -: MAPVK_VSC_TO_VK 1 ; inline -: MAPVK_VK_TO_CHAR 2 ; inline -: MAPVK_VSC_TO_VK_EX 3 ; inline -: MAPVK_VK_TO_VSC_EX 3 ; inline +CONSTANT: MAPVK_VK_TO_VSC 0 +CONSTANT: MAPVK_VSC_TO_VK 1 +CONSTANT: MAPVK_VK_TO_CHAR 2 +CONSTANT: MAPVK_VSC_TO_VK_EX 3 +CONSTANT: MAPVK_VK_TO_VSC_EX 3 -: TME_HOVER 1 ; inline -: TME_LEAVE 2 ; inline -: TME_NONCLIENT 16 ; inline -: TME_QUERY HEX: 40000000 ; inline -: TME_CANCEL HEX: 80000000 ; inline -: HOVER_DEFAULT HEX: ffffffff ; inline +CONSTANT: TME_HOVER 1 +CONSTANT: TME_LEAVE 2 +CONSTANT: TME_NONCLIENT 16 +CONSTANT: TME_QUERY HEX: 40000000 +CONSTANT: TME_CANCEL HEX: 80000000 +CONSTANT: HOVER_DEFAULT HEX: ffffffff C-STRUCT: TRACKMOUSEEVENT { "DWORD" "cbSize" } { "DWORD" "dwFlags" } @@ -528,15 +528,15 @@ C-STRUCT: TRACKMOUSEEVENT { "DWORD" "dwHoverTime" } ; TYPEDEF: TRACKMOUSEEVENT* LPTRACKMOUSEEVENT -: DBT_DEVICEARRIVAL HEX: 8000 ; inline -: DBT_DEVICEREMOVECOMPLETE HEX: 8004 ; inline +CONSTANT: DBT_DEVICEARRIVAL HEX: 8000 +CONSTANT: DBT_DEVICEREMOVECOMPLETE HEX: 8004 -: DBT_DEVTYP_DEVICEINTERFACE 5 ; inline +CONSTANT: DBT_DEVTYP_DEVICEINTERFACE 5 -: DEVICE_NOTIFY_WINDOW_HANDLE 0 ; inline -: DEVICE_NOTIFY_SERVICE_HANDLE 1 ; inline +CONSTANT: DEVICE_NOTIFY_WINDOW_HANDLE 0 +CONSTANT: DEVICE_NOTIFY_SERVICE_HANDLE 1 -: DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 4 ; inline +CONSTANT: DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 4 C-STRUCT: DEV_BROADCAST_HDR { "DWORD" "dbch_size" } @@ -672,7 +672,6 @@ ALIAS: CreateWindowEx CreateWindowExW : CreateWindow ( a b c d e f g h i j k -- hwnd ) 0 12 -nrot CreateWindowEx ; inline - ! FUNCTION: CreateWindowStationA ! FUNCTION: CreateWindowStationW ! FUNCTION: CsrBroadcastSystemMessageExW diff --git a/basis/windows/windows.factor b/basis/windows/windows.factor index d2250d6f7e..44db355c99 100644 --- a/basis/windows/windows.factor +++ b/basis/windows/windows.factor @@ -8,7 +8,7 @@ IN: windows : lo-word ( wparam -- lo ) *short ; inline : hi-word ( wparam -- hi ) -16 shift lo-word ; inline -: MAX_UNICODE_PATH 32768 ; inline +CONSTANT: MAX_UNICODE_PATH 32768 ! You must LocalFree the return value! FUNCTION: void* error_message ( DWORD id ) ; diff --git a/basis/x11/xlib/xlib.factor b/basis/x11/xlib/xlib.factor index f86c24b845..3394de87b2 100644 --- a/basis/x11/xlib/xlib.factor +++ b/basis/x11/xlib/xlib.factor @@ -131,19 +131,19 @@ C-STRUCT: XSetWindowAttributes { "Colormap" "colormap" } { "Cursor" "cursor" } ; -: UnmapGravity 0 ; inline +CONSTANT: UnmapGravity 0 -: ForgetGravity 0 ; inline -: NorthWestGravity 1 ; inline -: NorthGravity 2 ; inline -: NorthEastGravity 3 ; inline -: WestGravity 4 ; inline -: CenterGravity 5 ; inline -: EastGravity 6 ; inline -: SouthWestGravity 7 ; inline -: SouthGravity 8 ; inline -: SouthEastGravity 9 ; inline -: StaticGravity 10 ; inline +CONSTANT: ForgetGravity 0 +CONSTANT: NorthWestGravity 1 +CONSTANT: NorthGravity 2 +CONSTANT: NorthEastGravity 3 +CONSTANT: WestGravity 4 +CONSTANT: CenterGravity 5 +CONSTANT: EastGravity 6 +CONSTANT: SouthWestGravity 7 +CONSTANT: SouthGravity 8 +CONSTANT: SouthEastGravity 9 +CONSTANT: StaticGravity 10 ! 3.3 - Creating Windows @@ -238,9 +238,9 @@ C-STRUCT: XWindowAttributes FUNCTION: Status XGetWindowAttributes ( Display* display, Window w, XWindowAttributes* attr ) ; -: IsUnmapped 0 ; inline -: IsUnviewable 1 ; inline -: IsViewable 2 ; inline +CONSTANT: IsUnmapped 0 +CONSTANT: IsUnviewable 1 +CONSTANT: IsViewable 2 FUNCTION: Status XGetGeometry ( Display* display, @@ -336,22 +336,22 @@ FUNCTION: Colormap XCreateColormap ( Display* display, Window w, Visual* visual, : GCDashList ( -- n ) 21 2^ ; inline : GCArcMode ( -- n ) 22 2^ ; inline -: GXclear HEX: 0 ; inline -: GXand HEX: 1 ; inline -: GXandReverse HEX: 2 ; inline -: GXcopy HEX: 3 ; inline -: GXandInverted HEX: 4 ; inline -: GXnoop HEX: 5 ; inline -: GXxor HEX: 6 ; inline -: GXor HEX: 7 ; inline -: GXnor HEX: 8 ; inline -: GXequiv HEX: 9 ; inline -: GXinvert HEX: a ; inline -: GXorReverse HEX: b ; inline -: GXcopyInverted HEX: c ; inline -: GXorInverted HEX: d ; inline -: GXnand HEX: e ; inline -: GXset HEX: f ; inline +CONSTANT: GXclear HEX: 0 +CONSTANT: GXand HEX: 1 +CONSTANT: GXandReverse HEX: 2 +CONSTANT: GXcopy HEX: 3 +CONSTANT: GXandInverted HEX: 4 +CONSTANT: GXnoop HEX: 5 +CONSTANT: GXxor HEX: 6 +CONSTANT: GXor HEX: 7 +CONSTANT: GXnor HEX: 8 +CONSTANT: GXequiv HEX: 9 +CONSTANT: GXinvert HEX: a +CONSTANT: GXorReverse HEX: b +CONSTANT: GXcopyInverted HEX: c +CONSTANT: GXorInverted HEX: d +CONSTANT: GXnand HEX: e +CONSTANT: GXset HEX: f C-STRUCT: XGCValues { "int" "function" } @@ -447,10 +447,10 @@ FUNCTION: Status XDrawString ( ! 8.7 - Transferring Images between Client and Server -: XYBitmap 0 ; inline -: XYPixmap 1 ; inline -: ZPixmap 2 ; inline -: AllPlanes -1 ; inline +CONSTANT: XYBitmap 0 +CONSTANT: XYPixmap 1 +CONSTANT: ZPixmap 2 +CONSTANT: AllPlanes -1 C-STRUCT: XImage-funcs { "void*" "create_image" } @@ -532,40 +532,40 @@ FUNCTION: Status XKillClient ( Display* display, XID resource ) ; : ColormapChangeMask ( -- n ) 23 2^ ; inline : OwnerGrabButtonMask ( -- n ) 24 2^ ; inline -: KeyPress 2 ; inline -: KeyRelease 3 ; inline -: ButtonPress 4 ; inline -: ButtonRelease 5 ; inline -: MotionNotify 6 ; inline -: EnterNotify 7 ; inline -: LeaveNotify 8 ; inline -: FocusIn 9 ; inline -: FocusOut 10 ; inline -: KeymapNotify 11 ; inline -: Expose 12 ; inline -: GraphicsExpose 13 ; inline -: NoExpose 14 ; inline -: VisibilityNotify 15 ; inline -: CreateNotify 16 ; inline -: DestroyNotify 17 ; inline -: UnmapNotify 18 ; inline -: MapNotify 19 ; inline -: MapRequest 20 ; inline -: ReparentNotify 21 ; inline -: ConfigureNotify 22 ; inline -: ConfigureRequest 23 ; inline -: GravityNotify 24 ; inline -: ResizeRequest 25 ; inline -: CirculateNotify 26 ; inline -: CirculateRequest 27 ; inline -: PropertyNotify 28 ; inline -: SelectionClear 29 ; inline -: SelectionRequest 30 ; inline -: SelectionNotify 31 ; inline -: ColormapNotify 32 ; inline -: ClientMessage 33 ; inline -: MappingNotify 34 ; inline -: LASTEvent 35 ; inline +CONSTANT: KeyPress 2 +CONSTANT: KeyRelease 3 +CONSTANT: ButtonPress 4 +CONSTANT: ButtonRelease 5 +CONSTANT: MotionNotify 6 +CONSTANT: EnterNotify 7 +CONSTANT: LeaveNotify 8 +CONSTANT: FocusIn 9 +CONSTANT: FocusOut 10 +CONSTANT: KeymapNotify 11 +CONSTANT: Expose 12 +CONSTANT: GraphicsExpose 13 +CONSTANT: NoExpose 14 +CONSTANT: VisibilityNotify 15 +CONSTANT: CreateNotify 16 +CONSTANT: DestroyNotify 17 +CONSTANT: UnmapNotify 18 +CONSTANT: MapNotify 19 +CONSTANT: MapRequest 20 +CONSTANT: ReparentNotify 21 +CONSTANT: ConfigureNotify 22 +CONSTANT: ConfigureRequest 23 +CONSTANT: GravityNotify 24 +CONSTANT: ResizeRequest 25 +CONSTANT: CirculateNotify 26 +CONSTANT: CirculateRequest 27 +CONSTANT: PropertyNotify 28 +CONSTANT: SelectionClear 29 +CONSTANT: SelectionRequest 30 +CONSTANT: SelectionNotify 31 +CONSTANT: ColormapNotify 32 +CONSTANT: ClientMessage 33 +CONSTANT: MappingNotify 34 +CONSTANT: LASTEvent 35 C-STRUCT: XAnyEvent { "int" "type" } @@ -578,11 +578,11 @@ C-STRUCT: XAnyEvent ! 10.5 Keyboard and Pointer Events -: Button1 1 ; inline -: Button2 2 ; inline -: Button3 3 ; inline -: Button4 4 ; inline -: Button5 5 ; inline +CONSTANT: Button1 1 +CONSTANT: Button2 2 +CONSTANT: Button3 3 +CONSTANT: Button4 4 +CONSTANT: Button5 5 : Button1Mask ( -- n ) 1 8 shift ; inline : Button2Mask ( -- n ) 1 9 shift ; inline @@ -1074,9 +1074,9 @@ FUNCTION: Status XMaskEvent ( Display* display, long event_mask, XEvent* event_r ! 11.3 - Event Queue Management -: QueuedAlready 0 ; inline -: QueuedAfterReading 1 ; inline -: QueuedAfterFlush 2 ; inline +CONSTANT: QueuedAlready 0 +CONSTANT: QueuedAfterReading 1 +CONSTANT: QueuedAfterFlush 2 FUNCTION: int XEventsQueued ( Display* display, int mode ) ; FUNCTION: int XPending ( Display* display ) ; @@ -1093,7 +1093,7 @@ FUNCTION: int XSetErrorHandler ( void* handler ) ; ! 12 - Input Device Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: None 0 ; inline +CONSTANT: None 0 FUNCTION: int XGrabPointer ( Display* display, @@ -1199,17 +1199,17 @@ FUNCTION: int XLookupString ( ! 16.7 Determining the Appropriate Visual Type -: VisualNoMask HEX: 0 ; inline -: VisualIDMask HEX: 1 ; inline -: VisualScreenMask HEX: 2 ; inline -: VisualDepthMask HEX: 4 ; inline -: VisualClassMask HEX: 8 ; inline -: VisualRedMaskMask HEX: 10 ; inline -: VisualGreenMaskMask HEX: 20 ; inline -: VisualBlueMaskMask HEX: 40 ; inline -: VisualColormapSizeMask HEX: 80 ; inline -: VisualBitsPerRGBMask HEX: 100 ; inline -: VisualAllMask HEX: 1FF ; inline +CONSTANT: VisualNoMask HEX: 0 +CONSTANT: VisualIDMask HEX: 1 +CONSTANT: VisualScreenMask HEX: 2 +CONSTANT: VisualDepthMask HEX: 4 +CONSTANT: VisualClassMask HEX: 8 +CONSTANT: VisualRedMaskMask HEX: 10 +CONSTANT: VisualGreenMaskMask HEX: 20 +CONSTANT: VisualBlueMaskMask HEX: 40 +CONSTANT: VisualColormapSizeMask HEX: 80 +CONSTANT: VisualBitsPerRGBMask HEX: 100 +CONSTANT: VisualAllMask HEX: 1FF C-STRUCT: XVisualInfo { "Visual*" "visual" } @@ -1239,76 +1239,76 @@ FUNCTION: Status XSetStandardProperties ( ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: XA_PRIMARY 1 ; inline -: XA_SECONDARY 2 ; inline -: XA_ARC 3 ; inline -: XA_ATOM 4 ; inline -: XA_BITMAP 5 ; inline -: XA_CARDINAL 6 ; inline -: XA_COLORMAP 7 ; inline -: XA_CURSOR 8 ; inline -: XA_CUT_BUFFER0 9 ; inline -: XA_CUT_BUFFER1 10 ; inline -: XA_CUT_BUFFER2 11 ; inline -: XA_CUT_BUFFER3 12 ; inline -: XA_CUT_BUFFER4 13 ; inline -: XA_CUT_BUFFER5 14 ; inline -: XA_CUT_BUFFER6 15 ; inline -: XA_CUT_BUFFER7 16 ; inline -: XA_DRAWABLE 17 ; inline -: XA_FONT 18 ; inline -: XA_INTEGER 19 ; inline -: XA_PIXMAP 20 ; inline -: XA_POINT 21 ; inline -: XA_RECTANGLE 22 ; inline -: XA_RESOURCE_MANAGER 23 ; inline -: XA_RGB_COLOR_MAP 24 ; inline -: XA_RGB_BEST_MAP 25 ; inline -: XA_RGB_BLUE_MAP 26 ; inline -: XA_RGB_DEFAULT_MAP 27 ; inline -: XA_RGB_GRAY_MAP 28 ; inline -: XA_RGB_GREEN_MAP 29 ; inline -: XA_RGB_RED_MAP 30 ; inline -: XA_STRING 31 ; inline -: XA_VISUALID 32 ; inline -: XA_WINDOW 33 ; inline -: XA_WM_COMMAND 34 ; inline -: XA_WM_HINTS 35 ; inline -: XA_WM_CLIENT_MACHINE 36 ; inline -: XA_WM_ICON_NAME 37 ; inline -: XA_WM_ICON_SIZE 38 ; inline -: XA_WM_NAME 39 ; inline -: XA_WM_NORMAL_HINTS 40 ; inline -: XA_WM_SIZE_HINTS 41 ; inline -: XA_WM_ZOOM_HINTS 42 ; inline -: XA_MIN_SPACE 43 ; inline -: XA_NORM_SPACE 44 ; inline -: XA_MAX_SPACE 45 ; inline -: XA_END_SPACE 46 ; inline -: XA_SUPERSCRIPT_X 47 ; inline -: XA_SUPERSCRIPT_Y 48 ; inline -: XA_SUBSCRIPT_X 49 ; inline -: XA_SUBSCRIPT_Y 50 ; inline -: XA_UNDERLINE_POSITION 51 ; inline -: XA_UNDERLINE_THICKNESS 52 ; inline -: XA_STRIKEOUT_ASCENT 53 ; inline -: XA_STRIKEOUT_DESCENT 54 ; inline -: XA_ITALIC_ANGLE 55 ; inline -: XA_X_HEIGHT 56 ; inline -: XA_QUAD_WIDTH 57 ; inline -: XA_WEIGHT 58 ; inline -: XA_POINT_SIZE 59 ; inline -: XA_RESOLUTION 60 ; inline -: XA_COPYRIGHT 61 ; inline -: XA_NOTICE 62 ; inline -: XA_FONT_NAME 63 ; inline -: XA_FAMILY_NAME 64 ; inline -: XA_FULL_NAME 65 ; inline -: XA_CAP_HEIGHT 66 ; inline -: XA_WM_CLASS 67 ; inline -: XA_WM_TRANSIENT_FOR 68 ; inline +CONSTANT: XA_PRIMARY 1 +CONSTANT: XA_SECONDARY 2 +CONSTANT: XA_ARC 3 +CONSTANT: XA_ATOM 4 +CONSTANT: XA_BITMAP 5 +CONSTANT: XA_CARDINAL 6 +CONSTANT: XA_COLORMAP 7 +CONSTANT: XA_CURSOR 8 +CONSTANT: XA_CUT_BUFFER0 9 +CONSTANT: XA_CUT_BUFFER1 10 +CONSTANT: XA_CUT_BUFFER2 11 +CONSTANT: XA_CUT_BUFFER3 12 +CONSTANT: XA_CUT_BUFFER4 13 +CONSTANT: XA_CUT_BUFFER5 14 +CONSTANT: XA_CUT_BUFFER6 15 +CONSTANT: XA_CUT_BUFFER7 16 +CONSTANT: XA_DRAWABLE 17 +CONSTANT: XA_FONT 18 +CONSTANT: XA_INTEGER 19 +CONSTANT: XA_PIXMAP 20 +CONSTANT: XA_POINT 21 +CONSTANT: XA_RECTANGLE 22 +CONSTANT: XA_RESOURCE_MANAGER 23 +CONSTANT: XA_RGB_COLOR_MAP 24 +CONSTANT: XA_RGB_BEST_MAP 25 +CONSTANT: XA_RGB_BLUE_MAP 26 +CONSTANT: XA_RGB_DEFAULT_MAP 27 +CONSTANT: XA_RGB_GRAY_MAP 28 +CONSTANT: XA_RGB_GREEN_MAP 29 +CONSTANT: XA_RGB_RED_MAP 30 +CONSTANT: XA_STRING 31 +CONSTANT: XA_VISUALID 32 +CONSTANT: XA_WINDOW 33 +CONSTANT: XA_WM_COMMAND 34 +CONSTANT: XA_WM_HINTS 35 +CONSTANT: XA_WM_CLIENT_MACHINE 36 +CONSTANT: XA_WM_ICON_NAME 37 +CONSTANT: XA_WM_ICON_SIZE 38 +CONSTANT: XA_WM_NAME 39 +CONSTANT: XA_WM_NORMAL_HINTS 40 +CONSTANT: XA_WM_SIZE_HINTS 41 +CONSTANT: XA_WM_ZOOM_HINTS 42 +CONSTANT: XA_MIN_SPACE 43 +CONSTANT: XA_NORM_SPACE 44 +CONSTANT: XA_MAX_SPACE 45 +CONSTANT: XA_END_SPACE 46 +CONSTANT: XA_SUPERSCRIPT_X 47 +CONSTANT: XA_SUPERSCRIPT_Y 48 +CONSTANT: XA_SUBSCRIPT_X 49 +CONSTANT: XA_SUBSCRIPT_Y 50 +CONSTANT: XA_UNDERLINE_POSITION 51 +CONSTANT: XA_UNDERLINE_THICKNESS 52 +CONSTANT: XA_STRIKEOUT_ASCENT 53 +CONSTANT: XA_STRIKEOUT_DESCENT 54 +CONSTANT: XA_ITALIC_ANGLE 55 +CONSTANT: XA_X_HEIGHT 56 +CONSTANT: XA_QUAD_WIDTH 57 +CONSTANT: XA_WEIGHT 58 +CONSTANT: XA_POINT_SIZE 59 +CONSTANT: XA_RESOLUTION 60 +CONSTANT: XA_COPYRIGHT 61 +CONSTANT: XA_NOTICE 62 +CONSTANT: XA_FONT_NAME 63 +CONSTANT: XA_FAMILY_NAME 64 +CONSTANT: XA_FULL_NAME 65 +CONSTANT: XA_CAP_HEIGHT 66 +CONSTANT: XA_WM_CLASS 67 +CONSTANT: XA_WM_TRANSIENT_FOR 68 -: XA_LAST_PREDEFINED 68 ; inline +CONSTANT: XA_LAST_PREDEFINED 68 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! The rest of the stuff is not from the book. @@ -1321,65 +1321,65 @@ FUNCTION: int XBell ( Display* display, int percent ) ; ! !!! INPUT METHODS -: XIMPreeditArea HEX: 0001 ; inline -: XIMPreeditCallbacks HEX: 0002 ; inline -: XIMPreeditPosition HEX: 0004 ; inline -: XIMPreeditNothing HEX: 0008 ; inline -: XIMPreeditNone HEX: 0010 ; inline -: XIMStatusArea HEX: 0100 ; inline -: XIMStatusCallbacks HEX: 0200 ; inline -: XIMStatusNothing HEX: 0400 ; inline -: XIMStatusNone HEX: 0800 ; inline +CONSTANT: XIMPreeditArea HEX: 0001 +CONSTANT: XIMPreeditCallbacks HEX: 0002 +CONSTANT: XIMPreeditPosition HEX: 0004 +CONSTANT: XIMPreeditNothing HEX: 0008 +CONSTANT: XIMPreeditNone HEX: 0010 +CONSTANT: XIMStatusArea HEX: 0100 +CONSTANT: XIMStatusCallbacks HEX: 0200 +CONSTANT: XIMStatusNothing HEX: 0400 +CONSTANT: XIMStatusNone HEX: 0800 -: XNVaNestedList "XNVaNestedList" ; -: XNQueryInputStyle "queryInputStyle" ; -: XNClientWindow "clientWindow" ; -: XNInputStyle "inputStyle" ; -: XNFocusWindow "focusWindow" ; -: XNResourceName "resourceName" ; -: XNResourceClass "resourceClass" ; -: XNGeometryCallback "geometryCallback" ; -: XNDestroyCallback "destroyCallback" ; -: XNFilterEvents "filterEvents" ; -: XNPreeditStartCallback "preeditStartCallback" ; -: XNPreeditDoneCallback "preeditDoneCallback" ; -: XNPreeditDrawCallback "preeditDrawCallback" ; -: XNPreeditCaretCallback "preeditCaretCallback" ; -: XNPreeditStateNotifyCallback "preeditStateNotifyCallback" ; -: XNPreeditAttributes "preeditAttributes" ; -: XNStatusStartCallback "statusStartCallback" ; -: XNStatusDoneCallback "statusDoneCallback" ; -: XNStatusDrawCallback "statusDrawCallback" ; -: XNStatusAttributes "statusAttributes" ; -: XNArea "area" ; -: XNAreaNeeded "areaNeeded" ; -: XNSpotLocation "spotLocation" ; -: XNColormap "colorMap" ; -: XNStdColormap "stdColorMap" ; -: XNForeground "foreground" ; -: XNBackground "background" ; -: XNBackgroundPixmap "backgroundPixmap" ; -: XNFontSet "fontSet" ; -: XNLineSpace "lineSpace" ; -: XNCursor "cursor" ; +CONSTANT: XNVaNestedList "XNVaNestedList" +CONSTANT: XNQueryInputStyle "queryInputStyle" +CONSTANT: XNClientWindow "clientWindow" +CONSTANT: XNInputStyle "inputStyle" +CONSTANT: XNFocusWindow "focusWindow" +CONSTANT: XNResourceName "resourceName" +CONSTANT: XNResourceClass "resourceClass" +CONSTANT: XNGeometryCallback "geometryCallback" +CONSTANT: XNDestroyCallback "destroyCallback" +CONSTANT: XNFilterEvents "filterEvents" +CONSTANT: XNPreeditStartCallback "preeditStartCallback" +CONSTANT: XNPreeditDoneCallback "preeditDoneCallback" +CONSTANT: XNPreeditDrawCallback "preeditDrawCallback" +CONSTANT: XNPreeditCaretCallback "preeditCaretCallback" +CONSTANT: XNPreeditStateNotifyCallback "preeditStateNotifyCallback" +CONSTANT: XNPreeditAttributes "preeditAttributes" +CONSTANT: XNStatusStartCallback "statusStartCallback" +CONSTANT: XNStatusDoneCallback "statusDoneCallback" +CONSTANT: XNStatusDrawCallback "statusDrawCallback" +CONSTANT: XNStatusAttributes "statusAttributes" +CONSTANT: XNArea "area" +CONSTANT: XNAreaNeeded "areaNeeded" +CONSTANT: XNSpotLocation "spotLocation" +CONSTANT: XNColormap "colorMap" +CONSTANT: XNStdColormap "stdColorMap" +CONSTANT: XNForeground "foreground" +CONSTANT: XNBackground "background" +CONSTANT: XNBackgroundPixmap "backgroundPixmap" +CONSTANT: XNFontSet "fontSet" +CONSTANT: XNLineSpace "lineSpace" +CONSTANT: XNCursor "cursor" -: XNQueryIMValuesList "queryIMValuesList" ; -: XNQueryICValuesList "queryICValuesList" ; -: XNVisiblePosition "visiblePosition" ; -: XNR6PreeditCallback "r6PreeditCallback" ; -: XNStringConversionCallback "stringConversionCallback" ; -: XNStringConversion "stringConversion" ; -: XNResetState "resetState" ; -: XNHotKey "hotKey" ; -: XNHotKeyState "hotKeyState" ; -: XNPreeditState "preeditState" ; -: XNSeparatorofNestedList "separatorofNestedList" ; +CONSTANT: XNQueryIMValuesList "queryIMValuesList" +CONSTANT: XNQueryICValuesList "queryICValuesList" +CONSTANT: XNVisiblePosition "visiblePosition" +CONSTANT: XNR6PreeditCallback "r6PreeditCallback" +CONSTANT: XNStringConversionCallback "stringConversionCallback" +CONSTANT: XNStringConversion "stringConversion" +CONSTANT: XNResetState "resetState" +CONSTANT: XNHotKey "hotKey" +CONSTANT: XNHotKeyState "hotKeyState" +CONSTANT: XNPreeditState "preeditState" +CONSTANT: XNSeparatorofNestedList "separatorofNestedList" -: XBufferOverflow -1 ; -: XLookupNone 1 ; -: XLookupChars 2 ; -: XLookupKeySym 3 ; -: XLookupBoth 4 ; +CONSTANT: XBufferOverflow -1 +CONSTANT: XLookupNone 1 +CONSTANT: XLookupChars 2 +CONSTANT: XLookupKeySym 3 +CONSTANT: XLookupBoth 4 FUNCTION: Bool XFilterEvent ( XEvent* event, Window w ) ; @@ -1400,12 +1400,12 @@ FUNCTION: int XwcLookupString ( XIC ic, XKeyPressedEvent* event, ulong* buffer_r FUNCTION: int Xutf8LookupString ( XIC ic, XKeyPressedEvent* event, char* buffer_return, int bytes_buffer, KeySym* keysym_return, Status* status_return ) ; ! !!! category of setlocale -: LC_ALL 0 ; inline -: LC_COLLATE 1 ; inline -: LC_CTYPE 2 ; inline -: LC_MONETARY 3 ; inline -: LC_NUMERIC 4 ; inline -: LC_TIME 5 ; inline +CONSTANT: LC_ALL 0 +CONSTANT: LC_COLLATE 1 +CONSTANT: LC_CTYPE 2 +CONSTANT: LC_MONETARY 3 +CONSTANT: LC_NUMERIC 4 +CONSTANT: LC_TIME 5 FUNCTION: char* setlocale ( int category, char* name ) ; diff --git a/core/assocs/assocs-docs.factor b/core/assocs/assocs-docs.factor index e5c43f3ed6..9576a41b7b 100755 --- a/core/assocs/assocs-docs.factor +++ b/core/assocs/assocs-docs.factor @@ -58,6 +58,7 @@ ARTICLE: "assocs-lookup" "Lookup and querying of assocs" "Utility operations built up from the " { $link "assocs-protocol" } ":" { $subsection key? } { $subsection at } +{ $subsection ?at } { $subsection assoc-empty? } { $subsection keys } { $subsection values } @@ -188,12 +189,16 @@ HELP: key? { $values { "key" object } { "assoc" assoc } { "?" "a boolean" } } { $description "Tests if an assoc contains a key." } ; -{ at at* key? } related-words +{ at at* key? ?at } related-words HELP: at { $values { "key" "an object" } { "assoc" assoc } { "value/f" "the value associated to the key, or " { $link f } " if the key is not present in the assoc" } } { $description "Looks up the value associated with a key. This word makes no distinction between a missing value and a value set to " { $link f } "; if the difference is important, use " { $link at* } "." } ; +HELP: ?at +{ $values { "key" "an object" } { "assoc" assoc } { "value/key" "the value associated to the key, or the key if the key is not present in the assoc" } { "?" "a boolean" } } +{ $description "Looks up the value associated with a key. If the key was not present, an error can be thrown without extra stack shuffling. This word handles assocs that store " { $link f } "." } ; + HELP: assoc-each { $values { "assoc" assoc } { "quot" { $quotation "( key value -- )" } } } { $description "Applies a quotation to each entry in the assoc." } diff --git a/core/assocs/assocs-tests.factor b/core/assocs/assocs-tests.factor index 5617888148..fc74df6d45 100644 --- a/core/assocs/assocs-tests.factor +++ b/core/assocs/assocs-tests.factor @@ -138,4 +138,7 @@ unit-test { "c" [ 3 ] } { "d" [ 4 ] } } [ nip first even? ] assoc-partition -] unit-test \ No newline at end of file +] unit-test + +[ 1 f ] [ 1 H{ } ?at ] unit-test +[ 2 t ] [ 1 H{ { 1 2 } } ?at ] unit-test diff --git a/core/assocs/assocs.factor b/core/assocs/assocs.factor index e46bb7abb6..fdaa02e6c4 100755 --- a/core/assocs/assocs.factor +++ b/core/assocs/assocs.factor @@ -19,6 +19,9 @@ GENERIC: >alist ( assoc -- newassoc ) M: assoc assoc-like drop ; +: ?at ( key assoc -- value/key ? ) + dupd at* [ [ nip ] [ drop ] if ] keep ; inline + at* drop ; inline : at-default ( key assoc -- value/key ) - 2dup at* [ 2nip ] [ 2drop ] if ; inline + ?at drop ; inline M: assoc assoc-clone-like ( assoc exemplar -- newassoc ) [ dup assoc-size ] dip new-assoc diff --git a/core/checksums/crc32/crc32.factor b/core/checksums/crc32/crc32.factor index d373a96f39..7ea2964411 100644 --- a/core/checksums/crc32/crc32.factor +++ b/core/checksums/crc32/crc32.factor @@ -5,9 +5,9 @@ words io io.binary io.files io.streams.string quotations definitions checksums ; IN: checksums.crc32 -: crc32-polynomial HEX: edb88320 ; inline +CONSTANT: crc32-polynomial HEX: edb88320 -: crc32-table V{ } ; inline +CONSTANT: crc32-table V{ } 256 [ 8 [ diff --git a/core/combinators/combinators-tests.factor b/core/combinators/combinators-tests.factor index beb50f1162..1ee3a4e3ed 100644 --- a/core/combinators/combinators-tests.factor +++ b/core/combinators/combinators-tests.factor @@ -176,8 +176,8 @@ IN: combinators.tests [ "an array" ] [ { 1 2 3 } case-test-3 ] unit-test -: case-const-1 1 ; -: case-const-2 2 ; inline +CONSTANT: case-const-1 1 +CONSTANT: case-const-2 2 ! Compiled : case-test-4 ( obj -- str ) diff --git a/core/io/encodings/encodings.factor b/core/io/encodings/encodings.factor index 94d2115478..e8735afa6a 100644 --- a/core/io/encodings/encodings.factor +++ b/core/io/encodings/encodings.factor @@ -14,7 +14,7 @@ GENERIC: encode-char ( char stream encoding -- ) GENERIC: ( stream encoding -- newstream ) -: replacement-char HEX: fffd ; inline +CONSTANT: replacement-char HEX: fffd TUPLE: decoder stream code cr ; diff --git a/core/words/words.factor b/core/words/words.factor index 8648664031..4a3c1b2d52 100755 --- a/core/words/words.factor +++ b/core/words/words.factor @@ -134,7 +134,7 @@ compiled-generic-crossref [ H{ } clone ] initialize SYMBOL: visited -: reset-on-redefine { "inferred-effect" "cannot-infer" } ; inline +CONSTANT: reset-on-redefine { "inferred-effect" "cannot-infer" } : (redefined) ( word -- ) dup visited get key? [ drop ] [ diff --git a/extra/adsoda/combinators/combinators-docs.factor b/extra/adsoda/combinators/combinators-docs.factor index 0121dce32b..5b540e7a7f 100755 --- a/extra/adsoda/combinators/combinators-docs.factor +++ b/extra/adsoda/combinators/combinators-docs.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2008 Your name. +! Copyright (C) 2008 Jeff Bigot. ! See http://factorcode.org/license.txt for BSD license. USING: arrays help.markup help.syntax kernel sequences ; IN: adsoda.combinators diff --git a/extra/asn1/ldap/ldap.factor b/extra/asn1/ldap/ldap.factor index 8e93b140bf..449c9dcbd0 100644 --- a/extra/asn1/ldap/ldap.factor +++ b/extra/asn1/ldap/ldap.factor @@ -3,9 +3,9 @@ IN: asn1.ldap -: SearchScope_BaseObject 0 ; inline -: SearchScope_SingleLevel 1 ; inline -: SearchScope_WholeSubtree 2 ; inline +CONSTANT: SearchScope_BaseObject 0 +CONSTANT: SearchScope_SingleLevel 1 +CONSTANT: SearchScope_WholeSubtree 2 : asn-syntax ( -- hashtable ) H{ diff --git a/extra/benchmark/binary-trees/binary-trees.factor b/extra/benchmark/binary-trees/binary-trees.factor index 8e3918656a..21ff7fbbef 100644 --- a/extra/benchmark/binary-trees/binary-trees.factor +++ b/extra/benchmark/binary-trees/binary-trees.factor @@ -23,7 +23,7 @@ M: tree-node item-check M: f item-check drop 0 ; -: min-depth 4 ; inline +CONSTANT: min-depth 4 : stretch-tree ( max-depth -- ) 1 + 0 over bottom-up-tree item-check diff --git a/extra/benchmark/fasta/fasta.factor b/extra/benchmark/fasta/fasta.factor index 32d3534920..61d9e9fd43 100755 --- a/extra/benchmark/fasta/fasta.factor +++ b/extra/benchmark/fasta/fasta.factor @@ -4,11 +4,11 @@ sequences.private benchmark.reverse-complement hints io.encodings.ascii byte-arrays specialized-arrays.double ; IN: benchmark.fasta -: IM 139968 ; inline -: IA 3877 ; inline -: IC 29573 ; inline -: initial-seed 42 ; inline -: line-length 60 ; inline +CONSTANT: IM 139968 +CONSTANT: IA 3877 +CONSTANT: IC 29573 +CONSTANT: initial-seed 42 +CONSTANT: line-length 60 USE: math.private @@ -17,7 +17,7 @@ USE: math.private HINTS: random fixnum ; -: ALU "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA" ; inline +CONSTANT: ALU "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA" : IUB { diff --git a/extra/benchmark/mandel/colors/colors.factor b/extra/benchmark/mandel/colors/colors.factor index edc848a0ca..9e0f2472e2 100644 --- a/extra/benchmark/mandel/colors/colors.factor +++ b/extra/benchmark/mandel/colors/colors.factor @@ -7,8 +7,8 @@ IN: benchmark.mandel.colors : scale-rgb ( rgba -- n ) [ red>> scale ] [ green>> scale ] [ blue>> scale ] tri 3byte-array ; -: sat 0.85 ; inline -: val 0.85 ; inline +CONSTANT: sat 0.85 +CONSTANT: val 0.85 : ( nb-cols -- map ) dup [ diff --git a/extra/benchmark/mandel/params/params.factor b/extra/benchmark/mandel/params/params.factor index c40d3c1f2d..8a19180d73 100644 --- a/extra/benchmark/mandel/params/params.factor +++ b/extra/benchmark/mandel/params/params.factor @@ -1,8 +1,8 @@ IN: benchmark.mandel.params -: max-color 360 ; inline -: zoom-fact 0.8 ; inline -: width 640 ; inline -: height 480 ; inline -: max-iterations 40 ; inline -: center -0.65 ; inline +CONSTANT: max-color 360 +CONSTANT: zoom-fact 0.8 +CONSTANT: width 640 +CONSTANT: height 480 +CONSTANT: max-iterations 40 +CONSTANT: center -0.65 diff --git a/extra/benchmark/nbody/nbody.factor b/extra/benchmark/nbody/nbody.factor index 37c4fc43c5..f72ceb4629 100644 --- a/extra/benchmark/nbody/nbody.factor +++ b/extra/benchmark/nbody/nbody.factor @@ -6,7 +6,7 @@ sequences hints arrays ; IN: benchmark.nbody : solar-mass ( -- x ) 4 pi sq * ; inline -: days-per-year 365.24 ; inline +CONSTANT: days-per-year 365.24 TUPLE: body { location double-array } diff --git a/extra/benchmark/raytracer/raytracer.factor b/extra/benchmark/raytracer/raytracer.factor index c16e47846e..8d07ae1c65 100755 --- a/extra/benchmark/raytracer/raytracer.factor +++ b/extra/benchmark/raytracer/raytracer.factor @@ -16,13 +16,13 @@ IN: benchmark.raytracer 0.5345224838248488 } ; inline -: oversampling 4 ; inline +CONSTANT: oversampling 4 -: levels 3 ; inline +CONSTANT: levels 3 -: size 200 ; inline +CONSTANT: size 200 -: delta 1.4901161193847656E-8 ; inline +CONSTANT: delta 1.4901161193847656E-8 TUPLE: ray { orig double-array read-only } { dir double-array read-only } ; @@ -88,7 +88,7 @@ TUPLE: group < sphere { objs array read-only } ; M: group intersect-scene ( hit ray group -- hit ) [ drop objs>> [ intersect-scene ] with each ] if-ray-sphere ; -: initial-hit T{ hit f double-array{ 0.0 0.0 0.0 } 1/0. } ; inline +CONSTANT: initial-hit T{ hit f double-array{ 0.0 0.0 0.0 } 1/0. } : initial-intersect ( ray scene -- hit ) [ initial-hit ] 2dip intersect-scene ; inline diff --git a/extra/crypto/aes/aes.factor b/extra/crypto/aes/aes.factor index cacfc5971a..0807420266 100644 --- a/extra/crypto/aes/aes.factor +++ b/extra/crypto/aes/aes.factor @@ -4,7 +4,7 @@ USING: arrays kernel math memoize sequences math.bitwise locals ; IN: crypto.aes -: AES_BLOCK_SIZE 16 ; inline +CONSTANT: AES_BLOCK_SIZE 16 : sbox ( -- array ) { diff --git a/extra/crypto/rsa/rsa.factor b/extra/crypto/rsa/rsa.factor index b1eb907547..373dd9637c 100644 --- a/extra/crypto/rsa/rsa.factor +++ b/extra/crypto/rsa/rsa.factor @@ -18,7 +18,7 @@ C: rsa BOOLEAN ( n -- TRUE/FALSE ) >boolean TRUE FALSE ? ; inline ERROR: duplicate-window window ; diff --git a/extra/curses/ffi/ffi.factor b/extra/curses/ffi/ffi.factor index 8d4a7ddb4b..b1c481a576 100644 --- a/extra/curses/ffi/ffi.factor +++ b/extra/curses/ffi/ffi.factor @@ -18,7 +18,7 @@ TYPEDEF: chtype attr_t TYPEDEF: short NCURSES_SIZE_T TYPEDEF: ushort wchar_t -: CCHARW_MAX 5 ; inline +CONSTANT: CCHARW_MAX 5 C-STRUCT: cchar_t { "attr_t" "attr" } diff --git a/extra/fuel/fuel-tests.factor b/extra/fuel/fuel-tests.factor deleted file mode 100644 index 74bc5d4d45..0000000000 --- a/extra/fuel/fuel-tests.factor +++ /dev/null @@ -1,4 +0,0 @@ -! Copyright (C) 2008 Your name. -! See http://factorcode.org/license.txt for BSD license. -USING: tools.test fuel ; -IN: fuel.tests diff --git a/extra/game-input/iokit/iokit.factor b/extra/game-input/iokit/iokit.factor index 26f2c40464..8a10535306 100755 --- a/extra/game-input/iokit/iokit.factor +++ b/extra/game-input/iokit/iokit.factor @@ -21,33 +21,33 @@ iokit-game-input-backend game-input-backend set-global [ &CFRelease NSFastEnumeration>vector ] [ f ] if* ] with-destructors ; -: game-devices-matching-seq +CONSTANT: game-devices-matching-seq { H{ { "DeviceUsage" 4 } { "DeviceUsagePage" 1 } } ! joysticks H{ { "DeviceUsage" 5 } { "DeviceUsagePage" 1 } } ! gamepads H{ { "DeviceUsage" 6 } { "DeviceUsagePage" 1 } } ! keyboards - } ; inline + } -: buttons-matching-hash - H{ { "UsagePage" 9 } { "Type" 2 } } ; inline -: keys-matching-hash - H{ { "UsagePage" 7 } { "Type" 2 } } ; inline -: x-axis-matching-hash - H{ { "UsagePage" 1 } { "Usage" HEX: 30 } { "Type" 1 } } ; inline -: y-axis-matching-hash - H{ { "UsagePage" 1 } { "Usage" HEX: 31 } { "Type" 1 } } ; inline -: z-axis-matching-hash - H{ { "UsagePage" 1 } { "Usage" HEX: 32 } { "Type" 1 } } ; inline -: rx-axis-matching-hash - H{ { "UsagePage" 1 } { "Usage" HEX: 33 } { "Type" 1 } } ; inline -: ry-axis-matching-hash - H{ { "UsagePage" 1 } { "Usage" HEX: 34 } { "Type" 1 } } ; inline -: rz-axis-matching-hash - H{ { "UsagePage" 1 } { "Usage" HEX: 35 } { "Type" 1 } } ; inline -: slider-matching-hash - H{ { "UsagePage" 1 } { "Usage" HEX: 36 } { "Type" 1 } } ; inline -: hat-switch-matching-hash - H{ { "UsagePage" 1 } { "Usage" HEX: 39 } { "Type" 1 } } ; inline +CONSTANT: buttons-matching-hash + H{ { "UsagePage" 9 } { "Type" 2 } } +CONSTANT: keys-matching-hash + H{ { "UsagePage" 7 } { "Type" 2 } } +CONSTANT: x-axis-matching-hash + H{ { "UsagePage" 1 } { "Usage" HEX: 30 } { "Type" 1 } } +CONSTANT: y-axis-matching-hash + H{ { "UsagePage" 1 } { "Usage" HEX: 31 } { "Type" 1 } } +CONSTANT: z-axis-matching-hash + H{ { "UsagePage" 1 } { "Usage" HEX: 32 } { "Type" 1 } } +CONSTANT: rx-axis-matching-hash + H{ { "UsagePage" 1 } { "Usage" HEX: 33 } { "Type" 1 } } +CONSTANT: ry-axis-matching-hash + H{ { "UsagePage" 1 } { "Usage" HEX: 34 } { "Type" 1 } } +CONSTANT: rz-axis-matching-hash + H{ { "UsagePage" 1 } { "Usage" HEX: 35 } { "Type" 1 } } +CONSTANT: slider-matching-hash + H{ { "UsagePage" 1 } { "Usage" HEX: 36 } { "Type" 1 } } +CONSTANT: hat-switch-matching-hash + H{ { "UsagePage" 1 } { "Usage" HEX: 39 } { "Type" 1 } } : device-elements-matching ( device matching-hash -- vector ) [ diff --git a/extra/game-input/scancodes/scancodes.factor b/extra/game-input/scancodes/scancodes.factor index 7b0e39ee9b..3303a51c6f 100644 --- a/extra/game-input/scancodes/scancodes.factor +++ b/extra/game-input/scancodes/scancodes.factor @@ -1,175 +1,175 @@ IN: game-input.scancodes -: key-undefined HEX: 0000 ; inline -: key-error-roll-over HEX: 0001 ; inline -: key-error-post-fail HEX: 0002 ; inline -: key-error-undefined HEX: 0003 ; inline -: key-a HEX: 0004 ; inline -: key-b HEX: 0005 ; inline -: key-c HEX: 0006 ; inline -: key-d HEX: 0007 ; inline -: key-e HEX: 0008 ; inline -: key-f HEX: 0009 ; inline -: key-g HEX: 000a ; inline -: key-h HEX: 000b ; inline -: key-i HEX: 000c ; inline -: key-j HEX: 000d ; inline -: key-k HEX: 000e ; inline -: key-l HEX: 000f ; inline -: key-m HEX: 0010 ; inline -: key-n HEX: 0011 ; inline -: key-o HEX: 0012 ; inline -: key-p HEX: 0013 ; inline -: key-q HEX: 0014 ; inline -: key-r HEX: 0015 ; inline -: key-s HEX: 0016 ; inline -: key-t HEX: 0017 ; inline -: key-u HEX: 0018 ; inline -: key-v HEX: 0019 ; inline -: key-w HEX: 001a ; inline -: key-x HEX: 001b ; inline -: key-y HEX: 001c ; inline -: key-z HEX: 001d ; inline -: key-1 HEX: 001e ; inline -: key-2 HEX: 001f ; inline -: key-3 HEX: 0020 ; inline -: key-4 HEX: 0021 ; inline -: key-5 HEX: 0022 ; inline -: key-6 HEX: 0023 ; inline -: key-7 HEX: 0024 ; inline -: key-8 HEX: 0025 ; inline -: key-9 HEX: 0026 ; inline -: key-0 HEX: 0027 ; inline -: key-return HEX: 0028 ; inline -: key-escape HEX: 0029 ; inline -: key-backspace HEX: 002a ; inline -: key-tab HEX: 002b ; inline -: key-space HEX: 002c ; inline -: key-- HEX: 002d ; inline -: key-= HEX: 002e ; inline -: key-[ HEX: 002f ; inline -: key-] HEX: 0030 ; inline -: key-\ HEX: 0031 ; inline -: key-#-non-us HEX: 0032 ; inline -: key-; HEX: 0033 ; inline -: key-' HEX: 0034 ; inline -: key-` HEX: 0035 ; inline -: key-, HEX: 0036 ; inline -: key-. HEX: 0037 ; inline -: key-/ HEX: 0038 ; inline -: key-caps-lock HEX: 0039 ; inline -: key-f1 HEX: 003a ; inline -: key-f2 HEX: 003b ; inline -: key-f3 HEX: 003c ; inline -: key-f4 HEX: 003d ; inline -: key-f5 HEX: 003e ; inline -: key-f6 HEX: 003f ; inline -: key-f7 HEX: 0040 ; inline -: key-f8 HEX: 0041 ; inline -: key-f9 HEX: 0042 ; inline -: key-f10 HEX: 0043 ; inline -: key-f11 HEX: 0044 ; inline -: key-f12 HEX: 0045 ; inline -: key-print-screen HEX: 0046 ; inline -: key-scroll-lock HEX: 0047 ; inline -: key-pause HEX: 0048 ; inline -: key-insert HEX: 0049 ; inline -: key-home HEX: 004a ; inline -: key-page-up HEX: 004b ; inline -: key-delete HEX: 004c ; inline -: key-end HEX: 004d ; inline -: key-page-down HEX: 004e ; inline -: key-right-arrow HEX: 004f ; inline -: key-left-arrow HEX: 0050 ; inline -: key-down-arrow HEX: 0051 ; inline -: key-up-arrow HEX: 0052 ; inline -: key-keypad-numlock HEX: 0053 ; inline -: key-keypad-/ HEX: 0054 ; inline -: key-keypad-* HEX: 0055 ; inline -: key-keypad-- HEX: 0056 ; inline -: key-keypad-+ HEX: 0057 ; inline -: key-keypad-enter HEX: 0058 ; inline -: key-keypad-1 HEX: 0059 ; inline -: key-keypad-2 HEX: 005a ; inline -: key-keypad-3 HEX: 005b ; inline -: key-keypad-4 HEX: 005c ; inline -: key-keypad-5 HEX: 005d ; inline -: key-keypad-6 HEX: 005e ; inline -: key-keypad-7 HEX: 005f ; inline -: key-keypad-8 HEX: 0060 ; inline -: key-keypad-9 HEX: 0061 ; inline -: key-keypad-0 HEX: 0062 ; inline -: key-keypad-. HEX: 0063 ; inline -: key-\-non-us HEX: 0064 ; inline -: key-application HEX: 0065 ; inline -: key-power HEX: 0066 ; inline -: key-keypad-= HEX: 0067 ; inline -: key-f13 HEX: 0068 ; inline -: key-f14 HEX: 0069 ; inline -: key-f15 HEX: 006a ; inline -: key-f16 HEX: 006b ; inline -: key-f17 HEX: 006c ; inline -: key-f18 HEX: 006d ; inline -: key-f19 HEX: 006e ; inline -: key-f20 HEX: 006f ; inline -: key-f21 HEX: 0070 ; inline -: key-f22 HEX: 0071 ; inline -: key-f23 HEX: 0072 ; inline -: key-f24 HEX: 0073 ; inline -: key-execute HEX: 0074 ; inline -: key-help HEX: 0075 ; inline -: key-menu HEX: 0076 ; inline -: key-select HEX: 0077 ; inline -: key-stop HEX: 0078 ; inline -: key-again HEX: 0079 ; inline -: key-undo HEX: 007a ; inline -: key-cut HEX: 007b ; inline -: key-copy HEX: 007c ; inline -: key-paste HEX: 007d ; inline -: key-find HEX: 007e ; inline -: key-mute HEX: 007f ; inline -: key-volume-up HEX: 0080 ; inline -: key-volume-down HEX: 0081 ; inline -: key-locking-caps-lock HEX: 0082 ; inline -: key-locking-num-lock HEX: 0083 ; inline -: key-locking-scroll-lock HEX: 0084 ; inline -: key-keypad-, HEX: 0085 ; inline -: key-keypad-=-as-400 HEX: 0086 ; inline -: key-international-1 HEX: 0087 ; inline -: key-international-2 HEX: 0088 ; inline -: key-international-3 HEX: 0089 ; inline -: key-international-4 HEX: 008a ; inline -: key-international-5 HEX: 008b ; inline -: key-international-6 HEX: 008c ; inline -: key-international-7 HEX: 008d ; inline -: key-international-8 HEX: 008e ; inline -: key-international-9 HEX: 008f ; inline -: key-lang-1 HEX: 0090 ; inline -: key-lang-2 HEX: 0091 ; inline -: key-lang-3 HEX: 0092 ; inline -: key-lang-4 HEX: 0093 ; inline -: key-lang-5 HEX: 0094 ; inline -: key-lang-6 HEX: 0095 ; inline -: key-lang-7 HEX: 0096 ; inline -: key-lang-8 HEX: 0097 ; inline -: key-lang-9 HEX: 0098 ; inline -: key-alternate-erase HEX: 0099 ; inline -: key-sysreq HEX: 009a ; inline -: key-cancel HEX: 009b ; inline -: key-clear HEX: 009c ; inline -: key-prior HEX: 009d ; inline -: key-enter HEX: 009e ; inline -: key-separator HEX: 009f ; inline -: key-out HEX: 00a0 ; inline -: key-oper HEX: 00a1 ; inline -: key-clear-again HEX: 00a2 ; inline -: key-crsel-props HEX: 00a3 ; inline -: key-exsel HEX: 00a4 ; inline -: key-left-control HEX: 00e0 ; inline -: key-left-shift HEX: 00e1 ; inline -: key-left-alt HEX: 00e2 ; inline -: key-left-gui HEX: 00e3 ; inline -: key-right-control HEX: 00e4 ; inline -: key-right-shift HEX: 00e5 ; inline -: key-right-alt HEX: 00e6 ; inline -: key-right-gui HEX: 00e7 ; inline +CONSTANT: key-undefined HEX: 0000 +CONSTANT: key-error-roll-over HEX: 0001 +CONSTANT: key-error-post-fail HEX: 0002 +CONSTANT: key-error-undefined HEX: 0003 +CONSTANT: key-a HEX: 0004 +CONSTANT: key-b HEX: 0005 +CONSTANT: key-c HEX: 0006 +CONSTANT: key-d HEX: 0007 +CONSTANT: key-e HEX: 0008 +CONSTANT: key-f HEX: 0009 +CONSTANT: key-g HEX: 000a +CONSTANT: key-h HEX: 000b +CONSTANT: key-i HEX: 000c +CONSTANT: key-j HEX: 000d +CONSTANT: key-k HEX: 000e +CONSTANT: key-l HEX: 000f +CONSTANT: key-m HEX: 0010 +CONSTANT: key-n HEX: 0011 +CONSTANT: key-o HEX: 0012 +CONSTANT: key-p HEX: 0013 +CONSTANT: key-q HEX: 0014 +CONSTANT: key-r HEX: 0015 +CONSTANT: key-s HEX: 0016 +CONSTANT: key-t HEX: 0017 +CONSTANT: key-u HEX: 0018 +CONSTANT: key-v HEX: 0019 +CONSTANT: key-w HEX: 001a +CONSTANT: key-x HEX: 001b +CONSTANT: key-y HEX: 001c +CONSTANT: key-z HEX: 001d +CONSTANT: key-1 HEX: 001e +CONSTANT: key-2 HEX: 001f +CONSTANT: key-3 HEX: 0020 +CONSTANT: key-4 HEX: 0021 +CONSTANT: key-5 HEX: 0022 +CONSTANT: key-6 HEX: 0023 +CONSTANT: key-7 HEX: 0024 +CONSTANT: key-8 HEX: 0025 +CONSTANT: key-9 HEX: 0026 +CONSTANT: key-0 HEX: 0027 +CONSTANT: key-return HEX: 0028 +CONSTANT: key-escape HEX: 0029 +CONSTANT: key-backspace HEX: 002a +CONSTANT: key-tab HEX: 002b +CONSTANT: key-space HEX: 002c +CONSTANT: key-- HEX: 002d +CONSTANT: key-= HEX: 002e +CONSTANT: key-[ HEX: 002f +CONSTANT: key-] HEX: 0030 +CONSTANT: key-\ HEX: 0031 +CONSTANT: key-#-non-us HEX: 0032 +CONSTANT: key-; HEX: 0033 +CONSTANT: key-' HEX: 0034 +CONSTANT: key-` HEX: 0035 +CONSTANT: key-, HEX: 0036 +CONSTANT: key-. HEX: 0037 +CONSTANT: key-/ HEX: 0038 +CONSTANT: key-caps-lock HEX: 0039 +CONSTANT: key-f1 HEX: 003a +CONSTANT: key-f2 HEX: 003b +CONSTANT: key-f3 HEX: 003c +CONSTANT: key-f4 HEX: 003d +CONSTANT: key-f5 HEX: 003e +CONSTANT: key-f6 HEX: 003f +CONSTANT: key-f7 HEX: 0040 +CONSTANT: key-f8 HEX: 0041 +CONSTANT: key-f9 HEX: 0042 +CONSTANT: key-f10 HEX: 0043 +CONSTANT: key-f11 HEX: 0044 +CONSTANT: key-f12 HEX: 0045 +CONSTANT: key-print-screen HEX: 0046 +CONSTANT: key-scroll-lock HEX: 0047 +CONSTANT: key-pause HEX: 0048 +CONSTANT: key-insert HEX: 0049 +CONSTANT: key-home HEX: 004a +CONSTANT: key-page-up HEX: 004b +CONSTANT: key-delete HEX: 004c +CONSTANT: key-end HEX: 004d +CONSTANT: key-page-down HEX: 004e +CONSTANT: key-right-arrow HEX: 004f +CONSTANT: key-left-arrow HEX: 0050 +CONSTANT: key-down-arrow HEX: 0051 +CONSTANT: key-up-arrow HEX: 0052 +CONSTANT: key-keypad-numlock HEX: 0053 +CONSTANT: key-keypad-/ HEX: 0054 +CONSTANT: key-keypad-* HEX: 0055 +CONSTANT: key-keypad-- HEX: 0056 +CONSTANT: key-keypad-+ HEX: 0057 +CONSTANT: key-keypad-enter HEX: 0058 +CONSTANT: key-keypad-1 HEX: 0059 +CONSTANT: key-keypad-2 HEX: 005a +CONSTANT: key-keypad-3 HEX: 005b +CONSTANT: key-keypad-4 HEX: 005c +CONSTANT: key-keypad-5 HEX: 005d +CONSTANT: key-keypad-6 HEX: 005e +CONSTANT: key-keypad-7 HEX: 005f +CONSTANT: key-keypad-8 HEX: 0060 +CONSTANT: key-keypad-9 HEX: 0061 +CONSTANT: key-keypad-0 HEX: 0062 +CONSTANT: key-keypad-. HEX: 0063 +CONSTANT: key-\-non-us HEX: 0064 +CONSTANT: key-application HEX: 0065 +CONSTANT: key-power HEX: 0066 +CONSTANT: key-keypad-= HEX: 0067 +CONSTANT: key-f13 HEX: 0068 +CONSTANT: key-f14 HEX: 0069 +CONSTANT: key-f15 HEX: 006a +CONSTANT: key-f16 HEX: 006b +CONSTANT: key-f17 HEX: 006c +CONSTANT: key-f18 HEX: 006d +CONSTANT: key-f19 HEX: 006e +CONSTANT: key-f20 HEX: 006f +CONSTANT: key-f21 HEX: 0070 +CONSTANT: key-f22 HEX: 0071 +CONSTANT: key-f23 HEX: 0072 +CONSTANT: key-f24 HEX: 0073 +CONSTANT: key-execute HEX: 0074 +CONSTANT: key-help HEX: 0075 +CONSTANT: key-menu HEX: 0076 +CONSTANT: key-select HEX: 0077 +CONSTANT: key-stop HEX: 0078 +CONSTANT: key-again HEX: 0079 +CONSTANT: key-undo HEX: 007a +CONSTANT: key-cut HEX: 007b +CONSTANT: key-copy HEX: 007c +CONSTANT: key-paste HEX: 007d +CONSTANT: key-find HEX: 007e +CONSTANT: key-mute HEX: 007f +CONSTANT: key-volume-up HEX: 0080 +CONSTANT: key-volume-down HEX: 0081 +CONSTANT: key-locking-caps-lock HEX: 0082 +CONSTANT: key-locking-num-lock HEX: 0083 +CONSTANT: key-locking-scroll-lock HEX: 0084 +CONSTANT: key-keypad-, HEX: 0085 +CONSTANT: key-keypad-=-as-400 HEX: 0086 +CONSTANT: key-international-1 HEX: 0087 +CONSTANT: key-international-2 HEX: 0088 +CONSTANT: key-international-3 HEX: 0089 +CONSTANT: key-international-4 HEX: 008a +CONSTANT: key-international-5 HEX: 008b +CONSTANT: key-international-6 HEX: 008c +CONSTANT: key-international-7 HEX: 008d +CONSTANT: key-international-8 HEX: 008e +CONSTANT: key-international-9 HEX: 008f +CONSTANT: key-lang-1 HEX: 0090 +CONSTANT: key-lang-2 HEX: 0091 +CONSTANT: key-lang-3 HEX: 0092 +CONSTANT: key-lang-4 HEX: 0093 +CONSTANT: key-lang-5 HEX: 0094 +CONSTANT: key-lang-6 HEX: 0095 +CONSTANT: key-lang-7 HEX: 0096 +CONSTANT: key-lang-8 HEX: 0097 +CONSTANT: key-lang-9 HEX: 0098 +CONSTANT: key-alternate-erase HEX: 0099 +CONSTANT: key-sysreq HEX: 009a +CONSTANT: key-cancel HEX: 009b +CONSTANT: key-clear HEX: 009c +CONSTANT: key-prior HEX: 009d +CONSTANT: key-enter HEX: 009e +CONSTANT: key-separator HEX: 009f +CONSTANT: key-out HEX: 00a0 +CONSTANT: key-oper HEX: 00a1 +CONSTANT: key-clear-again HEX: 00a2 +CONSTANT: key-crsel-props HEX: 00a3 +CONSTANT: key-exsel HEX: 00a4 +CONSTANT: key-left-control HEX: 00e0 +CONSTANT: key-left-shift HEX: 00e1 +CONSTANT: key-left-alt HEX: 00e2 +CONSTANT: key-left-gui HEX: 00e3 +CONSTANT: key-right-control HEX: 00e4 +CONSTANT: key-right-shift HEX: 00e5 +CONSTANT: key-right-alt HEX: 00e6 +CONSTANT: key-right-gui HEX: 00e7 diff --git a/extra/infix/infix.factor b/extra/infix/infix.factor index 3e2ba49e3c..d39c0b3c2d 100644 --- a/extra/infix/infix.factor +++ b/extra/infix/infix.factor @@ -14,11 +14,8 @@ ERROR: local-not-defined name ; M: local-not-defined summary drop "local is not defined" ; -: at? ( key assoc -- value/key ? ) - dupd at* [ nip t ] [ drop f ] if ; - : >local-word ( string -- word ) - locals get at? [ local-not-defined ] unless ; + locals get ?at [ local-not-defined ] unless ; : select-op ( string -- word ) { diff --git a/extra/io/serial/serial.factor b/extra/io/serial/serial.factor index bcea984579..f7324acd05 100644 --- a/extra/io/serial/serial.factor +++ b/extra/io/serial/serial.factor @@ -14,8 +14,10 @@ M: invalid-baud summary ( invalid-baud -- string ) "Baud rate " " not supported" surround ; HOOK: lookup-baud os ( m -- n ) -HOOK: open-serial os ( serial -- stream ) +HOOK: open-serial os ( serial -- serial' ) +M: serial dispose ( serial -- ) stream>> dispose ; { { [ os unix? ] [ "io.serial.unix" ] } + { [ os windows? ] [ "io.serial.windows" ] } } cond require diff --git a/extra/io/serial/unix/bsd/bsd.factor b/extra/io/serial/unix/bsd/bsd.factor index b684190698..dbb013aca0 100644 --- a/extra/io/serial/unix/bsd/bsd.factor +++ b/extra/io/serial/unix/bsd/bsd.factor @@ -10,77 +10,77 @@ M: bsd lookup-baud ( m -- n ) 230400 460800 921600 } member? [ invalid-baud ] unless ; -: TCSANOW 0 ; inline -: TCSADRAIN 1 ; inline -: TCSAFLUSH 2 ; inline -: TCSASOFT HEX: 10 ; inline +CONSTANT: TCSANOW 0 +CONSTANT: TCSADRAIN 1 +CONSTANT: TCSAFLUSH 2 +CONSTANT: TCSASOFT HEX: 10 -: TCIFLUSH 1 ; inline -: TCOFLUSH 2 ; inline -: TCIOFLUSH 3 ; inline -: TCOOFF 1 ; inline -: TCOON 2 ; inline -: TCIOFF 3 ; inline -: TCION 4 ; inline +CONSTANT: TCIFLUSH 1 +CONSTANT: TCOFLUSH 2 +CONSTANT: TCIOFLUSH 3 +CONSTANT: TCOOFF 1 +CONSTANT: TCOON 2 +CONSTANT: TCIOFF 3 +CONSTANT: TCION 4 ! iflags -: IGNBRK HEX: 00000001 ; inline -: BRKINT HEX: 00000002 ; inline -: IGNPAR HEX: 00000004 ; inline -: PARMRK HEX: 00000008 ; inline -: INPCK HEX: 00000010 ; inline -: ISTRIP HEX: 00000020 ; inline -: INLCR HEX: 00000040 ; inline -: IGNCR HEX: 00000080 ; inline -: ICRNL HEX: 00000100 ; inline -: IXON HEX: 00000200 ; inline -: IXOFF HEX: 00000400 ; inline -: IXANY HEX: 00000800 ; inline -: IMAXBEL HEX: 00002000 ; inline -: IUTF8 HEX: 00004000 ; inline +CONSTANT: IGNBRK HEX: 00000001 +CONSTANT: BRKINT HEX: 00000002 +CONSTANT: IGNPAR HEX: 00000004 +CONSTANT: PARMRK HEX: 00000008 +CONSTANT: INPCK HEX: 00000010 +CONSTANT: ISTRIP HEX: 00000020 +CONSTANT: INLCR HEX: 00000040 +CONSTANT: IGNCR HEX: 00000080 +CONSTANT: ICRNL HEX: 00000100 +CONSTANT: IXON HEX: 00000200 +CONSTANT: IXOFF HEX: 00000400 +CONSTANT: IXANY HEX: 00000800 +CONSTANT: IMAXBEL HEX: 00002000 +CONSTANT: IUTF8 HEX: 00004000 ! oflags -: OPOST HEX: 00000001 ; inline -: ONLCR HEX: 00000002 ; inline -: OXTABS HEX: 00000004 ; inline -: ONOEOT HEX: 00000008 ; inline +CONSTANT: OPOST HEX: 00000001 +CONSTANT: ONLCR HEX: 00000002 +CONSTANT: OXTABS HEX: 00000004 +CONSTANT: ONOEOT HEX: 00000008 ! cflags -: CIGNORE HEX: 00000001 ; inline -: CSIZE HEX: 00000300 ; inline -: CS5 HEX: 00000000 ; inline -: CS6 HEX: 00000100 ; inline -: CS7 HEX: 00000200 ; inline -: CS8 HEX: 00000300 ; inline -: CSTOPB HEX: 00000400 ; inline -: CREAD HEX: 00000800 ; inline -: PARENB HEX: 00001000 ; inline -: PARODD HEX: 00002000 ; inline -: HUPCL HEX: 00004000 ; inline -: CLOCAL HEX: 00008000 ; inline -: CCTS_OFLOW HEX: 00010000 ; inline -: CRTS_IFLOW HEX: 00020000 ; inline -: CRTSCTS { CCTS_OFLOW CRTS_IFLOW } flags ; inline -: CDTR_IFLOW HEX: 00040000 ; inline -: CDSR_OFLOW HEX: 00080000 ; inline -: CCAR_OFLOW HEX: 00100000 ; inline -: MDMBUF HEX: 00100000 ; inline +CONSTANT: CIGNORE HEX: 00000001 +CONSTANT: CSIZE HEX: 00000300 +CONSTANT: CS5 HEX: 00000000 +CONSTANT: CS6 HEX: 00000100 +CONSTANT: CS7 HEX: 00000200 +CONSTANT: CS8 HEX: 00000300 +CONSTANT: CSTOPB HEX: 00000400 +CONSTANT: CREAD HEX: 00000800 +CONSTANT: PARENB HEX: 00001000 +CONSTANT: PARODD HEX: 00002000 +CONSTANT: HUPCL HEX: 00004000 +CONSTANT: CLOCAL HEX: 00008000 +CONSTANT: CCTS_OFLOW HEX: 00010000 +CONSTANT: CRTS_IFLOW HEX: 00020000 +: CRTSCTS ( -- n ) { CCTS_OFLOW CRTS_IFLOW } flags ; inline +CONSTANT: CDTR_IFLOW HEX: 00040000 +CONSTANT: CDSR_OFLOW HEX: 00080000 +CONSTANT: CCAR_OFLOW HEX: 00100000 +CONSTANT: MDMBUF HEX: 00100000 ! lflags -: ECHOKE HEX: 00000001 ; inline -: ECHOE HEX: 00000002 ; inline -: ECHOK HEX: 00000004 ; inline -: ECHO HEX: 00000008 ; inline -: ECHONL HEX: 00000010 ; inline -: ECHOPRT HEX: 00000020 ; inline -: ECHOCTL HEX: 00000040 ; inline -: ISIG HEX: 00000080 ; inline -: ICANON HEX: 00000100 ; inline -: ALTWERASE HEX: 00000200 ; inline -: IEXTEN HEX: 00000400 ; inline -: EXTPROC HEX: 00000800 ; inline -: TOSTOP HEX: 00400000 ; inline -: FLUSHO HEX: 00800000 ; inline -: NOKERNINFO HEX: 02000000 ; inline -: PENDIN HEX: 20000000 ; inline -: NOFLSH HEX: 80000000 ; inline +CONSTANT: ECHOKE HEX: 00000001 +CONSTANT: ECHOE HEX: 00000002 +CONSTANT: ECHOK HEX: 00000004 +CONSTANT: ECHO HEX: 00000008 +CONSTANT: ECHONL HEX: 00000010 +CONSTANT: ECHOPRT HEX: 00000020 +CONSTANT: ECHOCTL HEX: 00000040 +CONSTANT: ISIG HEX: 00000080 +CONSTANT: ICANON HEX: 00000100 +CONSTANT: ALTWERASE HEX: 00000200 +CONSTANT: IEXTEN HEX: 00000400 +CONSTANT: EXTPROC HEX: 00000800 +CONSTANT: TOSTOP HEX: 00400000 +CONSTANT: FLUSHO HEX: 00800000 +CONSTANT: NOKERNINFO HEX: 02000000 +CONSTANT: PENDIN HEX: 20000000 +CONSTANT: NOFLSH HEX: 80000000 diff --git a/extra/io/serial/unix/linux/linux.factor b/extra/io/serial/unix/linux/linux.factor index 342ff4499f..4d1878d2a9 100644 --- a/extra/io/serial/unix/linux/linux.factor +++ b/extra/io/serial/unix/linux/linux.factor @@ -3,96 +3,96 @@ USING: assocs alien.syntax kernel io.serial system unix ; IN: io.serial.unix -: TCSANOW 0 ; inline -: TCSADRAIN 1 ; inline -: TCSAFLUSH 2 ; inline +CONSTANT: TCSANOW 0 +CONSTANT: TCSADRAIN 1 +CONSTANT: TCSAFLUSH 2 -: TCIFLUSH 0 ; inline -: TCOFLUSH 1 ; inline -: TCIOFLUSH 2 ; inline +CONSTANT: TCIFLUSH 0 +CONSTANT: TCOFLUSH 1 +CONSTANT: TCIOFLUSH 2 -: TCOOFF 0 ; inline -: TCOON 1 ; inline -: TCIOFF 2 ; inline -: TCION 3 ; inline +CONSTANT: TCOOFF 0 +CONSTANT: TCOON 1 +CONSTANT: TCIOFF 2 +CONSTANT: TCION 3 ! iflag -: IGNBRK OCT: 0000001 ; inline -: BRKINT OCT: 0000002 ; inline -: IGNPAR OCT: 0000004 ; inline -: PARMRK OCT: 0000010 ; inline -: INPCK OCT: 0000020 ; inline -: ISTRIP OCT: 0000040 ; inline -: INLCR OCT: 0000100 ; inline -: IGNCR OCT: 0000200 ; inline -: ICRNL OCT: 0000400 ; inline -: IUCLC OCT: 0001000 ; inline -: IXON OCT: 0002000 ; inline -: IXANY OCT: 0004000 ; inline -: IXOFF OCT: 0010000 ; inline -: IMAXBEL OCT: 0020000 ; inline -: IUTF8 OCT: 0040000 ; inline +CONSTANT: IGNBRK OCT: 0000001 +CONSTANT: BRKINT OCT: 0000002 +CONSTANT: IGNPAR OCT: 0000004 +CONSTANT: PARMRK OCT: 0000010 +CONSTANT: INPCK OCT: 0000020 +CONSTANT: ISTRIP OCT: 0000040 +CONSTANT: INLCR OCT: 0000100 +CONSTANT: IGNCR OCT: 0000200 +CONSTANT: ICRNL OCT: 0000400 +CONSTANT: IUCLC OCT: 0001000 +CONSTANT: IXON OCT: 0002000 +CONSTANT: IXANY OCT: 0004000 +CONSTANT: IXOFF OCT: 0010000 +CONSTANT: IMAXBEL OCT: 0020000 +CONSTANT: IUTF8 OCT: 0040000 ! oflag -: OPOST OCT: 0000001 ; inline -: OLCUC OCT: 0000002 ; inline -: ONLCR OCT: 0000004 ; inline -: OCRNL OCT: 0000010 ; inline -: ONOCR OCT: 0000020 ; inline -: ONLRET OCT: 0000040 ; inline -: OFILL OCT: 0000100 ; inline -: OFDEL OCT: 0000200 ; inline -: NLDLY OCT: 0000400 ; inline -: NL0 OCT: 0000000 ; inline -: NL1 OCT: 0000400 ; inline -: CRDLY OCT: 0003000 ; inline -: CR0 OCT: 0000000 ; inline -: CR1 OCT: 0001000 ; inline -: CR2 OCT: 0002000 ; inline -: CR3 OCT: 0003000 ; inline -: TABDLY OCT: 0014000 ; inline -: TAB0 OCT: 0000000 ; inline -: TAB1 OCT: 0004000 ; inline -: TAB2 OCT: 0010000 ; inline -: TAB3 OCT: 0014000 ; inline -: BSDLY OCT: 0020000 ; inline -: BS0 OCT: 0000000 ; inline -: BS1 OCT: 0020000 ; inline -: FFDLY OCT: 0100000 ; inline -: FF0 OCT: 0000000 ; inline -: FF1 OCT: 0100000 ; inline +CONSTANT: OPOST OCT: 0000001 +CONSTANT: OLCUC OCT: 0000002 +CONSTANT: ONLCR OCT: 0000004 +CONSTANT: OCRNL OCT: 0000010 +CONSTANT: ONOCR OCT: 0000020 +CONSTANT: ONLRET OCT: 0000040 +CONSTANT: OFILL OCT: 0000100 +CONSTANT: OFDEL OCT: 0000200 +CONSTANT: NLDLY OCT: 0000400 +CONSTANT: NL0 OCT: 0000000 +CONSTANT: NL1 OCT: 0000400 +CONSTANT: CRDLY OCT: 0003000 +CONSTANT: CR0 OCT: 0000000 +CONSTANT: CR1 OCT: 0001000 +CONSTANT: CR2 OCT: 0002000 +CONSTANT: CR3 OCT: 0003000 +CONSTANT: TABDLY OCT: 0014000 +CONSTANT: TAB0 OCT: 0000000 +CONSTANT: TAB1 OCT: 0004000 +CONSTANT: TAB2 OCT: 0010000 +CONSTANT: TAB3 OCT: 0014000 +CONSTANT: BSDLY OCT: 0020000 +CONSTANT: BS0 OCT: 0000000 +CONSTANT: BS1 OCT: 0020000 +CONSTANT: FFDLY OCT: 0100000 +CONSTANT: FF0 OCT: 0000000 +CONSTANT: FF1 OCT: 0100000 ! cflags -: CSIZE OCT: 0000060 ; inline -: CS5 OCT: 0000000 ; inline -: CS6 OCT: 0000020 ; inline -: CS7 OCT: 0000040 ; inline -: CS8 OCT: 0000060 ; inline -: CSTOPB OCT: 0000100 ; inline -: CREAD OCT: 0000200 ; inline -: PARENB OCT: 0000400 ; inline -: PARODD OCT: 0001000 ; inline -: HUPCL OCT: 0002000 ; inline -: CLOCAL OCT: 0004000 ; inline -: CIBAUD OCT: 002003600000 ; inline -: CRTSCTS OCT: 020000000000 ; inline +CONSTANT: CSIZE OCT: 0000060 +CONSTANT: CS5 OCT: 0000000 +CONSTANT: CS6 OCT: 0000020 +CONSTANT: CS7 OCT: 0000040 +CONSTANT: CS8 OCT: 0000060 +CONSTANT: CSTOPB OCT: 0000100 +CONSTANT: CREAD OCT: 0000200 +CONSTANT: PARENB OCT: 0000400 +CONSTANT: PARODD OCT: 0001000 +CONSTANT: HUPCL OCT: 0002000 +CONSTANT: CLOCAL OCT: 0004000 +CONSTANT: CIBAUD OCT: 002003600000 +CONSTANT: CRTSCTS OCT: 020000000000 ! lflags -: ISIG OCT: 0000001 ; inline -: ICANON OCT: 0000002 ; inline -: XCASE OCT: 0000004 ; inline -: ECHO OCT: 0000010 ; inline -: ECHOE OCT: 0000020 ; inline -: ECHOK OCT: 0000040 ; inline -: ECHONL OCT: 0000100 ; inline -: NOFLSH OCT: 0000200 ; inline -: TOSTOP OCT: 0000400 ; inline -: ECHOCTL OCT: 0001000 ; inline -: ECHOPRT OCT: 0002000 ; inline -: ECHOKE OCT: 0004000 ; inline -: FLUSHO OCT: 0010000 ; inline -: PENDIN OCT: 0040000 ; inline -: IEXTEN OCT: 0100000 ; inline +CONSTANT: ISIG OCT: 0000001 +CONSTANT: ICANON OCT: 0000002 +CONSTANT: XCASE OCT: 0000004 +CONSTANT: ECHO OCT: 0000010 +CONSTANT: ECHOE OCT: 0000020 +CONSTANT: ECHOK OCT: 0000040 +CONSTANT: ECHONL OCT: 0000100 +CONSTANT: NOFLSH OCT: 0000200 +CONSTANT: TOSTOP OCT: 0000400 +CONSTANT: ECHOCTL OCT: 0001000 +CONSTANT: ECHOPRT OCT: 0002000 +CONSTANT: ECHOKE OCT: 0004000 +CONSTANT: FLUSHO OCT: 0010000 +CONSTANT: PENDIN OCT: 0040000 +CONSTANT: IEXTEN OCT: 0100000 M: linux lookup-baud ( n -- n ) dup H{ @@ -127,4 +127,4 @@ M: linux lookup-baud ( n -- n ) { 3000000 OCT: 0010015 } { 3500000 OCT: 0010016 } { 4000000 OCT: 0010017 } - } at* [ nip ] [ drop invalid-baud ] if ; + } ?at [ invalid-baud ] unless ; diff --git a/extra/io/serial/unix/termios/bsd/bsd.factor b/extra/io/serial/unix/termios/bsd/bsd.factor index 414ec98438..63d0157780 100644 --- a/extra/io/serial/unix/termios/bsd/bsd.factor +++ b/extra/io/serial/unix/termios/bsd/bsd.factor @@ -3,7 +3,7 @@ USING: alien.syntax kernel sequences system ; IN: io.serial.unix.termios -: NCCS 20 ; inline +CONSTANT: NCCS 20 TYPEDEF: uint tcflag_t TYPEDEF: uchar cc_t diff --git a/extra/io/serial/unix/termios/linux/linux.factor b/extra/io/serial/unix/termios/linux/linux.factor index c7da10a6f5..4b8c52c7fb 100644 --- a/extra/io/serial/unix/termios/linux/linux.factor +++ b/extra/io/serial/unix/termios/linux/linux.factor @@ -3,7 +3,7 @@ USING: alien.syntax kernel system unix ; IN: io.serial.unix.termios -: NCCS 32 ; inline +CONSTANT: NCCS 32 TYPEDEF: uchar cc_t TYPEDEF: uint speed_t diff --git a/extra/io/serial/unix/unix-tests.factor b/extra/io/serial/unix/unix-tests.factor index 6dd056feb5..e9b8d78e4b 100644 --- a/extra/io/serial/unix/unix-tests.factor +++ b/extra/io/serial/unix/unix-tests.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors kernel math.bitwise serial serial.unix ; +USING: accessors kernel math.bitwise io.serial io.serial.unix ; IN: io.serial.unix : serial-obj ( -- obj ) diff --git a/extra/io/serial/unix/unix.factor b/extra/io/serial/unix/unix.factor index 1da6385f96..1ba8031dfc 100644 --- a/extra/io/serial/unix/unix.factor +++ b/extra/io/serial/unix/unix.factor @@ -1,8 +1,8 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien.c-types alien.syntax combinators io.ports -io.streams.duplex io.unix.backend system kernel math math.bitwise -vocabs.loader unix io.serial io.serial.unix.termios ; +io.streams.duplex system kernel math math.bitwise +vocabs.loader unix io.serial io.serial.unix.termios io.backend.unix ; IN: io.serial.unix << { @@ -31,8 +31,9 @@ FUNCTION: int cfsetspeed ( termios* t, speed_t s ) ; : ( path -- stream ) open-rw fd>duplex-stream ; M: unix open-serial ( serial -- serial' ) + dup path>> { O_RDWR O_NOCTTY O_NDELAY } flags file-mode open-file - fd>duplex-stream ; + fd>duplex-stream >>stream ; : serial-fd ( serial -- fd ) stream>> in>> handle>> fd>> ; diff --git a/extra/serial/windows/authors.txt b/extra/io/serial/windows/authors.txt similarity index 100% rename from extra/serial/windows/authors.txt rename to extra/io/serial/windows/authors.txt diff --git a/extra/serial/tags.txt b/extra/io/serial/windows/tags.txt similarity index 100% rename from extra/serial/tags.txt rename to extra/io/serial/windows/tags.txt diff --git a/extra/serial/windows/windows.factor b/extra/io/serial/windows/windows.factor similarity index 96% rename from extra/serial/windows/windows.factor rename to extra/io/serial/windows/windows.factor index a80366cb9f..2d27a489ef 100755 --- a/extra/serial/windows/windows.factor +++ b/extra/io/serial/windows/windows.factor @@ -3,7 +3,7 @@ USING: io.files.windows io.streams.duplex kernel math math.bitwise windows.kernel32 accessors alien.c-types windows io.files.windows fry locals continuations ; -IN: serial.windows +IN: io.serial.windows : ( path encoding -- duplex ) [ open-r/w dup ] dip ; diff --git a/extra/iokit/hid/hid.factor b/extra/iokit/hid/hid.factor index 465c55c833..cd9eea1409 100644 --- a/extra/iokit/hid/hid.factor +++ b/extra/iokit/hid/hid.factor @@ -2,117 +2,117 @@ USING: iokit alien alien.syntax alien.c-types kernel system core-foundation ; IN: iokit.hid -: kIOHIDDeviceKey "IOHIDDevice" ; inline +CONSTANT: kIOHIDDeviceKey "IOHIDDevice" -: kIOHIDTransportKey "Transport" ; inline -: kIOHIDVendorIDKey "VendorID" ; inline -: kIOHIDVendorIDSourceKey "VendorIDSource" ; inline -: kIOHIDProductIDKey "ProductID" ; inline -: kIOHIDVersionNumberKey "VersionNumber" ; inline -: kIOHIDManufacturerKey "Manufacturer" ; inline -: kIOHIDProductKey "Product" ; inline -: kIOHIDSerialNumberKey "SerialNumber" ; inline -: kIOHIDCountryCodeKey "CountryCode" ; inline -: kIOHIDLocationIDKey "LocationID" ; inline -: kIOHIDDeviceUsageKey "DeviceUsage" ; inline -: kIOHIDDeviceUsagePageKey "DeviceUsagePage" ; inline -: kIOHIDDeviceUsagePairsKey "DeviceUsagePairs" ; inline -: kIOHIDPrimaryUsageKey "PrimaryUsage" ; inline -: kIOHIDPrimaryUsagePageKey "PrimaryUsagePage" ; inline -: kIOHIDMaxInputReportSizeKey "MaxInputReportSize" ; inline -: kIOHIDMaxOutputReportSizeKey "MaxOutputReportSize" ; inline -: kIOHIDMaxFeatureReportSizeKey "MaxFeatureReportSize" ; inline -: kIOHIDReportIntervalKey "ReportInterval" ; inline +CONSTANT: kIOHIDTransportKey "Transport" +CONSTANT: kIOHIDVendorIDKey "VendorID" +CONSTANT: kIOHIDVendorIDSourceKey "VendorIDSource" +CONSTANT: kIOHIDProductIDKey "ProductID" +CONSTANT: kIOHIDVersionNumberKey "VersionNumber" +CONSTANT: kIOHIDManufacturerKey "Manufacturer" +CONSTANT: kIOHIDProductKey "Product" +CONSTANT: kIOHIDSerialNumberKey "SerialNumber" +CONSTANT: kIOHIDCountryCodeKey "CountryCode" +CONSTANT: kIOHIDLocationIDKey "LocationID" +CONSTANT: kIOHIDDeviceUsageKey "DeviceUsage" +CONSTANT: kIOHIDDeviceUsagePageKey "DeviceUsagePage" +CONSTANT: kIOHIDDeviceUsagePairsKey "DeviceUsagePairs" +CONSTANT: kIOHIDPrimaryUsageKey "PrimaryUsage" +CONSTANT: kIOHIDPrimaryUsagePageKey "PrimaryUsagePage" +CONSTANT: kIOHIDMaxInputReportSizeKey "MaxInputReportSize" +CONSTANT: kIOHIDMaxOutputReportSizeKey "MaxOutputReportSize" +CONSTANT: kIOHIDMaxFeatureReportSizeKey "MaxFeatureReportSize" +CONSTANT: kIOHIDReportIntervalKey "ReportInterval" -: kIOHIDElementKey "Elements" ; inline +CONSTANT: kIOHIDElementKey "Elements" -: kIOHIDElementCookieKey "ElementCookie" ; inline -: kIOHIDElementTypeKey "Type" ; inline -: kIOHIDElementCollectionTypeKey "CollectionType" ; inline -: kIOHIDElementUsageKey "Usage" ; inline -: kIOHIDElementUsagePageKey "UsagePage" ; inline -: kIOHIDElementMinKey "Min" ; inline -: kIOHIDElementMaxKey "Max" ; inline -: kIOHIDElementScaledMinKey "ScaledMin" ; inline -: kIOHIDElementScaledMaxKey "ScaledMax" ; inline -: kIOHIDElementSizeKey "Size" ; inline -: kIOHIDElementReportSizeKey "ReportSize" ; inline -: kIOHIDElementReportCountKey "ReportCount" ; inline -: kIOHIDElementReportIDKey "ReportID" ; inline -: kIOHIDElementIsArrayKey "IsArray" ; inline -: kIOHIDElementIsRelativeKey "IsRelative" ; inline -: kIOHIDElementIsWrappingKey "IsWrapping" ; inline -: kIOHIDElementIsNonLinearKey "IsNonLinear" ; inline -: kIOHIDElementHasPreferredStateKey "HasPreferredState" ; inline -: kIOHIDElementHasNullStateKey "HasNullState" ; inline -: kIOHIDElementFlagsKey "Flags" ; inline -: kIOHIDElementUnitKey "Unit" ; inline -: kIOHIDElementUnitExponentKey "UnitExponent" ; inline -: kIOHIDElementNameKey "Name" ; inline -: kIOHIDElementValueLocationKey "ValueLocation" ; inline -: kIOHIDElementDuplicateIndexKey "DuplicateIndex" ; inline -: kIOHIDElementParentCollectionKey "ParentCollection" ; inline +CONSTANT: kIOHIDElementCookieKey "ElementCookie" +CONSTANT: kIOHIDElementTypeKey "Type" +CONSTANT: kIOHIDElementCollectionTypeKey "CollectionType" +CONSTANT: kIOHIDElementUsageKey "Usage" +CONSTANT: kIOHIDElementUsagePageKey "UsagePage" +CONSTANT: kIOHIDElementMinKey "Min" +CONSTANT: kIOHIDElementMaxKey "Max" +CONSTANT: kIOHIDElementScaledMinKey "ScaledMin" +CONSTANT: kIOHIDElementScaledMaxKey "ScaledMax" +CONSTANT: kIOHIDElementSizeKey "Size" +CONSTANT: kIOHIDElementReportSizeKey "ReportSize" +CONSTANT: kIOHIDElementReportCountKey "ReportCount" +CONSTANT: kIOHIDElementReportIDKey "ReportID" +CONSTANT: kIOHIDElementIsArrayKey "IsArray" +CONSTANT: kIOHIDElementIsRelativeKey "IsRelative" +CONSTANT: kIOHIDElementIsWrappingKey "IsWrapping" +CONSTANT: kIOHIDElementIsNonLinearKey "IsNonLinear" +CONSTANT: kIOHIDElementHasPreferredStateKey "HasPreferredState" +CONSTANT: kIOHIDElementHasNullStateKey "HasNullState" +CONSTANT: kIOHIDElementFlagsKey "Flags" +CONSTANT: kIOHIDElementUnitKey "Unit" +CONSTANT: kIOHIDElementUnitExponentKey "UnitExponent" +CONSTANT: kIOHIDElementNameKey "Name" +CONSTANT: kIOHIDElementValueLocationKey "ValueLocation" +CONSTANT: kIOHIDElementDuplicateIndexKey "DuplicateIndex" +CONSTANT: kIOHIDElementParentCollectionKey "ParentCollection" : kIOHIDElementVendorSpecificKey ( -- str ) cpu ppc? "VendorSpecifc" "VendorSpecific" ? ; inline -: kIOHIDElementCookieMinKey "ElementCookieMin" ; inline -: kIOHIDElementCookieMaxKey "ElementCookieMax" ; inline -: kIOHIDElementUsageMinKey "UsageMin" ; inline -: kIOHIDElementUsageMaxKey "UsageMax" ; inline +CONSTANT: kIOHIDElementCookieMinKey "ElementCookieMin" +CONSTANT: kIOHIDElementCookieMaxKey "ElementCookieMax" +CONSTANT: kIOHIDElementUsageMinKey "UsageMin" +CONSTANT: kIOHIDElementUsageMaxKey "UsageMax" -: kIOHIDElementCalibrationMinKey "CalibrationMin" ; inline -: kIOHIDElementCalibrationMaxKey "CalibrationMax" ; inline -: kIOHIDElementCalibrationSaturationMinKey "CalibrationSaturationMin" ; inline -: kIOHIDElementCalibrationSaturationMaxKey "CalibrationSaturationMax" ; inline -: kIOHIDElementCalibrationDeadZoneMinKey "CalibrationDeadZoneMin" ; inline -: kIOHIDElementCalibrationDeadZoneMaxKey "CalibrationDeadZoneMax" ; inline -: kIOHIDElementCalibrationGranularityKey "CalibrationGranularity" ; inline +CONSTANT: kIOHIDElementCalibrationMinKey "CalibrationMin" +CONSTANT: kIOHIDElementCalibrationMaxKey "CalibrationMax" +CONSTANT: kIOHIDElementCalibrationSaturationMinKey "CalibrationSaturationMin" +CONSTANT: kIOHIDElementCalibrationSaturationMaxKey "CalibrationSaturationMax" +CONSTANT: kIOHIDElementCalibrationDeadZoneMinKey "CalibrationDeadZoneMin" +CONSTANT: kIOHIDElementCalibrationDeadZoneMaxKey "CalibrationDeadZoneMax" +CONSTANT: kIOHIDElementCalibrationGranularityKey "CalibrationGranularity" -: kIOHIDElementTypeInput_Misc 1 ; inline -: kIOHIDElementTypeInput_Button 2 ; inline -: kIOHIDElementTypeInput_Axis 3 ; inline -: kIOHIDElementTypeInput_ScanCodes 4 ; inline -: kIOHIDElementTypeOutput 129 ; inline -: kIOHIDElementTypeFeature 257 ; inline -: kIOHIDElementTypeCollection 513 ; inline +CONSTANT: kIOHIDElementTypeInput_Misc 1 +CONSTANT: kIOHIDElementTypeInput_Button 2 +CONSTANT: kIOHIDElementTypeInput_Axis 3 +CONSTANT: kIOHIDElementTypeInput_ScanCodes 4 +CONSTANT: kIOHIDElementTypeOutput 129 +CONSTANT: kIOHIDElementTypeFeature 257 +CONSTANT: kIOHIDElementTypeCollection 513 -: kIOHIDElementCollectionTypePhysical HEX: 00 ; inline -: kIOHIDElementCollectionTypeApplication HEX: 01 ; inline -: kIOHIDElementCollectionTypeLogical HEX: 02 ; inline -: kIOHIDElementCollectionTypeReport HEX: 03 ; inline -: kIOHIDElementCollectionTypeNamedArray HEX: 04 ; inline -: kIOHIDElementCollectionTypeUsageSwitch HEX: 05 ; inline -: kIOHIDElementCollectionTypeUsageModifier HEX: 06 ; inline +CONSTANT: kIOHIDElementCollectionTypePhysical HEX: 00 +CONSTANT: kIOHIDElementCollectionTypeApplication HEX: 01 +CONSTANT: kIOHIDElementCollectionTypeLogical HEX: 02 +CONSTANT: kIOHIDElementCollectionTypeReport HEX: 03 +CONSTANT: kIOHIDElementCollectionTypeNamedArray HEX: 04 +CONSTANT: kIOHIDElementCollectionTypeUsageSwitch HEX: 05 +CONSTANT: kIOHIDElementCollectionTypeUsageModifier HEX: 06 -: kIOHIDReportTypeInput 0 ; inline -: kIOHIDReportTypeOutput 1 ; inline -: kIOHIDReportTypeFeature 2 ; inline -: kIOHIDReportTypeCount 3 ; inline +CONSTANT: kIOHIDReportTypeInput 0 +CONSTANT: kIOHIDReportTypeOutput 1 +CONSTANT: kIOHIDReportTypeFeature 2 +CONSTANT: kIOHIDReportTypeCount 3 -: kIOHIDOptionsTypeNone HEX: 00 ; inline -: kIOHIDOptionsTypeSeizeDevice HEX: 01 ; inline +CONSTANT: kIOHIDOptionsTypeNone HEX: 00 +CONSTANT: kIOHIDOptionsTypeSeizeDevice HEX: 01 -: kIOHIDQueueOptionsTypeNone HEX: 00 ; inline -: kIOHIDQueueOptionsTypeEnqueueAll HEX: 01 ; inline +CONSTANT: kIOHIDQueueOptionsTypeNone HEX: 00 +CONSTANT: kIOHIDQueueOptionsTypeEnqueueAll HEX: 01 -: kIOHIDElementFlagsConstantMask HEX: 0001 ; inline -: kIOHIDElementFlagsVariableMask HEX: 0002 ; inline -: kIOHIDElementFlagsRelativeMask HEX: 0004 ; inline -: kIOHIDElementFlagsWrapMask HEX: 0008 ; inline -: kIOHIDElementFlagsNonLinearMask HEX: 0010 ; inline -: kIOHIDElementFlagsNoPreferredMask HEX: 0020 ; inline -: kIOHIDElementFlagsNullStateMask HEX: 0040 ; inline -: kIOHIDElementFlagsVolativeMask HEX: 0080 ; inline -: kIOHIDElementFlagsBufferedByteMask HEX: 0100 ; inline +CONSTANT: kIOHIDElementFlagsConstantMask HEX: 0001 +CONSTANT: kIOHIDElementFlagsVariableMask HEX: 0002 +CONSTANT: kIOHIDElementFlagsRelativeMask HEX: 0004 +CONSTANT: kIOHIDElementFlagsWrapMask HEX: 0008 +CONSTANT: kIOHIDElementFlagsNonLinearMask HEX: 0010 +CONSTANT: kIOHIDElementFlagsNoPreferredMask HEX: 0020 +CONSTANT: kIOHIDElementFlagsNullStateMask HEX: 0040 +CONSTANT: kIOHIDElementFlagsVolativeMask HEX: 0080 +CONSTANT: kIOHIDElementFlagsBufferedByteMask HEX: 0100 -: kIOHIDValueScaleTypeCalibrated 0 ; inline -: kIOHIDValueScaleTypePhysical 1 ; inline +CONSTANT: kIOHIDValueScaleTypeCalibrated 0 +CONSTANT: kIOHIDValueScaleTypePhysical 1 -: kIOHIDTransactionDirectionTypeInput 0 ; inline -: kIOHIDTransactionDirectionTypeOutput 1 ; inline +CONSTANT: kIOHIDTransactionDirectionTypeInput 0 +CONSTANT: kIOHIDTransactionDirectionTypeOutput 1 -: kIOHIDTransactionOptionDefaultOutputValue 1 ; inline +CONSTANT: kIOHIDTransactionOptionDefaultOutputValue 1 TYPEDEF: ptrdiff_t IOHIDElementCookie TYPEDEF: int IOHIDElementType diff --git a/extra/iokit/iokit.factor b/extra/iokit/iokit.factor index 2317d21ed5..3fb14e8ec5 100755 --- a/extra/iokit/iokit.factor +++ b/extra/iokit/iokit.factor @@ -9,95 +9,95 @@ IN: iokit when >> -: kIOKitBuildVersionKey "IOKitBuildVersion" ; inline -: kIOKitDiagnosticsKey "IOKitDiagnostics" ; inline +CONSTANT: kIOKitBuildVersionKey "IOKitBuildVersion" +CONSTANT: kIOKitDiagnosticsKey "IOKitDiagnostics" -: kIORegistryPlanesKey "IORegistryPlanes" ; inline -: kIOCatalogueKey "IOCatalogue" ; inline +CONSTANT: kIORegistryPlanesKey "IORegistryPlanes" +CONSTANT: kIOCatalogueKey "IOCatalogue" -: kIOServicePlane "IOService" ; inline -: kIOPowerPlane "IOPower" ; inline -: kIODeviceTreePlane "IODeviceTree" ; inline -: kIOAudioPlane "IOAudio" ; inline -: kIOFireWirePlane "IOFireWire" ; inline -: kIOUSBPlane "IOUSB" ; inline +CONSTANT: kIOServicePlane "IOService" +CONSTANT: kIOPowerPlane "IOPower" +CONSTANT: kIODeviceTreePlane "IODeviceTree" +CONSTANT: kIOAudioPlane "IOAudio" +CONSTANT: kIOFireWirePlane "IOFireWire" +CONSTANT: kIOUSBPlane "IOUSB" -: kIOServiceClass "IOService" ; inline +CONSTANT: kIOServiceClass "IOService" -: kIOResourcesClass "IOResources" ; inline +CONSTANT: kIOResourcesClass "IOResources" -: kIOClassKey "IOClass" ; inline -: kIOProbeScoreKey "IOProbeScore" ; inline -: kIOKitDebugKey "IOKitDebug" ; inline +CONSTANT: kIOClassKey "IOClass" +CONSTANT: kIOProbeScoreKey "IOProbeScore" +CONSTANT: kIOKitDebugKey "IOKitDebug" -: kIOProviderClassKey "IOProviderClass" ; inline -: kIONameMatchKey "IONameMatch" ; inline -: kIOPropertyMatchKey "IOPropertyMatch" ; inline -: kIOPathMatchKey "IOPathMatch" ; inline -: kIOLocationMatchKey "IOLocationMatch" ; inline -: kIOParentMatchKey "IOParentMatch" ; inline -: kIOResourceMatchKey "IOResourceMatch" ; inline -: kIOMatchedServiceCountKey "IOMatchedServiceCountMatch" ; inline +CONSTANT: kIOProviderClassKey "IOProviderClass" +CONSTANT: kIONameMatchKey "IONameMatch" +CONSTANT: kIOPropertyMatchKey "IOPropertyMatch" +CONSTANT: kIOPathMatchKey "IOPathMatch" +CONSTANT: kIOLocationMatchKey "IOLocationMatch" +CONSTANT: kIOParentMatchKey "IOParentMatch" +CONSTANT: kIOResourceMatchKey "IOResourceMatch" +CONSTANT: kIOMatchedServiceCountKey "IOMatchedServiceCountMatch" -: kIONameMatchedKey "IONameMatched" ; inline +CONSTANT: kIONameMatchedKey "IONameMatched" -: kIOMatchCategoryKey "IOMatchCategory" ; inline -: kIODefaultMatchCategoryKey "IODefaultMatchCategory" ; inline +CONSTANT: kIOMatchCategoryKey "IOMatchCategory" +CONSTANT: kIODefaultMatchCategoryKey "IODefaultMatchCategory" -: kIOUserClientClassKey "IOUserClientClass" ; inline +CONSTANT: kIOUserClientClassKey "IOUserClientClass" -: kIOUserClientCrossEndianKey "IOUserClientCrossEndian" ; inline -: kIOUserClientCrossEndianCompatibleKey "IOUserClientCrossEndianCompatible" ; inline -: kIOUserClientSharedInstanceKey "IOUserClientSharedInstance" ; inline +CONSTANT: kIOUserClientCrossEndianKey "IOUserClientCrossEndian" +CONSTANT: kIOUserClientCrossEndianCompatibleKey "IOUserClientCrossEndianCompatible" +CONSTANT: kIOUserClientSharedInstanceKey "IOUserClientSharedInstance" -: kIOPublishNotification "IOServicePublish" ; inline -: kIOFirstPublishNotification "IOServiceFirstPublish" ; inline -: kIOMatchedNotification "IOServiceMatched" ; inline -: kIOFirstMatchNotification "IOServiceFirstMatch" ; inline -: kIOTerminatedNotification "IOServiceTerminate" ; inline +CONSTANT: kIOPublishNotification "IOServicePublish" +CONSTANT: kIOFirstPublishNotification "IOServiceFirstPublish" +CONSTANT: kIOMatchedNotification "IOServiceMatched" +CONSTANT: kIOFirstMatchNotification "IOServiceFirstMatch" +CONSTANT: kIOTerminatedNotification "IOServiceTerminate" -: kIOGeneralInterest "IOGeneralInterest" ; inline -: kIOBusyInterest "IOBusyInterest" ; inline -: kIOAppPowerStateInterest "IOAppPowerStateInterest" ; inline -: kIOPriorityPowerStateInterest "IOPriorityPowerStateInterest" ; inline +CONSTANT: kIOGeneralInterest "IOGeneralInterest" +CONSTANT: kIOBusyInterest "IOBusyInterest" +CONSTANT: kIOAppPowerStateInterest "IOAppPowerStateInterest" +CONSTANT: kIOPriorityPowerStateInterest "IOPriorityPowerStateInterest" -: kIOPlatformDeviceMessageKey "IOPlatformDeviceMessage" ; inline +CONSTANT: kIOPlatformDeviceMessageKey "IOPlatformDeviceMessage" -: kIOCFPlugInTypesKey "IOCFPlugInTypes" ; inline +CONSTANT: kIOCFPlugInTypesKey "IOCFPlugInTypes" -: kIOCommandPoolSizeKey "IOCommandPoolSize" ; inline +CONSTANT: kIOCommandPoolSizeKey "IOCommandPoolSize" -: kIOMaximumBlockCountReadKey "IOMaximumBlockCountRead" ; inline -: kIOMaximumBlockCountWriteKey "IOMaximumBlockCountWrite" ; inline -: kIOMaximumByteCountReadKey "IOMaximumByteCountRead" ; inline -: kIOMaximumByteCountWriteKey "IOMaximumByteCountWrite" ; inline -: kIOMaximumSegmentCountReadKey "IOMaximumSegmentCountRead" ; inline -: kIOMaximumSegmentCountWriteKey "IOMaximumSegmentCountWrite" ; inline -: kIOMaximumSegmentByteCountReadKey "IOMaximumSegmentByteCountRead" ; inline -: kIOMaximumSegmentByteCountWriteKey "IOMaximumSegmentByteCountWrite" ; inline -: kIOMinimumSegmentAlignmentByteCountKey "IOMinimumSegmentAlignmentByteCount" ; inline -: kIOMaximumSegmentAddressableBitCountKey "IOMaximumSegmentAddressableBitCount" ; inline +CONSTANT: kIOMaximumBlockCountReadKey "IOMaximumBlockCountRead" +CONSTANT: kIOMaximumBlockCountWriteKey "IOMaximumBlockCountWrite" +CONSTANT: kIOMaximumByteCountReadKey "IOMaximumByteCountRead" +CONSTANT: kIOMaximumByteCountWriteKey "IOMaximumByteCountWrite" +CONSTANT: kIOMaximumSegmentCountReadKey "IOMaximumSegmentCountRead" +CONSTANT: kIOMaximumSegmentCountWriteKey "IOMaximumSegmentCountWrite" +CONSTANT: kIOMaximumSegmentByteCountReadKey "IOMaximumSegmentByteCountRead" +CONSTANT: kIOMaximumSegmentByteCountWriteKey "IOMaximumSegmentByteCountWrite" +CONSTANT: kIOMinimumSegmentAlignmentByteCountKey "IOMinimumSegmentAlignmentByteCount" +CONSTANT: kIOMaximumSegmentAddressableBitCountKey "IOMaximumSegmentAddressableBitCount" -: kIOIconKey "IOIcon" ; inline -: kIOBundleResourceFileKey "IOBundleResourceFile" ; inline +CONSTANT: kIOIconKey "IOIcon" +CONSTANT: kIOBundleResourceFileKey "IOBundleResourceFile" -: kIOBusBadgeKey "IOBusBadge" ; inline -: kIODeviceIconKey "IODeviceIcon" ; inline +CONSTANT: kIOBusBadgeKey "IOBusBadge" +CONSTANT: kIODeviceIconKey "IODeviceIcon" -: kIOPlatformSerialNumberKey "IOPlatformSerialNumber" ; inline +CONSTANT: kIOPlatformSerialNumberKey "IOPlatformSerialNumber" -: kIOPlatformUUIDKey "IOPlatformUUID" ; inline +CONSTANT: kIOPlatformUUIDKey "IOPlatformUUID" -: kIONVRAMDeletePropertyKey "IONVRAM-DELETE-PROPERTY" ; inline -: kIODTNVRAMPanicInfoKey "aapl,panic-info" ; inline +CONSTANT: kIONVRAMDeletePropertyKey "IONVRAM-DELETE-PROPERTY" +CONSTANT: kIODTNVRAMPanicInfoKey "aapl,panic-info" -: kIOBootDeviceKey "IOBootDevice" ; inline -: kIOBootDevicePathKey "IOBootDevicePath" ; inline -: kIOBootDeviceSizeKey "IOBootDeviceSize" ; inline +CONSTANT: kIOBootDeviceKey "IOBootDevice" +CONSTANT: kIOBootDevicePathKey "IOBootDevicePath" +CONSTANT: kIOBootDeviceSizeKey "IOBootDeviceSize" -: kOSBuildVersionKey "OS Build Version" ; inline +CONSTANT: kOSBuildVersionKey "OS Build Version" -: kNilOptions 0 ; inline +CONSTANT: kNilOptions 0 TYPEDEF: uint mach_port_t TYPEDEF: int kern_return_t @@ -112,8 +112,8 @@ TYPEDEF: kern_return_t IOReturn TYPEDEF: uint IOOptionBits -: MACH_PORT_NULL 0 ; inline -: KERN_SUCCESS 0 ; inline +CONSTANT: MACH_PORT_NULL 0 +CONSTANT: KERN_SUCCESS 0 FUNCTION: IOReturn IOMasterPort ( mach_port_t bootstrap, mach_port_t* master ) ; diff --git a/extra/math/analysis/analysis.factor b/extra/math/analysis/analysis.factor index b5f6a547ba..9c773f748e 100755 --- a/extra/math/analysis/analysis.factor +++ b/extra/math/analysis/analysis.factor @@ -9,7 +9,7 @@ IN: math.analysis ! http://www.rskey.org/gamma.htm "Lanczos Approximation" ! n=6: error ~ 3 x 10^-11 -: gamma-g6 5.15 ; inline +CONSTANT: gamma-g6 5.15 : gamma-p6 { diff --git a/extra/opengl/demo-support/demo-support.factor b/extra/opengl/demo-support/demo-support.factor index c8fe2b4882..9f05482b30 100755 --- a/extra/opengl/demo-support/demo-support.factor +++ b/extra/opengl/demo-support/demo-support.factor @@ -4,8 +4,8 @@ ui.render accessors combinators ; IN: opengl.demo-support : FOV ( -- x ) 2.0 sqrt 1+ ; inline -: MOUSE-MOTION-SCALE 0.5 ; inline -: KEY-ROTATE-STEP 10.0 ; inline +CONSTANT: MOUSE-MOTION-SCALE 0.5 +CONSTANT: KEY-ROTATE-STEP 10.0 SYMBOL: last-drag-loc diff --git a/extra/serial/serial.factor b/extra/serial/serial.factor deleted file mode 100644 index 96900fb6e4..0000000000 --- a/extra/serial/serial.factor +++ /dev/null @@ -1,24 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: accessors alien.c-types assocs combinators destructors -kernel math math.bitwise math.parser sequences summary system -vocabs.loader ; -IN: serial - -TUPLE: serial stream path baud - termios iflag oflag cflag lflag ; - -ERROR: invalid-baud baud ; -M: invalid-baud summary ( invalid-baud -- string ) - "Baud rate " - swap baud>> number>string - " not supported" 3append ; - -HOOK: lookup-baud os ( m -- n ) -HOOK: open-serial os ( serial -- serial' ) -M: serial dispose ( serial -- ) stream>> dispose ; - -{ - { [ os unix? ] [ "serial.unix" ] } - { [ os windows? ] [ "serial.windows" ] } -} cond require diff --git a/extra/serial/summary.txt b/extra/serial/summary.txt deleted file mode 100644 index 5ccd99dbaa..0000000000 --- a/extra/serial/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Serial port library diff --git a/extra/serial/unix/bsd/bsd.factor b/extra/serial/unix/bsd/bsd.factor deleted file mode 100644 index d31d947dcb..0000000000 --- a/extra/serial/unix/bsd/bsd.factor +++ /dev/null @@ -1,86 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax kernel math.bitwise sequences system serial ; -IN: serial.unix - -M: bsd lookup-baud ( m -- n ) - dup { - 0 50 75 110 134 150 200 300 600 1200 1800 2400 4800 - 7200 9600 14400 19200 28800 38400 57600 76800 115200 - 230400 460800 921600 - } member? [ invalid-baud ] unless ; - -: TCSANOW 0 ; inline -: TCSADRAIN 1 ; inline -: TCSAFLUSH 2 ; inline -: TCSASOFT HEX: 10 ; inline - -: TCIFLUSH 1 ; inline -: TCOFLUSH 2 ; inline -: TCIOFLUSH 3 ; inline -: TCOOFF 1 ; inline -: TCOON 2 ; inline -: TCIOFF 3 ; inline -: TCION 4 ; inline - -! iflags -: IGNBRK HEX: 00000001 ; inline -: BRKINT HEX: 00000002 ; inline -: IGNPAR HEX: 00000004 ; inline -: PARMRK HEX: 00000008 ; inline -: INPCK HEX: 00000010 ; inline -: ISTRIP HEX: 00000020 ; inline -: INLCR HEX: 00000040 ; inline -: IGNCR HEX: 00000080 ; inline -: ICRNL HEX: 00000100 ; inline -: IXON HEX: 00000200 ; inline -: IXOFF HEX: 00000400 ; inline -: IXANY HEX: 00000800 ; inline -: IMAXBEL HEX: 00002000 ; inline -: IUTF8 HEX: 00004000 ; inline - -! oflags -: OPOST HEX: 00000001 ; inline -: ONLCR HEX: 00000002 ; inline -: OXTABS HEX: 00000004 ; inline -: ONOEOT HEX: 00000008 ; inline - -! cflags -: CIGNORE HEX: 00000001 ; inline -: CSIZE HEX: 00000300 ; inline -: CS5 HEX: 00000000 ; inline -: CS6 HEX: 00000100 ; inline -: CS7 HEX: 00000200 ; inline -: CS8 HEX: 00000300 ; inline -: CSTOPB HEX: 00000400 ; inline -: CREAD HEX: 00000800 ; inline -: PARENB HEX: 00001000 ; inline -: PARODD HEX: 00002000 ; inline -: HUPCL HEX: 00004000 ; inline -: CLOCAL HEX: 00008000 ; inline -: CCTS_OFLOW HEX: 00010000 ; inline -: CRTS_IFLOW HEX: 00020000 ; inline -: CRTSCTS { CCTS_OFLOW CRTS_IFLOW } flags ; inline -: CDTR_IFLOW HEX: 00040000 ; inline -: CDSR_OFLOW HEX: 00080000 ; inline -: CCAR_OFLOW HEX: 00100000 ; inline -: MDMBUF HEX: 00100000 ; inline - -! lflags -: ECHOKE HEX: 00000001 ; inline -: ECHOE HEX: 00000002 ; inline -: ECHOK HEX: 00000004 ; inline -: ECHO HEX: 00000008 ; inline -: ECHONL HEX: 00000010 ; inline -: ECHOPRT HEX: 00000020 ; inline -: ECHOCTL HEX: 00000040 ; inline -: ISIG HEX: 00000080 ; inline -: ICANON HEX: 00000100 ; inline -: ALTWERASE HEX: 00000200 ; inline -: IEXTEN HEX: 00000400 ; inline -: EXTPROC HEX: 00000800 ; inline -: TOSTOP HEX: 00400000 ; inline -: FLUSHO HEX: 00800000 ; inline -: NOKERNINFO HEX: 02000000 ; inline -: PENDIN HEX: 20000000 ; inline -: NOFLSH HEX: 80000000 ; inline diff --git a/extra/serial/unix/bsd/tags.txt b/extra/serial/unix/bsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/serial/unix/bsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/serial/unix/linux/linux.factor b/extra/serial/unix/linux/linux.factor deleted file mode 100644 index 3ad5088fc8..0000000000 --- a/extra/serial/unix/linux/linux.factor +++ /dev/null @@ -1,130 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: assocs alien.syntax kernel serial system unix ; -IN: serial.unix - -: TCSANOW 0 ; inline -: TCSADRAIN 1 ; inline -: TCSAFLUSH 2 ; inline - -: TCIFLUSH 0 ; inline -: TCOFLUSH 1 ; inline -: TCIOFLUSH 2 ; inline - -: TCOOFF 0 ; inline -: TCOON 1 ; inline -: TCIOFF 2 ; inline -: TCION 3 ; inline - -! iflag -: IGNBRK OCT: 0000001 ; inline -: BRKINT OCT: 0000002 ; inline -: IGNPAR OCT: 0000004 ; inline -: PARMRK OCT: 0000010 ; inline -: INPCK OCT: 0000020 ; inline -: ISTRIP OCT: 0000040 ; inline -: INLCR OCT: 0000100 ; inline -: IGNCR OCT: 0000200 ; inline -: ICRNL OCT: 0000400 ; inline -: IUCLC OCT: 0001000 ; inline -: IXON OCT: 0002000 ; inline -: IXANY OCT: 0004000 ; inline -: IXOFF OCT: 0010000 ; inline -: IMAXBEL OCT: 0020000 ; inline -: IUTF8 OCT: 0040000 ; inline - -! oflag -: OPOST OCT: 0000001 ; inline -: OLCUC OCT: 0000002 ; inline -: ONLCR OCT: 0000004 ; inline -: OCRNL OCT: 0000010 ; inline -: ONOCR OCT: 0000020 ; inline -: ONLRET OCT: 0000040 ; inline -: OFILL OCT: 0000100 ; inline -: OFDEL OCT: 0000200 ; inline -: NLDLY OCT: 0000400 ; inline -: NL0 OCT: 0000000 ; inline -: NL1 OCT: 0000400 ; inline -: CRDLY OCT: 0003000 ; inline -: CR0 OCT: 0000000 ; inline -: CR1 OCT: 0001000 ; inline -: CR2 OCT: 0002000 ; inline -: CR3 OCT: 0003000 ; inline -: TABDLY OCT: 0014000 ; inline -: TAB0 OCT: 0000000 ; inline -: TAB1 OCT: 0004000 ; inline -: TAB2 OCT: 0010000 ; inline -: TAB3 OCT: 0014000 ; inline -: BSDLY OCT: 0020000 ; inline -: BS0 OCT: 0000000 ; inline -: BS1 OCT: 0020000 ; inline -: FFDLY OCT: 0100000 ; inline -: FF0 OCT: 0000000 ; inline -: FF1 OCT: 0100000 ; inline - -! cflags -: CSIZE OCT: 0000060 ; inline -: CS5 OCT: 0000000 ; inline -: CS6 OCT: 0000020 ; inline -: CS7 OCT: 0000040 ; inline -: CS8 OCT: 0000060 ; inline -: CSTOPB OCT: 0000100 ; inline -: CREAD OCT: 0000200 ; inline -: PARENB OCT: 0000400 ; inline -: PARODD OCT: 0001000 ; inline -: HUPCL OCT: 0002000 ; inline -: CLOCAL OCT: 0004000 ; inline -: CIBAUD OCT: 002003600000 ; inline -: CRTSCTS OCT: 020000000000 ; inline - -! lflags -: ISIG OCT: 0000001 ; inline -: ICANON OCT: 0000002 ; inline -: XCASE OCT: 0000004 ; inline -: ECHO OCT: 0000010 ; inline -: ECHOE OCT: 0000020 ; inline -: ECHOK OCT: 0000040 ; inline -: ECHONL OCT: 0000100 ; inline -: NOFLSH OCT: 0000200 ; inline -: TOSTOP OCT: 0000400 ; inline -: ECHOCTL OCT: 0001000 ; inline -: ECHOPRT OCT: 0002000 ; inline -: ECHOKE OCT: 0004000 ; inline -: FLUSHO OCT: 0010000 ; inline -: PENDIN OCT: 0040000 ; inline -: IEXTEN OCT: 0100000 ; inline - -M: linux lookup-baud ( n -- n ) - dup H{ - { 0 OCT: 0000000 } - { 50 OCT: 0000001 } - { 75 OCT: 0000002 } - { 110 OCT: 0000003 } - { 134 OCT: 0000004 } - { 150 OCT: 0000005 } - { 200 OCT: 0000006 } - { 300 OCT: 0000007 } - { 600 OCT: 0000010 } - { 1200 OCT: 0000011 } - { 1800 OCT: 0000012 } - { 2400 OCT: 0000013 } - { 4800 OCT: 0000014 } - { 9600 OCT: 0000015 } - { 19200 OCT: 0000016 } - { 38400 OCT: 0000017 } - { 57600 OCT: 0010001 } - { 115200 OCT: 0010002 } - { 230400 OCT: 0010003 } - { 460800 OCT: 0010004 } - { 500000 OCT: 0010005 } - { 576000 OCT: 0010006 } - { 921600 OCT: 0010007 } - { 1000000 OCT: 0010010 } - { 1152000 OCT: 0010011 } - { 1500000 OCT: 0010012 } - { 2000000 OCT: 0010013 } - { 2500000 OCT: 0010014 } - { 3000000 OCT: 0010015 } - { 3500000 OCT: 0010016 } - { 4000000 OCT: 0010017 } - } at* [ nip ] [ drop invalid-baud ] if ; diff --git a/extra/serial/unix/linux/tags.txt b/extra/serial/unix/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/serial/unix/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/serial/unix/tags.txt b/extra/serial/unix/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/serial/unix/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/serial/unix/termios/bsd/bsd.factor b/extra/serial/unix/termios/bsd/bsd.factor deleted file mode 100644 index 5fbc571519..0000000000 --- a/extra/serial/unix/termios/bsd/bsd.factor +++ /dev/null @@ -1,19 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax kernel sequences system ; -IN: serial.unix.termios - -: NCCS 20 ; inline - -TYPEDEF: uint tcflag_t -TYPEDEF: uchar cc_t -TYPEDEF: uint speed_t - -C-STRUCT: termios - { "tcflag_t" "iflag" } ! input mode flags - { "tcflag_t" "oflag" } ! output mode flags - { "tcflag_t" "cflag" } ! control mode flags - { "tcflag_t" "lflag" } ! local mode flags - { { "cc_t" NCCS } "cc" } ! control characters - { "speed_t" "ispeed" } ! input speed - { "speed_t" "ospeed" } ; ! output speed diff --git a/extra/serial/unix/termios/bsd/tags.txt b/extra/serial/unix/termios/bsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/serial/unix/termios/bsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/serial/unix/termios/linux/linux.factor b/extra/serial/unix/termios/linux/linux.factor deleted file mode 100644 index de9906e2b9..0000000000 --- a/extra/serial/unix/termios/linux/linux.factor +++ /dev/null @@ -1,20 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax kernel system unix ; -IN: serial.unix.termios - -: NCCS 32 ; inline - -TYPEDEF: uchar cc_t -TYPEDEF: uint speed_t -TYPEDEF: uint tcflag_t - -C-STRUCT: termios - { "tcflag_t" "iflag" } ! input mode flags - { "tcflag_t" "oflag" } ! output mode flags - { "tcflag_t" "cflag" } ! control mode flags - { "tcflag_t" "lflag" } ! local mode flags - { "cc_t" "line" } ! line discipline - { { "cc_t" NCCS } "cc" } ! control characters - { "speed_t" "ispeed" } ! input speed - { "speed_t" "ospeed" } ; ! output speed diff --git a/extra/serial/unix/termios/linux/tags.txt b/extra/serial/unix/termios/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/serial/unix/termios/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/serial/unix/termios/tags.txt b/extra/serial/unix/termios/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/serial/unix/termios/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/serial/unix/termios/termios.factor b/extra/serial/unix/termios/termios.factor deleted file mode 100644 index 901416d62c..0000000000 --- a/extra/serial/unix/termios/termios.factor +++ /dev/null @@ -1,9 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: combinators system vocabs.loader ; -IN: serial.unix.termios - -{ - { [ os linux? ] [ "serial.unix.termios.linux" ] } - { [ os bsd? ] [ "serial.unix.termios.bsd" ] } -} cond require diff --git a/extra/serial/unix/unix-tests.factor b/extra/serial/unix/unix-tests.factor deleted file mode 100644 index e9126a5961..0000000000 --- a/extra/serial/unix/unix-tests.factor +++ /dev/null @@ -1,21 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: accessors kernel math.bitwise serial serial.unix ; -IN: serial.unix - -: serial-obj ( -- obj ) - serial new - "/dev/ttyS0" >>path - 19200 >>baud - { IGNPAR ICRNL } flags >>iflag - { } flags >>oflag - { CS8 CLOCAL CREAD } flags >>cflag - { ICANON } flags >>lflag ; - -: serial-test ( -- serial ) - serial-obj - open-serial - dup get-termios >>termios - dup configure-termios - dup tciflush - dup apply-termios ; diff --git a/extra/serial/unix/unix.factor b/extra/serial/unix/unix.factor deleted file mode 100644 index 90dbd185bd..0000000000 --- a/extra/serial/unix/unix.factor +++ /dev/null @@ -1,63 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: accessors alien.c-types alien.syntax combinators io.ports -io.streams.duplex io.unix.backend system kernel math math.bitwise -vocabs.loader unix serial serial.unix.termios ; -IN: serial.unix - -<< { - { [ os linux? ] [ "serial.unix.linux" ] } - { [ os bsd? ] [ "serial.unix.bsd" ] } -} cond require >> - -FUNCTION: speed_t cfgetispeed ( termios* t ) ; -FUNCTION: speed_t cfgetospeed ( termios* t ) ; -FUNCTION: int cfsetispeed ( termios* t, speed_t s ) ; -FUNCTION: int cfsetospeed ( termios* t, speed_t s ) ; -FUNCTION: int tcgetattr ( int i1, termios* t ) ; -FUNCTION: int tcsetattr ( int i1, int i2, termios* t ) ; -FUNCTION: int tcdrain ( int i1 ) ; -FUNCTION: int tcflow ( int i1, int i2 ) ; -FUNCTION: int tcflush ( int i1, int i2 ) ; -FUNCTION: int tcsendbreak ( int i1, int i2 ) ; -FUNCTION: void cfmakeraw ( termios* t ) ; -FUNCTION: int cfsetspeed ( termios* t, speed_t s ) ; - -: fd>duplex-stream ( fd -- duplex-stream ) - init-fd - [ ] [ ] bi ; - -: open-rw ( path -- fd ) O_RDWR file-mode open-file ; -: ( path -- stream ) open-rw fd>duplex-stream ; - -M: unix open-serial ( serial -- serial' ) - dup - path>> { O_RDWR O_NOCTTY O_NDELAY } flags file-mode open-file - fd>duplex-stream >>stream ; - -: serial-fd ( serial -- fd ) - stream>> in>> handle>> fd>> ; - -: get-termios ( serial -- termios ) - serial-fd - "termios" [ tcgetattr io-error ] keep ; - -: configure-termios ( serial -- ) - dup termios>> - { - [ [ iflag>> ] dip over [ set-termios-iflag ] [ 2drop ] if ] - [ [ oflag>> ] dip over [ set-termios-oflag ] [ 2drop ] if ] - [ - [ - [ cflag>> 0 or ] [ baud>> lookup-baud ] bi bitor - ] dip set-termios-cflag - ] - [ [ lflag>> ] dip over [ set-termios-lflag ] [ 2drop ] if ] - } 2cleave ; - -: tciflush ( serial -- ) - serial-fd TCIFLUSH tcflush io-error ; - -: apply-termios ( serial -- ) - [ serial-fd TCSANOW ] - [ termios>> ] bi tcsetattr io-error ; diff --git a/extra/serial/windows/tags.txt b/extra/serial/windows/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/serial/windows/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/serial/windows/windows-tests.factor b/extra/serial/windows/windows-tests.factor deleted file mode 100755 index bd67f77eae..0000000000 --- a/extra/serial/windows/windows-tests.factor +++ /dev/null @@ -1,4 +0,0 @@ -! Copyright (C) 2009 Your name. -! See http://factorcode.org/license.txt for BSD license. -USING: tools.test serial.windows ; -IN: serial.windows.tests diff --git a/extra/tetris/game/game.factor b/extra/tetris/game/game.factor index ef5ffcc344..00b5bb6c41 100644 --- a/extra/tetris/game/game.factor +++ b/extra/tetris/game/game.factor @@ -12,8 +12,8 @@ TUPLE: tetris { paused? initial: f } { running? initial: t } ; -: default-width 10 ; inline -: default-height 20 ; inline +CONSTANT: default-width 10 +CONSTANT: default-height 20 : ( width height -- tetris ) dupd swap diff --git a/misc/fuel/README b/misc/fuel/README index 79b8f49f9a..0411e0709b 100644 --- a/misc/fuel/README +++ b/misc/fuel/README @@ -139,6 +139,8 @@ beast. | C-cC-xi | replace word by its definition (fuel-refactor-inline-word) | | C-cC-xw | rename all uses of a word (fuel-refactor-rename-word) | | C-cC-xa | extract region as a separate ARTICLE: form | + | C-cC-xg | convert current word definition into GENERIC + method | + | | (fuel-refactor-make-generic) | |-----------------+------------------------------------------------------------| *** In the listener: diff --git a/misc/fuel/factor-mode.el b/misc/fuel/factor-mode.el index ba9be2edd3..b302fb6b8f 100644 --- a/misc/fuel/factor-mode.el +++ b/misc/fuel/factor-mode.el @@ -197,7 +197,7 @@ code in the buffer." (when (string-match factor-mode--cycle-basename-regex basename) (cons (match-string 1 basename) (match-string 2 basename)))) -(defun factor-mode--cycle-next (file) +(defun factor-mode--cycle-next (file skip) (let* ((dir (file-name-directory file)) (basename (file-name-nondirectory file)) (p/s (factor-mode--cycle-split basename)) @@ -211,7 +211,8 @@ code in the buffer." (let* ((suffix (ring-ref ring (+ i idx))) (path (expand-file-name (concat prefix suffix) dir))) (when (or (file-exists-p path) - (and (not (member suffix factor-mode--cycling-no-ask)) + (and (not skip) + (not (member suffix factor-mode--cycling-no-ask)) (y-or-n-p (format "Create %s? " path)))) (setq result path)) (when (and (not factor-mode-cycle-always-ask-p) @@ -224,10 +225,11 @@ code in the buffer." (defsubst factor-mode--cycling-setup () (setq factor-mode--cycling-no-ask nil)) -(defun factor-mode-visit-other-file (&optional file) - "Cycle between code, tests and docs factor files." - (interactive) - (let ((file (factor-mode--cycle-next (or file (buffer-file-name))))) +(defun factor-mode-visit-other-file (&optional skip) + "Cycle between code, tests and docs factor files. +With prefix, non-existing files will be skipped." + (interactive "P") + (let ((file (factor-mode--cycle-next (buffer-file-name) skip))) (unless file (error "No other file found")) (find-file file) (unless (file-exists-p file) diff --git a/misc/fuel/fuel-markup.el b/misc/fuel/fuel-markup.el index 980ea111a6..3a00b70ab1 100644 --- a/misc/fuel/fuel-markup.el +++ b/misc/fuel/fuel-markup.el @@ -118,6 +118,7 @@ ($nl . fuel-markup--newline) ($notes . fuel-markup--notes) ($operation . fuel-markup--link) + ($or . fuel-markup--or) ($parsing-note . fuel-markup--parsing-note) ($predicate . fuel-markup--predicate) ($prettyprinting-note . fuel-markup--prettyprinting-note) @@ -468,6 +469,14 @@ (fuel-markup--instance (cons '$instance (cdr e))) (insert " or f ")) +(defun fuel-markup--or (e) + (let ((fst (car (cdr e))) + (mid (butlast (cddr e))) + (lst (car (last (cdr e))))) + (insert (format "%s" fst)) + (dolist (m mid) (insert (format ", %s" m))) + (insert (format " or %s" lst)))) + (defun fuel-markup--values (e) (fuel-markup--insert-heading "Inputs and outputs") (dolist (val (cdr e)) diff --git a/misc/fuel/fuel-mode.el b/misc/fuel/fuel-mode.el index c4f08f3c62..aa9a7d944e 100644 --- a/misc/fuel/fuel-mode.el +++ b/misc/fuel/fuel-mode.el @@ -213,6 +213,7 @@ interacting with a factor listener is at your disposal. (fuel-mode--key ?x ?a 'fuel-refactor-extract-article) (fuel-mode--key ?x ?i 'fuel-refactor-inline-word) +(fuel-mode--key ?x ?g 'fuel-refactor-make-generic) (fuel-mode--key ?x ?r 'fuel-refactor-extract-region) (fuel-mode--key ?x ?s 'fuel-refactor-extract-sexp) (fuel-mode--key ?x ?v 'fuel-refactor-extract-vocab) diff --git a/misc/fuel/fuel-refactor.el b/misc/fuel/fuel-refactor.el index bd62227755..942d439466 100644 --- a/misc/fuel/fuel-refactor.el +++ b/misc/fuel/fuel-refactor.el @@ -145,6 +145,28 @@ word." (if (looking-at-p ";") (point) (fuel-syntax--end-of-symbol-pos)))) + +;;; Convert word to generic + method: + +(defun fuel-refactor-make-generic () + "Inserts a new generic definition with the current word's stack effect. +The word's body is put in a new method for the generic." + (interactive) + (let ((p (point))) + (fuel-syntax--beginning-of-defun) + (unless (re-search-forward fuel-syntax--word-signature-regex nil t) + (goto-char p) + (error "Cannot find a proper word definition here")) + (let ((begin (match-beginning 0)) + (end (match-end 0)) + (name (match-string-no-properties 1)) + (cls (read-string "Method's class (object): " nil nil "object"))) + (goto-char begin) + (insert "GENERIC") + (goto-char (+ end 7)) + (newline 2) + (insert "M: " cls " " name " ")))) + ;;; Inline word: diff --git a/misc/fuel/fuel-syntax.el b/misc/fuel/fuel-syntax.el index 67341120c1..b6409b2fea 100644 --- a/misc/fuel/fuel-syntax.el +++ b/misc/fuel/fuel-syntax.el @@ -212,10 +212,11 @@ fuel-syntax--end-of-def-line-regex fuel-syntax--single-liner-regex)) +(defconst fuel-syntax--word-signature-regex + (format ":[^ ]* \\([^ ]+\\)\\(%s\\)*" fuel-syntax--stack-effect-regex)) + (defconst fuel-syntax--defun-signature-regex - (format "\\(%s\\|%s\\)" - (format ":[^ ]* [^ ]+\\(%s\\)*" fuel-syntax--stack-effect-regex) - "M[^:]*: [^ ]+ [^ ]+")) + (format "\\(%s\\|%s\\)" fuel-syntax--word-signature-regex "M[^:]*: [^ ]+ [^ ]+")) (defconst fuel-syntax--constructor-decl-regex "\\_