Eduardo Cavazos 2008-12-16 00:39:43 -06:00
commit 010db8eb77
132 changed files with 3438 additions and 3315 deletions

View File

@ -1,18 +1,19 @@
! Copyright (C) 2008 Slava Pestov. ! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors words quotations kernel effects sequences parser ; USING: accessors words quotations kernel effects sequences
parser definitions ;
IN: alias IN: alias
PREDICATE: alias < word "alias" word-prop ; PREDICATE: alias < word "alias" word-prop ;
: define-alias ( new old -- )
[ [ 1quotation ] [ stack-effect ] bi define-inline ]
[ drop t "alias" set-word-prop ] 2bi ;
: ALIAS: CREATE-WORD scan-word define-alias ; parsing
M: alias reset-word M: alias reset-word
[ call-next-method ] [ f "alias" set-word-prop ] bi ; [ call-next-method ] [ f "alias" set-word-prop ] bi ;
M: alias stack-effect M: alias stack-effect
def>> first stack-effect ; def>> first stack-effect ;
: define-alias ( new old -- )
[ 1quotation define-inline ]
[ drop t "alias" set-word-prop ] 2bi ;
: ALIAS: CREATE-WORD scan-word define-alias ; parsing

View File

@ -234,17 +234,16 @@ M: long-long-type box-return ( type -- )
f swap box-parameter ; f swap box-parameter ;
: define-deref ( name -- ) : define-deref ( name -- )
[ CHAR: * prefix "alien.c-types" create ] [ CHAR: * prefix "alien.c-types" create ] [ c-getter 0 prefix ] bi
[ c-getter 0 prefix ] bi (( c-ptr -- value )) define-inline ;
define-inline ;
: define-out ( name -- ) : define-out ( name -- )
[ "alien.c-types" constructor-word ] [ "alien.c-types" constructor-word ]
[ dup c-setter '[ _ <c-object> [ 0 @ ] keep ] ] [ dup c-setter '[ _ <c-object> [ 0 @ ] keep ] ] bi
bi define-inline ; (( value -- c-ptr )) define-inline ;
: c-bool> ( int -- ? ) : c-bool> ( int -- ? )
zero? not ; 0 = not ; inline
: define-primitive-type ( type name -- ) : define-primitive-type ( type name -- )
[ typedef ] [ typedef ]

View File

@ -52,8 +52,8 @@ PREDICATE: slot-writer < word "writing" word-prop >boolean ;
[ (>>offset) ] [ type>> heap-size + ] 2bi [ (>>offset) ] [ type>> heap-size + ] 2bi
] reduce ; ] reduce ;
: define-struct-slot-word ( word quot spec -- ) : define-struct-slot-word ( word quot spec effect -- )
offset>> prefix define-inline ; [ offset>> prefix ] dip define-inline ;
: define-getter ( type spec -- ) : define-getter ( type spec -- )
[ set-reader-props ] keep [ set-reader-props ] keep
@ -62,11 +62,13 @@ PREDICATE: slot-writer < word "writing" word-prop >boolean ;
type>> type>>
[ c-getter ] [ c-type-boxer-quot ] bi append [ c-getter ] [ c-type-boxer-quot ] bi append
] ]
[ ] tri define-struct-slot-word ; [ ] tri
(( c-ptr -- value )) define-struct-slot-word ;
: define-setter ( type spec -- ) : define-setter ( type spec -- )
[ set-writer-props ] keep [ set-writer-props ] keep
[ writer>> ] [ type>> c-setter ] [ ] tri define-struct-slot-word ; [ writer>> ] [ type>> c-setter ] [ ] tri
(( value c-ptr -- )) define-struct-slot-word ;
: define-field ( type spec -- ) : define-field ( type spec -- )
[ define-getter ] [ define-setter ] 2bi ; [ define-getter ] [ define-setter ] 2bi ;

View File

@ -11,7 +11,7 @@ TUPLE: bit-array
<PRIVATE <PRIVATE
: n>byte -3 shift ; inline : n>byte ( m -- n ) -3 shift ; inline
: byte/bit ( n alien -- byte bit ) : byte/bit ( n alien -- byte bit )
over n>byte alien-unsigned-1 swap 7 bitand ; inline over n>byte alien-unsigned-1 swap 7 bitand ; inline
@ -19,9 +19,9 @@ TUPLE: bit-array
: set-bit ( ? byte bit -- byte ) : set-bit ( ? byte bit -- byte )
2^ rot [ bitor ] [ bitnot bitand ] if ; inline 2^ rot [ bitor ] [ bitnot bitand ] if ; inline
: bits>cells 31 + -5 shift ; inline : bits>cells ( m -- n ) 31 + -5 shift ; inline
: bits>bytes 7 + n>byte ; inline : bits>bytes ( m -- n ) 7 + n>byte ; inline
: (set-bits) ( bit-array n -- ) : (set-bits) ( bit-array n -- )
[ [ length bits>cells ] keep ] dip swap underlying>> [ [ length bits>cells ] keep ] dip swap underlying>>

View File

@ -66,7 +66,7 @@ M: id equal?
SYMBOL: objects SYMBOL: objects
: (objects) <id> objects get ; inline : (objects) ( obj -- id assoc ) <id> objects get ; inline
: lookup-object ( obj -- n/f ) (objects) at ; : lookup-object ( obj -- n/f ) (objects) at ;

View File

@ -211,7 +211,7 @@ M: real +minute ( timestamp n -- timestamp )
M: number +second ( timestamp n -- timestamp ) M: number +second ( timestamp n -- timestamp )
[ over second>> + seconds/minutes [ >>second ] dip +minute ] unless-zero ; [ over second>> + seconds/minutes [ >>second ] dip +minute ] unless-zero ;
: (time+) : (time+) ( timestamp duration -- timestamp' duration )
[ second>> +second ] keep [ second>> +second ] keep
[ minute>> +minute ] keep [ minute>> +minute ] keep
[ hour>> +hour ] keep [ hour>> +hour ] keep
@ -219,7 +219,8 @@ M: number +second ( timestamp n -- timestamp )
[ month>> +month ] keep [ month>> +month ] keep
[ year>> +year ] keep ; inline [ year>> +year ] keep ; inline
: +slots [ bi@ + ] curry 2keep ; inline : +slots ( obj1 obj2 quot -- n obj1 obj2 )
[ bi@ + ] curry 2keep ; inline
PRIVATE> PRIVATE>

View File

@ -4,7 +4,7 @@ USING: help.syntax help.markup ;
HELP: openssl-checksum HELP: openssl-checksum
{ $class-description "The class of checksum algorithms implemented by OpenSSL. The exact set of algorithms supported depends on how the OpenSSL library was compiled; " { $snippet "md5" } " and " { $snippet "sha1" } " should be universally available." } ; { $class-description "The class of checksum algorithms implemented by OpenSSL. The exact set of algorithms supported depends on how the OpenSSL library was compiled; " { $snippet "md5" } " and " { $snippet "sha1" } " should be universally available." } ;
HELP: <openssl-checksum> ( name -- checksum ) HELP: <openssl-checksum>
{ $values { "name" "an EVP message digest name" } { "checksum" openssl-checksum } } { $values { "name" "an EVP message digest name" } { "checksum" openssl-checksum } }
{ $description "Creates a new OpenSSL checksum object." } ; { $description "Creates a new OpenSSL checksum object." } ;

View File

@ -14,7 +14,7 @@ IN: cocoa.windows
: NSBackingStoreNonretained 1 ; inline : NSBackingStoreNonretained 1 ; inline
: NSBackingStoreBuffered 2 ; inline : NSBackingStoreBuffered 2 ; inline
: standard-window-type : standard-window-type ( -- n )
{ {
NSTitledWindowMask NSTitledWindowMask
NSClosableWindowMask NSClosableWindowMask

View File

@ -4,8 +4,8 @@ IN: columns
HELP: column HELP: column
{ $class-description "A virtual sequence which presents a fixed column of a matrix represented as a sequence of rows. New instances can be created by calling " { $link <column> } "." } ; { $class-description "A virtual sequence which presents a fixed column of a matrix represented as a sequence of rows. New instances can be created by calling " { $link <column> } "." } ;
HELP: <column> ( seq n -- column ) HELP: <column>
{ $values { "seq" sequence } { "n" "a non-negative integer" } { "column" column } } { $values { "seq" sequence } { "col" "a non-negative integer" } { "column" column } }
{ $description "Outputs a new virtual sequence which presents a fixed column of a matrix represented as a sequence of rows." "The " { $snippet "i" } "th element of a column is the " { $snippet "n" } "th element of the " { $snippet "i" } "th element of " { $snippet "seq" } ". Every element of " { $snippet "seq" } " must be a sequence, and all sequences must have equal length." } { $description "Outputs a new virtual sequence which presents a fixed column of a matrix represented as a sequence of rows." "The " { $snippet "i" } "th element of a column is the " { $snippet "n" } "th element of the " { $snippet "i" } "th element of " { $snippet "seq" } ". Every element of " { $snippet "seq" } " must be a sequence, and all sequences must have equal length." }
{ $examples { $examples
{ $example { $example

View File

@ -68,7 +68,8 @@ IN: compiler.cfg.alias-analysis
! Map vregs -> alias classes ! Map vregs -> alias classes
SYMBOL: vregs>acs SYMBOL: vregs>acs
: check [ "BUG: static type error detected" throw ] unless* ; inline : check ( obj -- obj )
[ "BUG: static type error detected" throw ] unless* ; inline
: vreg>ac ( vreg -- ac ) : vreg>ac ( vreg -- ac )
#! Only vregs produced by ##allot, ##peek and ##slot can #! Only vregs produced by ##allot, ##peek and ##slot can

View File

@ -5,17 +5,17 @@ sequences classes.tuple cpu.architecture compiler.cfg.registers
compiler.cfg.instructions ; compiler.cfg.instructions ;
IN: compiler.cfg.hats IN: compiler.cfg.hats
: i int-regs next-vreg ; inline : i ( -- vreg ) int-regs next-vreg ; inline
: ^^i i dup ; inline : ^^i ( -- vreg vreg ) i dup ; inline
: ^^i1 [ ^^i ] dip ; inline : ^^i1 ( obj -- vreg vreg obj ) [ ^^i ] dip ; inline
: ^^i2 [ ^^i ] 2dip ; inline : ^^i2 ( obj obj -- vreg vreg obj obj ) [ ^^i ] 2dip ; inline
: ^^i3 [ ^^i ] 3dip ; inline : ^^i3 ( obj obj obj -- vreg vreg obj obj obj ) [ ^^i ] 3dip ; inline
: d double-float-regs next-vreg ; inline : d ( -- vreg ) double-float-regs next-vreg ; inline
: ^^d d dup ; inline : ^^d ( -- vreg vreg ) d dup ; inline
: ^^d1 [ ^^d ] dip ; inline : ^^d1 ( obj -- vreg vreg obj ) [ ^^d ] dip ; inline
: ^^d2 [ ^^d ] 2dip ; inline : ^^d2 ( obj obj -- vreg vreg obj obj ) [ ^^d ] 2dip ; inline
: ^^d3 [ ^^d ] 3dip ; inline : ^^d3 ( obj obj obj -- vreg vreg obj obj obj ) [ ^^d ] 3dip ; inline
: ^^load-literal ( obj -- dst ) ^^i1 ##load-literal ; inline : ^^load-literal ( obj -- dst ) ^^i1 ##load-literal ; inline
: ^^peek ( loc -- dst ) ^^i1 ##peek ; inline : ^^peek ( loc -- dst ) ^^i1 ##peek ; inline

View File

@ -1,7 +1,7 @@
! Copyright (C) 2008 Slava Pestov. ! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: classes.tuple classes.tuple.parser kernel words USING: classes.tuple classes.tuple.parser kernel words
make fry sequences parser ; make fry sequences parser accessors ;
IN: compiler.cfg.instructions.syntax IN: compiler.cfg.instructions.syntax
: insn-word ( -- word ) : insn-word ( -- word )
@ -10,10 +10,13 @@ IN: compiler.cfg.instructions.syntax
#! this one. #! this one.
"insn" "compiler.cfg.instructions" lookup ; "insn" "compiler.cfg.instructions" lookup ;
: insn-effect ( word -- effect )
boa-effect [ but-last ] change-in { } >>out ;
: INSN: : INSN:
parse-tuple-definition "regs" suffix parse-tuple-definition "regs" suffix
[ dup tuple eq? [ drop insn-word ] when ] dip [ dup tuple eq? [ drop insn-word ] when ] dip
[ define-tuple-class ] [ define-tuple-class ]
[ 2drop save-location ] [ 2drop save-location ]
[ 2drop dup '[ f _ boa , ] define-inline ] [ 2drop [ ] [ '[ f _ boa , ] ] [ insn-effect ] tri define-inline ]
3tri ; parsing 3tri ; parsing

View File

@ -37,7 +37,7 @@ M: insn linearize-insn , drop ;
M: ##branch linearize-insn M: ##branch linearize-insn
drop dup successors>> first emit-branch ; drop dup successors>> first emit-branch ;
: (binary-conditional) : (binary-conditional) ( basic-block insn -- basic-block successor1 successor2 src1 src2 cc )
[ dup successors>> first2 ] [ dup successors>> first2 ]
[ [ src1>> ] [ src2>> ] [ cc>> ] tri ] bi* ; inline [ [ src1>> ] [ src2>> ] [ cc>> ] tri ] bi* ; inline

View File

@ -95,7 +95,7 @@ M: ##dispatch-label generate-insn label>> %dispatch-label ;
M: ##dispatch generate-insn M: ##dispatch generate-insn
[ src>> register ] [ temp>> register ] [ offset>> ] tri %dispatch ; [ src>> register ] [ temp>> register ] [ offset>> ] tri %dispatch ;
: >slot< : >slot< ( insn -- dst obj slot tag )
{ {
[ dst>> register ] [ dst>> register ]
[ obj>> register ] [ obj>> register ]
@ -109,7 +109,7 @@ M: ##slot generate-insn
M: ##slot-imm generate-insn M: ##slot-imm generate-insn
>slot< %slot-imm ; >slot< %slot-imm ;
: >set-slot< : >set-slot< ( insn -- src obj slot tag )
{ {
[ src>> register ] [ src>> register ]
[ obj>> register ] [ obj>> register ]
@ -209,7 +209,8 @@ M: ##alien-cell generate-insn dst/src %alien-cell ;
M: ##alien-float generate-insn dst/src %alien-float ; M: ##alien-float generate-insn dst/src %alien-float ;
M: ##alien-double generate-insn dst/src %alien-double ; M: ##alien-double generate-insn dst/src %alien-double ;
: >alien-setter< [ src>> register ] [ value>> register ] bi ; inline : >alien-setter< ( insn -- src value )
[ src>> register ] [ value>> register ] bi ; inline
M: ##set-alien-integer-1 generate-insn >alien-setter< %set-alien-integer-1 ; M: ##set-alien-integer-1 generate-insn >alien-setter< %set-alien-integer-1 ;
M: ##set-alien-integer-2 generate-insn >alien-setter< %set-alien-integer-2 ; M: ##set-alien-integer-2 generate-insn >alien-setter< %set-alien-integer-2 ;

3
basis/concurrency/combinators/combinators.factor Normal file → Executable file
View File

@ -28,7 +28,8 @@ PRIVATE>
: [future] ( quot -- quot' ) '[ _ curry future ] ; inline : [future] ( quot -- quot' ) '[ _ curry future ] ; inline
: future-values dup [ ?future ] change-each ; inline : future-values ( futures -- futures )
dup [ ?future ] change-each ; inline
PRIVATE> PRIVATE>

View File

@ -0,0 +1,8 @@
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: parser kernel words ;
IN: constants
: CONSTANT:
CREATE scan-object [ ] curry (( -- value ))
define-inline ; parsing

View File

@ -189,19 +189,19 @@ MTSPR: LR 8
MTSPR: CTR 9 MTSPR: CTR 9
! Pseudo-instructions ! Pseudo-instructions
: LI 0 rot ADDI ; inline : LI ( value dst -- ) 0 rot ADDI ; inline
: SUBI neg ADDI ; inline : SUBI ( dst src1 src2 -- ) neg ADDI ; inline
: LIS 0 rot ADDIS ; inline : LIS ( value dst -- ) 0 rot ADDIS ; inline
: SUBIC neg ADDIC ; inline : SUBIC ( dst src1 src2 -- ) neg ADDIC ; inline
: SUBIC. neg ADDIC. ; inline : SUBIC. ( dst src1 src2 -- ) neg ADDIC. ; inline
: NOT dup NOR ; inline : NOT ( dst src -- ) dup NOR ; inline
: NOT. dup NOR. ; inline : NOT. ( dst src -- ) dup NOR. ; inline
: MR dup OR ; inline : MR ( dst src -- ) dup OR ; inline
: MR. dup OR. ; inline : MR. ( dst src -- ) dup OR. ; inline
: (SLWI) 0 31 pick - ; inline : (SLWI) ( d a b -- d a b x y ) 0 31 pick - ; inline
: SLWI ( d a b -- ) (SLWI) RLWINM ; : SLWI ( d a b -- ) (SLWI) RLWINM ;
: SLWI. ( d a b -- ) (SLWI) RLWINM. ; : SLWI. ( d a b -- ) (SLWI) RLWINM. ;
: (SRWI) 32 over - swap 31 ; inline : (SRWI) ( d a b -- d a b x y ) 32 over - swap 31 ; inline
: SRWI ( d a b -- ) (SRWI) RLWINM ; : SRWI ( d a b -- ) (SRWI) RLWINM ;
: SRWI. ( d a b -- ) (SRWI) RLWINM. ; : SRWI. ( d a b -- ) (SRWI) RLWINM. ;
: LOAD32 ( n r -- ) >r w>h/h r> tuck LIS dup rot ORI ; : LOAD32 ( n r -- ) >r w>h/h r> tuck LIS dup rot ORI ;

View File

@ -37,7 +37,7 @@ M:: x86.64 %dispatch ( src temp offset -- )
M: x86.64 param-reg-1 int-regs param-regs first ; M: x86.64 param-reg-1 int-regs param-regs first ;
M: x86.64 param-reg-2 int-regs param-regs second ; M: x86.64 param-reg-2 int-regs param-regs second ;
: param-reg-3 int-regs param-regs third ; inline : param-reg-3 ( -- reg ) int-regs param-regs third ; inline
M: int-regs return-reg drop RAX ; M: int-regs return-reg drop RAX ;
M: float-regs return-reg drop XMM0 ; M: float-regs return-reg drop XMM0 ;

View File

@ -79,9 +79,10 @@ big-endian off
! compute quotation location ! compute quotation location
temp0 temp1 ADD temp0 temp1 ADD
! load quotation ! load quotation
temp0 temp0 array-start-offset [+] MOV arg temp0 array-start-offset [+] MOV
! execute branch ! execute branch. the quot must be in arg, since it might
temp0 quot-xt-offset [+] JMP ! not be compiled yet
arg quot-xt-offset [+] JMP
] rc-absolute-cell rt-immediate 1 rex-length + jit-dispatch jit-define ] rc-absolute-cell rt-immediate 1 rex-length + jit-dispatch jit-define
: jit->r ( -- ) : jit->r ( -- )

View File

@ -12,7 +12,7 @@ SYMBOL: delimiter
CHAR: , delimiter set-global CHAR: , delimiter set-global
: delimiter> delimiter get ; inline : delimiter> ( -- delimiter ) delimiter get ; inline
DEFER: quoted-field ( -- endchar ) DEFER: quoted-field ( -- endchar )

View File

@ -1,6 +1,6 @@
USING: definitions kernel parser words sequences math.parser USING: definitions kernel parser words sequences math.parser
namespaces editors io.launcher windows.shell32 io.files namespaces editors io.launcher windows.shell32 io.files
io.paths.windows strings unicode.case make ; io.directories.search.windows strings unicode.case make ;
IN: editors.editpadlite IN: editors.editpadlite
: editpadlite-path ( -- path ) : editpadlite-path ( -- path )

View File

@ -1,6 +1,6 @@
USING: definitions kernel parser words sequences math.parser USING: definitions kernel parser words sequences math.parser
namespaces editors io.launcher windows.shell32 io.files namespaces editors io.launcher windows.shell32 io.files
io.paths.windows strings unicode.case make ; io.directories.search.windows strings unicode.case make ;
IN: editors.editpadpro IN: editors.editpadpro
: editpadpro-path ( -- path ) : editpadpro-path ( -- path )

View File

@ -1,5 +1,6 @@
USING: editors io.files io.launcher kernel math.parser USING: editors io.files io.launcher kernel math.parser
namespaces sequences windows.shell32 make io.paths.windows ; namespaces sequences windows.shell32 make
io.directories.search.windows ;
IN: editors.editplus IN: editors.editplus
: editplus-path ( -- path ) : editplus-path ( -- path )

View File

@ -1,5 +1,6 @@
USING: editors io.files io.launcher kernel math.parser USING: editors io.files io.launcher kernel math.parser
namespaces sequences windows.shell32 make io.paths.windows ; namespaces sequences windows.shell32 make
io.directories.search.windows ;
IN: editors.emeditor IN: editors.emeditor
: emeditor-path ( -- path ) : emeditor-path ( -- path )

View File

@ -1,7 +1,7 @@
! Copyright (C) 2008 Kibleur Christophe. ! Copyright (C) 2008 Kibleur Christophe.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: editors io.files io.launcher kernel math.parser USING: editors io.files io.launcher kernel math.parser make
namespaces sequences windows.shell32 io.paths.windows make ; namespaces sequences windows.shell32 io.directories.search.windows ;
IN: editors.etexteditor IN: editors.etexteditor
: etexteditor-path ( -- str ) : etexteditor-path ( -- str )

View File

@ -1,5 +1,6 @@
USING: editors.gvim io.files kernel namespaces sequences USING: editors.gvim io.files kernel namespaces sequences
windows.shell32 io.paths.windows system ; windows.shell32 io.directories.search.windows system
io.pathnames ;
IN: editors.gvim.windows IN: editors.gvim.windows
M: windows gvim-path M: windows gvim-path

View File

@ -1,10 +1,10 @@
USING: editors io.files io.launcher kernel math.parser USING: editors io.files io.launcher kernel math.parser
namespaces sequences windows.shell32 make ; namespaces sequences windows.shell32 make io.pathnames ;
IN: editors.notepad2 IN: editors.notepad2
: notepad2-path ( -- path ) : notepad2-path ( -- path )
\ notepad2-path get-global [ \ notepad2-path get-global [
"C:\\Windows\\system32\\notepad.exe" windows-directory "system32\\notepad.exe" append-path
] unless* ; ] unless* ;
: notepad2 ( file line -- ) : notepad2 ( file line -- )

View File

@ -1,5 +1,5 @@
USING: editors io.files io.launcher kernel math.parser USING: editors io.files io.launcher kernel math.parser
namespaces sequences io.paths.windows make ; namespaces sequences io.directories.search.windows make ;
IN: editors.notepadpp IN: editors.notepadpp
: notepadpp-path ( -- path ) : notepadpp-path ( -- path )

View File

@ -1,7 +1,7 @@
! Copyright (C) 2007 Clemens F. Hofreither. ! Copyright (C) 2007 Clemens F. Hofreither.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
! clemens.hofreither@gmx.net ! clemens.hofreither@gmx.net
USING: io.files io.launcher kernel namespaces io.paths.windows USING: io.files io.launcher kernel namespaces io.directories.search.windows
math math.parser editors sequences make unicode.case ; math math.parser editors sequences make unicode.case ;
IN: editors.scite IN: editors.scite

View File

@ -1,5 +1,5 @@
USING: editors io.files io.launcher kernel math.parser USING: editors io.files io.launcher kernel math.parser
namespaces sequences io.paths.windows make ; namespaces sequences io.directories.search.windows make ;
IN: editors.ted-notepad IN: editors.ted-notepad
: ted-notepad-path ( -- path ) : ted-notepad-path ( -- path )

View File

@ -0,0 +1 @@
Doug Coleman

View File

@ -0,0 +1 @@
TextPad editor integration

View File

@ -0,0 +1,16 @@
USING: editors io.files io.launcher kernel math.parser
namespaces sequences make io.directories.search
io.directories.search.windows ;
IN: editors.textpad
: textpad-path ( -- path )
\ textpad-path get-global [
"TextPad 5" t [ "TextPad.exe" tail? ] find-in-program-files
] unless* ;
: textpad ( file line -- )
[
textpad-path , [ , ] [ number>string "(" ",0)" surround , ] bi*
] { } make run-detached drop ;
[ textpad ] edit-hook set-global

View File

@ -1,5 +1,5 @@
USING: editors io.files io.launcher kernel math.parser USING: editors io.files io.launcher kernel math.parser
namespaces sequences io.paths.windows make ; namespaces sequences io.directories.search.windows make ;
IN: editors.ultraedit IN: editors.ultraedit
: ultraedit-path ( -- path ) : ultraedit-path ( -- path )

View File

@ -1,4 +1,5 @@
USING: definitions help help.markup help.syntax io io.files editors words ; USING: definitions editors help help.markup help.syntax io io.files
io.pathnames words ;
IN: editors.vim IN: editors.vim
ARTICLE: { "vim" "vim" } "Vim support" ARTICLE: { "vim" "vim" } "Vim support"

View File

@ -1,4 +1,4 @@
USING: editors io.launcher kernel io.paths.windows USING: editors io.launcher kernel io.directories.search.windows
math.parser namespaces sequences io.files arrays ; math.parser namespaces sequences io.files arrays ;
IN: editors.wordpad IN: editors.wordpad

View File

@ -10,8 +10,8 @@ HELP: <redirect>
{ $values { "url" url } { "response" response } } { $values { "url" url } { "response" response } }
{ $description "Creates a response which redirects the client to the given URL." } ; { $description "Creates a response which redirects the client to the given URL." } ;
HELP: <secure-only> ( responder -- responder' ) HELP: <secure-only>
{ $values { "responder" "a responder" } { "responder'" "a responder" } } { $values { "responder" "a responder" } { "secure-only" "a responder" } }
{ $description "Creates a new responder which ensures that the client is connecting via HTTPS before delegating to the underlying responder. If the client is connecting via HTTP, a redirect is sent instead." } ; { $description "Creates a new responder which ensures that the client is connecting via HTTPS before delegating to the underlying responder. If the client is connecting via HTTP, a redirect is sent instead." } ;
HELP: <secure-redirect> HELP: <secure-redirect>

View File

@ -8,7 +8,8 @@ IN: grouping
TUPLE: chunking-seq { seq read-only } { n read-only } ; TUPLE: chunking-seq { seq read-only } { n read-only } ;
: check-groups dup 0 <= [ "Invalid group count" throw ] when ; inline : check-groups ( n -- n )
dup 0 <= [ "Invalid group count" throw ] when ; inline
: new-groups ( seq n class -- groups ) : new-groups ( seq n class -- groups )
[ check-groups ] dip boa ; inline [ check-groups ] dip boa ; inline

View File

@ -87,7 +87,8 @@ M: heap heap-size ( heap -- n )
GENERIC: heap-compare ( pair1 pair2 heap -- ? ) GENERIC: heap-compare ( pair1 pair2 heap -- ? )
: (heap-compare) drop [ key>> ] compare ; inline : (heap-compare) ( pair1 pair2 heap -- <=> )
drop [ key>> ] compare ; inline
M: min-heap heap-compare (heap-compare) +gt+ eq? ; M: min-heap heap-compare (heap-compare) +gt+ eq? ;

View File

@ -45,6 +45,7 @@ IN: help.lint
{ {
[ drop "declared-effect" word-prop not ] [ drop "declared-effect" word-prop not ]
[ nip contains-funky-elements? ] [ nip contains-funky-elements? ]
[ drop symbol? ]
[ drop macro? ] [ drop macro? ]
[ [
[ effect-values >array ] [ effect-values >array ]

View File

@ -4,8 +4,8 @@ html.templates html.templates.chloe.syntax
html.templates.chloe.compiler html.templates.chloe.components html.templates.chloe.compiler html.templates.chloe.components
math xml.data strings quotations namespaces ; math xml.data strings quotations namespaces ;
HELP: <chloe> ( path -- template ) HELP: <chloe>
{ $values { "path" "a pathname string without the trailing " { $snippet ".xml" } " extension" } { "template" chloe } } { $values { "path" "a pathname string without the trailing " { $snippet ".xml" } " extension" } { "chloe" chloe } }
{ $description "Creates a new Chloe template object which can be passed to " { $link call-template } "." } ; { $description "Creates a new Chloe template object which can be passed to " { $link call-template } "." } ;
HELP: required-attr HELP: required-attr

View File

@ -1,7 +1,7 @@
IN: html.templates.fhtml IN: html.templates.fhtml
USING: help.markup help.syntax ; USING: help.markup help.syntax ;
HELP: <fhtml> ( path -- fhtml ) HELP: <fhtml>
{ $values { "path" "a pathname string" } { "fhtml" fhtml } } { $values { "path" "a pathname string" } { "fhtml" fhtml } }
{ $description "Creates an FHTML template descriptor." } ; { $description "Creates an FHTML template descriptor." } ;

View File

@ -4,7 +4,7 @@ IN: http.server
HELP: trivial-responder HELP: trivial-responder
{ $description "The class of trivial responders, which output the same response for every request. New instances are created by calling " { $link <trivial-responder> } "." } ; { $description "The class of trivial responders, which output the same response for every request. New instances are created by calling " { $link <trivial-responder> } "." } ;
HELP: <trivial-responder> ( response -- responder ) HELP: <trivial-responder>
{ $values { "response" response } { "responder" trivial-responder } } { $values { "response" response } { "responder" trivial-responder } }
{ $description "Creates a new trivial responder which outputs the same response for every request." } ; { $description "Creates a new trivial responder which outputs the same response for every request." } ;

View File

@ -21,6 +21,9 @@ C: <io-callback> io-callback
[ (make-overlapped) ] dip [ (make-overlapped) ] dip
handle>> ptr>> [ over set-OVERLAPPED-offset ] when* ; handle>> ptr>> [ over set-OVERLAPPED-offset ] when* ;
M: winnt FileArgs-overlapped ( port -- overlapped )
make-overlapped ;
: <completion-port> ( handle existing -- handle ) : <completion-port> ( handle existing -- handle )
f 1 CreateIoCompletionPort dup win32-error=0/f ; f 1 CreateIoCompletionPort dup win32-error=0/f ;

View File

@ -56,4 +56,4 @@ PRIVATE>
: find-in-directories ( directories bfs? quot -- path' ) : find-in-directories ( directories bfs? quot -- path' )
'[ _ _ find-file ] attempt-all ; inline '[ _ _ find-file ] attempt-all ; inline
os windows? [ "io.paths.windows" require ] when os windows? [ "io.directories.search.windows" require ] when

View File

@ -1,7 +1,8 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: arrays fry io.pathnames kernel sequences windows.shell32 ; USING: arrays fry io.pathnames kernel sequences windows.shell32
IN: io.paths io.directories.search ;
IN: io.directories.search.windows
: program-files-directories ( -- array ) : program-files-directories ( -- array )
program-files program-files-x86 2array ; inline program-files program-files-x86 2array ; inline

View File

@ -11,14 +11,15 @@ M: unix cwd ( -- path )
M: unix cd ( path -- ) [ chdir ] unix-system-call drop ; M: unix cd ( path -- ) [ chdir ] unix-system-call drop ;
: read-flags O_RDONLY ; inline : read-flags ( -- n ) O_RDONLY ; inline
: open-read ( path -- fd ) O_RDONLY file-mode open-file ; : open-read ( path -- fd ) O_RDONLY file-mode open-file ;
M: unix (file-reader) ( path -- stream ) M: unix (file-reader) ( path -- stream )
open-read <fd> init-fd <input-port> ; open-read <fd> init-fd <input-port> ;
: write-flags { O_WRONLY O_CREAT O_TRUNC } flags ; inline : write-flags ( -- n )
{ O_WRONLY O_CREAT O_TRUNC } flags ; inline
: open-write ( path -- fd ) : open-write ( path -- fd )
write-flags file-mode open-file ; write-flags file-mode open-file ;
@ -26,7 +27,8 @@ M: unix (file-reader) ( path -- stream )
M: unix (file-writer) ( path -- stream ) M: unix (file-writer) ( path -- stream )
open-write <fd> init-fd <output-port> ; open-write <fd> init-fd <output-port> ;
: append-flags { O_WRONLY O_APPEND O_CREAT } flags ; inline : append-flags ( -- n )
{ O_WRONLY O_APPEND O_CREAT } flags ; inline
: open-append ( path -- fd ) : open-append ( path -- fd )
[ [

View File

@ -1,10 +1,10 @@
USING: continuations destructors io.buffers io.files io.backend USING: continuations destructors io.buffers io.files io.backend
io.timeouts io.ports io.pathnames io.files.private io.backend.windows io.timeouts io.ports io.pathnames io.files.private
io.files.windows io.backend.windows.nt io.encodings.utf16n io.backend.windows io.files.windows io.encodings.utf16n windows
windows windows.kernel32 kernel libc math threads system windows.kernel32 kernel libc math threads system environment
environment alien.c-types alien.arrays alien.strings sequences alien.c-types alien.arrays alien.strings sequences combinators
combinators combinators.short-circuit ascii splitting alien combinators.short-circuit ascii splitting alien strings assocs
strings assocs namespaces make accessors tr ; namespaces make accessors tr ;
IN: io.files.windows.nt IN: io.files.windows.nt
M: winnt cwd M: winnt cwd
@ -44,9 +44,6 @@ M: winnt normalize-path ( string -- string' )
M: winnt CreateFile-flags ( DWORD -- DWORD ) M: winnt CreateFile-flags ( DWORD -- DWORD )
FILE_FLAG_OVERLAPPED bitor ; FILE_FLAG_OVERLAPPED bitor ;
M: winnt FileArgs-overlapped ( port -- overlapped )
make-overlapped ;
M: winnt open-append M: winnt open-append
0 ! [ dup file-info size>> ] [ drop 0 ] recover 0 ! [ dup file-info size>> ] [ drop 0 ] recover
[ (open-append) ] dip >>ptr ; [ (open-append) ] dip >>ptr ;

View File

@ -86,7 +86,7 @@ ARTICLE: "ssl-contexts" "Secure socket contexts"
HELP: secure HELP: secure
{ $class-description "The class of secure socket addresses." } ; { $class-description "The class of secure socket addresses." } ;
HELP: <secure> ( addrspec -- secure ) HELP: <secure>
{ $values { "addrspec" "an address specifier" } { "secure" secure } } { $values { "addrspec" "an address specifier" } { "secure" secure } }
{ $description "Creates a new secure socket address, which can then be passed to " { $link <client> } " or " { $link <server> } "." } ; { $description "Creates a new secure socket address, which can then be passed to " { $link <client> } " or " { $link <server> } "." } ;

View File

@ -150,7 +150,7 @@ HELP: input
{ $code "\"2 3 + .\" dup <input> write-object nl" } { $code "\"2 3 + .\" dup <input> write-object nl" }
} ; } ;
HELP: <input> ( string -- input ) HELP: <input>
{ $values { "string" string } { "input" input } } { $values { "string" string } { "input" input } }
{ $description "Creates a new " { $link input } "." } ; { $description "Creates a new " { $link input } "." } ;

View File

@ -3,6 +3,6 @@
USING: slots.private ; USING: slots.private ;
IN: locals.backend IN: locals.backend
: local-value 2 slot ; inline : local-value ( box -- value ) 2 slot ; inline
: set-local-value 2 set-slot ; inline : set-local-value ( value box -- ) 2 set-slot ; inline

5
basis/math/bitwise/bitwise.factor Normal file → Executable file
View File

@ -66,7 +66,10 @@ DEFER: byte-bit-count
\ byte-bit-count \ byte-bit-count
256 [ 256 [
0 swap [ [ 1+ ] when ] each-bit 0 swap [ [ 1+ ] when ] each-bit
] B{ } map-as '[ HEX: ff bitand _ nth-unsafe ] define-inline ] B{ } map-as '[ HEX: ff bitand _ nth-unsafe ]
(( byte -- table )) define-declared
\ byte-bit-count make-inline
>> >>

View File

@ -46,7 +46,8 @@ M: real sqrt
GENERIC# ^n 1 ( z w -- z^w ) GENERIC# ^n 1 ( z w -- z^w )
: (^n) 1 swap [ [ dupd * ] when [ sq ] dip ] each-bit nip ; inline : (^n) ( z w -- z^w )
1 swap [ [ dupd * ] when [ sq ] dip ] each-bit nip ; inline
M: integer ^n M: integer ^n
[ factor-2s ] dip [ (^n) ] keep rot * shift ; [ factor-2s ] dip [ (^n) ] keep rot * shift ;

View File

@ -11,7 +11,7 @@ HELP: rect
"Rectangles are constructed by calling " { $link <rect> } " and " { $link <extent-rect> } "." "Rectangles are constructed by calling " { $link <rect> } " and " { $link <extent-rect> } "."
} ; } ;
HELP: <rect> ( loc dim -- rect ) HELP: <rect>
{ $values { "loc" "a pair of integers" } { "dim" "a pair of integers" } { "rect" "a new " { $link rect } } } { $values { "loc" "a pair of integers" } { "dim" "a pair of integers" } { "rect" "a new " { $link rect } } }
{ $description "Creates a new rectangle with the specified top-left location and dimensions." } ; { $description "Creates a new rectangle with the specified top-left location and dimensions." } ;
@ -23,7 +23,7 @@ HELP: rect-bounds
{ rect-bounds rect-extent } related-words { rect-bounds rect-extent } related-words
HELP: <extent-rect> ( loc ext -- rect ) HELP: <extent-rect>
{ $values { "loc" "a pair of integers" } { "ext" "a pair of integers" } { "rect" "a new " { $link rect } } } { $values { "loc" "a pair of integers" } { "ext" "a pair of integers" } { "rect" "a new " { $link rect } } }
{ $description "Creates a new rectangle with the specified top-left and bottom-right corner locations." } ; { $description "Creates a new rectangle with the specified top-left and bottom-right corner locations." } ;

View File

@ -93,7 +93,7 @@ $nl
$nl $nl
"Intervals are created by calling " { $link [a,b] } ", " { $link (a,b) } ", " { $link [a,b) } ", " { $link (a,b] } " or " { $link [a,a] } "." } ; "Intervals are created by calling " { $link [a,b] } ", " { $link (a,b) } ", " { $link [a,b) } ", " { $link (a,b] } " or " { $link [a,a] } "." } ;
HELP: <interval> ( from to -- interval ) HELP: <interval>
{ $values { "from" "a " { $snippet "{ point included? }" } " pair" } { "to" "a " { $snippet "{ point included? }" } " pair" } { "interval" interval } } { $values { "from" "a " { $snippet "{ point included? }" } " pair" } { "to" "a " { $snippet "{ point included? }" } " pair" } { "interval" interval } }
{ $description "Creates a new interval. Usually it is more convenient to create intervals using one of the following words instead:" { $description "Creates a new interval. Usually it is more convenient to create intervals using one of the following words instead:"
{ $list { $list

View File

@ -10,7 +10,7 @@ IN: math.quaternions
<PRIVATE <PRIVATE
: ** conjugate * ; inline : ** ( x y -- z ) conjugate * ; inline
: 2q ( u v -- u' u'' v' v'' ) [ first2 ] bi@ ; inline : 2q ( u v -- u' u'' v' v'' ) [ first2 ] bi@ ; inline

View File

@ -20,11 +20,11 @@ M: range nth-unsafe ( n range -- obj )
INSTANCE: range immutable-sequence INSTANCE: range immutable-sequence
: twiddle 2dup > -1 1 ? ; inline : twiddle ( a b -- a b step ) 2dup > -1 1 ? ; inline
: (a, dup [ + ] curry 2dip ; inline : (a, ( a b step -- a' b' step ) dup [ + ] curry 2dip ; inline
: ,b) dup [ - ] curry dip ; inline : ,b) ( a b step -- a' b' step ) dup [ - ] curry dip ; inline
: [a,b] ( a b -- range ) twiddle <range> ; inline : [a,b] ( a b -- range ) twiddle <range> ; inline

View File

@ -20,7 +20,7 @@ $nl
$nl $nl
"Mirrors are created by calling " { $link <mirror> } " or " { $link make-mirror } "." } ; "Mirrors are created by calling " { $link <mirror> } " or " { $link make-mirror } "." } ;
HELP: <mirror> ( object -- mirror ) HELP: <mirror>
{ $values { "object" object } { "mirror" mirror } } { $values { "object" object } { "mirror" mirror } }
{ $description "Creates a " { $link mirror } " reflecting an object." } { $description "Creates a " { $link mirror } " reflecting an object." }
{ $examples { $examples

View File

@ -22,7 +22,8 @@ PRIVATE>
: STRING: : STRING:
CREATE-WORD CREATE-WORD
parse-here 1quotation define-inline ; parsing parse-here 1quotation
(( -- string )) define-inline ; parsing
<PRIVATE <PRIVATE
: (parse-multiline-string) ( start-index end-text -- end-index ) : (parse-multiline-string) ( start-index end-text -- end-index )

View File

@ -12,7 +12,7 @@ TUPLE: nibble-array
: nibble BIN: 1111 ; inline : nibble BIN: 1111 ; inline
: nibbles>bytes 1 + 2/ ; inline : nibbles>bytes ( m -- n ) 1 + 2/ ; inline
: byte/nibble ( n -- shift n' ) : byte/nibble ( n -- shift n' )
[ 1 bitand 2 shift ] [ -1 shift ] bi ; inline [ 1 bitand 2 shift ] [ -1 shift ] bi ; inline

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,8 @@
! Portions copyright (C) 2008 Slava Pestov ! Portions copyright (C) 2008 Slava Pestov
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax combinators kernel system namespaces USING: alien alien.syntax combinators kernel system namespaces
assocs parser lexer sequences words quotations math.bitwise ; assocs parser lexer sequences words quotations math.bitwise
alias constants ;
IN: openssl.libssl IN: openssl.libssl
@ -13,64 +14,64 @@ IN: openssl.libssl
{ [ os unix? ] [ "libssl" "libssl.so" "cdecl" add-library ] } { [ os unix? ] [ "libssl" "libssl.so" "cdecl" add-library ] }
} cond >> } cond >>
: X509_FILETYPE_PEM 1 ; inline CONSTANT: X509_FILETYPE_PEM 1
: X509_FILETYPE_ASN1 2 ; inline CONSTANT: X509_FILETYPE_ASN1 2
: X509_FILETYPE_DEFAULT 3 ; inline CONSTANT: X509_FILETYPE_DEFAULT 3
: SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 ; inline ALIAS: SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1
: SSL_FILETYPE_PEM X509_FILETYPE_PEM ; inline ALIAS: SSL_FILETYPE_PEM X509_FILETYPE_PEM
: SSL_CTRL_NEED_TMP_RSA 1 ; inline CONSTANT: SSL_CTRL_NEED_TMP_RSA 1
: SSL_CTRL_SET_TMP_RSA 2 ; inline CONSTANT: SSL_CTRL_SET_TMP_RSA 2
: SSL_CTRL_SET_TMP_DH 3 ; inline CONSTANT: SSL_CTRL_SET_TMP_DH 3
: SSL_CTRL_SET_TMP_RSA_CB 4 ; inline CONSTANT: SSL_CTRL_SET_TMP_RSA_CB 4
: SSL_CTRL_SET_TMP_DH_CB 5 ; inline CONSTANT: SSL_CTRL_SET_TMP_DH_CB 5
: SSL_CTRL_GET_SESSION_REUSED 6 ; inline CONSTANT: SSL_CTRL_GET_SESSION_REUSED 6
: SSL_CTRL_GET_CLIENT_CERT_REQUEST 7 ; inline CONSTANT: SSL_CTRL_GET_CLIENT_CERT_REQUEST 7
: SSL_CTRL_GET_NUM_RENEGOTIATIONS 8 ; inline CONSTANT: SSL_CTRL_GET_NUM_RENEGOTIATIONS 8
: SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 9 ; inline CONSTANT: SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 9
: SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 10 ; inline CONSTANT: SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 10
: SSL_CTRL_GET_FLAGS 11 ; inline CONSTANT: SSL_CTRL_GET_FLAGS 11
: SSL_CTRL_EXTRA_CHAIN_CERT 12 ; inline CONSTANT: SSL_CTRL_EXTRA_CHAIN_CERT 12
: SSL_CTRL_SET_MSG_CALLBACK 13 ; inline CONSTANT: SSL_CTRL_SET_MSG_CALLBACK 13
: SSL_CTRL_SET_MSG_CALLBACK_ARG 14 ; inline CONSTANT: SSL_CTRL_SET_MSG_CALLBACK_ARG 14
: SSL_CTRL_SESS_NUMBER 20 ; inline CONSTANT: SSL_CTRL_SESS_NUMBER 20
: SSL_CTRL_SESS_CONNECT 21 ; inline CONSTANT: SSL_CTRL_SESS_CONNECT 21
: SSL_CTRL_SESS_CONNECT_GOOD 22 ; inline CONSTANT: SSL_CTRL_SESS_CONNECT_GOOD 22
: SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 ; inline CONSTANT: SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23
: SSL_CTRL_SESS_ACCEPT 24 ; inline CONSTANT: SSL_CTRL_SESS_ACCEPT 24
: SSL_CTRL_SESS_ACCEPT_GOOD 25 ; inline CONSTANT: SSL_CTRL_SESS_ACCEPT_GOOD 25
: SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 ; inline CONSTANT: SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26
: SSL_CTRL_SESS_HIT 27 ; inline CONSTANT: SSL_CTRL_SESS_HIT 27
: SSL_CTRL_SESS_CB_HIT 28 ; inline CONSTANT: SSL_CTRL_SESS_CB_HIT 28
: SSL_CTRL_SESS_MISSES 29 ; inline CONSTANT: SSL_CTRL_SESS_MISSES 29
: SSL_CTRL_SESS_TIMEOUTS 30 ; inline CONSTANT: SSL_CTRL_SESS_TIMEOUTS 30
: SSL_CTRL_SESS_CACHE_FULL 31 ; inline CONSTANT: SSL_CTRL_SESS_CACHE_FULL 31
: SSL_CTRL_OPTIONS 32 ; inline CONSTANT: SSL_CTRL_OPTIONS 32
: SSL_CTRL_MODE 33 ; inline CONSTANT: SSL_CTRL_MODE 33
: SSL_CTRL_GET_READ_AHEAD 40 ; inline CONSTANT: SSL_CTRL_GET_READ_AHEAD 40
: SSL_CTRL_SET_READ_AHEAD 41 ; inline CONSTANT: SSL_CTRL_SET_READ_AHEAD 41
: SSL_CTRL_SET_SESS_CACHE_SIZE 42 ; inline CONSTANT: SSL_CTRL_SET_SESS_CACHE_SIZE 42
: SSL_CTRL_GET_SESS_CACHE_SIZE 43 ; inline CONSTANT: SSL_CTRL_GET_SESS_CACHE_SIZE 43
: SSL_CTRL_SET_SESS_CACHE_MODE 44 ; inline CONSTANT: SSL_CTRL_SET_SESS_CACHE_MODE 44
: SSL_CTRL_GET_SESS_CACHE_MODE 45 ; inline CONSTANT: SSL_CTRL_GET_SESS_CACHE_MODE 45
: SSL_CTRL_GET_MAX_CERT_LIST 50 ; inline CONSTANT: SSL_CTRL_GET_MAX_CERT_LIST 50
: SSL_CTRL_SET_MAX_CERT_LIST 51 ; inline CONSTANT: SSL_CTRL_SET_MAX_CERT_LIST 51
: SSL_ERROR_NONE 0 ; inline CONSTANT: SSL_ERROR_NONE 0
: SSL_ERROR_SSL 1 ; inline CONSTANT: SSL_ERROR_SSL 1
: SSL_ERROR_WANT_READ 2 ; inline CONSTANT: SSL_ERROR_WANT_READ 2
: SSL_ERROR_WANT_WRITE 3 ; inline CONSTANT: SSL_ERROR_WANT_WRITE 3
: SSL_ERROR_WANT_X509_LOOKUP 4 ; inline CONSTANT: SSL_ERROR_WANT_X509_LOOKUP 4
: SSL_ERROR_SYSCALL 5 ; inline ! consult errno for details CONSTANT: SSL_ERROR_SYSCALL 5 ! consult errno for details
: SSL_ERROR_ZERO_RETURN 6 ; inline CONSTANT: SSL_ERROR_ZERO_RETURN 6
: SSL_ERROR_WANT_CONNECT 7 ; inline CONSTANT: SSL_ERROR_WANT_CONNECT 7
: SSL_ERROR_WANT_ACCEPT 8 ; inline CONSTANT: SSL_ERROR_WANT_ACCEPT 8
! Error messages table ! Error messages table
: error-messages ( -- hash ) : error-messages ( -- hash )
@ -157,8 +158,8 @@ FUNCTION: int SSL_read ( SSL* ssl, void* buf, int num ) ;
FUNCTION: int SSL_shutdown ( SSL* ssl ) ; FUNCTION: int SSL_shutdown ( SSL* ssl ) ;
: SSL_SENT_SHUTDOWN 1 ; CONSTANT: SSL_SENT_SHUTDOWN 1
: SSL_RECEIVED_SHUTDOWN 2 ; CONSTANT: SSL_RECEIVED_SHUTDOWN 2
FUNCTION: int SSL_get_shutdown ( SSL* ssl ) ; FUNCTION: int SSL_get_shutdown ( SSL* ssl ) ;
@ -172,10 +173,10 @@ FUNCTION: void SSL_SESSION_free ( SSL_SESSION* ses ) ;
FUNCTION: int SSL_want ( SSL* ssl ) ; FUNCTION: int SSL_want ( SSL* ssl ) ;
: SSL_NOTHING 1 ; inline CONSTANT: SSL_NOTHING 1
: SSL_WRITING 2 ; inline CONSTANT: SSL_WRITING 2
: SSL_READING 3 ; inline CONSTANT: SSL_READING 3
: SSL_X509_LOOKUP 4 ; inline CONSTANT: SSL_X509_LOOKUP 4
FUNCTION: long SSL_get_verify_result ( SSL* ssl ) ; FUNCTION: long SSL_get_verify_result ( SSL* ssl ) ;
@ -199,10 +200,10 @@ FUNCTION: int SSL_CTX_load_verify_locations ( SSL_CTX* ctx, char* CAfile,
FUNCTION: int SSL_CTX_set_default_verify_paths ( SSL_CTX* ctx ) ; FUNCTION: int SSL_CTX_set_default_verify_paths ( SSL_CTX* ctx ) ;
: SSL_VERIFY_NONE 0 ; inline CONSTANT: SSL_VERIFY_NONE 0
: SSL_VERIFY_PEER 1 ; inline CONSTANT: SSL_VERIFY_PEER 1
: SSL_VERIFY_FAIL_IF_NO_PEER_CERT 2 ; inline CONSTANT: SSL_VERIFY_FAIL_IF_NO_PEER_CERT 2
: SSL_VERIFY_CLIENT_ONCE 4 ; inline CONSTANT: SSL_VERIFY_CLIENT_ONCE 4
FUNCTION: void SSL_CTX_set_verify ( SSL_CTX* ctx, int mode, void* callback ) ; FUNCTION: void SSL_CTX_set_verify ( SSL_CTX* ctx, int mode, void* callback ) ;
@ -242,16 +243,16 @@ FUNCTION: void* BIO_f_ssl ( ) ;
: SSL_CTX_set_session_cache_mode ( ctx mode -- n ) : SSL_CTX_set_session_cache_mode ( ctx mode -- n )
[ SSL_CTRL_SET_SESS_CACHE_MODE ] dip f SSL_CTX_ctrl ; [ SSL_CTRL_SET_SESS_CACHE_MODE ] dip f SSL_CTX_ctrl ;
: SSL_SESS_CACHE_OFF HEX: 0000 ; inline CONSTANT: SSL_SESS_CACHE_OFF HEX: 0000
: SSL_SESS_CACHE_CLIENT HEX: 0001 ; inline CONSTANT: SSL_SESS_CACHE_CLIENT HEX: 0001
: SSL_SESS_CACHE_SERVER HEX: 0002 ; inline CONSTANT: SSL_SESS_CACHE_SERVER HEX: 0002
: SSL_SESS_CACHE_BOTH ( -- n ) : SSL_SESS_CACHE_BOTH ( -- n )
{ SSL_SESS_CACHE_CLIENT SSL_SESS_CACHE_SERVER } flags ; inline { SSL_SESS_CACHE_CLIENT SSL_SESS_CACHE_SERVER } flags ; inline
: SSL_SESS_CACHE_NO_AUTO_CLEAR HEX: 0080 ; inline CONSTANT: SSL_SESS_CACHE_NO_AUTO_CLEAR HEX: 0080
: SSL_SESS_CACHE_NO_INTERNAL_LOOKUP HEX: 0100 ; inline CONSTANT: SSL_SESS_CACHE_NO_INTERNAL_LOOKUP HEX: 0100
: SSL_SESS_CACHE_NO_INTERNAL_STORE HEX: 0200 ; inline CONSTANT: SSL_SESS_CACHE_NO_INTERNAL_STORE HEX: 0200
: SSL_SESS_CACHE_NO_INTERNAL ( -- n ) : SSL_SESS_CACHE_NO_INTERNAL ( -- n )
{ SSL_SESS_CACHE_NO_INTERNAL_LOOKUP SSL_SESS_CACHE_NO_INTERNAL_STORE } flags ; inline { SSL_SESS_CACHE_NO_INTERNAL_LOOKUP SSL_SESS_CACHE_NO_INTERNAL_STORE } flags ; inline
@ -282,8 +283,9 @@ H{ } clone verify-messages set-global
: X509_V_: : X509_V_:
scan "X509_V_" prepend create-in scan "X509_V_" prepend create-in
scan-word scan-word
[ 1quotation define-inline ] [ 1quotation (( -- value )) define-inline ]
[ verify-messages get set-at ] 2bi ; parsing [ verify-messages get set-at ]
2bi ; parsing
>> >>
@ -333,4 +335,4 @@ X509_V_: ERR_APPLICATION_VERIFICATION 50
! obj_mac.h ! obj_mac.h
! =============================================== ! ===============================================
: NID_commonName 13 ; inline CONSTANT: NID_commonName 13

View File

@ -22,9 +22,9 @@ M: persistent-vector length count>> ;
: node-size 32 ; inline : node-size 32 ; inline
: node-mask node-size mod ; inline : node-mask ( m -- n ) node-size mod ; inline
: node-shift -5 * shift ; inline : node-shift ( m n -- x ) -5 * shift ; inline
: node-nth ( i node -- obj ) : node-nth ( i node -- obj )
[ node-mask ] [ children>> ] bi* nth ; [ node-mask ] [ children>> ] bi* nth ;

View File

@ -5,7 +5,7 @@ IN: refs
TUPLE: ref assoc key ; TUPLE: ref assoc key ;
: >ref< [ key>> ] [ assoc>> ] bi ; inline : >ref< ( ref -- key value ) [ key>> ] [ assoc>> ] bi ; inline
: delete-ref ( ref -- ) >ref< delete-at ; : delete-ref ( ref -- ) >ref< delete-at ;
GENERIC: get-ref ( ref -- obj ) GENERIC: get-ref ( ref -- obj )

View File

@ -10,6 +10,6 @@ $nl
ABOUT: "search-deques" ABOUT: "search-deques"
HELP: <search-deque> ( assoc deque -- search-deque ) HELP: <search-deque>
{ $values { "assoc" assoc } { "deque" deque } { "search-deque" search-deque } } { $values { "assoc" assoc } { "deque" deque } { "search-deque" search-deque } }
{ $description "Creates a new " { $link search-deque } "." } ; { $description "Creates a new " { $link search-deque } "." } ;

View File

@ -3,7 +3,8 @@ IN: sequences.next
<PRIVATE <PRIVATE
: iterate-seq [ dup length swap ] dip ; inline : iterate-seq ( seq quot -- i seq quot )
[ [ length ] keep ] dip ; inline
: (map-next) ( i seq quot -- ) : (map-next) ( i seq quot -- )
! this uses O(n) more bounds checks than is really necessary ! this uses O(n) more bounds checks than is really necessary

View File

@ -25,7 +25,7 @@ HELP: no-auth
HELP: plain-auth HELP: plain-auth
{ $class-description "If the " { $link smtp-auth } " variable is set to this value, plain authentication will be performed, with the username and password stored in the " { $slot "username" } " and " { $slot "password" } " slots of the tuple sent to the server as plain-text." } ; { $class-description "If the " { $link smtp-auth } " variable is set to this value, plain authentication will be performed, with the username and password stored in the " { $slot "username" } " and " { $slot "password" } " slots of the tuple sent to the server as plain-text." } ;
HELP: <plain-auth> ( username password -- plain-auth ) HELP: <plain-auth>
{ $values { "username" string } { "password" string } { "plain-auth" plain-auth } } { $values { "username" string } { "password" string } { "plain-auth" plain-auth } }
{ $description "Creates a new " { $link plain-auth } " instance." } ; { $description "Creates a new " { $link plain-auth } " instance." } ;

View File

@ -18,7 +18,7 @@ WHERE
TUPLE: V { underlying A } { length array-capacity } ; TUPLE: V { underlying A } { length array-capacity } ;
: <V> <A> execute 0 V boa ; inline : <V> ( capacity -- vector ) <A> execute 0 V boa ; inline
M: V like M: V like
drop dup V instance? [ drop dup V instance? [
@ -31,7 +31,7 @@ M: A new-resizable drop <V> execute ;
M: V equal? over V instance? [ sequence= ] [ 2drop f ] if ; M: V equal? over V instance? [ sequence= ] [ 2drop f ] if ;
: >V V new clone-like ; inline : >V ( seq -- vector ) V new clone-like ; inline
M: V pprint-delims drop V{ \ } ; M: V pprint-delims drop V{ \ } ;

View File

@ -145,7 +145,6 @@ M: object apply-object push-literal ;
: effect-required? ( word -- ? ) : effect-required? ( word -- ? )
{ {
{ [ dup inline? ] [ drop f ] }
{ [ dup deferred? ] [ drop f ] } { [ dup deferred? ] [ drop f ] }
{ [ dup crossref? not ] [ drop f ] } { [ dup crossref? not ] [ drop f ] }
[ def>> [ word? ] contains? ] [ def>> [ word? ] contains? ]

View File

@ -20,8 +20,9 @@ TYPEDEF: char[592] ud
FUNCTION: void ud_translate_intel ( ud* u ) ; FUNCTION: void ud_translate_intel ( ud* u ) ;
FUNCTION: void ud_translate_att ( ud* u ) ; FUNCTION: void ud_translate_att ( ud* u ) ;
: UD_SYN_INTEL &: ud_translate_intel ; inline : UD_SYN_INTEL ( -- addr ) &: ud_translate_intel ; inline
: UD_SYN_ATT &: ud_translate_att ; inline : UD_SYN_ATT ( -- addr ) &: ud_translate_att ; inline
: UD_EOI -1 ; inline : UD_EOI -1 ; inline
: UD_INP_CACHE_SZ 32 ; inline : UD_INP_CACHE_SZ 32 ; inline
: UD_VENDOR_AMD 0 ; inline : UD_VENDOR_AMD 0 ; inline

View File

@ -78,9 +78,9 @@ SYMBOL: dpi
72 dpi set-global 72 dpi set-global
: ft-floor -6 shift ; inline : ft-floor ( m -- n ) -6 shift ; inline
: ft-ceil 63 + -64 bitand -6 shift ; inline : ft-ceil ( m -- n ) 63 + -64 bitand -6 shift ; inline
: font-units>pixels ( n font -- n ) : font-units>pixels ( n font -- n )
face-size face-size-y-scale FT_MulFix ; face-size face-size-y-scale FT_MulFix ;

View File

@ -11,7 +11,7 @@ C: <grid-lines> grid-lines
SYMBOL: grid-dim SYMBOL: grid-dim
: half-gap grid get gap>> [ 2/ ] map ; inline : half-gap ( -- gap ) grid get gap>> [ 2/ ] map ; inline
: grid-line-from/to ( orientation point -- from to ) : grid-line-from/to ( orientation point -- from to )
half-gap v- half-gap v-

View File

@ -49,7 +49,7 @@ HELP: <pane-control>
HELP: pane-stream HELP: pane-stream
{ $class-description "Pane streams implement the portion of the " { $link "stream-protocol" } " responsible for output of text, including full support for " { $link "styles" } ". Pane streams also support direct output of gadgets via " { $link write-gadget } " and " { $link print-gadget } ". Pane streams are created by calling " { $link <pane-stream> } "." } ; { $class-description "Pane streams implement the portion of the " { $link "stream-protocol" } " responsible for output of text, including full support for " { $link "styles" } ". Pane streams also support direct output of gadgets via " { $link write-gadget } " and " { $link print-gadget } ". Pane streams are created by calling " { $link <pane-stream> } "." } ;
HELP: <pane-stream> ( pane -- stream ) HELP: <pane-stream>
{ $values { "pane" pane } { "stream" "a new " { $link pane-stream } } } { $values { "pane" pane } { "stream" "a new " { $link pane-stream } } }
{ $description "Creates a new " { $link pane-stream } " for writing to " { $snippet "pane" } "." } ; { $description "Creates a new " { $link pane-stream } " for writing to " { $snippet "pane" } "." } ;

View File

@ -1,6 +1,6 @@
! Copyright (C) 2005, 2006 Slava Pestov. ! Copyright (C) 2005, 2006 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.syntax combinators system vocabs.loader ; USING: alien.syntax combinators system vocabs.loader alias ;
IN: unix IN: unix
: MAXPATHLEN 1024 ; inline : MAXPATHLEN 1024 ; inline
@ -14,7 +14,7 @@ IN: unix
: O_TRUNC HEX: 0400 ; inline : O_TRUNC HEX: 0400 ; inline
: O_EXCL HEX: 0800 ; inline : O_EXCL HEX: 0800 ; inline
: O_NOCTTY HEX: 20000 ; inline : O_NOCTTY HEX: 20000 ; inline
: O_NDELAY O_NONBLOCK ; inline ALIAS: O_NDELAY O_NONBLOCK
: SOL_SOCKET HEX: ffff ; inline : SOL_SOCKET HEX: ffff ; inline
: SO_REUSEADDR HEX: 4 ; inline : SO_REUSEADDR HEX: 4 ; inline
@ -69,10 +69,10 @@ C-STRUCT: passwd
: AF_INET 2 ; inline : AF_INET 2 ; inline
: AF_INET6 30 ; inline : AF_INET6 30 ; inline
: PF_UNSPEC AF_UNSPEC ; inline ALIAS: PF_UNSPEC AF_UNSPEC
: PF_UNIX AF_UNIX ; inline ALIAS: PF_UNIX AF_UNIX
: PF_INET AF_INET ; inline ALIAS: PF_INET AF_INET
: PF_INET6 AF_INET6 ; inline ALIAS: PF_INET6 AF_INET6
: IPPROTO_TCP 6 ; inline : IPPROTO_TCP 6 ; inline
: IPPROTO_UDP 17 ; inline : IPPROTO_UDP 17 ; inline

View File

@ -1,4 +1,4 @@
USING: alien.syntax unix.time ; USING: alien.syntax unix.time alias ;
IN: unix IN: unix
: FD_SETSIZE 1024 ; inline : FD_SETSIZE 1024 ; inline
@ -74,7 +74,7 @@ C-STRUCT: dirent
: EDOM 33 ; inline : EDOM 33 ; inline
: ERANGE 34 ; inline : ERANGE 34 ; inline
: EAGAIN 35 ; inline : EAGAIN 35 ; inline
: EWOULDBLOCK EAGAIN ; inline ALIAS: EWOULDBLOCK EAGAIN
: EINPROGRESS 36 ; inline : EINPROGRESS 36 ; inline
: EALREADY 37 ; inline : EALREADY 37 ; inline
: ENOTSOCK 38 ; inline : ENOTSOCK 38 ; inline

View File

@ -1,7 +1,7 @@
! Copyright (C) 2008 Slava Pestov. ! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.syntax system sequences vocabs.loader words USING: alien.syntax system sequences vocabs.loader words
accessors ; accessors alias constants ;
IN: unix.kqueue IN: unix.kqueue
<< "unix.kqueue." os name>> append require >> << "unix.kqueue." os name>> append require >>
@ -9,47 +9,47 @@ IN: unix.kqueue
FUNCTION: int kqueue ( ) ; FUNCTION: int kqueue ( ) ;
! actions ! actions
: EV_ADD HEX: 1 ; inline ! add event to kq (implies enable) CONSTANT: EV_ADD HEX: 1 ! add event to kq (implies enable)
: EV_DELETE HEX: 2 ; inline ! delete event from kq CONSTANT: EV_DELETE HEX: 2 ! delete event from kq
: EV_ENABLE HEX: 4 ; inline ! enable event CONSTANT: EV_ENABLE HEX: 4 ! enable event
: EV_DISABLE HEX: 8 ; inline ! disable event (not reported) CONSTANT: EV_DISABLE HEX: 8 ! disable event (not reported)
! flags ! flags
: EV_ONESHOT HEX: 10 ; inline ! only report one occurrence CONSTANT: EV_ONESHOT HEX: 10 ! only report one occurrence
: EV_CLEAR HEX: 20 ; inline ! clear event state after reporting CONSTANT: EV_CLEAR HEX: 20 ! clear event state after reporting
: EV_SYSFLAGS HEX: f000 ; inline ! reserved by system CONSTANT: EV_SYSFLAGS HEX: f000 ! reserved by system
: EV_FLAG0 HEX: 1000 ; inline ! filter-specific flag CONSTANT: EV_FLAG0 HEX: 1000 ! filter-specific flag
: EV_FLAG1 HEX: 2000 ; inline ! filter-specific flag CONSTANT: EV_FLAG1 HEX: 2000 ! filter-specific flag
! returned values ! returned values
: EV_EOF HEX: 8000 ; inline ! EOF detected CONSTANT: EV_EOF HEX: 8000 ! EOF detected
: EV_ERROR HEX: 4000 ; inline ! error, data contains errno CONSTANT: EV_ERROR HEX: 4000 ! error, data contains errno
: EV_POLL EV_FLAG0 ; inline ALIAS: EV_POLL EV_FLAG0
: EV_OOBAND EV_FLAG1 ; inline ALIAS: EV_OOBAND EV_FLAG1
: NOTE_LOWAT HEX: 00000001 ; inline ! low water mark CONSTANT: NOTE_LOWAT HEX: 00000001 ! low water mark
: NOTE_DELETE HEX: 00000001 ; inline ! vnode was removed CONSTANT: NOTE_DELETE HEX: 00000001 ! vnode was removed
: NOTE_WRITE HEX: 00000002 ; inline ! data contents changed CONSTANT: NOTE_WRITE HEX: 00000002 ! data contents changed
: NOTE_EXTEND HEX: 00000004 ; inline ! size increased CONSTANT: NOTE_EXTEND HEX: 00000004 ! size increased
: NOTE_ATTRIB HEX: 00000008 ; inline ! attributes changed CONSTANT: NOTE_ATTRIB HEX: 00000008 ! attributes changed
: NOTE_LINK HEX: 00000010 ; inline ! link count changed CONSTANT: NOTE_LINK HEX: 00000010 ! link count changed
: NOTE_RENAME HEX: 00000020 ; inline ! vnode was renamed CONSTANT: NOTE_RENAME HEX: 00000020 ! vnode was renamed
: NOTE_REVOKE HEX: 00000040 ; inline ! vnode access was revoked CONSTANT: NOTE_REVOKE HEX: 00000040 ! vnode access was revoked
: NOTE_EXIT HEX: 80000000 ; inline ! process exited CONSTANT: NOTE_EXIT HEX: 80000000 ! process exited
: NOTE_FORK HEX: 40000000 ; inline ! process forked CONSTANT: NOTE_FORK HEX: 40000000 ! process forked
: NOTE_EXEC HEX: 20000000 ; inline ! process exec'd CONSTANT: NOTE_EXEC HEX: 20000000 ! process exec'd
: NOTE_PCTRLMASK HEX: f0000000 ; inline ! mask for hint bits CONSTANT: NOTE_PCTRLMASK HEX: f0000000 ! mask for hint bits
: NOTE_PDATAMASK HEX: 000fffff ; inline ! mask for pid CONSTANT: NOTE_PDATAMASK HEX: 000fffff ! mask for pid
: NOTE_SECONDS HEX: 00000001 ; inline ! data is seconds CONSTANT: NOTE_SECONDS HEX: 00000001 ! data is seconds
: NOTE_USECONDS HEX: 00000002 ; inline ! data is microseconds CONSTANT: NOTE_USECONDS HEX: 00000002 ! data is microseconds
: NOTE_NSECONDS HEX: 00000004 ; inline ! data is nanoseconds CONSTANT: NOTE_NSECONDS HEX: 00000004 ! data is nanoseconds
: NOTE_ABSOLUTE HEX: 00000008 ; inline ! absolute timeout CONSTANT: NOTE_ABSOLUTE HEX: 00000008 ! absolute timeout
: NOTE_TRACK HEX: 00000001 ; inline ! follow across forks CONSTANT: NOTE_TRACK HEX: 00000001 ! follow across forks
: NOTE_TRACKERR HEX: 00000002 ; inline ! could not track child CONSTANT: NOTE_TRACKERR HEX: 00000002 ! could not track child
: NOTE_CHILD HEX: 00000004 ; inline ! am a child process CONSTANT: NOTE_CHILD HEX: 00000004 ! am a child process

View File

@ -2,31 +2,32 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types io.encodings.utf8 io.encodings.string USING: alien.c-types io.encodings.utf8 io.encodings.string
kernel sequences unix.stat accessors unix combinators math kernel sequences unix.stat accessors unix combinators math
grouping system alien.strings math.bitwise alien.syntax ; grouping system alien.strings math.bitwise alien.syntax
alias constants ;
IN: unix.statfs.macosx IN: unix.statfs.macosx
: MNT_RDONLY HEX: 00000001 ; inline CONSTANT: MNT_RDONLY HEX: 00000001
: MNT_SYNCHRONOUS HEX: 00000002 ; inline CONSTANT: MNT_SYNCHRONOUS HEX: 00000002
: MNT_NOEXEC HEX: 00000004 ; inline CONSTANT: MNT_NOEXEC HEX: 00000004
: MNT_NOSUID HEX: 00000008 ; inline CONSTANT: MNT_NOSUID HEX: 00000008
: MNT_NODEV HEX: 00000010 ; inline CONSTANT: MNT_NODEV HEX: 00000010
: MNT_UNION HEX: 00000020 ; inline CONSTANT: MNT_UNION HEX: 00000020
: MNT_ASYNC HEX: 00000040 ; inline CONSTANT: MNT_ASYNC HEX: 00000040
: MNT_EXPORTED HEX: 00000100 ; inline CONSTANT: MNT_EXPORTED HEX: 00000100
: MNT_QUARANTINE HEX: 00000400 ; inline CONSTANT: MNT_QUARANTINE HEX: 00000400
: MNT_LOCAL HEX: 00001000 ; inline CONSTANT: MNT_LOCAL HEX: 00001000
: MNT_QUOTA HEX: 00002000 ; inline CONSTANT: MNT_QUOTA HEX: 00002000
: MNT_ROOTFS HEX: 00004000 ; inline CONSTANT: MNT_ROOTFS HEX: 00004000
: MNT_DOVOLFS HEX: 00008000 ; inline CONSTANT: MNT_DOVOLFS HEX: 00008000
: MNT_DONTBROWSE HEX: 00100000 ; inline CONSTANT: MNT_DONTBROWSE HEX: 00100000
: MNT_IGNORE_OWNERSHIP HEX: 00200000 ; inline CONSTANT: MNT_IGNORE_OWNERSHIP HEX: 00200000
: MNT_AUTOMOUNTED HEX: 00400000 ; inline CONSTANT: MNT_AUTOMOUNTED HEX: 00400000
: MNT_JOURNALED HEX: 00800000 ; inline CONSTANT: MNT_JOURNALED HEX: 00800000
: MNT_NOUSERXATTR HEX: 01000000 ; inline CONSTANT: MNT_NOUSERXATTR HEX: 01000000
: MNT_DEFWRITE HEX: 02000000 ; inline CONSTANT: MNT_DEFWRITE HEX: 02000000
: MNT_MULTILABEL HEX: 04000000 ; inline CONSTANT: MNT_MULTILABEL HEX: 04000000
: MNT_NOATIME HEX: 10000000 ; inline CONSTANT: MNT_NOATIME HEX: 10000000
: MNT_UNKNOWNPERMISSIONS MNT_IGNORE_OWNERSHIP ; inline ALIAS: MNT_UNKNOWNPERMISSIONS MNT_IGNORE_OWNERSHIP
: MNT_VISFLAGMASK ( -- n ) : MNT_VISFLAGMASK ( -- n )
{ {
@ -39,58 +40,60 @@ IN: unix.statfs.macosx
MNT_NOUSERXATTR MNT_DEFWRITE MNT_MULTILABEL MNT_NOATIME MNT_NOUSERXATTR MNT_DEFWRITE MNT_MULTILABEL MNT_NOATIME
} flags ; inline } flags ; inline
: MNT_UPDATE HEX: 00010000 ; inline CONSTANT: MNT_UPDATE HEX: 00010000
: MNT_RELOAD HEX: 00040000 ; inline CONSTANT: MNT_RELOAD HEX: 00040000
: MNT_FORCE HEX: 00080000 ; inline CONSTANT: MNT_FORCE HEX: 00080000
: MNT_CMDFLAGS { MNT_UPDATE MNT_RELOAD MNT_FORCE } flags ; inline
: VFS_GENERIC 0 ; inline : MNT_CMDFLAGS ( -- n )
: VFS_NUMMNTOPS 1 ; inline { MNT_UPDATE MNT_RELOAD MNT_FORCE } flags ; inline
: VFS_MAXTYPENUM 1 ; inline
: VFS_CONF 2 ; inline
: VFS_SET_PACKAGE_EXTS 3 ; inline
: MNT_WAIT 1 ; inline CONSTANT: VFS_GENERIC 0
: MNT_NOWAIT 2 ; inline CONSTANT: VFS_NUMMNTOPS 1
CONSTANT: VFS_MAXTYPENUM 1
CONSTANT: VFS_CONF 2
CONSTANT: VFS_SET_PACKAGE_EXTS 3
: VFS_CTL_VERS1 HEX: 01 ; inline CONSTANT: MNT_WAIT 1
CONSTANT: MNT_NOWAIT 2
: VFS_CTL_STATFS HEX: 00010001 ; inline CONSTANT: VFS_CTL_VERS1 HEX: 01
: VFS_CTL_UMOUNT HEX: 00010002 ; inline
: VFS_CTL_QUERY HEX: 00010003 ; inline CONSTANT: VFS_CTL_STATFS HEX: 00010001
: VFS_CTL_NEWADDR HEX: 00010004 ; inline CONSTANT: VFS_CTL_UMOUNT HEX: 00010002
: VFS_CTL_TIMEO HEX: 00010005 ; inline CONSTANT: VFS_CTL_QUERY HEX: 00010003
: VFS_CTL_NOLOCKS HEX: 00010006 ; inline CONSTANT: VFS_CTL_NEWADDR HEX: 00010004
CONSTANT: VFS_CTL_TIMEO HEX: 00010005
CONSTANT: VFS_CTL_NOLOCKS HEX: 00010006
C-STRUCT: vfsquery C-STRUCT: vfsquery
{ "uint32_t" "vq_flags" } { "uint32_t" "vq_flags" }
{ { "uint32_t" 31 } "vq_spare" } ; { { "uint32_t" 31 } "vq_spare" } ;
: VQ_NOTRESP HEX: 0001 ; inline CONSTANT: VQ_NOTRESP HEX: 0001
: VQ_NEEDAUTH HEX: 0002 ; inline CONSTANT: VQ_NEEDAUTH HEX: 0002
: VQ_LOWDISK HEX: 0004 ; inline CONSTANT: VQ_LOWDISK HEX: 0004
: VQ_MOUNT HEX: 0008 ; inline CONSTANT: VQ_MOUNT HEX: 0008
: VQ_UNMOUNT HEX: 0010 ; inline CONSTANT: VQ_UNMOUNT HEX: 0010
: VQ_DEAD HEX: 0020 ; inline CONSTANT: VQ_DEAD HEX: 0020
: VQ_ASSIST HEX: 0040 ; inline CONSTANT: VQ_ASSIST HEX: 0040
: VQ_NOTRESPLOCK HEX: 0080 ; inline CONSTANT: VQ_NOTRESPLOCK HEX: 0080
: VQ_UPDATE HEX: 0100 ; inline CONSTANT: VQ_UPDATE HEX: 0100
: VQ_FLAG0200 HEX: 0200 ; inline CONSTANT: VQ_FLAG0200 HEX: 0200
: VQ_FLAG0400 HEX: 0400 ; inline CONSTANT: VQ_FLAG0400 HEX: 0400
: VQ_FLAG0800 HEX: 0800 ; inline CONSTANT: VQ_FLAG0800 HEX: 0800
: VQ_FLAG1000 HEX: 1000 ; inline CONSTANT: VQ_FLAG1000 HEX: 1000
: VQ_FLAG2000 HEX: 2000 ; inline CONSTANT: VQ_FLAG2000 HEX: 2000
: VQ_FLAG4000 HEX: 4000 ; inline CONSTANT: VQ_FLAG4000 HEX: 4000
: VQ_FLAG8000 HEX: 8000 ; inline CONSTANT: VQ_FLAG8000 HEX: 8000
: NFSV4_MAX_FH_SIZE 128 ; inline CONSTANT: NFSV4_MAX_FH_SIZE 128
: NFSV3_MAX_FH_SIZE 64 ; inline CONSTANT: NFSV3_MAX_FH_SIZE 64
: NFSV2_MAX_FH_SIZE 32 ; inline CONSTANT: NFSV2_MAX_FH_SIZE 32
: NFS_MAX_FH_SIZE NFSV4_MAX_FH_SIZE ; inline CONSTANT: NFS_MAX_FH_SIZE NFSV4_MAX_FH_SIZE
: MFSNAMELEN 15 ; inline CONSTANT: MFSNAMELEN 15
: MNAMELEN 90 ; inline CONSTANT: MNAMELEN 90
: MFSTYPENAMELEN 16 ; inline CONSTANT: MFSTYPENAMELEN 16
C-STRUCT: fsid_t C-STRUCT: fsid_t
{ { "int32_t" 2 } "val" } ; { { "int32_t" 2 } "val" } ;

View File

@ -4,31 +4,31 @@ USING: alien alien.c-types alien.syntax kernel libc
sequences continuations byte-arrays strings math namespaces sequences continuations byte-arrays strings math namespaces
system combinators vocabs.loader qualified accessors system combinators vocabs.loader qualified accessors
stack-checker macros locals generalizations unix.types stack-checker macros locals generalizations unix.types
io vocabs vocabs.loader ; io vocabs vocabs.loader constants ;
IN: unix IN: unix
: PROT_NONE 0 ; inline CONSTANT: PROT_NONE 0
: PROT_READ 1 ; inline CONSTANT: PROT_READ 1
: PROT_WRITE 2 ; inline CONSTANT: PROT_WRITE 2
: PROT_EXEC 4 ; inline CONSTANT: PROT_EXEC 4
CONSTANT: MAP_FILE 0
CONSTANT: MAP_SHARED 1
CONSTANT: MAP_PRIVATE 2
: MAP_FILE 0 ; inline : MAP_FAILED ( -- alien ) -1 <alien> ; inline
: MAP_SHARED 1 ; inline
: MAP_PRIVATE 2 ; inline
: MAP_FAILED -1 <alien> ; inline CONSTANT: NGROUPS_MAX 16
: NGROUPS_MAX 16 ; inline CONSTANT: DT_UNKNOWN 0
CONSTANT: DT_FIFO 1
: DT_UNKNOWN 0 ; inline CONSTANT: DT_CHR 2
: DT_FIFO 1 ; inline CONSTANT: DT_DIR 4
: DT_CHR 2 ; inline CONSTANT: DT_BLK 6
: DT_DIR 4 ; inline CONSTANT: DT_REG 8
: DT_BLK 6 ; inline CONSTANT: DT_LNK 10
: DT_REG 8 ; inline CONSTANT: DT_SOCK 12
: DT_LNK 10 ; inline CONSTANT: DT_WHT 14
: DT_SOCK 12 ; inline
: DT_WHT 14 ; inline
C-STRUCT: group C-STRUCT: group
{ "char*" "gr_name" } { "char*" "gr_name" }

View File

@ -17,7 +17,8 @@ M: vlist nth-unsafe vector>> nth-unsafe ;
<PRIVATE <PRIVATE
: >vlist< [ length>> ] [ vector>> ] bi ; inline : >vlist< ( vlist -- len vec )
[ length>> ] [ vector>> ] bi ; inline
: unshare ( len vec -- len vec' ) : unshare ( len vec -- len vec' )
clone [ set-length ] 2keep ; inline clone [ set-length ] 2keep ; inline

View File

@ -1,65 +1,65 @@
USING: alias alien.syntax kernel math windows.types math.bitwise ; USING: alias alien.syntax kernel math windows.types math.bitwise
constants ;
IN: windows.advapi32 IN: windows.advapi32
LIBRARY: advapi32 LIBRARY: advapi32
: PROV_RSA_FULL 1 ; inline CONSTANT: PROV_RSA_FULL 1
: PROV_RSA_SIG 2 ; inline CONSTANT: PROV_RSA_SIG 2
: PROV_DSS 3 ; inline CONSTANT: PROV_DSS 3
: PROV_FORTEZZA 4 ; inline CONSTANT: PROV_FORTEZZA 4
: PROV_MS_EXCHANGE 5 ; inline CONSTANT: PROV_MS_EXCHANGE 5
: PROV_SSL 6 ; inline CONSTANT: PROV_SSL 6
: PROV_RSA_SCHANNEL 12 ; inline CONSTANT: PROV_RSA_SCHANNEL 12
: PROV_DSS_DH 13 ; inline CONSTANT: PROV_DSS_DH 13
: PROV_EC_ECDSA_SIG 14 ; inline CONSTANT: PROV_EC_ECDSA_SIG 14
: PROV_EC_ECNRA_SIG 15 ; inline CONSTANT: PROV_EC_ECNRA_SIG 15
: PROV_EC_ECDSA_FULL 16 ; inline CONSTANT: PROV_EC_ECDSA_FULL 16
: PROV_EC_ECNRA_FULL 17 ; inline CONSTANT: PROV_EC_ECNRA_FULL 17
: PROV_DH_SCHANNEL 18 ; inline CONSTANT: PROV_DH_SCHANNEL 18
: PROV_SPYRUS_LYNKS 20 ; inline CONSTANT: PROV_SPYRUS_LYNKS 20
: PROV_RNG 21 ; inline CONSTANT: PROV_RNG 21
: PROV_INTEL_SEC 22 ; inline CONSTANT: PROV_INTEL_SEC 22
: PROV_REPLACE_OWF 23 ; inline CONSTANT: PROV_REPLACE_OWF 23
: PROV_RSA_AES 24 ; inline CONSTANT: PROV_RSA_AES 24
: MS_DEF_DH_SCHANNEL_PROV CONSTANT: MS_DEF_DH_SCHANNEL_PROV "Microsoft DH Schannel Cryptographic Provider"
"Microsoft DH Schannel Cryptographic Provider" ; inline
: MS_DEF_DSS_DH_PROV CONSTANT: MS_DEF_DSS_DH_PROV
"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider" ; inline "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
: MS_DEF_DSS_PROV CONSTANT: MS_DEF_DSS_PROV
"Microsoft Base DSS Cryptographic Provider" ; inline "Microsoft Base DSS Cryptographic Provider"
: MS_DEF_PROV CONSTANT: MS_DEF_PROV
"Microsoft Base Cryptographic Provider v1.0" ; inline "Microsoft Base Cryptographic Provider v1.0"
: MS_DEF_RSA_SCHANNEL_PROV CONSTANT: MS_DEF_RSA_SCHANNEL_PROV
"Microsoft RSA Schannel Cryptographic Provider" ; inline "Microsoft RSA Schannel Cryptographic Provider"
! Unsupported (!) ! Unsupported (!)
: MS_DEF_RSA_SIG_PROV CONSTANT: MS_DEF_RSA_SIG_PROV
"Microsoft RSA Signature Cryptographic Provider" ; inline "Microsoft RSA Signature Cryptographic Provider"
: MS_ENH_DSS_DH_PROV CONSTANT: MS_ENH_DSS_DH_PROV
"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider" ; inline "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
: MS_ENH_RSA_AES_PROV CONSTANT: MS_ENH_RSA_AES_PROV
"Microsoft Enhanced RSA and AES Cryptographic Provider" ; inline "Microsoft Enhanced RSA and AES Cryptographic Provider"
: MS_ENHANCED_PROV CONSTANT: MS_ENHANCED_PROV
"Microsoft Enhanced Cryptographic Provider v1.0" ; inline "Microsoft Enhanced Cryptographic Provider v1.0"
: MS_SCARD_PROV CONSTANT: MS_SCARD_PROV
"Microsoft Base Smart Card Crypto Provider" ; inline "Microsoft Base Smart Card Crypto Provider"
: MS_STRONG_PROV CONSTANT: MS_STRONG_PROV
"Microsoft Strong Cryptographic Provider" ; inline "Microsoft Strong Cryptographic Provider"
: CRYPT_VERIFYCONTEXT HEX: F0000000 ; inline CONSTANT: CRYPT_VERIFYCONTEXT HEX: F0000000
: CRYPT_NEWKEYSET HEX: 8 ; inline CONSTANT: CRYPT_NEWKEYSET HEX: 8
: CRYPT_DELETEKEYSET HEX: 10 ; inline CONSTANT: CRYPT_DELETEKEYSET HEX: 10
: CRYPT_MACHINE_KEYSET HEX: 20 ; inline CONSTANT: CRYPT_MACHINE_KEYSET HEX: 20
: CRYPT_SILENT HEX: 40 ; inline CONSTANT: CRYPT_SILENT HEX: 40
C-STRUCT: ACL C-STRUCT: ACL
{ "BYTE" "AclRevision" } { "BYTE" "AclRevision" }
@ -70,16 +70,16 @@ C-STRUCT: ACL
TYPEDEF: ACL* PACL TYPEDEF: ACL* PACL
: ACCESS_ALLOWED_ACE_TYPE 0 ; inline CONSTANT: ACCESS_ALLOWED_ACE_TYPE 0
: ACCESS_DENIED_ACE_TYPE 1 ; inline CONSTANT: ACCESS_DENIED_ACE_TYPE 1
: SYSTEM_AUDIT_ACE_TYPE 2 ; inline CONSTANT: SYSTEM_AUDIT_ACE_TYPE 2
: SYSTEM_ALARM_ACE_TYPE 3 ; inline CONSTANT: SYSTEM_ALARM_ACE_TYPE 3
: OBJECT_INHERIT_ACE HEX: 1 ; inline CONSTANT: OBJECT_INHERIT_ACE HEX: 1
: CONTAINER_INHERIT_ACE HEX: 2 ; inline CONSTANT: CONTAINER_INHERIT_ACE HEX: 2
: NO_PROPAGATE_INHERIT_ACE HEX: 4 ; inline CONSTANT: NO_PROPAGATE_INHERIT_ACE HEX: 4
: INHERIT_ONLY_ACE HEX: 8 ; inline CONSTANT: INHERIT_ONLY_ACE HEX: 8
: VALID_INHERIT_FLAGS HEX: f ; inline CONSTANT: VALID_INHERIT_FLAGS HEX: f
C-STRUCT: ACE_HEADER C-STRUCT: ACE_HEADER
{ "BYTE" "AceType" } { "BYTE" "AceType" }
@ -125,46 +125,46 @@ TYPEDEF: ACCESS_ALLOWED_CALLBACK_ACE* PACCESS_ALLOWED_CALLBACK_ACE
! typedef enum _TOKEN_INFORMATION_CLASS { ! typedef enum _TOKEN_INFORMATION_CLASS {
: TokenUser 1 ; inline CONSTANT: TokenUser 1
: TokenGroups 2 ; inline CONSTANT: TokenGroups 2
: TokenPrivileges 3 ; inline CONSTANT: TokenPrivileges 3
: TokenOwner 4 ; inline CONSTANT: TokenOwner 4
: TokenPrimaryGroup 5 ; inline CONSTANT: TokenPrimaryGroup 5
: TokenDefaultDacl 6 ; inline CONSTANT: TokenDefaultDacl 6
: TokenSource 7 ; inline CONSTANT: TokenSource 7
: TokenType 8 ; inline CONSTANT: TokenType 8
: TokenImpersonationLevel 9 ; inline CONSTANT: TokenImpersonationLevel 9
: TokenStatistics 10 ; inline CONSTANT: TokenStatistics 10
: TokenRestrictedSids 11 ; inline CONSTANT: TokenRestrictedSids 11
: TokenSessionId 12 ; inline CONSTANT: TokenSessionId 12
: TokenGroupsAndPrivileges 13 ; inline CONSTANT: TokenGroupsAndPrivileges 13
: TokenSessionReference 14 ; inline CONSTANT: TokenSessionReference 14
: TokenSandBoxInert 15 ; inline CONSTANT: TokenSandBoxInert 15
! } TOKEN_INFORMATION_CLASS; ! } TOKEN_INFORMATION_CLASS;
: DELETE HEX: 00010000 ; inline CONSTANT: DELETE HEX: 00010000
: READ_CONTROL HEX: 00020000 ; inline CONSTANT: READ_CONTROL HEX: 00020000
: WRITE_DAC HEX: 00040000 ; inline CONSTANT: WRITE_DAC HEX: 00040000
: WRITE_OWNER HEX: 00080000 ; inline CONSTANT: WRITE_OWNER HEX: 00080000
: SYNCHRONIZE HEX: 00100000 ; inline CONSTANT: SYNCHRONIZE HEX: 00100000
: STANDARD_RIGHTS_REQUIRED HEX: 000f0000 ; inline CONSTANT: STANDARD_RIGHTS_REQUIRED HEX: 000f0000
: STANDARD_RIGHTS_READ READ_CONTROL ; inline ALIAS: STANDARD_RIGHTS_READ READ_CONTROL
: STANDARD_RIGHTS_WRITE READ_CONTROL ; inline ALIAS: STANDARD_RIGHTS_WRITE READ_CONTROL
: STANDARD_RIGHTS_EXECUTE READ_CONTROL ; inline ALIAS: STANDARD_RIGHTS_EXECUTE READ_CONTROL
: TOKEN_TOKEN_ADJUST_DEFAULT HEX: 0080 ; inline CONSTANT: TOKEN_TOKEN_ADJUST_DEFAULT HEX: 0080
: TOKEN_ADJUST_GROUPS HEX: 0040 ; inline CONSTANT: TOKEN_ADJUST_GROUPS HEX: 0040
: TOKEN_ADJUST_PRIVILEGES HEX: 0020 ; inline CONSTANT: TOKEN_ADJUST_PRIVILEGES HEX: 0020
: TOKEN_ADJUST_SESSIONID HEX: 0100 ; inline CONSTANT: TOKEN_ADJUST_SESSIONID HEX: 0100
: TOKEN_ASSIGN_PRIMARY HEX: 0001 ; inline CONSTANT: TOKEN_ASSIGN_PRIMARY HEX: 0001
: TOKEN_DUPLICATE HEX: 0002 ; inline CONSTANT: TOKEN_DUPLICATE HEX: 0002
: TOKEN_EXECUTE STANDARD_RIGHTS_EXECUTE ; inline ALIAS: TOKEN_EXECUTE STANDARD_RIGHTS_EXECUTE
: TOKEN_IMPERSONATE HEX: 0004 ; inline CONSTANT: TOKEN_IMPERSONATE HEX: 0004
: TOKEN_QUERY HEX: 0008 ; inline CONSTANT: TOKEN_QUERY HEX: 0008
: TOKEN_QUERY_SOURCE HEX: 0010 ; inline CONSTANT: TOKEN_QUERY_SOURCE HEX: 0010
: TOKEN_ADJUST_DEFAULT HEX: 0080 ; inline CONSTANT: TOKEN_ADJUST_DEFAULT HEX: 0080
: TOKEN_READ ( -- n ) STANDARD_RIGHTS_READ TOKEN_QUERY bitor ; : TOKEN_READ ( -- n ) { STANDARD_RIGHTS_READ TOKEN_QUERY } flags ;
: TOKEN_WRITE ( -- n ) : TOKEN_WRITE ( -- n )
{ {

573
basis/windows/dinput/dinput.factor Normal file → Executable file
View File

@ -1,5 +1,6 @@
USING: windows.kernel32 windows.ole32 windows.com windows.com.syntax USING: windows.kernel32 windows.ole32 windows.com windows.com.syntax
alien alien.c-types alien.syntax kernel system namespaces math ; alien alien.c-types alien.syntax kernel system namespaces math constants
alias ;
IN: windows.dinput IN: windows.dinput
<< <<
@ -384,314 +385,314 @@ COM-INTERFACE: IDirectInput8W IUnknown {BF798031-483A-4DA2-AA99-5D64ED369700}
FUNCTION: HRESULT DirectInput8Create ( HINSTANCE hinst, DWORD dwVersion, REFIID riidtlf, LPVOID* ppvOut, LPUNKNOWN punkOuter ) ; FUNCTION: HRESULT DirectInput8Create ( HINSTANCE hinst, DWORD dwVersion, REFIID riidtlf, LPVOID* ppvOut, LPUNKNOWN punkOuter ) ;
: DIRECTINPUT_VERSION HEX: 0800 ; inline CONSTANT: DIRECTINPUT_VERSION HEX: 0800
CONSTANT: DI8DEVCLASS_ALL 0
CONSTANT: DI8DEVCLASS_DEVICE 1
CONSTANT: DI8DEVCLASS_POINTER 2
CONSTANT: DI8DEVCLASS_KEYBOARD 3
CONSTANT: DI8DEVCLASS_GAMECTRL 4
: DI8DEVCLASS_ALL 0 ; inline CONSTANT: DIEDFL_ALLDEVICES HEX: 00000000
: DI8DEVCLASS_DEVICE 1 ; inline CONSTANT: DIEDFL_ATTACHEDONLY HEX: 00000001
: DI8DEVCLASS_POINTER 2 ; inline CONSTANT: DIEDFL_FORCEFEEDBACK HEX: 00000100
: DI8DEVCLASS_KEYBOARD 3 ; inline CONSTANT: DIEDFL_INCLUDEALIASES HEX: 00010000
: DI8DEVCLASS_GAMECTRL 4 ; inline CONSTANT: DIEDFL_INCLUDEPHANTOMS HEX: 00020000
CONSTANT: DIEDFL_INCLUDEHIDDEN HEX: 00040000
CONSTANT: DIENUM_STOP 0
CONSTANT: DIENUM_CONTINUE 1
: DIEDFL_ALLDEVICES HEX: 00000000 ; inline CONSTANT: DIDF_ABSAXIS 1
: DIEDFL_ATTACHEDONLY HEX: 00000001 ; inline CONSTANT: DIDF_RELAXIS 2
: DIEDFL_FORCEFEEDBACK HEX: 00000100 ; inline
: DIEDFL_INCLUDEALIASES HEX: 00010000 ; inline
: DIEDFL_INCLUDEPHANTOMS HEX: 00020000 ; inline
: DIEDFL_INCLUDEHIDDEN HEX: 00040000 ; inline
: DIENUM_STOP 0 ; inline CONSTANT: DIDFT_ALL HEX: 00000000
: DIENUM_CONTINUE 1 ; inline
CONSTANT: DIDFT_RELAXIS HEX: 00000001
: DIDF_ABSAXIS 1 ; CONSTANT: DIDFT_ABSAXIS HEX: 00000002
: DIDF_RELAXIS 2 ; CONSTANT: DIDFT_AXIS HEX: 00000003
: DIDFT_ALL HEX: 00000000 ; inline CONSTANT: DIDFT_PSHBUTTON HEX: 00000004
CONSTANT: DIDFT_TGLBUTTON HEX: 00000008
: DIDFT_RELAXIS HEX: 00000001 ; inline CONSTANT: DIDFT_BUTTON HEX: 0000000C
: DIDFT_ABSAXIS HEX: 00000002 ; inline
: DIDFT_AXIS HEX: 00000003 ; inline CONSTANT: DIDFT_POV HEX: 00000010
CONSTANT: DIDFT_COLLECTION HEX: 00000040
: DIDFT_PSHBUTTON HEX: 00000004 ; inline CONSTANT: DIDFT_NODATA HEX: 00000080
: DIDFT_TGLBUTTON HEX: 00000008 ; inline
: DIDFT_BUTTON HEX: 0000000C ; inline CONSTANT: DIDFT_ANYINSTANCE HEX: 00FFFF00
ALIAS: DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE
: DIDFT_POV HEX: 00000010 ; inline
: DIDFT_COLLECTION HEX: 00000040 ; inline
: DIDFT_NODATA HEX: 00000080 ; inline
: DIDFT_ANYINSTANCE HEX: 00FFFF00 ; inline
: DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE ; inline
: DIDFT_MAKEINSTANCE ( n -- instance ) 8 shift ; inline : DIDFT_MAKEINSTANCE ( n -- instance ) 8 shift ; inline
: DIDFT_GETTYPE ( n -- type ) HEX: FF bitand ; inline : DIDFT_GETTYPE ( n -- type ) HEX: FF bitand ; inline
: DIDFT_GETINSTANCE ( n -- instance ) -8 shift HEX: FFFF bitand ; inline : DIDFT_GETINSTANCE ( n -- instance ) -8 shift HEX: FFFF bitand ; inline
: DIDFT_FFACTUATOR HEX: 01000000 ; inline CONSTANT: DIDFT_FFACTUATOR HEX: 01000000
: DIDFT_FFEFFECTTRIGGER HEX: 02000000 ; inline CONSTANT: DIDFT_FFEFFECTTRIGGER HEX: 02000000
: DIDFT_OUTPUT HEX: 10000000 ; inline CONSTANT: DIDFT_OUTPUT HEX: 10000000
: DIDFT_VENDORDEFINED HEX: 04000000 ; inline CONSTANT: DIDFT_VENDORDEFINED HEX: 04000000
: DIDFT_ALIAS HEX: 08000000 ; inline CONSTANT: DIDFT_ALIAS HEX: 08000000
: DIDFT_OPTIONAL HEX: 80000000 ; inline CONSTANT: DIDFT_OPTIONAL HEX: 80000000
: DIDFT_ENUMCOLLECTION ( n -- instance ) 8 shift HEX: FFFF bitand ; inline : DIDFT_ENUMCOLLECTION ( n -- instance ) 8 shift HEX: FFFF bitand ; inline
: DIDFT_NOCOLLECTION HEX: 00FFFF00 ; inline CONSTANT: DIDFT_NOCOLLECTION HEX: 00FFFF00
: DIDOI_FFACTUATOR HEX: 00000001 ; inline CONSTANT: DIDOI_FFACTUATOR HEX: 00000001
: DIDOI_FFEFFECTTRIGGER HEX: 00000002 ; inline CONSTANT: DIDOI_FFEFFECTTRIGGER HEX: 00000002
: DIDOI_POLLED HEX: 00008000 ; inline CONSTANT: DIDOI_POLLED HEX: 00008000
: DIDOI_ASPECTPOSITION HEX: 00000100 ; inline CONSTANT: DIDOI_ASPECTPOSITION HEX: 00000100
: DIDOI_ASPECTVELOCITY HEX: 00000200 ; inline CONSTANT: DIDOI_ASPECTVELOCITY HEX: 00000200
: DIDOI_ASPECTACCEL HEX: 00000300 ; inline CONSTANT: DIDOI_ASPECTACCEL HEX: 00000300
: DIDOI_ASPECTFORCE HEX: 00000400 ; inline CONSTANT: DIDOI_ASPECTFORCE HEX: 00000400
: DIDOI_ASPECTMASK HEX: 00000F00 ; inline CONSTANT: DIDOI_ASPECTMASK HEX: 00000F00
: DIDOI_GUIDISUSAGE HEX: 00010000 ; inline CONSTANT: DIDOI_GUIDISUSAGE HEX: 00010000
: DISCL_EXCLUSIVE HEX: 00000001 ; inline CONSTANT: DISCL_EXCLUSIVE HEX: 00000001
: DISCL_NONEXCLUSIVE HEX: 00000002 ; inline CONSTANT: DISCL_NONEXCLUSIVE HEX: 00000002
: DISCL_FOREGROUND HEX: 00000004 ; inline CONSTANT: DISCL_FOREGROUND HEX: 00000004
: DISCL_BACKGROUND HEX: 00000008 ; inline CONSTANT: DISCL_BACKGROUND HEX: 00000008
: DISCL_NOWINKEY HEX: 00000010 ; inline CONSTANT: DISCL_NOWINKEY HEX: 00000010
: DIK_ESCAPE HEX: 01 ; inline CONSTANT: DIK_ESCAPE HEX: 01
: DIK_1 HEX: 02 ; inline CONSTANT: DIK_1 HEX: 02
: DIK_2 HEX: 03 ; inline CONSTANT: DIK_2 HEX: 03
: DIK_3 HEX: 04 ; inline CONSTANT: DIK_3 HEX: 04
: DIK_4 HEX: 05 ; inline CONSTANT: DIK_4 HEX: 05
: DIK_5 HEX: 06 ; inline CONSTANT: DIK_5 HEX: 06
: DIK_6 HEX: 07 ; inline CONSTANT: DIK_6 HEX: 07
: DIK_7 HEX: 08 ; inline CONSTANT: DIK_7 HEX: 08
: DIK_8 HEX: 09 ; inline CONSTANT: DIK_8 HEX: 09
: DIK_9 HEX: 0A ; inline CONSTANT: DIK_9 HEX: 0A
: DIK_0 HEX: 0B ; inline CONSTANT: DIK_0 HEX: 0B
: DIK_MINUS HEX: 0C ; inline CONSTANT: DIK_MINUS HEX: 0C
: DIK_EQUALS HEX: 0D ; inline CONSTANT: DIK_EQUALS HEX: 0D
: DIK_BACK HEX: 0E ; inline CONSTANT: DIK_BACK HEX: 0E
: DIK_TAB HEX: 0F ; inline CONSTANT: DIK_TAB HEX: 0F
: DIK_Q HEX: 10 ; inline CONSTANT: DIK_Q HEX: 10
: DIK_W HEX: 11 ; inline CONSTANT: DIK_W HEX: 11
: DIK_E HEX: 12 ; inline CONSTANT: DIK_E HEX: 12
: DIK_R HEX: 13 ; inline CONSTANT: DIK_R HEX: 13
: DIK_T HEX: 14 ; inline CONSTANT: DIK_T HEX: 14
: DIK_Y HEX: 15 ; inline CONSTANT: DIK_Y HEX: 15
: DIK_U HEX: 16 ; inline CONSTANT: DIK_U HEX: 16
: DIK_I HEX: 17 ; inline CONSTANT: DIK_I HEX: 17
: DIK_O HEX: 18 ; inline CONSTANT: DIK_O HEX: 18
: DIK_P HEX: 19 ; inline CONSTANT: DIK_P HEX: 19
: DIK_LBRACKET HEX: 1A ; inline CONSTANT: DIK_LBRACKET HEX: 1A
: DIK_RBRACKET HEX: 1B ; inline CONSTANT: DIK_RBRACKET HEX: 1B
: DIK_RETURN HEX: 1C ; inline CONSTANT: DIK_RETURN HEX: 1C
: DIK_LCONTROL HEX: 1D ; inline CONSTANT: DIK_LCONTROL HEX: 1D
: DIK_A HEX: 1E ; inline CONSTANT: DIK_A HEX: 1E
: DIK_S HEX: 1F ; inline CONSTANT: DIK_S HEX: 1F
: DIK_D HEX: 20 ; inline CONSTANT: DIK_D HEX: 20
: DIK_F HEX: 21 ; inline CONSTANT: DIK_F HEX: 21
: DIK_G HEX: 22 ; inline CONSTANT: DIK_G HEX: 22
: DIK_H HEX: 23 ; inline CONSTANT: DIK_H HEX: 23
: DIK_J HEX: 24 ; inline CONSTANT: DIK_J HEX: 24
: DIK_K HEX: 25 ; inline CONSTANT: DIK_K HEX: 25
: DIK_L HEX: 26 ; inline CONSTANT: DIK_L HEX: 26
: DIK_SEMICOLON HEX: 27 ; inline CONSTANT: DIK_SEMICOLON HEX: 27
: DIK_APOSTROPHE HEX: 28 ; inline CONSTANT: DIK_APOSTROPHE HEX: 28
: DIK_GRAVE HEX: 29 ; inline CONSTANT: DIK_GRAVE HEX: 29
: DIK_LSHIFT HEX: 2A ; inline CONSTANT: DIK_LSHIFT HEX: 2A
: DIK_BACKSLASH HEX: 2B ; inline CONSTANT: DIK_BACKSLASH HEX: 2B
: DIK_Z HEX: 2C ; inline CONSTANT: DIK_Z HEX: 2C
: DIK_X HEX: 2D ; inline CONSTANT: DIK_X HEX: 2D
: DIK_C HEX: 2E ; inline CONSTANT: DIK_C HEX: 2E
: DIK_V HEX: 2F ; inline CONSTANT: DIK_V HEX: 2F
: DIK_B HEX: 30 ; inline CONSTANT: DIK_B HEX: 30
: DIK_N HEX: 31 ; inline CONSTANT: DIK_N HEX: 31
: DIK_M HEX: 32 ; inline CONSTANT: DIK_M HEX: 32
: DIK_COMMA HEX: 33 ; inline CONSTANT: DIK_COMMA HEX: 33
: DIK_PERIOD HEX: 34 ; inline CONSTANT: DIK_PERIOD HEX: 34
: DIK_SLASH HEX: 35 ; inline CONSTANT: DIK_SLASH HEX: 35
: DIK_RSHIFT HEX: 36 ; inline CONSTANT: DIK_RSHIFT HEX: 36
: DIK_MULTIPLY HEX: 37 ; inline CONSTANT: DIK_MULTIPLY HEX: 37
: DIK_LMENU HEX: 38 ; inline CONSTANT: DIK_LMENU HEX: 38
: DIK_SPACE HEX: 39 ; inline CONSTANT: DIK_SPACE HEX: 39
: DIK_CAPITAL HEX: 3A ; inline CONSTANT: DIK_CAPITAL HEX: 3A
: DIK_F1 HEX: 3B ; inline CONSTANT: DIK_F1 HEX: 3B
: DIK_F2 HEX: 3C ; inline CONSTANT: DIK_F2 HEX: 3C
: DIK_F3 HEX: 3D ; inline CONSTANT: DIK_F3 HEX: 3D
: DIK_F4 HEX: 3E ; inline CONSTANT: DIK_F4 HEX: 3E
: DIK_F5 HEX: 3F ; inline CONSTANT: DIK_F5 HEX: 3F
: DIK_F6 HEX: 40 ; inline CONSTANT: DIK_F6 HEX: 40
: DIK_F7 HEX: 41 ; inline CONSTANT: DIK_F7 HEX: 41
: DIK_F8 HEX: 42 ; inline CONSTANT: DIK_F8 HEX: 42
: DIK_F9 HEX: 43 ; inline CONSTANT: DIK_F9 HEX: 43
: DIK_F10 HEX: 44 ; inline CONSTANT: DIK_F10 HEX: 44
: DIK_NUMLOCK HEX: 45 ; inline CONSTANT: DIK_NUMLOCK HEX: 45
: DIK_SCROLL HEX: 46 ; inline CONSTANT: DIK_SCROLL HEX: 46
: DIK_NUMPAD7 HEX: 47 ; inline CONSTANT: DIK_NUMPAD7 HEX: 47
: DIK_NUMPAD8 HEX: 48 ; inline CONSTANT: DIK_NUMPAD8 HEX: 48
: DIK_NUMPAD9 HEX: 49 ; inline CONSTANT: DIK_NUMPAD9 HEX: 49
: DIK_SUBTRACT HEX: 4A ; inline CONSTANT: DIK_SUBTRACT HEX: 4A
: DIK_NUMPAD4 HEX: 4B ; inline CONSTANT: DIK_NUMPAD4 HEX: 4B
: DIK_NUMPAD5 HEX: 4C ; inline CONSTANT: DIK_NUMPAD5 HEX: 4C
: DIK_NUMPAD6 HEX: 4D ; inline CONSTANT: DIK_NUMPAD6 HEX: 4D
: DIK_ADD HEX: 4E ; inline CONSTANT: DIK_ADD HEX: 4E
: DIK_NUMPAD1 HEX: 4F ; inline CONSTANT: DIK_NUMPAD1 HEX: 4F
: DIK_NUMPAD2 HEX: 50 ; inline CONSTANT: DIK_NUMPAD2 HEX: 50
: DIK_NUMPAD3 HEX: 51 ; inline CONSTANT: DIK_NUMPAD3 HEX: 51
: DIK_NUMPAD0 HEX: 52 ; inline CONSTANT: DIK_NUMPAD0 HEX: 52
: DIK_DECIMAL HEX: 53 ; inline CONSTANT: DIK_DECIMAL HEX: 53
: DIK_OEM_102 HEX: 56 ; inline CONSTANT: DIK_OEM_102 HEX: 56
: DIK_F11 HEX: 57 ; inline CONSTANT: DIK_F11 HEX: 57
: DIK_F12 HEX: 58 ; inline CONSTANT: DIK_F12 HEX: 58
: DIK_F13 HEX: 64 ; inline CONSTANT: DIK_F13 HEX: 64
: DIK_F14 HEX: 65 ; inline CONSTANT: DIK_F14 HEX: 65
: DIK_F15 HEX: 66 ; inline CONSTANT: DIK_F15 HEX: 66
: DIK_KANA HEX: 70 ; inline CONSTANT: DIK_KANA HEX: 70
: DIK_ABNT_C1 HEX: 73 ; inline CONSTANT: DIK_ABNT_C1 HEX: 73
: DIK_CONVERT HEX: 79 ; inline CONSTANT: DIK_CONVERT HEX: 79
: DIK_NOCONVERT HEX: 7B ; inline CONSTANT: DIK_NOCONVERT HEX: 7B
: DIK_YEN HEX: 7D ; inline CONSTANT: DIK_YEN HEX: 7D
: DIK_ABNT_C2 HEX: 7E ; inline CONSTANT: DIK_ABNT_C2 HEX: 7E
: DIK_NUMPADEQUALS HEX: 8D ; inline CONSTANT: DIK_NUMPADEQUALS HEX: 8D
: DIK_PREVTRACK HEX: 90 ; inline CONSTANT: DIK_PREVTRACK HEX: 90
: DIK_AT HEX: 91 ; inline CONSTANT: DIK_AT HEX: 91
: DIK_COLON HEX: 92 ; inline CONSTANT: DIK_COLON HEX: 92
: DIK_UNDERLINE HEX: 93 ; inline CONSTANT: DIK_UNDERLINE HEX: 93
: DIK_KANJI HEX: 94 ; inline CONSTANT: DIK_KANJI HEX: 94
: DIK_STOP HEX: 95 ; inline CONSTANT: DIK_STOP HEX: 95
: DIK_AX HEX: 96 ; inline CONSTANT: DIK_AX HEX: 96
: DIK_UNLABELED HEX: 97 ; inline CONSTANT: DIK_UNLABELED HEX: 97
: DIK_NEXTTRACK HEX: 99 ; inline CONSTANT: DIK_NEXTTRACK HEX: 99
: DIK_NUMPADENTER HEX: 9C ; inline CONSTANT: DIK_NUMPADENTER HEX: 9C
: DIK_RCONTROL HEX: 9D ; inline CONSTANT: DIK_RCONTROL HEX: 9D
: DIK_MUTE HEX: A0 ; inline CONSTANT: DIK_MUTE HEX: A0
: DIK_CALCULATOR HEX: A1 ; inline CONSTANT: DIK_CALCULATOR HEX: A1
: DIK_PLAYPAUSE HEX: A2 ; inline CONSTANT: DIK_PLAYPAUSE HEX: A2
: DIK_MEDIASTOP HEX: A4 ; inline CONSTANT: DIK_MEDIASTOP HEX: A4
: DIK_VOLUMEDOWN HEX: AE ; inline CONSTANT: DIK_VOLUMEDOWN HEX: AE
: DIK_VOLUMEUP HEX: B0 ; inline CONSTANT: DIK_VOLUMEUP HEX: B0
: DIK_WEBHOME HEX: B2 ; inline CONSTANT: DIK_WEBHOME HEX: B2
: DIK_NUMPADCOMMA HEX: B3 ; inline CONSTANT: DIK_NUMPADCOMMA HEX: B3
: DIK_DIVIDE HEX: B5 ; inline CONSTANT: DIK_DIVIDE HEX: B5
: DIK_SYSRQ HEX: B7 ; inline CONSTANT: DIK_SYSRQ HEX: B7
: DIK_RMENU HEX: B8 ; inline CONSTANT: DIK_RMENU HEX: B8
: DIK_PAUSE HEX: C5 ; inline CONSTANT: DIK_PAUSE HEX: C5
: DIK_HOME HEX: C7 ; inline CONSTANT: DIK_HOME HEX: C7
: DIK_UP HEX: C8 ; inline CONSTANT: DIK_UP HEX: C8
: DIK_PRIOR HEX: C9 ; inline CONSTANT: DIK_PRIOR HEX: C9
: DIK_LEFT HEX: CB ; inline CONSTANT: DIK_LEFT HEX: CB
: DIK_RIGHT HEX: CD ; inline CONSTANT: DIK_RIGHT HEX: CD
: DIK_END HEX: CF ; inline CONSTANT: DIK_END HEX: CF
: DIK_DOWN HEX: D0 ; inline CONSTANT: DIK_DOWN HEX: D0
: DIK_NEXT HEX: D1 ; inline CONSTANT: DIK_NEXT HEX: D1
: DIK_INSERT HEX: D2 ; inline CONSTANT: DIK_INSERT HEX: D2
: DIK_DELETE HEX: D3 ; inline CONSTANT: DIK_DELETE HEX: D3
: DIK_LWIN HEX: DB ; inline CONSTANT: DIK_LWIN HEX: DB
: DIK_RWIN HEX: DC ; inline CONSTANT: DIK_RWIN HEX: DC
: DIK_APPS HEX: DD ; inline CONSTANT: DIK_APPS HEX: DD
: DIK_POWER HEX: DE ; inline CONSTANT: DIK_POWER HEX: DE
: DIK_SLEEP HEX: DF ; inline CONSTANT: DIK_SLEEP HEX: DF
: DIK_WAKE HEX: E3 ; inline CONSTANT: DIK_WAKE HEX: E3
: DIK_WEBSEARCH HEX: E5 ; inline CONSTANT: DIK_WEBSEARCH HEX: E5
: DIK_WEBFAVORITES HEX: E6 ; inline CONSTANT: DIK_WEBFAVORITES HEX: E6
: DIK_WEBREFRESH HEX: E7 ; inline CONSTANT: DIK_WEBREFRESH HEX: E7
: DIK_WEBSTOP HEX: E8 ; inline CONSTANT: DIK_WEBSTOP HEX: E8
: DIK_WEBFORWARD HEX: E9 ; inline CONSTANT: DIK_WEBFORWARD HEX: E9
: DIK_WEBBACK HEX: EA ; inline CONSTANT: DIK_WEBBACK HEX: EA
: DIK_MYCOMPUTER HEX: EB ; inline CONSTANT: DIK_MYCOMPUTER HEX: EB
: DIK_MAIL HEX: EC ; inline CONSTANT: DIK_MAIL HEX: EC
: DIK_MEDIASELECT HEX: ED ; inline CONSTANT: DIK_MEDIASELECT HEX: ED
: DIK_BACKSPACE DIK_BACK ; inline ALIAS: DIK_BACKSPACE DIK_BACK
: DIK_NUMPADSTAR DIK_MULTIPLY ; inline ALIAS: DIK_NUMPADSTAR DIK_MULTIPLY
: DIK_LALT DIK_LMENU ; inline ALIAS: DIK_LALT DIK_LMENU
: DIK_CAPSLOCK DIK_CAPITAL ; inline ALIAS: DIK_CAPSLOCK DIK_CAPITAL
: DIK_NUMPADMINUS DIK_SUBTRACT ; inline ALIAS: DIK_NUMPADMINUS DIK_SUBTRACT
: DIK_NUMPADPLUS DIK_ADD ; inline ALIAS: DIK_NUMPADPLUS DIK_ADD
: DIK_NUMPADPERIOD DIK_DECIMAL ; inline ALIAS: DIK_NUMPADPERIOD DIK_DECIMAL
: DIK_NUMPADSLASH DIK_DIVIDE ; inline ALIAS: DIK_NUMPADSLASH DIK_DIVIDE
: DIK_RALT DIK_RMENU ; inline ALIAS: DIK_RALT DIK_RMENU
: DIK_UPARROW DIK_UP ; inline ALIAS: DIK_UPARROW DIK_UP
: DIK_PGUP DIK_PRIOR ; inline ALIAS: DIK_PGUP DIK_PRIOR
: DIK_LEFTARROW DIK_LEFT ; inline ALIAS: DIK_LEFTARROW DIK_LEFT
: DIK_RIGHTARROW DIK_RIGHT ; inline ALIAS: DIK_RIGHTARROW DIK_RIGHT
: DIK_DOWNARROW DIK_DOWN ; inline ALIAS: DIK_DOWNARROW DIK_DOWN
: DIK_PGDN DIK_NEXT ; inline ALIAS: DIK_PGDN DIK_NEXT
: DIK_CIRCUMFLEX DIK_PREVTRACK ; inline ALIAS: DIK_CIRCUMFLEX DIK_PREVTRACK
: DI8DEVTYPE_DEVICE HEX: 11 ; inline CONSTANT: DI8DEVTYPE_DEVICE HEX: 11
: DI8DEVTYPE_MOUSE HEX: 12 ; inline CONSTANT: DI8DEVTYPE_MOUSE HEX: 12
: DI8DEVTYPE_KEYBOARD HEX: 13 ; inline CONSTANT: DI8DEVTYPE_KEYBOARD HEX: 13
: DI8DEVTYPE_JOYSTICK HEX: 14 ; inline CONSTANT: DI8DEVTYPE_JOYSTICK HEX: 14
: DI8DEVTYPE_GAMEPAD HEX: 15 ; inline CONSTANT: DI8DEVTYPE_GAMEPAD HEX: 15
: DI8DEVTYPE_DRIVING HEX: 16 ; inline CONSTANT: DI8DEVTYPE_DRIVING HEX: 16
: DI8DEVTYPE_FLIGHT HEX: 17 ; inline CONSTANT: DI8DEVTYPE_FLIGHT HEX: 17
: DI8DEVTYPE_1STPERSON HEX: 18 ; inline CONSTANT: DI8DEVTYPE_1STPERSON HEX: 18
: DI8DEVTYPE_DEVICECTRL HEX: 19 ; inline CONSTANT: DI8DEVTYPE_DEVICECTRL HEX: 19
: DI8DEVTYPE_SCREENPOINTER HEX: 1A ; inline CONSTANT: DI8DEVTYPE_SCREENPOINTER HEX: 1A
: DI8DEVTYPE_REMOTE HEX: 1B ; inline CONSTANT: DI8DEVTYPE_REMOTE HEX: 1B
: DI8DEVTYPE_SUPPLEMENTAL HEX: 1C ; inline CONSTANT: DI8DEVTYPE_SUPPLEMENTAL HEX: 1C
: GET_DIDEVICE_TYPE ( dwType -- type ) HEX: FF bitand ; inline : GET_DIDEVICE_TYPE ( dwType -- type ) HEX: FF bitand ; inline
: DIPROPRANGE_NOMIN HEX: 80000000 ; inline CONSTANT: DIPROPRANGE_NOMIN HEX: 80000000
: DIPROPRANGE_NOMAX HEX: 7FFFFFFF ; inline CONSTANT: DIPROPRANGE_NOMAX HEX: 7FFFFFFF
: MAXCPOINTSNUM 8 ; inline CONSTANT: MAXCPOINTSNUM 8
: DIPH_DEVICE 0 ; inline
: DIPH_BYOFFSET 1 ; inline
: DIPH_BYID 2 ; inline
: DIPH_BYUSAGE 3 ; inline
CONSTANT: DIPH_DEVICE 0
CONSTANT: DIPH_BYOFFSET 1
CONSTANT: DIPH_BYID 2
CONSTANT: DIPH_BYUSAGE 3
: DIMAKEUSAGEDWORD ( UsagePage Usage -- DWORD ) 16 shift bitor ; inline : DIMAKEUSAGEDWORD ( UsagePage Usage -- DWORD ) 16 shift bitor ; inline
: DIPROP_BUFFERSIZE 1 <alien> ; inline : DIPROP_BUFFERSIZE ( -- alien ) 1 <alien> ; inline
: DIPROP_AXISMODE 2 <alien> ; inline : DIPROP_AXISMODE ( -- alien ) 2 <alien> ; inline
: DIPROPAXISMODE_ABS 0 ; inline CONSTANT: DIPROPAXISMODE_ABS 0
: DIPROPAXISMODE_REL 1 ; inline CONSTANT: DIPROPAXISMODE_REL 1
: DIPROP_GRANULARITY ( -- alien ) 3 <alien> ; inline
: DIPROP_RANGE ( -- alien ) 4 <alien> ; inline
: DIPROP_DEADZONE ( -- alien ) 5 <alien> ; inline
: DIPROP_SATURATION ( -- alien ) 6 <alien> ; inline
: DIPROP_FFGAIN ( -- alien ) 7 <alien> ; inline
: DIPROP_FFLOAD ( -- alien ) 8 <alien> ; inline
: DIPROP_AUTOCENTER ( -- alien ) 9 <alien> ; inline
: DIPROP_GRANULARITY 3 <alien> ; inline CONSTANT: DIPROPAUTOCENTER_OFF 0
: DIPROP_RANGE 4 <alien> ; inline CONSTANT: DIPROPAUTOCENTER_ON 1
: DIPROP_DEADZONE 5 <alien> ; inline
: DIPROP_SATURATION 6 <alien> ; inline
: DIPROP_FFGAIN 7 <alien> ; inline
: DIPROP_FFLOAD 8 <alien> ; inline
: DIPROP_AUTOCENTER 9 <alien> ; inline
: DIPROPAUTOCENTER_OFF 0 ; inline : DIPROP_CALIBRATIONMODE ( -- alien ) 10 <alien> ; inline
: DIPROPAUTOCENTER_ON 1 ; inline
: DIPROP_CALIBRATIONMODE 10 <alien> ; inline CONSTANT: DIPROPCALIBRATIONMODE_COOKED 0
CONSTANT: DIPROPCALIBRATIONMODE_RAW 1
: DIPROPCALIBRATIONMODE_COOKED 0 ; inline : DIPROP_CALIBRATION ( -- alien ) 11 <alien> ; inline
: DIPROPCALIBRATIONMODE_RAW 1 ; inline : DIPROP_GUIDANDPATH ( -- alien ) 12 <alien> ; inline
: DIPROP_INSTANCENAME ( -- alien ) 13 <alien> ; inline
: DIPROP_PRODUCTNAME ( -- alien ) 14 <alien> ; inline
: DIPROP_JOYSTICKID ( -- alien ) 15 <alien> ; inline
: DIPROP_GETPORTDISPLAYNAME ( -- alien ) 16 <alien> ; inline
: DIPROP_PHYSICALRANGE ( -- alien ) 18 <alien> ; inline
: DIPROP_LOGICALRANGE ( -- alien ) 19 <alien> ; inline
: DIPROP_KEYNAME ( -- alien ) 20 <alien> ; inline
: DIPROP_CPOINTS ( -- alien ) 21 <alien> ; inline
: DIPROP_APPDATA ( -- alien ) 22 <alien> ; inline
: DIPROP_SCANCODE ( -- alien ) 23 <alien> ; inline
: DIPROP_VIDPID ( -- alien ) 24 <alien> ; inline
: DIPROP_USERNAME ( -- alien ) 25 <alien> ; inline
: DIPROP_TYPENAME ( -- alien ) 26 <alien> ; inline
: DIPROP_CALIBRATION 11 <alien> ; inline CONSTANT: GUID_XAxis GUID: {A36D02E0-C9F3-11CF-BFC7-444553540000}
: DIPROP_GUIDANDPATH 12 <alien> ; inline CONSTANT: GUID_YAxis GUID: {A36D02E1-C9F3-11CF-BFC7-444553540000}
: DIPROP_INSTANCENAME 13 <alien> ; inline CONSTANT: GUID_ZAxis GUID: {A36D02E2-C9F3-11CF-BFC7-444553540000}
: DIPROP_PRODUCTNAME 14 <alien> ; inline CONSTANT: GUID_RxAxis GUID: {A36D02F4-C9F3-11CF-BFC7-444553540000}
: DIPROP_JOYSTICKID 15 <alien> ; inline CONSTANT: GUID_RyAxis GUID: {A36D02F5-C9F3-11CF-BFC7-444553540000}
: DIPROP_GETPORTDISPLAYNAME 16 <alien> ; inline CONSTANT: GUID_RzAxis GUID: {A36D02E3-C9F3-11CF-BFC7-444553540000}
: DIPROP_PHYSICALRANGE 18 <alien> ; inline CONSTANT: GUID_Slider GUID: {A36D02E4-C9F3-11CF-BFC7-444553540000}
: DIPROP_LOGICALRANGE 19 <alien> ; inline CONSTANT: GUID_Button GUID: {A36D02F0-C9F3-11CF-BFC7-444553540000}
: DIPROP_KEYNAME 20 <alien> ; inline CONSTANT: GUID_Key GUID: {55728220-D33C-11CF-BFC7-444553540000}
: DIPROP_CPOINTS 21 <alien> ; inline CONSTANT: GUID_POV GUID: {A36D02F2-C9F3-11CF-BFC7-444553540000}
: DIPROP_APPDATA 22 <alien> ; inline CONSTANT: GUID_Unknown GUID: {A36D02F3-C9F3-11CF-BFC7-444553540000}
: DIPROP_SCANCODE 23 <alien> ; inline CONSTANT: GUID_SysMouse GUID: {6F1D2B60-D5A0-11CF-BFC7-444553540000}
: DIPROP_VIDPID 24 <alien> ; inline CONSTANT: GUID_SysKeyboard GUID: {6F1D2B61-D5A0-11CF-BFC7-444553540000}
: DIPROP_USERNAME 25 <alien> ; inline CONSTANT: GUID_Joystick GUID: {6F1D2B70-D5A0-11CF-BFC7-444553540000}
: DIPROP_TYPENAME 26 <alien> ; inline CONSTANT: GUID_SysMouseEm GUID: {6F1D2B80-D5A0-11CF-BFC7-444553540000}
CONSTANT: GUID_SysMouseEm2 GUID: {6F1D2B81-D5A0-11CF-BFC7-444553540000}
: GUID_XAxis GUID: {A36D02E0-C9F3-11CF-BFC7-444553540000} ; inline CONSTANT: GUID_SysKeyboardEm GUID: {6F1D2B82-D5A0-11CF-BFC7-444553540000}
: GUID_YAxis GUID: {A36D02E1-C9F3-11CF-BFC7-444553540000} ; inline CONSTANT: GUID_SysKeyboardEm2 GUID: {6F1D2B83-D5A0-11CF-BFC7-444553540000}
: GUID_ZAxis GUID: {A36D02E2-C9F3-11CF-BFC7-444553540000} ; inline
: GUID_RxAxis GUID: {A36D02F4-C9F3-11CF-BFC7-444553540000} ; inline
: GUID_RyAxis GUID: {A36D02F5-C9F3-11CF-BFC7-444553540000} ; inline
: GUID_RzAxis GUID: {A36D02E3-C9F3-11CF-BFC7-444553540000} ; inline
: GUID_Slider GUID: {A36D02E4-C9F3-11CF-BFC7-444553540000} ; inline
: GUID_Button GUID: {A36D02F0-C9F3-11CF-BFC7-444553540000} ; inline
: GUID_Key GUID: {55728220-D33C-11CF-BFC7-444553540000} ; inline
: GUID_POV GUID: {A36D02F2-C9F3-11CF-BFC7-444553540000} ; inline
: GUID_Unknown GUID: {A36D02F3-C9F3-11CF-BFC7-444553540000} ; inline
: GUID_SysMouse GUID: {6F1D2B60-D5A0-11CF-BFC7-444553540000} ; inline
: GUID_SysKeyboard GUID: {6F1D2B61-D5A0-11CF-BFC7-444553540000} ; inline
: GUID_Joystick GUID: {6F1D2B70-D5A0-11CF-BFC7-444553540000} ; inline
: GUID_SysMouseEm GUID: {6F1D2B80-D5A0-11CF-BFC7-444553540000} ; inline
: GUID_SysMouseEm2 GUID: {6F1D2B81-D5A0-11CF-BFC7-444553540000} ; inline
: GUID_SysKeyboardEm GUID: {6F1D2B82-D5A0-11CF-BFC7-444553540000} ; inline
: GUID_SysKeyboardEm2 GUID: {6F1D2B83-D5A0-11CF-BFC7-444553540000} ; inline

View File

@ -1,10 +1,10 @@
USING: kernel ; USING: kernel constants ;
IN: windows.errors IN: windows.errors
: ERROR_SUCCESS 0 ; inline CONSTANT: ERROR_SUCCESS 0
: ERROR_NO_MORE_FILES 18 ; inline CONSTANT: ERROR_NO_MORE_FILES 18
: ERROR_HANDLE_EOF 38 ; inline CONSTANT: ERROR_HANDLE_EOF 38
: ERROR_BROKEN_PIPE 109 ; inline CONSTANT: ERROR_BROKEN_PIPE 109
: ERROR_ENVVAR_NOT_FOUND 203 ; inline CONSTANT: ERROR_ENVVAR_NOT_FOUND 203
: ERROR_IO_INCOMPLETE 996 ; inline CONSTANT: ERROR_IO_INCOMPLETE 996
: ERROR_IO_PENDING 997 ; inline CONSTANT: ERROR_IO_PENDING 997

View File

@ -1,38 +1,38 @@
! FUNCTION: AbortDoc ! FUNCTION: AbortDoc
! Copyright (C) 2005, 2006 Doug Coleman. ! Copyright (C) 2005, 2006 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax kernel windows.types alias ; USING: alien alien.syntax kernel windows.types alias constants ;
IN: windows.gdi32 IN: windows.gdi32
! Stock Logical Objects ! Stock Logical Objects
: WHITE_BRUSH 0 ; inline CONSTANT: WHITE_BRUSH 0
: LTGRAY_BRUSH 1 ; inline CONSTANT: LTGRAY_BRUSH 1
: GRAY_BRUSH 2 ; inline CONSTANT: GRAY_BRUSH 2
: DKGRAY_BRUSH 3 ; inline CONSTANT: DKGRAY_BRUSH 3
: BLACK_BRUSH 4 ; inline CONSTANT: BLACK_BRUSH 4
: NULL_BRUSH 5 ; inline CONSTANT: NULL_BRUSH 5
: HOLLOW_BRUSH NULL_BRUSH ; inline ALIAS: HOLLOW_BRUSH NULL_BRUSH
: WHITE_PEN 6 ; inline CONSTANT: WHITE_PEN 6
: BLACK_PEN 7 ; inline CONSTANT: BLACK_PEN 7
: NULL_PEN 8 ; inline CONSTANT: NULL_PEN 8
: OEM_FIXED_FONT 10 ; inline CONSTANT: OEM_FIXED_FONT 10
: ANSI_FIXED_FONT 11 ; inline CONSTANT: ANSI_FIXED_FONT 11
: ANSI_VAR_FONT 12 ; inline CONSTANT: ANSI_VAR_FONT 12
: SYSTEM_FONT 13 ; inline CONSTANT: SYSTEM_FONT 13
: DEVICE_DEFAULT_FONT 14 ; inline CONSTANT: DEVICE_DEFAULT_FONT 14
: DEFAULT_PALETTE 15 ; inline CONSTANT: DEFAULT_PALETTE 15
: SYSTEM_FIXED_FONT 16 ; inline CONSTANT: SYSTEM_FIXED_FONT 16
: DEFAULT_GUI_FONT 17 ; inline CONSTANT: DEFAULT_GUI_FONT 17
: DC_BRUSH 18 ; inline CONSTANT: DC_BRUSH 18
: DC_PEN 19 ; inline CONSTANT: DC_PEN 19
CONSTANT: BI_RGB 0
CONSTANT: BI_RLE8 1
CONSTANT: BI_RLE4 2
CONSTANT: BI_BITFIELDS 3
: BI_RGB 0 ; inline CONSTANT: DIB_RGB_COLORS 0
: BI_RLE8 1 ; inline CONSTANT: DIB_PAL_COLORS 1
: BI_RLE4 2 ; inline
: BI_BITFIELDS 3 ; inline
: DIB_RGB_COLORS 0 ; inline
: DIB_PAL_COLORS 1 ; inline
LIBRARY: gdi32 LIBRARY: gdi32

539
basis/windows/kernel32/kernel32.factor Normal file → Executable file
View File

@ -1,93 +1,93 @@
! Copyright (C) 2005, 2006 Doug Coleman. ! Copyright (C) 2005, 2006 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax kernel windows.types alias ; USING: alien alien.syntax kernel windows.types alias constants ;
IN: windows.kernel32 IN: windows.kernel32
: MAX_PATH 260 ; inline CONSTANT: MAX_PATH 260
: GHND HEX: 40 ; inline CONSTANT: GHND HEX: 40
: GMEM_FIXED 0 ; inline CONSTANT: GMEM_FIXED 0
: GMEM_MOVEABLE 2 ; inline CONSTANT: GMEM_MOVEABLE 2
: GMEM_ZEROINIT HEX: 40 ; inline CONSTANT: GMEM_ZEROINIT HEX: 40
: GPTR HEX: 40 ; inline CONSTANT: GPTR HEX: 40
: GENERIC_READ HEX: 80000000 ; inline CONSTANT: GENERIC_READ HEX: 80000000
: GENERIC_WRITE HEX: 40000000 ; inline CONSTANT: GENERIC_WRITE HEX: 40000000
: GENERIC_EXECUTE HEX: 20000000 ; inline CONSTANT: GENERIC_EXECUTE HEX: 20000000
: GENERIC_ALL HEX: 10000000 ; inline CONSTANT: GENERIC_ALL HEX: 10000000
: CREATE_NEW 1 ; inline CONSTANT: CREATE_NEW 1
: CREATE_ALWAYS 2 ; inline CONSTANT: CREATE_ALWAYS 2
: OPEN_EXISTING 3 ; inline CONSTANT: OPEN_EXISTING 3
: OPEN_ALWAYS 4 ; inline CONSTANT: OPEN_ALWAYS 4
: TRUNCATE_EXISTING 5 ; inline CONSTANT: TRUNCATE_EXISTING 5
: FILE_LIST_DIRECTORY HEX: 00000001 ; inline CONSTANT: FILE_LIST_DIRECTORY HEX: 00000001
: FILE_READ_DAT HEX: 00000001 ; inline CONSTANT: FILE_READ_DAT HEX: 00000001
: FILE_ADD_FILE HEX: 00000002 ; inline CONSTANT: FILE_ADD_FILE HEX: 00000002
: FILE_WRITE_DATA HEX: 00000002 ; inline CONSTANT: FILE_WRITE_DATA HEX: 00000002
: FILE_ADD_SUBDIRECTORY HEX: 00000004 ; inline CONSTANT: FILE_ADD_SUBDIRECTORY HEX: 00000004
: FILE_APPEND_DATA HEX: 00000004 ; inline CONSTANT: FILE_APPEND_DATA HEX: 00000004
: FILE_CREATE_PIPE_INSTANCE HEX: 00000004 ; inline CONSTANT: FILE_CREATE_PIPE_INSTANCE HEX: 00000004
: FILE_READ_EA HEX: 00000008 ; inline CONSTANT: FILE_READ_EA HEX: 00000008
: FILE_READ_PROPERTIES HEX: 00000008 ; inline CONSTANT: FILE_READ_PROPERTIES HEX: 00000008
: FILE_WRITE_EA HEX: 00000010 ; inline CONSTANT: FILE_WRITE_EA HEX: 00000010
: FILE_WRITE_PROPERTIES HEX: 00000010 ; inline CONSTANT: FILE_WRITE_PROPERTIES HEX: 00000010
: FILE_EXECUTE HEX: 00000020 ; inline CONSTANT: FILE_EXECUTE HEX: 00000020
: FILE_TRAVERSE HEX: 00000020 ; inline CONSTANT: FILE_TRAVERSE HEX: 00000020
: FILE_DELETE_CHILD HEX: 00000040 ; inline CONSTANT: FILE_DELETE_CHILD HEX: 00000040
: FILE_READ_ATTRIBUTES HEX: 00000080 ; inline CONSTANT: FILE_READ_ATTRIBUTES HEX: 00000080
: FILE_WRITE_ATTRIBUTES HEX: 00000100 ; inline CONSTANT: FILE_WRITE_ATTRIBUTES HEX: 00000100
: FILE_SHARE_READ 1 ; inline CONSTANT: FILE_SHARE_READ 1
: FILE_SHARE_WRITE 2 ; inline CONSTANT: FILE_SHARE_WRITE 2
: FILE_SHARE_DELETE 4 ; inline CONSTANT: FILE_SHARE_DELETE 4
: FILE_SHARE_VALID_FLAGS 7 ; inline CONSTANT: FILE_SHARE_VALID_FLAGS 7
: FILE_FLAG_WRITE_THROUGH HEX: 80000000 ; inline CONSTANT: FILE_FLAG_WRITE_THROUGH HEX: 80000000
: FILE_FLAG_OVERLAPPED HEX: 40000000 ; inline CONSTANT: FILE_FLAG_OVERLAPPED HEX: 40000000
: FILE_FLAG_NO_BUFFERING HEX: 20000000 ; inline CONSTANT: FILE_FLAG_NO_BUFFERING HEX: 20000000
: FILE_FLAG_RANDOM_ACCESS HEX: 10000000 ; inline CONSTANT: FILE_FLAG_RANDOM_ACCESS HEX: 10000000
: FILE_FLAG_SEQUENTIAL_SCAN HEX: 08000000 ; inline CONSTANT: FILE_FLAG_SEQUENTIAL_SCAN HEX: 08000000
: FILE_FLAG_DELETE_ON_CLOSE HEX: 04000000 ; inline CONSTANT: FILE_FLAG_DELETE_ON_CLOSE HEX: 04000000
: FILE_FLAG_BACKUP_SEMANTICS HEX: 02000000 ; inline CONSTANT: FILE_FLAG_BACKUP_SEMANTICS HEX: 02000000
: FILE_FLAG_POSIX_SEMANTICS HEX: 01000000 ; inline CONSTANT: FILE_FLAG_POSIX_SEMANTICS HEX: 01000000
: FILE_FLAG_OPEN_REPARSE_POINT HEX: 00200000 ; inline CONSTANT: FILE_FLAG_OPEN_REPARSE_POINT HEX: 00200000
: FILE_FLAG_OPEN_NO_RECALL HEX: 00100000 ; inline CONSTANT: FILE_FLAG_OPEN_NO_RECALL HEX: 00100000
: FILE_FLAG_FIRST_PIPE_INSTANCE HEX: 00080000 ; inline CONSTANT: FILE_FLAG_FIRST_PIPE_INSTANCE HEX: 00080000
: FILE_ATTRIBUTE_READONLY HEX: 00000001 ; inline CONSTANT: FILE_ATTRIBUTE_READONLY HEX: 00000001
: FILE_ATTRIBUTE_HIDDEN HEX: 00000002 ; inline CONSTANT: FILE_ATTRIBUTE_HIDDEN HEX: 00000002
: FILE_ATTRIBUTE_SYSTEM HEX: 00000004 ; inline CONSTANT: FILE_ATTRIBUTE_SYSTEM HEX: 00000004
: FILE_ATTRIBUTE_DIRECTORY HEX: 00000010 ; inline CONSTANT: FILE_ATTRIBUTE_DIRECTORY HEX: 00000010
: FILE_ATTRIBUTE_ARCHIVE HEX: 00000020 ; inline CONSTANT: FILE_ATTRIBUTE_ARCHIVE HEX: 00000020
: FILE_ATTRIBUTE_DEVICE HEX: 00000040 ; inline CONSTANT: FILE_ATTRIBUTE_DEVICE HEX: 00000040
: FILE_ATTRIBUTE_NORMAL HEX: 00000080 ; inline CONSTANT: FILE_ATTRIBUTE_NORMAL HEX: 00000080
: FILE_ATTRIBUTE_TEMPORARY HEX: 00000100 ; inline CONSTANT: FILE_ATTRIBUTE_TEMPORARY HEX: 00000100
: FILE_ATTRIBUTE_SPARSE_FILE HEX: 00000200 ; inline CONSTANT: FILE_ATTRIBUTE_SPARSE_FILE HEX: 00000200
: FILE_ATTRIBUTE_REPARSE_POINT HEX: 00000400 ; inline CONSTANT: FILE_ATTRIBUTE_REPARSE_POINT HEX: 00000400
: FILE_ATTRIBUTE_COMPRESSED HEX: 00000800 ; inline CONSTANT: FILE_ATTRIBUTE_COMPRESSED HEX: 00000800
: FILE_ATTRIBUTE_OFFLINE HEX: 00001000 ; inline CONSTANT: FILE_ATTRIBUTE_OFFLINE HEX: 00001000
: FILE_ATTRIBUTE_NOT_CONTENT_INDEXED HEX: 00002000 ; inline CONSTANT: FILE_ATTRIBUTE_NOT_CONTENT_INDEXED HEX: 00002000
: FILE_ATTRIBUTE_ENCRYPTED HEX: 00004000 ; inline CONSTANT: FILE_ATTRIBUTE_ENCRYPTED HEX: 00004000
: FILE_NOTIFY_CHANGE_FILE HEX: 001 ; inline CONSTANT: FILE_NOTIFY_CHANGE_FILE HEX: 001
: FILE_NOTIFY_CHANGE_DIR_NAME HEX: 002 ; inline CONSTANT: FILE_NOTIFY_CHANGE_DIR_NAME HEX: 002
: FILE_NOTIFY_CHANGE_ATTRIBUTES HEX: 004 ; inline CONSTANT: FILE_NOTIFY_CHANGE_ATTRIBUTES HEX: 004
: FILE_NOTIFY_CHANGE_SIZE HEX: 008 ; inline CONSTANT: FILE_NOTIFY_CHANGE_SIZE HEX: 008
: FILE_NOTIFY_CHANGE_LAST_WRITE HEX: 010 ; inline CONSTANT: FILE_NOTIFY_CHANGE_LAST_WRITE HEX: 010
: FILE_NOTIFY_CHANGE_LAST_ACCESS HEX: 020 ; inline CONSTANT: FILE_NOTIFY_CHANGE_LAST_ACCESS HEX: 020
: FILE_NOTIFY_CHANGE_CREATION HEX: 040 ; inline CONSTANT: FILE_NOTIFY_CHANGE_CREATION HEX: 040
: FILE_NOTIFY_CHANGE_EA HEX: 080 ; inline CONSTANT: FILE_NOTIFY_CHANGE_EA HEX: 080
: FILE_NOTIFY_CHANGE_SECURITY HEX: 100 ; inline CONSTANT: FILE_NOTIFY_CHANGE_SECURITY HEX: 100
: FILE_NOTIFY_CHANGE_FILE_NAME HEX: 200 ; inline CONSTANT: FILE_NOTIFY_CHANGE_FILE_NAME HEX: 200
: FILE_NOTIFY_CHANGE_ALL HEX: 3ff ; inline CONSTANT: FILE_NOTIFY_CHANGE_ALL HEX: 3ff
: FILE_ACTION_ADDED 1 ; inline CONSTANT: FILE_ACTION_ADDED 1
: FILE_ACTION_REMOVED 2 ; inline CONSTANT: FILE_ACTION_REMOVED 2
: FILE_ACTION_MODIFIED 3 ; inline CONSTANT: FILE_ACTION_MODIFIED 3
: FILE_ACTION_RENAMED_OLD_NAME 4 ; inline CONSTANT: FILE_ACTION_RENAMED_OLD_NAME 4
: FILE_ACTION_RENAMED_NEW_NAME 5 ; inline CONSTANT: FILE_ACTION_RENAMED_NEW_NAME 5
C-STRUCT: FILE_NOTIFY_INFORMATION C-STRUCT: FILE_NOTIFY_INFORMATION
{ "DWORD" "NextEntryOffset" } { "DWORD" "NextEntryOffset" }
@ -96,107 +96,106 @@ C-STRUCT: FILE_NOTIFY_INFORMATION
{ "WCHAR[1]" "FileName" } ; { "WCHAR[1]" "FileName" } ;
TYPEDEF: FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION TYPEDEF: FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION
: STD_INPUT_HANDLE -10 ; inline CONSTANT: STD_INPUT_HANDLE -10
: STD_OUTPUT_HANDLE -11 ; inline CONSTANT: STD_OUTPUT_HANDLE -11
: STD_ERROR_HANDLE -12 ; inline CONSTANT: STD_ERROR_HANDLE -12
: INVALID_HANDLE_VALUE -1 <alien> ; inline : INVALID_HANDLE_VALUE ( -- alien ) -1 <alien> ; inline
: INVALID_FILE_SIZE HEX: FFFFFFFF ; inline CONSTANT: INVALID_FILE_SIZE HEX: FFFFFFFF
: INVALID_SET_FILE_POINTER HEX: ffffffff ; inline CONSTANT: INVALID_SET_FILE_POINTER HEX: ffffffff
: FILE_BEGIN 0 ; inline CONSTANT: FILE_BEGIN 0
: FILE_CURRENT 1 ; inline CONSTANT: FILE_CURRENT 1
: FILE_END 2 ; inline CONSTANT: FILE_END 2
: OF_READ 0 ; CONSTANT: OF_READ 0
: OF_READWRITE 2 ; CONSTANT: OF_READWRITE 2
: OF_WRITE 1 ; CONSTANT: OF_WRITE 1
: OF_SHARE_COMPAT 0 ; CONSTANT: OF_SHARE_COMPAT 0
: OF_SHARE_DENY_NONE 64 ; CONSTANT: OF_SHARE_DENY_NONE 64
: OF_SHARE_DENY_READ 48 ; CONSTANT: OF_SHARE_DENY_READ 48
: OF_SHARE_DENY_WRITE 32 ; CONSTANT: OF_SHARE_DENY_WRITE 32
: OF_SHARE_EXCLUSIVE 16 ; CONSTANT: OF_SHARE_EXCLUSIVE 16
: OF_CANCEL 2048 ; CONSTANT: OF_CANCEL 2048
: OF_CREATE 4096 ; CONSTANT: OF_CREATE 4096
: OF_DELETE 512 ; CONSTANT: OF_DELETE 512
: OF_EXIST 16384 ; CONSTANT: OF_EXIST 16384
: OF_PARSE 256 ; CONSTANT: OF_PARSE 256
: OF_PROMPT 8192 ; CONSTANT: OF_PROMPT 8192
: OF_REOPEN 32768 ; CONSTANT: OF_REOPEN 32768
: OF_VERIFY 1024 ; CONSTANT: OF_VERIFY 1024
: INFINITE HEX: FFFFFFFF ; inline CONSTANT: INFINITE HEX: FFFFFFFF
! From C:\cygwin\usr\include\w32api\winbase.h ! From C:\cygwin\usr\include\w32api\winbase.h
: FILE_TYPE_UNKNOWN 0 ; CONSTANT: FILE_TYPE_UNKNOWN 0
: FILE_TYPE_DISK 1 ; CONSTANT: FILE_TYPE_DISK 1
: FILE_TYPE_CHAR 2 ; CONSTANT: FILE_TYPE_CHAR 2
: FILE_TYPE_PIPE 3 ; CONSTANT: FILE_TYPE_PIPE 3
: FILE_TYPE_REMOTE HEX: 8000 ; CONSTANT: FILE_TYPE_REMOTE HEX: 8000
: TIME_ZONE_ID_UNKNOWN 0 ; inline CONSTANT: TIME_ZONE_ID_UNKNOWN 0
: TIME_ZONE_ID_STANDARD 1 ; inline CONSTANT: TIME_ZONE_ID_STANDARD 1
: TIME_ZONE_ID_DAYLIGHT 2 ; inline CONSTANT: TIME_ZONE_ID_DAYLIGHT 2
: TIME_ZONE_ID_INVALID HEX: FFFFFFFF ; inline CONSTANT: TIME_ZONE_ID_INVALID HEX: FFFFFFFF
CONSTANT: PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
CONSTANT: PF_SSE3_INSTRUCTIONS_AVAILABLE 13
: PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 ; inline CONSTANT: MAX_COMPUTERNAME_LENGTH 15
: PF_SSE3_INSTRUCTIONS_AVAILABLE 13 ; inline CONSTANT: UNLEN 256
: MAX_COMPUTERNAME_LENGTH 15 ; inline CONSTANT: PROCESS_TERMINATE HEX: 1
: UNLEN 256 ; inline CONSTANT: PROCESS_CREATE_THREAD HEX: 2
CONSTANT: PROCESS_VM_OPERATION HEX: 8
CONSTANT: PROCESS_VM_READ HEX: 10
CONSTANT: PROCESS_VM_WRITE HEX: 20
CONSTANT: PROCESS_DUP_HANDLE HEX: 40
CONSTANT: PROCESS_CREATE_PROCESS HEX: 80
CONSTANT: PROCESS_SET_QUOTA HEX: 100
CONSTANT: PROCESS_SET_INFORMATION HEX: 200
CONSTANT: PROCESS_QUERY_INFORMATION HEX: 400
: PROCESS_TERMINATE ( -- n ) HEX: 1 ; inline CONSTANT: MEM_COMMIT HEX: 1000
: PROCESS_CREATE_THREAD ( -- n ) HEX: 2 ; inline CONSTANT: MEM_RELEASE HEX: 8000
: PROCESS_VM_OPERATION ( -- n ) HEX: 8 ; inline
: PROCESS_VM_READ ( -- n ) HEX: 10 ; inline
: PROCESS_VM_WRITE ( -- n ) HEX: 20 ; inline
: PROCESS_DUP_HANDLE ( -- n ) HEX: 40 ; inline
: PROCESS_CREATE_PROCESS ( -- n ) HEX: 80 ; inline
: PROCESS_SET_QUOTA ( -- n ) HEX: 100 ; inline
: PROCESS_SET_INFORMATION ( -- n ) HEX: 200 ; inline
: PROCESS_QUERY_INFORMATION ( -- n ) HEX: 400 ; inline
: MEM_COMMIT ( -- n ) HEX: 1000 ; inline CONSTANT: PAGE_NOACCESS 1
: MEM_RELEASE ( -- n ) HEX: 8000 ; inline CONSTANT: PAGE_READONLY 2
CONSTANT: PAGE_READWRITE 4
CONSTANT: PAGE_WRITECOPY 8
CONSTANT: PAGE_EXECUTE HEX: 10
CONSTANT: PAGE_EXECUTE_READ HEX: 20
CONSTANT: PAGE_EXECUTE_READWRITE HEX: 40
CONSTANT: PAGE_EXECUTE_WRITECOPY HEX: 80
CONSTANT: PAGE_GUARD HEX: 100
CONSTANT: PAGE_NOCACHE HEX: 200
: PAGE_NOACCESS 1 ; inline CONSTANT: SEC_BASED HEX: 00200000
: PAGE_READONLY 2 ; inline CONSTANT: SEC_NO_CHANGE HEX: 00400000
: PAGE_READWRITE 4 ; inline CONSTANT: SEC_FILE HEX: 00800000
: PAGE_WRITECOPY 8 ; inline CONSTANT: SEC_IMAGE HEX: 01000000
: PAGE_EXECUTE HEX: 10 ; inline CONSTANT: SEC_VLM HEX: 02000000
: PAGE_EXECUTE_READ HEX: 20 ; inline CONSTANT: SEC_RESERVE HEX: 04000000
: PAGE_EXECUTE_READWRITE HEX: 40 ; inline CONSTANT: SEC_COMMIT HEX: 08000000
: PAGE_EXECUTE_WRITECOPY HEX: 80 ; inline CONSTANT: SEC_NOCACHE HEX: 10000000
: PAGE_GUARD HEX: 100 ; inline ALIAS: MEM_IMAGE SEC_IMAGE
: PAGE_NOCACHE HEX: 200 ; inline
: SEC_BASED HEX: 00200000 ; inline CONSTANT: ERROR_ALREADY_EXISTS 183
: SEC_NO_CHANGE HEX: 00400000 ; inline
: SEC_FILE HEX: 00800000 ; inline
: SEC_IMAGE HEX: 01000000 ; inline
: SEC_VLM HEX: 02000000 ; inline
: SEC_RESERVE HEX: 04000000 ; inline
: SEC_COMMIT HEX: 08000000 ; inline
: SEC_NOCACHE HEX: 10000000 ; inline
: MEM_IMAGE SEC_IMAGE ; inline
: ERROR_ALREADY_EXISTS 183 ; inline CONSTANT: FILE_MAP_ALL_ACCESS HEX: f001f
CONSTANT: FILE_MAP_READ 4
CONSTANT: FILE_MAP_WRITE 2
CONSTANT: FILE_MAP_COPY 1
: FILE_MAP_ALL_ACCESS HEX: f001f ; CONSTANT: THREAD_MODE_BACKGROUND_BEGIN HEX: 10000
: FILE_MAP_READ 4 ; CONSTANT: THREAD_MODE_BACKGROUND_END HEX: 20000
: FILE_MAP_WRITE 2 ; CONSTANT: THREAD_PRIORITY_ABOVE_NORMAL 1
: FILE_MAP_COPY 1 ; CONSTANT: THREAD_PRIORITY_BELOW_NORMAL -1
CONSTANT: THREAD_PRIORITY_HIGHEST 2
: THREAD_MODE_BACKGROUND_BEGIN HEX: 10000 ; inline CONSTANT: THREAD_PRIORITY_IDLE -15
: THREAD_MODE_BACKGROUND_END HEX: 20000 ; inline CONSTANT: THREAD_PRIORITY_LOWEST -2
: THREAD_PRIORITY_ABOVE_NORMAL 1 ; inline CONSTANT: THREAD_PRIORITY_NORMAL 0
: THREAD_PRIORITY_BELOW_NORMAL -1 ; inline CONSTANT: THREAD_PRIORITY_TIME_CRITICAL 15
: THREAD_PRIORITY_HIGHEST 2 ; inline
: THREAD_PRIORITY_IDLE -15 ; inline
: THREAD_PRIORITY_LOWEST -2 ; inline
: THREAD_PRIORITY_NORMAL 0 ; inline
: THREAD_PRIORITY_TIME_CRITICAL 15 ; inline
C-STRUCT: OVERLAPPED C-STRUCT: OVERLAPPED
{ "UINT_PTR" "internal" } { "UINT_PTR" "internal" }
@ -321,74 +320,74 @@ C-STRUCT: GUID
{ { "UCHAR" 8 } "Data4" } ; { { "UCHAR" 8 } "Data4" } ;
: SE_CREATE_TOKEN_NAME "SeCreateTokenPrivilege" ; CONSTANT: SE_CREATE_TOKEN_NAME "SeCreateTokenPrivilege"
: SE_ASSIGNPRIMARYTOKEN_NAME "SeAssignPrimaryTokenPrivilege" ; CONSTANT: SE_ASSIGNPRIMARYTOKEN_NAME "SeAssignPrimaryTokenPrivilege"
: SE_LOCK_MEMORY_NAME "SeLockMemoryPrivilege" ; CONSTANT: SE_LOCK_MEMORY_NAME "SeLockMemoryPrivilege"
: SE_INCREASE_QUOTA_NAME "SeIncreaseQuotaPrivilege" ; CONSTANT: SE_INCREASE_QUOTA_NAME "SeIncreaseQuotaPrivilege"
: SE_UNSOLICITED_INPUT_NAME "SeUnsolicitedInputPrivilege" ; CONSTANT: SE_UNSOLICITED_INPUT_NAME "SeUnsolicitedInputPrivilege"
: SE_MACHINE_ACCOUNT_NAME "SeMachineAccountPrivilege" ; CONSTANT: SE_MACHINE_ACCOUNT_NAME "SeMachineAccountPrivilege"
: SE_TCB_NAME "SeTcbPrivilege" ; CONSTANT: SE_TCB_NAME "SeTcbPrivilege"
: SE_SECURITY_NAME "SeSecurityPrivilege" ; CONSTANT: SE_SECURITY_NAME "SeSecurityPrivilege"
: SE_TAKE_OWNERSHIP_NAME "SeTakeOwnershipPrivilege" ; CONSTANT: SE_TAKE_OWNERSHIP_NAME "SeTakeOwnershipPrivilege"
: SE_LOAD_DRIVER_NAME "SeLoadDriverPrivilege" ; CONSTANT: SE_LOAD_DRIVER_NAME "SeLoadDriverPrivilege"
: SE_SYSTEM_PROFILE_NAME "SeSystemProfilePrivilege" ; CONSTANT: SE_SYSTEM_PROFILE_NAME "SeSystemProfilePrivilege"
: SE_SYSTEMTIME_NAME "SeSystemtimePrivilege" ; CONSTANT: SE_SYSTEMTIME_NAME "SeSystemtimePrivilege"
: SE_PROF_SINGLE_PROCESS_NAME "SeProfileSingleProcessPrivilege" ; CONSTANT: SE_PROF_SINGLE_PROCESS_NAME "SeProfileSingleProcessPrivilege"
: SE_INC_BASE_PRIORITY_NAME "SeIncreaseBasePriorityPrivilege" ; CONSTANT: SE_INC_BASE_PRIORITY_NAME "SeIncreaseBasePriorityPrivilege"
: SE_CREATE_PAGEFILE_NAME "SeCreatePagefilePrivilege" ; CONSTANT: SE_CREATE_PAGEFILE_NAME "SeCreatePagefilePrivilege"
: SE_CREATE_PERMANENT_NAME "SeCreatePermanentPrivilege" ; CONSTANT: SE_CREATE_PERMANENT_NAME "SeCreatePermanentPrivilege"
: SE_BACKUP_NAME "SeBackupPrivilege" ; CONSTANT: SE_BACKUP_NAME "SeBackupPrivilege"
: SE_RESTORE_NAME "SeRestorePrivilege" ; CONSTANT: SE_RESTORE_NAME "SeRestorePrivilege"
: SE_SHUTDOWN_NAME "SeShutdownPrivilege" ; CONSTANT: SE_SHUTDOWN_NAME "SeShutdownPrivilege"
: SE_DEBUG_NAME "SeDebugPrivilege" ; CONSTANT: SE_DEBUG_NAME "SeDebugPrivilege"
: SE_AUDIT_NAME "SeAuditPrivilege" ; CONSTANT: SE_AUDIT_NAME "SeAuditPrivilege"
: SE_SYSTEM_ENVIRONMENT_NAME "SeSystemEnvironmentPrivilege" ; CONSTANT: SE_SYSTEM_ENVIRONMENT_NAME "SeSystemEnvironmentPrivilege"
: SE_CHANGE_NOTIFY_NAME "SeChangeNotifyPrivilege" ; CONSTANT: SE_CHANGE_NOTIFY_NAME "SeChangeNotifyPrivilege"
: SE_REMOTE_SHUTDOWN_NAME "SeRemoteShutdownPrivilege" ; CONSTANT: SE_REMOTE_SHUTDOWN_NAME "SeRemoteShutdownPrivilege"
: SE_UNDOCK_NAME "SeUndockPrivilege" ; CONSTANT: SE_UNDOCK_NAME "SeUndockPrivilege"
: SE_ENABLE_DELEGATION_NAME "SeEnableDelegationPrivilege" ; CONSTANT: SE_ENABLE_DELEGATION_NAME "SeEnableDelegationPrivilege"
: SE_MANAGE_VOLUME_NAME "SeManageVolumePrivilege" ; CONSTANT: SE_MANAGE_VOLUME_NAME "SeManageVolumePrivilege"
: SE_IMPERSONATE_NAME "SeImpersonatePrivilege" ; CONSTANT: SE_IMPERSONATE_NAME "SeImpersonatePrivilege"
: SE_CREATE_GLOBAL_NAME "SeCreateGlobalPrivilege" ; CONSTANT: SE_CREATE_GLOBAL_NAME "SeCreateGlobalPrivilege"
: SE_GROUP_MANDATORY HEX: 00000001 ; CONSTANT: SE_GROUP_MANDATORY HEX: 00000001
: SE_GROUP_ENABLED_BY_DEFAULT HEX: 00000002 ; CONSTANT: SE_GROUP_ENABLED_BY_DEFAULT HEX: 00000002
: SE_GROUP_ENABLED HEX: 00000004 ; CONSTANT: SE_GROUP_ENABLED HEX: 00000004
: SE_GROUP_OWNER HEX: 00000008 ; CONSTANT: SE_GROUP_OWNER HEX: 00000008
: SE_GROUP_USE_FOR_DENY_ONLY HEX: 00000010 ; CONSTANT: SE_GROUP_USE_FOR_DENY_ONLY HEX: 00000010
: SE_GROUP_LOGON_ID HEX: C0000000 ; CONSTANT: SE_GROUP_LOGON_ID HEX: C0000000
: SE_GROUP_RESOURCE HEX: 20000000 ; CONSTANT: SE_GROUP_RESOURCE HEX: 20000000
: SE_PRIVILEGE_ENABLED_BY_DEFAULT HEX: 00000001 ; CONSTANT: SE_PRIVILEGE_ENABLED_BY_DEFAULT HEX: 00000001
: SE_PRIVILEGE_ENABLED HEX: 00000002 ; CONSTANT: SE_PRIVILEGE_ENABLED HEX: 00000002
: SE_PRIVILEGE_REMOVE HEX: 00000004 ; CONSTANT: SE_PRIVILEGE_REMOVE HEX: 00000004
: SE_PRIVILEGE_USED_FOR_ACCESS HEX: 80000000 ; CONSTANT: SE_PRIVILEGE_USED_FOR_ACCESS HEX: 80000000
: PRIVILEGE_SET_ALL_NECESSARY 1 ; CONSTANT: PRIVILEGE_SET_ALL_NECESSARY 1
: SE_OWNER_DEFAULTED HEX: 00000001 ; CONSTANT: SE_OWNER_DEFAULTED HEX: 00000001
: SE_GROUP_DEFAULTED HEX: 00000002 ; CONSTANT: SE_GROUP_DEFAULTED HEX: 00000002
: SE_DACL_PRESENT HEX: 00000004 ; CONSTANT: SE_DACL_PRESENT HEX: 00000004
: SE_DACL_DEFAULTED HEX: 00000008 ; CONSTANT: SE_DACL_DEFAULTED HEX: 00000008
: SE_SACL_PRESENT HEX: 00000010 ; CONSTANT: SE_SACL_PRESENT HEX: 00000010
: SE_SACL_DEFAULTED HEX: 00000020 ; CONSTANT: SE_SACL_DEFAULTED HEX: 00000020
: SE_DACL_AUTO_INHERIT_REQ HEX: 00000100 ; CONSTANT: SE_DACL_AUTO_INHERIT_REQ HEX: 00000100
: SE_SACL_AUTO_INHERIT_REQ HEX: 00000200 ; CONSTANT: SE_SACL_AUTO_INHERIT_REQ HEX: 00000200
: SE_DACL_AUTO_INHERITED HEX: 00000400 ; CONSTANT: SE_DACL_AUTO_INHERITED HEX: 00000400
: SE_SACL_AUTO_INHERITED HEX: 00000800 ; CONSTANT: SE_SACL_AUTO_INHERITED HEX: 00000800
: SE_DACL_PROTECTED HEX: 00001000 ; CONSTANT: SE_DACL_PROTECTED HEX: 00001000
: SE_SACL_PROTECTED HEX: 00002000 ; CONSTANT: SE_SACL_PROTECTED HEX: 00002000
: SE_SELF_RELATIVE HEX: 00008000 ; CONSTANT: SE_SELF_RELATIVE HEX: 00008000
: ANYSIZE_ARRAY 1 ; inline CONSTANT: ANYSIZE_ARRAY 1
: MAXIMUM_WAIT_OBJECTS 64 ; inline CONSTANT: MAXIMUM_WAIT_OBJECTS 64
: MAXIMUM_SUSPEND_COUNT HEX: 7f ; inline CONSTANT: MAXIMUM_SUSPEND_COUNT HEX: 7f
: WAIT_OBJECT_0 0 ; inline CONSTANT: WAIT_OBJECT_0 0
: WAIT_ABANDONED_0 128 ; inline CONSTANT: WAIT_ABANDONED_0 128
: WAIT_TIMEOUT 258 ; inline CONSTANT: WAIT_TIMEOUT 258
: WAIT_IO_COMPLETION HEX: c0 ; inline CONSTANT: WAIT_IO_COMPLETION HEX: c0
: WAIT_FAILED HEX: ffffffff ; inline CONSTANT: WAIT_FAILED HEX: ffffffff
C-STRUCT: LUID C-STRUCT: LUID
{ "DWORD" "LowPart" } { "DWORD" "LowPart" }
@ -427,7 +426,7 @@ C-STRUCT: BY_HANDLE_FILE_INFORMATION
{ "DWORD" "nFileIndexLow" } ; { "DWORD" "nFileIndexLow" } ;
TYPEDEF: BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION TYPEDEF: BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION
: OFS_MAXPATHNAME 128 ; CONSTANT: OFS_MAXPATHNAME 128
C-STRUCT: OFSTRUCT C-STRUCT: OFSTRUCT
{ "BYTE" "cBytes" } { "BYTE" "cBytes" }
@ -489,34 +488,34 @@ C-STRUCT: SECURITY_ATTRIBUTES
{ "LPVOID" "lpSecurityDescriptor" } { "LPVOID" "lpSecurityDescriptor" }
{ "BOOL" "bInheritHandle" } ; { "BOOL" "bInheritHandle" } ;
: HANDLE_FLAG_INHERIT 1 ; inline CONSTANT: HANDLE_FLAG_INHERIT 1
: HANDLE_FLAG_PROTECT_FROM_CLOSE 2 ; inline CONSTANT: HANDLE_FLAG_PROTECT_FROM_CLOSE 2
: STARTF_USESHOWWINDOW HEX: 00000001 ; inline CONSTANT: STARTF_USESHOWWINDOW HEX: 00000001
: STARTF_USESIZE HEX: 00000002 ; inline CONSTANT: STARTF_USESIZE HEX: 00000002
: STARTF_USEPOSITION HEX: 00000004 ; inline CONSTANT: STARTF_USEPOSITION HEX: 00000004
: STARTF_USECOUNTCHARS HEX: 00000008 ; inline CONSTANT: STARTF_USECOUNTCHARS HEX: 00000008
: STARTF_USEFILLATTRIBUTE HEX: 00000010 ; inline CONSTANT: STARTF_USEFILLATTRIBUTE HEX: 00000010
: STARTF_RUNFULLSCREEN HEX: 00000020 ; inline CONSTANT: STARTF_RUNFULLSCREEN HEX: 00000020
: STARTF_FORCEONFEEDBACK HEX: 00000040 ; inline CONSTANT: STARTF_FORCEONFEEDBACK HEX: 00000040
: STARTF_FORCEOFFFEEDBACK HEX: 00000080 ; inline CONSTANT: STARTF_FORCEOFFFEEDBACK HEX: 00000080
: STARTF_USESTDHANDLES HEX: 00000100 ; inline CONSTANT: STARTF_USESTDHANDLES HEX: 00000100
: STARTF_USEHOTKEY HEX: 00000200 ; inline CONSTANT: STARTF_USEHOTKEY HEX: 00000200
: PIPE_ACCESS_INBOUND 1 ; inline CONSTANT: PIPE_ACCESS_INBOUND 1
: PIPE_ACCESS_OUTBOUND 2 ; inline CONSTANT: PIPE_ACCESS_OUTBOUND 2
: PIPE_ACCESS_DUPLEX 3 ; inline CONSTANT: PIPE_ACCESS_DUPLEX 3
: PIPE_TYPE_BYTE 0 ; inline CONSTANT: PIPE_TYPE_BYTE 0
: PIPE_TYPE_MESSAGE 4 ; inline CONSTANT: PIPE_TYPE_MESSAGE 4
: PIPE_READMODE_BYTE 0 ; inline CONSTANT: PIPE_READMODE_BYTE 0
: PIPE_READMODE_MESSAGE 2 ; inline CONSTANT: PIPE_READMODE_MESSAGE 2
: PIPE_WAIT 0 ; inline CONSTANT: PIPE_WAIT 0
: PIPE_NOWAIT 1 ; inline CONSTANT: PIPE_NOWAIT 1
: PIPE_UNLIMITED_INSTANCES 255 ; inline CONSTANT: PIPE_UNLIMITED_INSTANCES 255
LIBRARY: kernel32 LIBRARY: kernel32
! FUNCTION: _hread ! FUNCTION: _hread
@ -641,29 +640,29 @@ ALIAS: CreateNamedPipe CreateNamedPipeW
! FUNCTION: CreateNlsSecurityDescriptor ! FUNCTION: CreateNlsSecurityDescriptor
FUNCTION: BOOL CreatePipe ( PHANDLE hReadPipe, PHANDLE hWritePipe, LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize ) ; FUNCTION: BOOL CreatePipe ( PHANDLE hReadPipe, PHANDLE hWritePipe, LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize ) ;
: DEBUG_PROCESS HEX: 00000001 ; CONSTANT: DEBUG_PROCESS HEX: 00000001
: DEBUG_ONLY_THIS_PROCESS HEX: 00000002 ; CONSTANT: DEBUG_ONLY_THIS_PROCESS HEX: 00000002
: CREATE_SUSPENDED HEX: 00000004 ; CONSTANT: CREATE_SUSPENDED HEX: 00000004
: DETACHED_PROCESS HEX: 00000008 ; CONSTANT: DETACHED_PROCESS HEX: 00000008
: CREATE_NEW_CONSOLE HEX: 00000010 ; CONSTANT: CREATE_NEW_CONSOLE HEX: 00000010
: NORMAL_PRIORITY_CLASS HEX: 00000020 ; CONSTANT: NORMAL_PRIORITY_CLASS HEX: 00000020
: IDLE_PRIORITY_CLASS HEX: 00000040 ; CONSTANT: IDLE_PRIORITY_CLASS HEX: 00000040
: HIGH_PRIORITY_CLASS HEX: 00000080 ; CONSTANT: HIGH_PRIORITY_CLASS HEX: 00000080
: REALTIME_PRIORITY_CLASS HEX: 00000100 ; CONSTANT: REALTIME_PRIORITY_CLASS HEX: 00000100
: CREATE_NEW_PROCESS_GROUP HEX: 00000200 ; CONSTANT: CREATE_NEW_PROCESS_GROUP HEX: 00000200
: CREATE_UNICODE_ENVIRONMENT HEX: 00000400 ; CONSTANT: CREATE_UNICODE_ENVIRONMENT HEX: 00000400
: CREATE_SEPARATE_WOW_VDM HEX: 00000800 ; CONSTANT: CREATE_SEPARATE_WOW_VDM HEX: 00000800
: CREATE_SHARED_WOW_VDM HEX: 00001000 ; CONSTANT: CREATE_SHARED_WOW_VDM HEX: 00001000
: CREATE_FORCEDOS HEX: 00002000 ; CONSTANT: CREATE_FORCEDOS HEX: 00002000
: BELOW_NORMAL_PRIORITY_CLASS HEX: 00004000 ; CONSTANT: BELOW_NORMAL_PRIORITY_CLASS HEX: 00004000
: ABOVE_NORMAL_PRIORITY_CLASS HEX: 00008000 ; CONSTANT: ABOVE_NORMAL_PRIORITY_CLASS HEX: 00008000
: CREATE_BREAKAWAY_FROM_JOB HEX: 01000000 ; CONSTANT: CREATE_BREAKAWAY_FROM_JOB HEX: 01000000
: CREATE_WITH_USERPROFILE HEX: 02000000 ; CONSTANT: CREATE_WITH_USERPROFILE HEX: 02000000
: CREATE_DEFAULT_ERROR_MODE HEX: 04000000 ; CONSTANT: CREATE_DEFAULT_ERROR_MODE HEX: 04000000
: CREATE_NO_WINDOW HEX: 08000000 ; CONSTANT: CREATE_NO_WINDOW HEX: 08000000
: PROFILE_USER HEX: 10000000 ; CONSTANT: PROFILE_USER HEX: 10000000
: PROFILE_KERNEL HEX: 20000000 ; CONSTANT: PROFILE_KERNEL HEX: 20000000
: PROFILE_SERVER HEX: 40000000 ; CONSTANT: PROFILE_SERVER HEX: 40000000
FUNCTION: BOOL CreateProcessW ( LPCTSTR lpApplicationname, FUNCTION: BOOL CreateProcessW ( LPCTSTR lpApplicationname,
LPTSTR lpCommandLine, LPTSTR lpCommandLine,

2015
basis/windows/messages/messages.factor Normal file → Executable file

File diff suppressed because it is too large Load Diff

View File

@ -3,87 +3,87 @@
USING: alien alien.c-types alien.strings alien.syntax USING: alien alien.c-types alien.strings alien.syntax
combinators io.encodings.utf16n io.files io.pathnames kernel combinators io.encodings.utf16n io.files io.pathnames kernel
windows windows.com windows.com.syntax windows.ole32 windows windows.com windows.com.syntax windows.ole32
windows.user32 ; windows.user32 constants alias ;
IN: windows.shell32 IN: windows.shell32
: CSIDL_DESKTOP HEX: 00 ; inline CONSTANT: CSIDL_DESKTOP HEX: 00
: CSIDL_INTERNET HEX: 01 ; inline CONSTANT: CSIDL_INTERNET HEX: 01
: CSIDL_PROGRAMS HEX: 02 ; inline CONSTANT: CSIDL_PROGRAMS HEX: 02
: CSIDL_CONTROLS HEX: 03 ; inline CONSTANT: CSIDL_CONTROLS HEX: 03
: CSIDL_PRINTERS HEX: 04 ; inline CONSTANT: CSIDL_PRINTERS HEX: 04
: CSIDL_PERSONAL HEX: 05 ; inline CONSTANT: CSIDL_PERSONAL HEX: 05
: CSIDL_FAVORITES HEX: 06 ; inline CONSTANT: CSIDL_FAVORITES HEX: 06
: CSIDL_STARTUP HEX: 07 ; inline CONSTANT: CSIDL_STARTUP HEX: 07
: CSIDL_RECENT HEX: 08 ; inline CONSTANT: CSIDL_RECENT HEX: 08
: CSIDL_SENDTO HEX: 09 ; inline CONSTANT: CSIDL_SENDTO HEX: 09
: CSIDL_BITBUCKET HEX: 0a ; inline CONSTANT: CSIDL_BITBUCKET HEX: 0a
: CSIDL_STARTMENU HEX: 0b ; inline CONSTANT: CSIDL_STARTMENU HEX: 0b
: CSIDL_MYDOCUMENTS HEX: 0c ; inline CONSTANT: CSIDL_MYDOCUMENTS HEX: 0c
: CSIDL_MYMUSIC HEX: 0d ; inline CONSTANT: CSIDL_MYMUSIC HEX: 0d
: CSIDL_MYVIDEO HEX: 0e ; inline CONSTANT: CSIDL_MYVIDEO HEX: 0e
: CSIDL_DESKTOPDIRECTORY HEX: 10 ; inline CONSTANT: CSIDL_DESKTOPDIRECTORY HEX: 10
: CSIDL_DRIVES HEX: 11 ; inline CONSTANT: CSIDL_DRIVES HEX: 11
: CSIDL_NETWORK HEX: 12 ; inline CONSTANT: CSIDL_NETWORK HEX: 12
: CSIDL_NETHOOD HEX: 13 ; inline CONSTANT: CSIDL_NETHOOD HEX: 13
: CSIDL_FONTS HEX: 14 ; inline CONSTANT: CSIDL_FONTS HEX: 14
: CSIDL_TEMPLATES HEX: 15 ; inline CONSTANT: CSIDL_TEMPLATES HEX: 15
: CSIDL_COMMON_STARTMENU HEX: 16 ; inline CONSTANT: CSIDL_COMMON_STARTMENU HEX: 16
: CSIDL_COMMON_PROGRAMS HEX: 17 ; inline CONSTANT: CSIDL_COMMON_PROGRAMS HEX: 17
: CSIDL_COMMON_STARTUP HEX: 18 ; inline CONSTANT: CSIDL_COMMON_STARTUP HEX: 18
: CSIDL_COMMON_DESKTOPDIRECTORY HEX: 19 ; inline CONSTANT: CSIDL_COMMON_DESKTOPDIRECTORY HEX: 19
: CSIDL_APPDATA HEX: 1a ; inline CONSTANT: CSIDL_APPDATA HEX: 1a
: CSIDL_PRINTHOOD HEX: 1b ; inline CONSTANT: CSIDL_PRINTHOOD HEX: 1b
: CSIDL_LOCAL_APPDATA HEX: 1c ; inline CONSTANT: CSIDL_LOCAL_APPDATA HEX: 1c
: CSIDL_ALTSTARTUP HEX: 1d ; inline CONSTANT: CSIDL_ALTSTARTUP HEX: 1d
: CSIDL_COMMON_ALTSTARTUP HEX: 1e ; inline CONSTANT: CSIDL_COMMON_ALTSTARTUP HEX: 1e
: CSIDL_COMMON_FAVORITES HEX: 1f ; inline CONSTANT: CSIDL_COMMON_FAVORITES HEX: 1f
: CSIDL_INTERNET_CACHE HEX: 20 ; inline CONSTANT: CSIDL_INTERNET_CACHE HEX: 20
: CSIDL_COOKIES HEX: 21 ; inline CONSTANT: CSIDL_COOKIES HEX: 21
: CSIDL_HISTORY HEX: 22 ; inline CONSTANT: CSIDL_HISTORY HEX: 22
: CSIDL_COMMON_APPDATA HEX: 23 ; inline CONSTANT: CSIDL_COMMON_APPDATA HEX: 23
: CSIDL_WINDOWS HEX: 24 ; inline CONSTANT: CSIDL_WINDOWS HEX: 24
: CSIDL_SYSTEM HEX: 25 ; inline CONSTANT: CSIDL_SYSTEM HEX: 25
: CSIDL_PROGRAM_FILES HEX: 26 ; inline CONSTANT: CSIDL_PROGRAM_FILES HEX: 26
: CSIDL_MYPICTURES HEX: 27 ; inline CONSTANT: CSIDL_MYPICTURES HEX: 27
: CSIDL_PROFILE HEX: 28 ; inline CONSTANT: CSIDL_PROFILE HEX: 28
: CSIDL_SYSTEMX86 HEX: 29 ; inline CONSTANT: CSIDL_SYSTEMX86 HEX: 29
: CSIDL_PROGRAM_FILESX86 HEX: 2a ; inline CONSTANT: CSIDL_PROGRAM_FILESX86 HEX: 2a
: CSIDL_PROGRAM_FILES_COMMON HEX: 2b ; inline CONSTANT: CSIDL_PROGRAM_FILES_COMMON HEX: 2b
: CSIDL_PROGRAM_FILES_COMMONX86 HEX: 2c ; inline CONSTANT: CSIDL_PROGRAM_FILES_COMMONX86 HEX: 2c
: CSIDL_COMMON_TEMPLATES HEX: 2d ; inline CONSTANT: CSIDL_COMMON_TEMPLATES HEX: 2d
: CSIDL_COMMON_DOCUMENTS HEX: 2e ; inline CONSTANT: CSIDL_COMMON_DOCUMENTS HEX: 2e
: CSIDL_COMMON_ADMINTOOLS HEX: 2f ; inline CONSTANT: CSIDL_COMMON_ADMINTOOLS HEX: 2f
: CSIDL_ADMINTOOLS HEX: 30 ; inline CONSTANT: CSIDL_ADMINTOOLS HEX: 30
: CSIDL_CONNECTIONS HEX: 31 ; inline CONSTANT: CSIDL_CONNECTIONS HEX: 31
: CSIDL_COMMON_MUSIC HEX: 35 ; inline CONSTANT: CSIDL_COMMON_MUSIC HEX: 35
: CSIDL_COMMON_PICTURES HEX: 36 ; inline CONSTANT: CSIDL_COMMON_PICTURES HEX: 36
: CSIDL_COMMON_VIDEO HEX: 37 ; inline CONSTANT: CSIDL_COMMON_VIDEO HEX: 37
: CSIDL_RESOURCES HEX: 38 ; inline CONSTANT: CSIDL_RESOURCES HEX: 38
: CSIDL_RESOURCES_LOCALIZED HEX: 39 ; inline CONSTANT: CSIDL_RESOURCES_LOCALIZED HEX: 39
: CSIDL_COMMON_OEM_LINKS HEX: 3a ; inline CONSTANT: CSIDL_COMMON_OEM_LINKS HEX: 3a
: CSIDL_CDBURN_AREA HEX: 3b ; inline CONSTANT: CSIDL_CDBURN_AREA HEX: 3b
: CSIDL_COMPUTERSNEARME HEX: 3d ; inline CONSTANT: CSIDL_COMPUTERSNEARME HEX: 3d
: CSIDL_PROFILES HEX: 3e ; inline CONSTANT: CSIDL_PROFILES HEX: 3e
: CSIDL_FOLDER_MASK HEX: ff ; inline CONSTANT: CSIDL_FOLDER_MASK HEX: ff
: CSIDL_FLAG_PER_USER_INIT HEX: 800 ; inline CONSTANT: CSIDL_FLAG_PER_USER_INIT HEX: 800
: CSIDL_FLAG_NO_ALIAS HEX: 1000 ; inline CONSTANT: CSIDL_FLAG_NO_ALIAS HEX: 1000
: CSIDL_FLAG_DONT_VERIFY HEX: 4000 ; inline CONSTANT: CSIDL_FLAG_DONT_VERIFY HEX: 4000
: CSIDL_FLAG_CREATE HEX: 8000 ; inline CONSTANT: CSIDL_FLAG_CREATE HEX: 8000
: CSIDL_FLAG_MASK HEX: ff00 ; inline CONSTANT: CSIDL_FLAG_MASK HEX: ff00
: ERROR_FILE_NOT_FOUND 2 ; inline CONSTANT: ERROR_FILE_NOT_FOUND 2
: SHGFP_TYPE_CURRENT 0 ; inline CONSTANT: SHGFP_TYPE_CURRENT 0
: SHGFP_TYPE_DEFAULT 1 ; inline CONSTANT: SHGFP_TYPE_DEFAULT 1
LIBRARY: shell32 LIBRARY: shell32
FUNCTION: HRESULT SHGetFolderPathW ( HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPTSTR pszPath ) ; FUNCTION: HRESULT SHGetFolderPathW ( HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPTSTR pszPath ) ;
: SHGetFolderPath SHGetFolderPathW ; inline ALIAS: SHGetFolderPath SHGetFolderPathW
FUNCTION: HINSTANCE ShellExecuteW ( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd ) ; FUNCTION: HINSTANCE ShellExecuteW ( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd ) ;
: ShellExecute ShellExecuteW ; inline ALIAS: ShellExecute ShellExecuteW
: open-in-explorer ( dir -- ) : open-in-explorer ( dir -- )
f "open" rot (normalize-path) f f SW_SHOWNORMAL ShellExecute drop ; f "open" rot (normalize-path) f f SW_SHOWNORMAL ShellExecute drop ;
@ -105,7 +105,7 @@ FUNCTION: HINSTANCE ShellExecuteW ( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFi
: application-data ( -- str ) : application-data ( -- str )
CSIDL_APPDATA shell32-directory ; CSIDL_APPDATA shell32-directory ;
: windows ( -- str ) : windows-directory ( -- str )
CSIDL_WINDOWS shell32-directory ; CSIDL_WINDOWS shell32-directory ;
: programs ( -- str ) : programs ( -- str )
@ -123,50 +123,50 @@ FUNCTION: HINSTANCE ShellExecuteW ( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFi
: program-files-common-x86 ( -- str ) : program-files-common-x86 ( -- str )
CSIDL_PROGRAM_FILES_COMMONX86 shell32-directory ; CSIDL_PROGRAM_FILES_COMMONX86 shell32-directory ;
: SHCONTF_FOLDERS 32 ; inline CONSTANT: SHCONTF_FOLDERS 32
: SHCONTF_NONFOLDERS 64 ; inline CONSTANT: SHCONTF_NONFOLDERS 64
: SHCONTF_INCLUDEHIDDEN 128 ; inline CONSTANT: SHCONTF_INCLUDEHIDDEN 128
: SHCONTF_INIT_ON_FIRST_NEXT 256 ; inline CONSTANT: SHCONTF_INIT_ON_FIRST_NEXT 256
: SHCONTF_NETPRINTERSRCH 512 ; inline CONSTANT: SHCONTF_NETPRINTERSRCH 512
: SHCONTF_SHAREABLE 1024 ; inline CONSTANT: SHCONTF_SHAREABLE 1024
: SHCONTF_STORAGE 2048 ; inline CONSTANT: SHCONTF_STORAGE 2048
TYPEDEF: DWORD SHCONTF TYPEDEF: DWORD SHCONTF
: SHGDN_NORMAL 0 ; inline CONSTANT: SHGDN_NORMAL 0
: SHGDN_INFOLDER 1 ; inline CONSTANT: SHGDN_INFOLDER 1
: SHGDN_FOREDITING HEX: 1000 ; inline CONSTANT: SHGDN_FOREDITING HEX: 1000
: SHGDN_INCLUDE_NONFILESYS HEX: 2000 ; inline CONSTANT: SHGDN_INCLUDE_NONFILESYS HEX: 2000
: SHGDN_FORADDRESSBAR HEX: 4000 ; inline CONSTANT: SHGDN_FORADDRESSBAR HEX: 4000
: SHGDN_FORPARSING HEX: 8000 ; inline CONSTANT: SHGDN_FORPARSING HEX: 8000
TYPEDEF: DWORD SHGDNF TYPEDEF: DWORD SHGDNF
: SFGAO_CANCOPY DROPEFFECT_COPY ; inline ALIAS: SFGAO_CANCOPY DROPEFFECT_COPY
: SFGAO_CANMOVE DROPEFFECT_MOVE ; inline ALIAS: SFGAO_CANMOVE DROPEFFECT_MOVE
: SFGAO_CANLINK DROPEFFECT_LINK ; inline ALIAS: SFGAO_CANLINK DROPEFFECT_LINK
: SFGAO_CANRENAME HEX: 00000010 ; inline CONSTANT: SFGAO_CANRENAME HEX: 00000010
: SFGAO_CANDELETE HEX: 00000020 ; inline CONSTANT: SFGAO_CANDELETE HEX: 00000020
: SFGAO_HASPROPSHEET HEX: 00000040 ; inline CONSTANT: SFGAO_HASPROPSHEET HEX: 00000040
: SFGAO_DROPTARGET HEX: 00000100 ; inline CONSTANT: SFGAO_DROPTARGET HEX: 00000100
: SFGAO_CAPABILITYMASK HEX: 00000177 ; inline CONSTANT: SFGAO_CAPABILITYMASK HEX: 00000177
: SFGAO_LINK HEX: 00010000 ; inline CONSTANT: SFGAO_LINK HEX: 00010000
: SFGAO_SHARE HEX: 00020000 ; inline CONSTANT: SFGAO_SHARE HEX: 00020000
: SFGAO_READONLY HEX: 00040000 ; inline CONSTANT: SFGAO_READONLY HEX: 00040000
: SFGAO_GHOSTED HEX: 00080000 ; inline CONSTANT: SFGAO_GHOSTED HEX: 00080000
: SFGAO_HIDDEN HEX: 00080000 ; inline CONSTANT: SFGAO_HIDDEN HEX: 00080000
: SFGAO_DISPLAYATTRMASK HEX: 000F0000 ; inline CONSTANT: SFGAO_DISPLAYATTRMASK HEX: 000F0000
: SFGAO_FILESYSANCESTOR HEX: 10000000 ; inline CONSTANT: SFGAO_FILESYSANCESTOR HEX: 10000000
: SFGAO_FOLDER HEX: 20000000 ; inline CONSTANT: SFGAO_FOLDER HEX: 20000000
: SFGAO_FILESYSTEM HEX: 40000000 ; inline CONSTANT: SFGAO_FILESYSTEM HEX: 40000000
: SFGAO_HASSUBFOLDER HEX: 80000000 ; inline CONSTANT: SFGAO_HASSUBFOLDER HEX: 80000000
: SFGAO_CONTENTSMASK HEX: 80000000 ; inline CONSTANT: SFGAO_CONTENTSMASK HEX: 80000000
: SFGAO_VALIDATE HEX: 01000000 ; inline CONSTANT: SFGAO_VALIDATE HEX: 01000000
: SFGAO_REMOVABLE HEX: 02000000 ; inline CONSTANT: SFGAO_REMOVABLE HEX: 02000000
: SFGAO_COMPRESSED HEX: 04000000 ; inline CONSTANT: SFGAO_COMPRESSED HEX: 04000000
: SFGAO_BROWSABLE HEX: 08000000 ; inline CONSTANT: SFGAO_BROWSABLE HEX: 08000000
: SFGAO_NONENUMERATED HEX: 00100000 ; inline CONSTANT: SFGAO_NONENUMERATED HEX: 00100000
: SFGAO_NEWCONTENT HEX: 00200000 ; inline CONSTANT: SFGAO_NEWCONTENT HEX: 00200000
TYPEDEF: ULONG SFGAOF TYPEDEF: ULONG SFGAOF
@ -223,5 +223,4 @@ COM-INTERFACE: IShellFolder IUnknown {000214E6-0000-0000-C000-000000000046}
FUNCTION: HRESULT SHGetDesktopFolder ( IShellFolder** ppshf ) ; FUNCTION: HRESULT SHGetDesktopFolder ( IShellFolder** ppshf ) ;
FUNCTION: UINT DragQueryFileW ( HDROP hDrop, UINT iFile, LPWSTR lpszFile, UINT cch ) ; FUNCTION: UINT DragQueryFileW ( HDROP hDrop, UINT iFile, LPWSTR lpszFile, UINT cch ) ;
: DragQueryFile DragQueryFileW ; inline ALIAS: DragQueryFile DragQueryFileW

View File

@ -22,14 +22,14 @@ TUPLE: x-clipboard atom contents ;
"org.factorcode.Factor.SELECTION" x-atom ; "org.factorcode.Factor.SELECTION" x-atom ;
: convert-selection ( win selection -- ) : convert-selection ( win selection -- )
swap >r >r dpy get r> XA_UTF8_STRING selection-property r> swap [ [ dpy get ] dip XA_UTF8_STRING selection-property ] dip
CurrentTime XConvertSelection drop ; CurrentTime XConvertSelection drop ;
: snarf-property ( prop-return -- string ) : snarf-property ( prop-return -- string )
dup *void* [ *void* ascii alien>string ] [ drop f ] if ; dup *void* [ *void* ascii alien>string ] [ drop f ] if ;
: window-property ( win prop delete? -- string ) : window-property ( win prop delete? -- string )
>r dpy get -rot 0 -1 r> AnyPropertyType [ [ dpy get ] 2dip 0 -1 ] dip AnyPropertyType
0 <Atom> 0 <int> 0 <ulong> 0 <ulong> f <void*> 0 <Atom> 0 <int> 0 <ulong> 0 <ulong> f <void*>
[ XGetWindowProperty drop ] keep snarf-property ; [ XGetWindowProperty drop ] keep snarf-property ;
@ -58,7 +58,7 @@ TUPLE: x-clipboard atom contents ;
dpy get swap dpy get swap
[ XSelectionRequestEvent-requestor ] keep [ XSelectionRequestEvent-requestor ] keep
[ XSelectionRequestEvent-property ] keep [ XSelectionRequestEvent-property ] keep
>r "TIMESTAMP" x-atom 32 PropModeReplace r> [ "TIMESTAMP" x-atom 32 PropModeReplace ] dip
XSelectionRequestEvent-time <int> XSelectionRequestEvent-time <int>
1 XChangeProperty drop ; 1 XChangeProperty drop ;
@ -71,7 +71,7 @@ TUPLE: x-clipboard atom contents ;
over XSelectionRequestEvent-selection over set-XSelectionEvent-selection over XSelectionRequestEvent-selection over set-XSelectionEvent-selection
over XSelectionRequestEvent-target over set-XSelectionEvent-target over XSelectionRequestEvent-target over set-XSelectionEvent-target
over XSelectionRequestEvent-time over set-XSelectionEvent-time over XSelectionRequestEvent-time over set-XSelectionEvent-time
>r dpy get swap XSelectionRequestEvent-requestor 0 0 r> [ dpy get swap XSelectionRequestEvent-requestor 0 0 ] dip
XSendEvent drop XSendEvent drop
flush-dpy ; flush-dpy ;

View File

@ -36,12 +36,12 @@ GENERIC: selection-request-event ( event window -- )
GENERIC: client-event ( event window -- ) GENERIC: client-event ( event window -- )
: next-event ( -- event ) : next-event ( -- event )
dpy get "XEvent" <c-object> dup >r XNextEvent drop r> ; dpy get "XEvent" <c-object> [ XNextEvent drop ] keep ;
: mask-event ( mask -- event ) : mask-event ( mask -- event )
>r dpy get r> "XEvent" <c-object> dup >r XMaskEvent drop r> ; [ dpy get ] dip "XEvent" <c-object> [ XMaskEvent drop ] keep ;
: events-queued ( mode -- n ) >r dpy get r> XEventsQueued ; : events-queued ( mode -- n ) [ dpy get ] dip XEventsQueued ;
: wheel? ( event -- ? ) XButtonEvent-button 4 7 between? ; : wheel? ( event -- ? ) XButtonEvent-button 4 7 between? ;
@ -71,15 +71,15 @@ GENERIC: client-event ( event window -- )
} case ; } case ;
: configured-loc ( event -- dim ) : configured-loc ( event -- dim )
dup XConfigureEvent-x swap XConfigureEvent-y 2array ; [ XConfigureEvent-x ] [ XConfigureEvent-y ] bi 2array ;
: configured-dim ( event -- dim ) : configured-dim ( event -- dim )
dup XConfigureEvent-width swap XConfigureEvent-height 2array ; [ XConfigureEvent-width ] [ XConfigureEvent-height ] bi 2array ;
: mouse-event-loc ( event -- loc ) : mouse-event-loc ( event -- loc )
dup XButtonEvent-x swap XButtonEvent-y 2array ; [ XButtonEvent-x ] [ XButtonEvent-y ] bi 2array ;
: close-box? ( event -- ? ) : close-box? ( event -- ? )
dup XClientMessageEvent-message_type "WM_PROTOCOLS" x-atom = [ XClientMessageEvent-message_type "WM_PROTOCOLS" x-atom = ]
swap XClientMessageEvent-data0 "WM_DELETE_WINDOW" x-atom = [ XClientMessageEvent-data0 "WM_DELETE_WINDOW" x-atom = ]
and ; bi and ;

View File

@ -31,7 +31,7 @@ IN: x11.windows
"XSetWindowAttributes" <c-object> "XSetWindowAttributes" <c-object>
0 over set-XSetWindowAttributes-background_pixel 0 over set-XSetWindowAttributes-background_pixel
0 over set-XSetWindowAttributes-border_pixel 0 over set-XSetWindowAttributes-border_pixel
[ >r create-colormap r> set-XSetWindowAttributes-colormap ] keep [ [ create-colormap ] dip set-XSetWindowAttributes-colormap ] keep
event-mask over set-XSetWindowAttributes-event_mask ; event-mask over set-XSetWindowAttributes-event_mask ;
: set-size-hints ( window -- ) : set-size-hints ( window -- )
@ -43,12 +43,13 @@ IN: x11.windows
{ 0 0 } = [ drop ] [ set-size-hints ] if ; { 0 0 } = [ drop ] [ set-size-hints ] if ;
: create-window ( loc dim visinfo -- window ) : create-window ( loc dim visinfo -- window )
pick >r pick [
>r >r >r dpy get root get r> first2 r> { 1 1 } vmax first2 0 r> [ [ [ dpy get root get ] dip first2 ] dip { 1 1 } vmax first2 0 ] dip
[ XVisualInfo-depth InputOutput ] keep [ XVisualInfo-depth InputOutput ] keep
[ XVisualInfo-visual create-window-mask ] keep [ XVisualInfo-visual create-window-mask ] keep
window-attributes XCreateWindow window-attributes XCreateWindow
dup r> auto-position ; dup
] dip auto-position ;
: glx-window ( loc dim -- window glx ) : glx-window ( loc dim -- window glx )
GLX_DOUBLEBUFFER 1array choose-visual GLX_DOUBLEBUFFER 1array choose-visual

View File

@ -13,7 +13,7 @@
USING: kernel arrays alien alien.c-types alien.strings USING: kernel arrays alien alien.c-types alien.strings
alien.syntax math math.bitwise words sequences namespaces alien.syntax math math.bitwise words sequences namespaces
continuations io io.encodings.ascii ; continuations io io.encodings.ascii alias ;
IN: x11.xlib IN: x11.xlib
LIBRARY: xlib LIBRARY: xlib
@ -50,17 +50,17 @@ TYPEDEF: ulong Time
TYPEDEF: void* Window** TYPEDEF: void* Window**
TYPEDEF: void* Atom** TYPEDEF: void* Atom**
: <XID> <ulong> ; inline ALIAS: <XID> <ulong>
: <Window> <XID> ; inline ALIAS: <Window> <XID>
: <Drawable> <XID> ; inline ALIAS: <Drawable> <XID>
: <KeySym> <XID> ; inline ALIAS: <KeySym> <XID>
: <Atom> <ulong> ; inline ALIAS: <Atom> <ulong>
: *XID *ulong ; inline ALIAS: *XID *ulong
: *Window *XID ; inline ALIAS: *Window *XID
: *Drawable *XID ; inline ALIAS: *Drawable *XID
: *KeySym *XID ; inline ALIAS: *KeySym *XID
: *Atom *ulong ; inline ALIAS: *Atom *ulong
! !
! 2 - Display Functions ! 2 - Display Functions
! !
@ -98,21 +98,21 @@ FUNCTION: int XCloseDisplay ( Display* display ) ;
! 3.2 - Window Attributes ! 3.2 - Window Attributes
: CWBackPixmap 1 0 shift ; inline : CWBackPixmap ( -- n ) 0 2^ ; inline
: CWBackPixel 1 1 shift ; inline : CWBackPixel ( -- n ) 1 2^ ; inline
: CWBorderPixmap 1 2 shift ; inline : CWBorderPixmap ( -- n ) 2 2^ ; inline
: CWBorderPixel 1 3 shift ; inline : CWBorderPixel ( -- n ) 3 2^ ; inline
: CWBitGravity 1 4 shift ; inline : CWBitGravity ( -- n ) 4 2^ ; inline
: CWWinGravity 1 5 shift ; inline : CWWinGravity ( -- n ) 5 2^ ; inline
: CWBackingStore 1 6 shift ; inline : CWBackingStore ( -- n ) 6 2^ ; inline
: CWBackingPlanes 1 7 shift ; inline : CWBackingPlanes ( -- n ) 7 2^ ; inline
: CWBackingPixel 1 8 shift ; inline : CWBackingPixel ( -- n ) 8 2^ ; inline
: CWOverrideRedirect 1 9 shift ; inline : CWOverrideRedirect ( -- n ) 9 2^ ; inline
: CWSaveUnder 1 10 shift ; inline : CWSaveUnder ( -- n ) 10 2^ ; inline
: CWEventMask 1 11 shift ; inline : CWEventMask ( -- n ) 11 2^ ; inline
: CWDontPropagate 1 12 shift ; inline : CWDontPropagate ( -- n ) 12 2^ ; inline
: CWColormap 1 13 shift ; inline : CWColormap ( -- n ) 13 2^ ; inline
: CWCursor 1 14 shift ; inline : CWCursor ( -- n ) 14 2^ ; inline
C-STRUCT: XSetWindowAttributes C-STRUCT: XSetWindowAttributes
{ "Pixmap" "background_pixmap" } { "Pixmap" "background_pixmap" }
@ -161,13 +161,13 @@ FUNCTION: int XMapRaised ( Display* display, Window w ) ;
! 3.7 - Configuring Windows ! 3.7 - Configuring Windows
: CWX 1 0 shift ; inline : CWX ( -- n ) 0 2^ ; inline
: CWY 1 1 shift ; inline : CWY ( -- n ) 1 2^ ; inline
: CWWidth 1 2 shift ; inline : CWWidth ( -- n ) 2 2^ ; inline
: CWHeight 1 3 shift ; inline : CWHeight ( -- n ) 3 2^ ; inline
: CWBorderWidth 1 4 shift ; inline : CWBorderWidth ( -- n ) 4 2^ ; inline
: CWSibling 1 5 shift ; inline : CWSibling ( -- n ) 5 2^ ; inline
: CWStackMode 1 6 shift ; inline : CWStackMode ( -- n ) 6 2^ ; inline
C-STRUCT: XWindowChanges C-STRUCT: XWindowChanges
{ "int" "x" } { "int" "x" }
@ -312,29 +312,29 @@ FUNCTION: Colormap XCreateColormap ( Display* display, Window w, Visual* visual,
! 7 - Graphics Context Functions ! 7 - Graphics Context Functions
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: GCFunction 1 0 shift ; inline : GCFunction ( -- n ) 0 2^ ; inline
: GCPlaneMask 1 1 shift ; inline : GCPlaneMask ( -- n ) 1 2^ ; inline
: GCForeground 1 2 shift ; inline : GCForeground ( -- n ) 2 2^ ; inline
: GCBackground 1 3 shift ; inline : GCBackground ( -- n ) 3 2^ ; inline
: GCLineWidth 1 4 shift ; inline : GCLineWidth ( -- n ) 4 2^ ; inline
: GCLineStyle 1 5 shift ; inline : GCLineStyle ( -- n ) 5 2^ ; inline
: GCCapStyle 1 6 shift ; inline : GCCapStyle ( -- n ) 6 2^ ; inline
: GCJoinStyle 1 7 shift ; inline : GCJoinStyle ( -- n ) 7 2^ ; inline
: GCFillStyle 1 8 shift ; inline : GCFillStyle ( -- n ) 8 2^ ; inline
: GCFillRule 1 9 shift ; inline : GCFillRule ( -- n ) 9 2^ ; inline
: GCTile 1 10 shift ; inline : GCTile ( -- n ) 10 2^ ; inline
: GCStipple 1 11 shift ; inline : GCStipple ( -- n ) 11 2^ ; inline
: GCTileStipXOrigin 1 12 shift ; inline : GCTileStipXOrigin ( -- n ) 12 2^ ; inline
: GCTileStipYOrigin 1 13 shift ; inline : GCTileStipYOrigin ( -- n ) 13 2^ ; inline
: GCFont 1 14 shift ; inline : GCFont ( -- n ) 14 2^ ; inline
: GCSubwindowMode 1 15 shift ; inline : GCSubwindowMode ( -- n ) 15 2^ ; inline
: GCGraphicsExposures 1 16 shift ; inline : GCGraphicsExposures ( -- n ) 16 2^ ; inline
: GCClipXOrigin 1 17 shift ; inline : GCClipXOrigin ( -- n ) 17 2^ ; inline
: GCClipYOrigin 1 18 shift ; inline : GCClipYOrigin ( -- n ) 18 2^ ; inline
: GCClipMask 1 19 shift ; inline : GCClipMask ( -- n ) 19 2^ ; inline
: GCDashOffset 1 20 shift ; inline : GCDashOffset ( -- n ) 20 2^ ; inline
: GCDashList 1 21 shift ; inline : GCDashList ( -- n ) 21 2^ ; inline
: GCArcMode 1 22 shift ; inline : GCArcMode ( -- n ) 22 2^ ; inline
: GXclear HEX: 0 ; inline : GXclear HEX: 0 ; inline
: GXand HEX: 1 ; inline : GXand HEX: 1 ; inline
@ -505,32 +505,32 @@ FUNCTION: Status XKillClient ( Display* display, XID resource ) ;
! 10.3 - Event Masks ! 10.3 - Event Masks
: NoEventMask 0 ; inline : NoEventMask ( -- n ) 0 ; inline
: KeyPressMask 1 0 shift ; inline : KeyPressMask ( -- n ) 0 2^ ; inline
: KeyReleaseMask 1 1 shift ; inline : KeyReleaseMask ( -- n ) 1 2^ ; inline
: ButtonPressMask 1 2 shift ; inline : ButtonPressMask ( -- n ) 2 2^ ; inline
: ButtonReleaseMask 1 3 shift ; inline : ButtonReleaseMask ( -- n ) 3 2^ ; inline
: EnterWindowMask 1 4 shift ; inline : EnterWindowMask ( -- n ) 4 2^ ; inline
: LeaveWindowMask 1 5 shift ; inline : LeaveWindowMask ( -- n ) 5 2^ ; inline
: PointerMotionMask 1 6 shift ; inline : PointerMotionMask ( -- n ) 6 2^ ; inline
: PointerMotionHintMask 1 7 shift ; inline : PointerMotionHintMask ( -- n ) 7 2^ ; inline
: Button1MotionMask 1 8 shift ; inline : Button1MotionMask ( -- n ) 8 2^ ; inline
: Button2MotionMask 1 9 shift ; inline : Button2MotionMask ( -- n ) 9 2^ ; inline
: Button3MotionMask 1 10 shift ; inline : Button3MotionMask ( -- n ) 10 2^ ; inline
: Button4MotionMask 1 11 shift ; inline : Button4MotionMask ( -- n ) 11 2^ ; inline
: Button5MotionMask 1 12 shift ; inline : Button5MotionMask ( -- n ) 12 2^ ; inline
: ButtonMotionMask 1 13 shift ; inline : ButtonMotionMask ( -- n ) 13 2^ ; inline
: KeymapStateMask 1 14 shift ; inline : KeymapStateMask ( -- n ) 14 2^ ; inline
: ExposureMask 1 15 shift ; inline : ExposureMask ( -- n ) 15 2^ ; inline
: VisibilityChangeMask 1 16 shift ; inline : VisibilityChangeMask ( -- n ) 16 2^ ; inline
: StructureNotifyMask 1 17 shift ; inline : StructureNotifyMask ( -- n ) 17 2^ ; inline
: ResizeRedirectMask 1 18 shift ; inline : ResizeRedirectMask ( -- n ) 18 2^ ; inline
: SubstructureNotifyMask 1 19 shift ; inline : SubstructureNotifyMask ( -- n ) 19 2^ ; inline
: SubstructureRedirectMask 1 20 shift ; inline : SubstructureRedirectMask ( -- n ) 20 2^ ; inline
: FocusChangeMask 1 21 shift ; inline : FocusChangeMask ( -- n ) 21 2^ ; inline
: PropertyChangeMask 1 22 shift ; inline : PropertyChangeMask ( -- n ) 22 2^ ; inline
: ColormapChangeMask 1 23 shift ; inline : ColormapChangeMask ( -- n ) 23 2^ ; inline
: OwnerGrabButtonMask 1 24 shift ; inline : OwnerGrabButtonMask ( -- n ) 24 2^ ; inline
: KeyPress 2 ; inline : KeyPress 2 ; inline
: KeyRelease 3 ; inline : KeyRelease 3 ; inline
@ -584,20 +584,20 @@ C-STRUCT: XAnyEvent
: Button4 4 ; inline : Button4 4 ; inline
: Button5 5 ; inline : Button5 5 ; inline
: Button1Mask 1 8 shift ; inline : Button1Mask ( -- n ) 1 8 shift ; inline
: Button2Mask 1 9 shift ; inline : Button2Mask ( -- n ) 1 9 shift ; inline
: Button3Mask 1 10 shift ; inline : Button3Mask ( -- n ) 1 10 shift ; inline
: Button4Mask 1 11 shift ; inline : Button4Mask ( -- n ) 1 11 shift ; inline
: Button5Mask 1 12 shift ; inline : Button5Mask ( -- n ) 1 12 shift ; inline
: ShiftMask 1 0 shift ; inline : ShiftMask ( -- n ) 1 0 shift ; inline
: LockMask 1 1 shift ; inline : LockMask ( -- n ) 1 1 shift ; inline
: ControlMask 1 2 shift ; inline : ControlMask ( -- n ) 1 2 shift ; inline
: Mod1Mask 1 3 shift ; inline : Mod1Mask ( -- n ) 1 3 shift ; inline
: Mod2Mask 1 4 shift ; inline : Mod2Mask ( -- n ) 1 4 shift ; inline
: Mod3Mask 1 5 shift ; inline : Mod3Mask ( -- n ) 1 5 shift ; inline
: Mod4Mask 1 6 shift ; inline : Mod4Mask ( -- n ) 1 6 shift ; inline
: Mod5Mask 1 7 shift ; inline : Mod5Mask ( -- n ) 1 7 shift ; inline
C-STRUCT: XButtonEvent C-STRUCT: XButtonEvent
{ "int" "type" } { "int" "type" }
@ -1321,15 +1321,15 @@ FUNCTION: int XBell ( Display* display, int percent ) ;
! !!! INPUT METHODS ! !!! INPUT METHODS
: XIMPreeditArea HEX: 0001 ; : XIMPreeditArea HEX: 0001 ; inline
: XIMPreeditCallbacks HEX: 0002 ; : XIMPreeditCallbacks HEX: 0002 ; inline
: XIMPreeditPosition HEX: 0004 ; : XIMPreeditPosition HEX: 0004 ; inline
: XIMPreeditNothing HEX: 0008 ; : XIMPreeditNothing HEX: 0008 ; inline
: XIMPreeditNone HEX: 0010 ; : XIMPreeditNone HEX: 0010 ; inline
: XIMStatusArea HEX: 0100 ; : XIMStatusArea HEX: 0100 ; inline
: XIMStatusCallbacks HEX: 0200 ; : XIMStatusCallbacks HEX: 0200 ; inline
: XIMStatusNothing HEX: 0400 ; : XIMStatusNothing HEX: 0400 ; inline
: XIMStatusNone HEX: 0800 ; : XIMStatusNone HEX: 0800 ; inline
: XNVaNestedList "XNVaNestedList" ; : XNVaNestedList "XNVaNestedList" ;
: XNQueryInputStyle "queryInputStyle" ; : XNQueryInputStyle "queryInputStyle" ;

View File

@ -112,7 +112,7 @@ HELP: name
{ $class-description "represents an XML name, with the fields space (a string representing the namespace, as written in the document, tag (a string of the actual name of the tag) and url (a string of the URL that the namespace points to)" } { $class-description "represents an XML name, with the fields space (a string representing the namespace, as written in the document, tag (a string of the actual name of the tag) and url (a string of the URL that the namespace points to)" }
{ $see-also <name> tag } ; { $see-also <name> tag } ;
HELP: <name> ( space tag url -- name ) HELP: <name>
{ $values { "space" "a string" } { "tag" "a string" } { "url" "a string" } { $values { "space" "a string" } { "tag" "a string" } { "url" "a string" }
{ "name" "an XML tag name" } } { "name" "an XML tag name" } }
{ $description "creates a name tuple with the name-space space and the tag-name tag and the tag-url url." } { $description "creates a name tuple with the name-space space and the tag-name tag and the tag-url url." }
@ -143,7 +143,7 @@ HELP: prolog
{ $class-description "represents an XML prolog, with the tuple fields version (containing \"1.0\" or \"1.1\"), encoding (a string representing the encoding type), and standalone (t or f, whether the document is standalone without external entities)" } { $class-description "represents an XML prolog, with the tuple fields version (containing \"1.0\" or \"1.1\"), encoding (a string representing the encoding type), and standalone (t or f, whether the document is standalone without external entities)" }
{ $see-also <prolog> xml } ; { $see-also <prolog> xml } ;
HELP: <prolog> ( version encoding standalone -- prolog ) HELP: <prolog>
{ $values { "version" "a string, 1.0 or 1.1" } { $values { "version" "a string, 1.0 or 1.1" }
{ "encoding" "a string" } { "standalone" "a boolean" } { "prolog" "an XML prolog" } } { "encoding" "a string" } { "standalone" "a boolean" } { "prolog" "an XML prolog" } }
{ $description "creates an XML prolog tuple" } { $description "creates an XML prolog tuple" }
@ -153,7 +153,7 @@ HELP: comment
{ $class-description "represents a comment in XML. Has one slot, text, which contains the string of the comment" } { $class-description "represents a comment in XML. Has one slot, text, which contains the string of the comment" }
{ $see-also <comment> } ; { $see-also <comment> } ;
HELP: <comment> ( text -- comment ) HELP: <comment>
{ $values { "text" "a string" } { "comment" "a comment" } } { $values { "text" "a string" } { "comment" "a comment" } }
{ $description "creates an XML comment tuple" } { $description "creates an XML comment tuple" }
{ $see-also comment } ; { $see-also comment } ;
@ -162,7 +162,7 @@ HELP: instruction
{ $class-description "represents an XML instruction, such as <?xsl stylesheet='foo.xml'?>. Contains one slot, text, which contains the string between the question marks." } { $class-description "represents an XML instruction, such as <?xsl stylesheet='foo.xml'?>. Contains one slot, text, which contains the string between the question marks." }
{ $see-also <instruction> } ; { $see-also <instruction> } ;
HELP: <instruction> ( text -- instruction ) HELP: <instruction>
{ $values { "text" "a string" } { "instruction" "an XML instruction" } } { $values { "text" "a string" } { "instruction" "an XML instruction" } }
{ $description "creates an XML parsing instruction, such as <?xsl stylesheet='foo.xml'?>." } { $description "creates an XML parsing instruction, such as <?xsl stylesheet='foo.xml'?>." }
{ $see-also instruction } ; { $see-also instruction } ;

View File

@ -2,7 +2,7 @@ USING: accessors sequences assocs kernel quotations namespaces
xml.data xml.utilities combinators macros parser lexer words fry ; xml.data xml.utilities combinators macros parser lexer words fry ;
IN: xmode.utilities IN: xmode.utilities
: implies [ not ] dip or ; inline : implies ( x y -- z ) [ not ] dip or ; inline
: child-tags ( tag -- seq ) children>> [ tag? ] filter ; : child-tags ( tag -- seq ) children>> [ tag? ] filter ;

View File

@ -90,7 +90,7 @@ M: assoc assoc-clone-like ( assoc exemplar -- newassoc )
] if ; inline recursive ] if ; inline recursive
: assoc-stack ( key seq -- value ) : assoc-stack ( key seq -- value )
dup length 1- swap (assoc-stack) ; flushable [ length 1- ] keep (assoc-stack) ; flushable
: assoc-subset? ( assoc1 assoc2 -- ? ) : assoc-subset? ( assoc1 assoc2 -- ? )
[ swapd at* [ = ] [ 2drop f ] if ] curry assoc-all? ; [ swapd at* [ = ] [ 2drop f ] if ] curry assoc-all? ;
@ -122,14 +122,14 @@ M: assoc assoc-clone-like ( assoc exemplar -- newassoc )
: remove-all ( assoc seq -- subseq ) : remove-all ( assoc seq -- subseq )
swap [ key? not ] curry filter ; swap [ key? not ] curry filter ;
: (substitute) : substituter ( assoc -- quot )
[ dupd at* [ nip ] [ drop ] if ] curry ; inline [ dupd at* [ nip ] [ drop ] if ] curry ; inline
: substitute-here ( seq assoc -- ) : substitute-here ( seq assoc -- )
(substitute) change-each ; substituter change-each ;
: substitute ( seq assoc -- newseq ) : substitute ( seq assoc -- newseq )
(substitute) map ; substituter map ;
: cache ( key assoc quot -- value ) : cache ( key assoc quot -- value )
2over at* [ 2over at* [

View File

@ -287,11 +287,11 @@ tuple
"((empty))" "hashtables.private" create "((empty))" "hashtables.private" create
"tombstone" "hashtables.private" lookup f "tombstone" "hashtables.private" lookup f
2array >tuple 1quotation define-inline 2array >tuple 1quotation (( -- value )) define-inline
"((tombstone))" "hashtables.private" create "((tombstone))" "hashtables.private" create
"tombstone" "hashtables.private" lookup t "tombstone" "hashtables.private" lookup t
2array >tuple 1quotation define-inline 2array >tuple 1quotation (( -- value )) define-inline
! Some tuple classes ! Some tuple classes
"curry" "kernel" create "curry" "kernel" create

View File

@ -24,9 +24,11 @@ SINGLETON: crc32
INSTANCE: crc32 checksum INSTANCE: crc32 checksum
: init-crc32 drop [ HEX: ffffffff dup ] dip ; inline : init-crc32 ( input checksum -- x y input )
drop [ HEX: ffffffff dup ] dip ; inline
: finish-crc32 bitxor 4 >be ; inline : finish-crc32 ( x y -- bytes )
bitxor 4 >be ; inline
M: crc32 checksum-bytes M: crc32 checksum-bytes
init-crc32 init-crc32

View File

@ -290,6 +290,12 @@ M: tuple-class (define-tuple-class)
tri* define-declared tri* define-declared
] 3tri ; ] 3tri ;
: boa-effect ( class -- effect )
[ all-slots [ name>> ] map ] [ name>> 1array ] bi <effect> ;
: define-boa-word ( word class -- )
[ [ boa ] curry ] [ boa-effect ] bi define-inline ;
M: tuple-class reset-class M: tuple-class reset-class
[ [
dup "slots" word-prop [ dup "slots" word-prop [

View File

@ -33,7 +33,7 @@ ERROR: no-method object generic ;
] change-at ; ] change-at ;
: flatten-method ( class method assoc -- ) : flatten-method ( class method assoc -- )
[ dup flatten-class keys swap ] 2dip [ [ [ flatten-class keys ] keep ] 2dip [
[ spin ] dip push-method [ spin ] dip push-method
] 3curry each ; ] 3curry each ;

View File

@ -77,7 +77,7 @@ TUPLE: hashtable
[ deleted>> 10 fixnum*fast ] [ count>> ] bi fixnum> ; inline [ deleted>> 10 fixnum*fast ] [ count>> ] bi fixnum> ; inline
: grow-hash ( hash -- ) : grow-hash ( hash -- )
[ dup >alist swap assoc-size 1+ ] keep [ [ >alist ] [ assoc-size 1+ ] bi ] keep
[ reset-hash ] keep [ reset-hash ] keep
swap (rehash) ; inline swap (rehash) ; inline

View File

@ -32,9 +32,9 @@ M: object <decoder> f decoder boa ;
<PRIVATE <PRIVATE
: cr+ t >>cr drop ; inline : cr+ ( stream -- ) t >>cr drop ; inline
: cr- f >>cr drop ; inline : cr- ( stream -- ) f >>cr drop ; inline
: >decoder< ( decoder -- stream encoding ) : >decoder< ( decoder -- stream encoding )
[ stream>> ] [ code>> ] bi ; inline [ stream>> ] [ code>> ] bi ; inline

View File

@ -57,8 +57,8 @@ HELP: normalize-path
{ $values { "str" "a pathname string" } { "newstr" "a new pathname string" } } { $values { "str" "a pathname string" } { "newstr" "a new pathname string" } }
{ $description "Called by words such as " { $link <file-reader> } " and " { $link <file-writer> } " to prepare a pathname before passing it to underlying code." } ; { $description "Called by words such as " { $link <file-reader> } " and " { $link <file-writer> } " to prepare a pathname before passing it to underlying code." } ;
HELP: <pathname> ( str -- pathname ) HELP: <pathname>
{ $values { "str" "a pathname string" } { "pathname" pathname } } { $values { "string" "a pathname string" } { "pathname" pathname } }
{ $description "Creates a new " { $link pathname } "." } ; { $description "Creates a new " { $link pathname } "." } ;
HELP: home HELP: home

Some files were not shown because too many files have changed in this diff Show More