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.
! 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
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
[ call-next-method ] [ f "alias" set-word-prop ] bi ;
M: alias 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 ;
: define-deref ( name -- )
[ CHAR: * prefix "alien.c-types" create ]
[ c-getter 0 prefix ] bi
define-inline ;
[ CHAR: * prefix "alien.c-types" create ] [ c-getter 0 prefix ] bi
(( c-ptr -- value )) define-inline ;
: define-out ( name -- )
[ "alien.c-types" constructor-word ]
[ dup c-setter '[ _ <c-object> [ 0 @ ] keep ] ]
bi define-inline ;
[ dup c-setter '[ _ <c-object> [ 0 @ ] keep ] ] bi
(( value -- c-ptr )) define-inline ;
: c-bool> ( int -- ? )
zero? not ;
0 = not ; inline
: define-primitive-type ( type name -- )
[ typedef ]

View File

@ -52,8 +52,8 @@ PREDICATE: slot-writer < word "writing" word-prop >boolean ;
[ (>>offset) ] [ type>> heap-size + ] 2bi
] reduce ;
: define-struct-slot-word ( word quot spec -- )
offset>> prefix define-inline ;
: define-struct-slot-word ( word quot spec effect -- )
[ offset>> prefix ] dip define-inline ;
: define-getter ( type spec -- )
[ set-reader-props ] keep
@ -62,11 +62,13 @@ PREDICATE: slot-writer < word "writing" word-prop >boolean ;
type>>
[ 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 -- )
[ 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-getter ] [ define-setter ] 2bi ;

View File

@ -11,7 +11,7 @@ TUPLE: bit-array
<PRIVATE
: n>byte -3 shift ; inline
: n>byte ( m -- n ) -3 shift ; inline
: byte/bit ( n alien -- byte bit )
over n>byte alien-unsigned-1 swap 7 bitand ; inline
@ -19,9 +19,9 @@ TUPLE: bit-array
: set-bit ( ? byte bit -- byte )
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 -- )
[ [ length bits>cells ] keep ] dip swap underlying>>

View File

@ -66,7 +66,7 @@ M: id equal?
SYMBOL: objects
: (objects) <id> objects get ; inline
: (objects) ( obj -- id assoc ) <id> objects get ; inline
: 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 )
[ over second>> + seconds/minutes [ >>second ] dip +minute ] unless-zero ;
: (time+)
: (time+) ( timestamp duration -- timestamp' duration )
[ second>> +second ] keep
[ minute>> +minute ] keep
[ hour>> +hour ] keep
@ -219,7 +219,8 @@ M: number +second ( timestamp n -- timestamp )
[ month>> +month ] keep
[ year>> +year ] keep ; inline
: +slots [ bi@ + ] curry 2keep ; inline
: +slots ( obj1 obj2 quot -- n obj1 obj2 )
[ bi@ + ] curry 2keep ; inline
PRIVATE>

View File

@ -4,7 +4,7 @@ USING: help.syntax help.markup ;
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." } ;
HELP: <openssl-checksum> ( name -- checksum )
HELP: <openssl-checksum>
{ $values { "name" "an EVP message digest name" } { "checksum" openssl-checksum } }
{ $description "Creates a new OpenSSL checksum object." } ;

View File

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

View File

@ -4,8 +4,8 @@ IN: columns
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> } "." } ;
HELP: <column> ( seq n -- column )
{ $values { "seq" sequence } { "n" "a non-negative integer" } { "column" column } }
HELP: <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." }
{ $examples
{ $example

View File

@ -68,7 +68,8 @@ IN: compiler.cfg.alias-analysis
! Map vregs -> alias classes
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 )
#! 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 ;
IN: compiler.cfg.hats
: i int-regs next-vreg ; inline
: ^^i i dup ; inline
: ^^i1 [ ^^i ] dip ; inline
: ^^i2 [ ^^i ] 2dip ; inline
: ^^i3 [ ^^i ] 3dip ; inline
: i ( -- vreg ) int-regs next-vreg ; inline
: ^^i ( -- vreg vreg ) i dup ; inline
: ^^i1 ( obj -- vreg vreg obj ) [ ^^i ] dip ; inline
: ^^i2 ( obj obj -- vreg vreg obj obj ) [ ^^i ] 2dip ; inline
: ^^i3 ( obj obj obj -- vreg vreg obj obj obj ) [ ^^i ] 3dip ; inline
: d double-float-regs next-vreg ; inline
: ^^d d dup ; inline
: ^^d1 [ ^^d ] dip ; inline
: ^^d2 [ ^^d ] 2dip ; inline
: ^^d3 [ ^^d ] 3dip ; inline
: d ( -- vreg ) double-float-regs next-vreg ; inline
: ^^d ( -- vreg vreg ) d dup ; inline
: ^^d1 ( obj -- vreg vreg obj ) [ ^^d ] dip ; inline
: ^^d2 ( obj obj -- vreg vreg obj obj ) [ ^^d ] 2dip ; inline
: ^^d3 ( obj obj obj -- vreg vreg obj obj obj ) [ ^^d ] 3dip ; inline
: ^^load-literal ( obj -- dst ) ^^i1 ##load-literal ; inline
: ^^peek ( loc -- dst ) ^^i1 ##peek ; inline

View File

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

View File

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

View File

@ -95,7 +95,7 @@ M: ##dispatch-label generate-insn label>> %dispatch-label ;
M: ##dispatch generate-insn
[ src>> register ] [ temp>> register ] [ offset>> ] tri %dispatch ;
: >slot<
: >slot< ( insn -- dst obj slot tag )
{
[ dst>> register ]
[ obj>> register ]
@ -109,7 +109,7 @@ M: ##slot generate-insn
M: ##slot-imm generate-insn
>slot< %slot-imm ;
: >set-slot<
: >set-slot< ( insn -- src obj slot tag )
{
[ src>> 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-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-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-values dup [ ?future ] change-each ; inline
: future-values ( futures -- futures )
dup [ ?future ] change-each ; inline
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
! Pseudo-instructions
: LI 0 rot ADDI ; inline
: SUBI neg ADDI ; inline
: LIS 0 rot ADDIS ; inline
: SUBIC neg ADDIC ; inline
: SUBIC. neg ADDIC. ; inline
: NOT dup NOR ; inline
: NOT. dup NOR. ; inline
: MR dup OR ; inline
: MR. dup OR. ; inline
: (SLWI) 0 31 pick - ; inline
: LI ( value dst -- ) 0 rot ADDI ; inline
: SUBI ( dst src1 src2 -- ) neg ADDI ; inline
: LIS ( value dst -- ) 0 rot ADDIS ; inline
: SUBIC ( dst src1 src2 -- ) neg ADDIC ; inline
: SUBIC. ( dst src1 src2 -- ) neg ADDIC. ; inline
: NOT ( dst src -- ) dup NOR ; inline
: NOT. ( dst src -- ) dup NOR. ; inline
: MR ( dst src -- ) dup OR ; inline
: MR. ( dst src -- ) dup OR. ; 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. ;
: (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. ;
: 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-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: float-regs return-reg drop XMM0 ;

View File

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

View File

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

View File

@ -1,6 +1,6 @@
USING: definitions kernel parser words sequences math.parser
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
: editpadlite-path ( -- path )

View File

@ -1,6 +1,6 @@
USING: definitions kernel parser words sequences math.parser
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
: editpadpro-path ( -- path )

View File

@ -1,5 +1,6 @@
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
: editplus-path ( -- path )

View File

@ -1,5 +1,6 @@
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
: emeditor-path ( -- path )

View File

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

View File

@ -1,5 +1,6 @@
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
M: windows gvim-path

View File

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

View File

@ -1,5 +1,5 @@
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
: notepadpp-path ( -- path )

View File

@ -1,7 +1,7 @@
! Copyright (C) 2007 Clemens F. Hofreither.
! See http://factorcode.org/license.txt for BSD license.
! 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 ;
IN: editors.scite

View File

@ -1,5 +1,5 @@
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
: 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
namespaces sequences io.paths.windows make ;
namespaces sequences io.directories.search.windows make ;
IN: editors.ultraedit
: 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
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 ;
IN: editors.wordpad

View File

@ -10,8 +10,8 @@ HELP: <redirect>
{ $values { "url" url } { "response" response } }
{ $description "Creates a response which redirects the client to the given URL." } ;
HELP: <secure-only> ( responder -- responder' )
{ $values { "responder" "a responder" } { "responder'" "a responder" } }
HELP: <secure-only>
{ $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." } ;
HELP: <secure-redirect>

View File

@ -8,7 +8,8 @@ IN: grouping
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 )
[ check-groups ] dip boa ; inline

View File

@ -87,7 +87,8 @@ M: heap heap-size ( heap -- n )
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? ;

View File

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

View File

@ -4,8 +4,8 @@ html.templates html.templates.chloe.syntax
html.templates.chloe.compiler html.templates.chloe.components
math xml.data strings quotations namespaces ;
HELP: <chloe> ( path -- template )
{ $values { "path" "a pathname string without the trailing " { $snippet ".xml" } " extension" } { "template" chloe } }
HELP: <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 } "." } ;
HELP: required-attr

View File

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

View File

@ -4,7 +4,7 @@ IN: http.server
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> } "." } ;
HELP: <trivial-responder> ( response -- responder )
HELP: <trivial-responder>
{ $values { "response" response } { "responder" trivial-responder } }
{ $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
handle>> ptr>> [ over set-OVERLAPPED-offset ] when* ;
M: winnt FileArgs-overlapped ( port -- overlapped )
make-overlapped ;
: <completion-port> ( handle existing -- handle )
f 1 CreateIoCompletionPort dup win32-error=0/f ;

View File

@ -56,4 +56,4 @@ PRIVATE>
: find-in-directories ( directories bfs? quot -- path' )
'[ _ _ 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.
! See http://factorcode.org/license.txt for BSD license.
USING: arrays fry io.pathnames kernel sequences windows.shell32 ;
IN: io.paths
USING: arrays fry io.pathnames kernel sequences windows.shell32
io.directories.search ;
IN: io.directories.search.windows
: program-files-directories ( -- array )
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 ;
: read-flags O_RDONLY ; inline
: read-flags ( -- n ) O_RDONLY ; inline
: open-read ( path -- fd ) O_RDONLY file-mode open-file ;
M: unix (file-reader) ( path -- stream )
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 )
write-flags file-mode open-file ;
@ -26,7 +27,8 @@ M: unix (file-reader) ( path -- stream )
M: unix (file-writer) ( path -- stream )
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 )
[

View File

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

View File

@ -86,7 +86,7 @@ ARTICLE: "ssl-contexts" "Secure socket contexts"
HELP: secure
{ $class-description "The class of secure socket addresses." } ;
HELP: <secure> ( addrspec -- secure )
HELP: <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> } "." } ;

View File

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

View File

@ -3,6 +3,6 @@
USING: slots.private ;
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
256 [
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 )
: (^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
[ 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> } "."
} ;
HELP: <rect> ( loc dim -- rect )
HELP: <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." } ;
@ -23,7 +23,7 @@ HELP: rect-bounds
{ 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 } } }
{ $description "Creates a new rectangle with the specified top-left and bottom-right corner locations." } ;

View File

@ -93,7 +93,7 @@ $nl
$nl
"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 } }
{ $description "Creates a new interval. Usually it is more convenient to create intervals using one of the following words instead:"
{ $list

View File

@ -10,7 +10,7 @@ IN: math.quaternions
<PRIVATE
: ** conjugate * ; inline
: ** ( x y -- z ) conjugate * ; 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
: 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

View File

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

View File

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

View File

@ -12,7 +12,7 @@ TUPLE: nibble-array
: nibble BIN: 1111 ; inline
: nibbles>bytes 1 + 2/ ; inline
: nibbles>bytes ( m -- n ) 1 + 2/ ; inline
: byte/nibble ( n -- shift n' )
[ 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
! See http://factorcode.org/license.txt for BSD license.
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
@ -13,64 +14,64 @@ IN: openssl.libssl
{ [ os unix? ] [ "libssl" "libssl.so" "cdecl" add-library ] }
} cond >>
: X509_FILETYPE_PEM 1 ; inline
: X509_FILETYPE_ASN1 2 ; inline
: X509_FILETYPE_DEFAULT 3 ; inline
CONSTANT: X509_FILETYPE_PEM 1
CONSTANT: X509_FILETYPE_ASN1 2
CONSTANT: X509_FILETYPE_DEFAULT 3
: SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 ; inline
: SSL_FILETYPE_PEM X509_FILETYPE_PEM ; inline
ALIAS: SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1
ALIAS: SSL_FILETYPE_PEM X509_FILETYPE_PEM
: SSL_CTRL_NEED_TMP_RSA 1 ; inline
: SSL_CTRL_SET_TMP_RSA 2 ; inline
: SSL_CTRL_SET_TMP_DH 3 ; inline
: SSL_CTRL_SET_TMP_RSA_CB 4 ; inline
: SSL_CTRL_SET_TMP_DH_CB 5 ; inline
CONSTANT: SSL_CTRL_NEED_TMP_RSA 1
CONSTANT: SSL_CTRL_SET_TMP_RSA 2
CONSTANT: SSL_CTRL_SET_TMP_DH 3
CONSTANT: SSL_CTRL_SET_TMP_RSA_CB 4
CONSTANT: SSL_CTRL_SET_TMP_DH_CB 5
: SSL_CTRL_GET_SESSION_REUSED 6 ; inline
: SSL_CTRL_GET_CLIENT_CERT_REQUEST 7 ; inline
: SSL_CTRL_GET_NUM_RENEGOTIATIONS 8 ; inline
: SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 9 ; inline
: SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 10 ; inline
: SSL_CTRL_GET_FLAGS 11 ; inline
: SSL_CTRL_EXTRA_CHAIN_CERT 12 ; inline
CONSTANT: SSL_CTRL_GET_SESSION_REUSED 6
CONSTANT: SSL_CTRL_GET_CLIENT_CERT_REQUEST 7
CONSTANT: SSL_CTRL_GET_NUM_RENEGOTIATIONS 8
CONSTANT: SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 9
CONSTANT: SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 10
CONSTANT: SSL_CTRL_GET_FLAGS 11
CONSTANT: SSL_CTRL_EXTRA_CHAIN_CERT 12
: SSL_CTRL_SET_MSG_CALLBACK 13 ; inline
: SSL_CTRL_SET_MSG_CALLBACK_ARG 14 ; inline
CONSTANT: SSL_CTRL_SET_MSG_CALLBACK 13
CONSTANT: SSL_CTRL_SET_MSG_CALLBACK_ARG 14
: SSL_CTRL_SESS_NUMBER 20 ; inline
: SSL_CTRL_SESS_CONNECT 21 ; inline
: SSL_CTRL_SESS_CONNECT_GOOD 22 ; inline
: SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 ; inline
: SSL_CTRL_SESS_ACCEPT 24 ; inline
: SSL_CTRL_SESS_ACCEPT_GOOD 25 ; inline
: SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 ; inline
: SSL_CTRL_SESS_HIT 27 ; inline
: SSL_CTRL_SESS_CB_HIT 28 ; inline
: SSL_CTRL_SESS_MISSES 29 ; inline
: SSL_CTRL_SESS_TIMEOUTS 30 ; inline
: SSL_CTRL_SESS_CACHE_FULL 31 ; inline
: SSL_CTRL_OPTIONS 32 ; inline
: SSL_CTRL_MODE 33 ; inline
CONSTANT: SSL_CTRL_SESS_NUMBER 20
CONSTANT: SSL_CTRL_SESS_CONNECT 21
CONSTANT: SSL_CTRL_SESS_CONNECT_GOOD 22
CONSTANT: SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23
CONSTANT: SSL_CTRL_SESS_ACCEPT 24
CONSTANT: SSL_CTRL_SESS_ACCEPT_GOOD 25
CONSTANT: SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26
CONSTANT: SSL_CTRL_SESS_HIT 27
CONSTANT: SSL_CTRL_SESS_CB_HIT 28
CONSTANT: SSL_CTRL_SESS_MISSES 29
CONSTANT: SSL_CTRL_SESS_TIMEOUTS 30
CONSTANT: SSL_CTRL_SESS_CACHE_FULL 31
CONSTANT: SSL_CTRL_OPTIONS 32
CONSTANT: SSL_CTRL_MODE 33
: SSL_CTRL_GET_READ_AHEAD 40 ; inline
: SSL_CTRL_SET_READ_AHEAD 41 ; inline
: SSL_CTRL_SET_SESS_CACHE_SIZE 42 ; inline
: SSL_CTRL_GET_SESS_CACHE_SIZE 43 ; inline
: SSL_CTRL_SET_SESS_CACHE_MODE 44 ; inline
: SSL_CTRL_GET_SESS_CACHE_MODE 45 ; inline
CONSTANT: SSL_CTRL_GET_READ_AHEAD 40
CONSTANT: SSL_CTRL_SET_READ_AHEAD 41
CONSTANT: SSL_CTRL_SET_SESS_CACHE_SIZE 42
CONSTANT: SSL_CTRL_GET_SESS_CACHE_SIZE 43
CONSTANT: SSL_CTRL_SET_SESS_CACHE_MODE 44
CONSTANT: SSL_CTRL_GET_SESS_CACHE_MODE 45
: SSL_CTRL_GET_MAX_CERT_LIST 50 ; inline
: SSL_CTRL_SET_MAX_CERT_LIST 51 ; inline
CONSTANT: SSL_CTRL_GET_MAX_CERT_LIST 50
CONSTANT: SSL_CTRL_SET_MAX_CERT_LIST 51
: SSL_ERROR_NONE 0 ; inline
: SSL_ERROR_SSL 1 ; inline
: SSL_ERROR_WANT_READ 2 ; inline
: SSL_ERROR_WANT_WRITE 3 ; inline
: SSL_ERROR_WANT_X509_LOOKUP 4 ; inline
: SSL_ERROR_SYSCALL 5 ; inline ! consult errno for details
: SSL_ERROR_ZERO_RETURN 6 ; inline
: SSL_ERROR_WANT_CONNECT 7 ; inline
: SSL_ERROR_WANT_ACCEPT 8 ; inline
CONSTANT: SSL_ERROR_NONE 0
CONSTANT: SSL_ERROR_SSL 1
CONSTANT: SSL_ERROR_WANT_READ 2
CONSTANT: SSL_ERROR_WANT_WRITE 3
CONSTANT: SSL_ERROR_WANT_X509_LOOKUP 4
CONSTANT: SSL_ERROR_SYSCALL 5 ! consult errno for details
CONSTANT: SSL_ERROR_ZERO_RETURN 6
CONSTANT: SSL_ERROR_WANT_CONNECT 7
CONSTANT: SSL_ERROR_WANT_ACCEPT 8
! Error messages table
: error-messages ( -- hash )
@ -157,8 +158,8 @@ FUNCTION: int SSL_read ( SSL* ssl, void* buf, int num ) ;
FUNCTION: int SSL_shutdown ( SSL* ssl ) ;
: SSL_SENT_SHUTDOWN 1 ;
: SSL_RECEIVED_SHUTDOWN 2 ;
CONSTANT: SSL_SENT_SHUTDOWN 1
CONSTANT: SSL_RECEIVED_SHUTDOWN 2
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 ) ;
: SSL_NOTHING 1 ; inline
: SSL_WRITING 2 ; inline
: SSL_READING 3 ; inline
: SSL_X509_LOOKUP 4 ; inline
CONSTANT: SSL_NOTHING 1
CONSTANT: SSL_WRITING 2
CONSTANT: SSL_READING 3
CONSTANT: SSL_X509_LOOKUP 4
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 ) ;
: SSL_VERIFY_NONE 0 ; inline
: SSL_VERIFY_PEER 1 ; inline
: SSL_VERIFY_FAIL_IF_NO_PEER_CERT 2 ; inline
: SSL_VERIFY_CLIENT_ONCE 4 ; inline
CONSTANT: SSL_VERIFY_NONE 0
CONSTANT: SSL_VERIFY_PEER 1
CONSTANT: SSL_VERIFY_FAIL_IF_NO_PEER_CERT 2
CONSTANT: SSL_VERIFY_CLIENT_ONCE 4
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_CTRL_SET_SESS_CACHE_MODE ] dip f SSL_CTX_ctrl ;
: SSL_SESS_CACHE_OFF HEX: 0000 ; inline
: SSL_SESS_CACHE_CLIENT HEX: 0001 ; inline
: SSL_SESS_CACHE_SERVER HEX: 0002 ; inline
CONSTANT: SSL_SESS_CACHE_OFF HEX: 0000
CONSTANT: SSL_SESS_CACHE_CLIENT HEX: 0001
CONSTANT: SSL_SESS_CACHE_SERVER HEX: 0002
: SSL_SESS_CACHE_BOTH ( -- n )
{ SSL_SESS_CACHE_CLIENT SSL_SESS_CACHE_SERVER } flags ; inline
: SSL_SESS_CACHE_NO_AUTO_CLEAR HEX: 0080 ; inline
: SSL_SESS_CACHE_NO_INTERNAL_LOOKUP HEX: 0100 ; inline
: SSL_SESS_CACHE_NO_INTERNAL_STORE HEX: 0200 ; inline
CONSTANT: SSL_SESS_CACHE_NO_AUTO_CLEAR HEX: 0080
CONSTANT: SSL_SESS_CACHE_NO_INTERNAL_LOOKUP HEX: 0100
CONSTANT: SSL_SESS_CACHE_NO_INTERNAL_STORE HEX: 0200
: SSL_SESS_CACHE_NO_INTERNAL ( -- n )
{ 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_:
scan "X509_V_" prepend create-in
scan-word
[ 1quotation define-inline ]
[ verify-messages get set-at ] 2bi ; parsing
[ 1quotation (( -- value )) define-inline ]
[ verify-messages get set-at ]
2bi ; parsing
>>
@ -333,4 +335,4 @@ X509_V_: ERR_APPLICATION_VERIFICATION 50
! 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-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-mask ] [ children>> ] bi* nth ;

View File

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

View File

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

View File

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

View File

@ -25,7 +25,7 @@ HELP: no-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." } ;
HELP: <plain-auth> ( username password -- plain-auth )
HELP: <plain-auth>
{ $values { "username" string } { "password" string } { "plain-auth" plain-auth } }
{ $description "Creates a new " { $link plain-auth } " instance." } ;

View File

@ -18,7 +18,7 @@ WHERE
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
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 ;
: >V V new clone-like ; inline
: >V ( seq -- vector ) V new clone-like ; inline
M: V pprint-delims drop V{ \ } ;

View File

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

View File

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

View File

@ -78,9 +78,9 @@ SYMBOL: dpi
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 )
face-size face-size-y-scale FT_MulFix ;

View File

@ -11,7 +11,7 @@ C: <grid-lines> grid-lines
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 )
half-gap v-

View File

@ -49,7 +49,7 @@ HELP: <pane-control>
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> } "." } ;
HELP: <pane-stream> ( pane -- stream )
HELP: <pane-stream>
{ $values { "pane" pane } { "stream" "a new " { $link pane-stream } } }
{ $description "Creates a new " { $link pane-stream } " for writing to " { $snippet "pane" } "." } ;

View File

@ -1,6 +1,6 @@
! Copyright (C) 2005, 2006 Slava Pestov.
! 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
: MAXPATHLEN 1024 ; inline
@ -14,7 +14,7 @@ IN: unix
: O_TRUNC HEX: 0400 ; inline
: O_EXCL HEX: 0800 ; inline
: O_NOCTTY HEX: 20000 ; inline
: O_NDELAY O_NONBLOCK ; inline
ALIAS: O_NDELAY O_NONBLOCK
: SOL_SOCKET HEX: ffff ; inline
: SO_REUSEADDR HEX: 4 ; inline
@ -69,10 +69,10 @@ C-STRUCT: passwd
: AF_INET 2 ; inline
: AF_INET6 30 ; inline
: PF_UNSPEC AF_UNSPEC ; inline
: PF_UNIX AF_UNIX ; inline
: PF_INET AF_INET ; inline
: PF_INET6 AF_INET6 ; inline
ALIAS: PF_UNSPEC AF_UNSPEC
ALIAS: PF_UNIX AF_UNIX
ALIAS: PF_INET AF_INET
ALIAS: PF_INET6 AF_INET6
: IPPROTO_TCP 6 ; inline
: IPPROTO_UDP 17 ; inline

View File

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

View File

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

View File

@ -2,31 +2,32 @@
! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types io.encodings.utf8 io.encodings.string
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
: MNT_RDONLY HEX: 00000001 ; inline
: MNT_SYNCHRONOUS HEX: 00000002 ; inline
: MNT_NOEXEC HEX: 00000004 ; inline
: MNT_NOSUID HEX: 00000008 ; inline
: MNT_NODEV HEX: 00000010 ; inline
: MNT_UNION HEX: 00000020 ; inline
: MNT_ASYNC HEX: 00000040 ; inline
: MNT_EXPORTED HEX: 00000100 ; inline
: MNT_QUARANTINE HEX: 00000400 ; inline
: MNT_LOCAL HEX: 00001000 ; inline
: MNT_QUOTA HEX: 00002000 ; inline
: MNT_ROOTFS HEX: 00004000 ; inline
: MNT_DOVOLFS HEX: 00008000 ; inline
: MNT_DONTBROWSE HEX: 00100000 ; inline
: MNT_IGNORE_OWNERSHIP HEX: 00200000 ; inline
: MNT_AUTOMOUNTED HEX: 00400000 ; inline
: MNT_JOURNALED HEX: 00800000 ; inline
: MNT_NOUSERXATTR HEX: 01000000 ; inline
: MNT_DEFWRITE HEX: 02000000 ; inline
: MNT_MULTILABEL HEX: 04000000 ; inline
: MNT_NOATIME HEX: 10000000 ; inline
: MNT_UNKNOWNPERMISSIONS MNT_IGNORE_OWNERSHIP ; inline
CONSTANT: MNT_RDONLY HEX: 00000001
CONSTANT: MNT_SYNCHRONOUS HEX: 00000002
CONSTANT: MNT_NOEXEC HEX: 00000004
CONSTANT: MNT_NOSUID HEX: 00000008
CONSTANT: MNT_NODEV HEX: 00000010
CONSTANT: MNT_UNION HEX: 00000020
CONSTANT: MNT_ASYNC HEX: 00000040
CONSTANT: MNT_EXPORTED HEX: 00000100
CONSTANT: MNT_QUARANTINE HEX: 00000400
CONSTANT: MNT_LOCAL HEX: 00001000
CONSTANT: MNT_QUOTA HEX: 00002000
CONSTANT: MNT_ROOTFS HEX: 00004000
CONSTANT: MNT_DOVOLFS HEX: 00008000
CONSTANT: MNT_DONTBROWSE HEX: 00100000
CONSTANT: MNT_IGNORE_OWNERSHIP HEX: 00200000
CONSTANT: MNT_AUTOMOUNTED HEX: 00400000
CONSTANT: MNT_JOURNALED HEX: 00800000
CONSTANT: MNT_NOUSERXATTR HEX: 01000000
CONSTANT: MNT_DEFWRITE HEX: 02000000
CONSTANT: MNT_MULTILABEL HEX: 04000000
CONSTANT: MNT_NOATIME HEX: 10000000
ALIAS: MNT_UNKNOWNPERMISSIONS MNT_IGNORE_OWNERSHIP
: MNT_VISFLAGMASK ( -- n )
{
@ -39,58 +40,60 @@ IN: unix.statfs.macosx
MNT_NOUSERXATTR MNT_DEFWRITE MNT_MULTILABEL MNT_NOATIME
} flags ; inline
: MNT_UPDATE HEX: 00010000 ; inline
: MNT_RELOAD HEX: 00040000 ; inline
: MNT_FORCE HEX: 00080000 ; inline
: MNT_CMDFLAGS { MNT_UPDATE MNT_RELOAD MNT_FORCE } flags ; inline
CONSTANT: MNT_UPDATE HEX: 00010000
CONSTANT: MNT_RELOAD HEX: 00040000
CONSTANT: MNT_FORCE HEX: 00080000
: VFS_GENERIC 0 ; inline
: VFS_NUMMNTOPS 1 ; inline
: VFS_MAXTYPENUM 1 ; inline
: VFS_CONF 2 ; inline
: VFS_SET_PACKAGE_EXTS 3 ; inline
: MNT_CMDFLAGS ( -- n )
{ MNT_UPDATE MNT_RELOAD MNT_FORCE } flags ; inline
: MNT_WAIT 1 ; inline
: MNT_NOWAIT 2 ; inline
CONSTANT: VFS_GENERIC 0
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
: VFS_CTL_UMOUNT HEX: 00010002 ; inline
: VFS_CTL_QUERY HEX: 00010003 ; inline
: VFS_CTL_NEWADDR HEX: 00010004 ; inline
: VFS_CTL_TIMEO HEX: 00010005 ; inline
: VFS_CTL_NOLOCKS HEX: 00010006 ; inline
CONSTANT: VFS_CTL_VERS1 HEX: 01
CONSTANT: VFS_CTL_STATFS HEX: 00010001
CONSTANT: VFS_CTL_UMOUNT HEX: 00010002
CONSTANT: VFS_CTL_QUERY HEX: 00010003
CONSTANT: VFS_CTL_NEWADDR HEX: 00010004
CONSTANT: VFS_CTL_TIMEO HEX: 00010005
CONSTANT: VFS_CTL_NOLOCKS HEX: 00010006
C-STRUCT: vfsquery
{ "uint32_t" "vq_flags" }
{ { "uint32_t" 31 } "vq_spare" } ;
: VQ_NOTRESP HEX: 0001 ; inline
: VQ_NEEDAUTH HEX: 0002 ; inline
: VQ_LOWDISK HEX: 0004 ; inline
: VQ_MOUNT HEX: 0008 ; inline
: VQ_UNMOUNT HEX: 0010 ; inline
: VQ_DEAD HEX: 0020 ; inline
: VQ_ASSIST HEX: 0040 ; inline
: VQ_NOTRESPLOCK HEX: 0080 ; inline
: VQ_UPDATE HEX: 0100 ; inline
: VQ_FLAG0200 HEX: 0200 ; inline
: VQ_FLAG0400 HEX: 0400 ; inline
: VQ_FLAG0800 HEX: 0800 ; inline
: VQ_FLAG1000 HEX: 1000 ; inline
: VQ_FLAG2000 HEX: 2000 ; inline
: VQ_FLAG4000 HEX: 4000 ; inline
: VQ_FLAG8000 HEX: 8000 ; inline
CONSTANT: VQ_NOTRESP HEX: 0001
CONSTANT: VQ_NEEDAUTH HEX: 0002
CONSTANT: VQ_LOWDISK HEX: 0004
CONSTANT: VQ_MOUNT HEX: 0008
CONSTANT: VQ_UNMOUNT HEX: 0010
CONSTANT: VQ_DEAD HEX: 0020
CONSTANT: VQ_ASSIST HEX: 0040
CONSTANT: VQ_NOTRESPLOCK HEX: 0080
CONSTANT: VQ_UPDATE HEX: 0100
CONSTANT: VQ_FLAG0200 HEX: 0200
CONSTANT: VQ_FLAG0400 HEX: 0400
CONSTANT: VQ_FLAG0800 HEX: 0800
CONSTANT: VQ_FLAG1000 HEX: 1000
CONSTANT: VQ_FLAG2000 HEX: 2000
CONSTANT: VQ_FLAG4000 HEX: 4000
CONSTANT: VQ_FLAG8000 HEX: 8000
: NFSV4_MAX_FH_SIZE 128 ; inline
: NFSV3_MAX_FH_SIZE 64 ; inline
: NFSV2_MAX_FH_SIZE 32 ; inline
: NFS_MAX_FH_SIZE NFSV4_MAX_FH_SIZE ; inline
CONSTANT: NFSV4_MAX_FH_SIZE 128
CONSTANT: NFSV3_MAX_FH_SIZE 64
CONSTANT: NFSV2_MAX_FH_SIZE 32
CONSTANT: NFS_MAX_FH_SIZE NFSV4_MAX_FH_SIZE
: MFSNAMELEN 15 ; inline
: MNAMELEN 90 ; inline
: MFSTYPENAMELEN 16 ; inline
CONSTANT: MFSNAMELEN 15
CONSTANT: MNAMELEN 90
CONSTANT: MFSTYPENAMELEN 16
C-STRUCT: fsid_t
{ { "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
system combinators vocabs.loader qualified accessors
stack-checker macros locals generalizations unix.types
io vocabs vocabs.loader ;
io vocabs vocabs.loader constants ;
IN: unix
: PROT_NONE 0 ; inline
: PROT_READ 1 ; inline
: PROT_WRITE 2 ; inline
: PROT_EXEC 4 ; inline
CONSTANT: PROT_NONE 0
CONSTANT: PROT_READ 1
CONSTANT: PROT_WRITE 2
CONSTANT: PROT_EXEC 4
: MAP_FILE 0 ; inline
: MAP_SHARED 1 ; inline
: MAP_PRIVATE 2 ; inline
CONSTANT: MAP_FILE 0
CONSTANT: MAP_SHARED 1
CONSTANT: MAP_PRIVATE 2
: MAP_FAILED -1 <alien> ; inline
: MAP_FAILED ( -- alien ) -1 <alien> ; inline
: NGROUPS_MAX 16 ; inline
CONSTANT: NGROUPS_MAX 16
: DT_UNKNOWN 0 ; inline
: DT_FIFO 1 ; inline
: DT_CHR 2 ; inline
: DT_DIR 4 ; inline
: DT_BLK 6 ; inline
: DT_REG 8 ; inline
: DT_LNK 10 ; inline
: DT_SOCK 12 ; inline
: DT_WHT 14 ; inline
CONSTANT: DT_UNKNOWN 0
CONSTANT: DT_FIFO 1
CONSTANT: DT_CHR 2
CONSTANT: DT_DIR 4
CONSTANT: DT_BLK 6
CONSTANT: DT_REG 8
CONSTANT: DT_LNK 10
CONSTANT: DT_SOCK 12
CONSTANT: DT_WHT 14
C-STRUCT: group
{ "char*" "gr_name" }

View File

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

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

View File

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

View File

@ -1,38 +1,38 @@
! FUNCTION: AbortDoc
! Copyright (C) 2005, 2006 Doug Coleman.
! 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
! Stock Logical Objects
: WHITE_BRUSH 0 ; inline
: LTGRAY_BRUSH 1 ; inline
: GRAY_BRUSH 2 ; inline
: DKGRAY_BRUSH 3 ; inline
: BLACK_BRUSH 4 ; inline
: NULL_BRUSH 5 ; inline
: HOLLOW_BRUSH NULL_BRUSH ; inline
: WHITE_PEN 6 ; inline
: BLACK_PEN 7 ; inline
: NULL_PEN 8 ; inline
: OEM_FIXED_FONT 10 ; inline
: ANSI_FIXED_FONT 11 ; inline
: ANSI_VAR_FONT 12 ; inline
: SYSTEM_FONT 13 ; inline
: DEVICE_DEFAULT_FONT 14 ; inline
: DEFAULT_PALETTE 15 ; inline
: SYSTEM_FIXED_FONT 16 ; inline
: DEFAULT_GUI_FONT 17 ; inline
: DC_BRUSH 18 ; inline
: DC_PEN 19 ; inline
CONSTANT: WHITE_BRUSH 0
CONSTANT: LTGRAY_BRUSH 1
CONSTANT: GRAY_BRUSH 2
CONSTANT: DKGRAY_BRUSH 3
CONSTANT: BLACK_BRUSH 4
CONSTANT: NULL_BRUSH 5
ALIAS: HOLLOW_BRUSH NULL_BRUSH
CONSTANT: WHITE_PEN 6
CONSTANT: BLACK_PEN 7
CONSTANT: NULL_PEN 8
CONSTANT: OEM_FIXED_FONT 10
CONSTANT: ANSI_FIXED_FONT 11
CONSTANT: ANSI_VAR_FONT 12
CONSTANT: SYSTEM_FONT 13
CONSTANT: DEVICE_DEFAULT_FONT 14
CONSTANT: DEFAULT_PALETTE 15
CONSTANT: SYSTEM_FIXED_FONT 16
CONSTANT: DEFAULT_GUI_FONT 17
CONSTANT: DC_BRUSH 18
CONSTANT: DC_PEN 19
: BI_RGB 0 ; inline
: BI_RLE8 1 ; inline
: BI_RLE4 2 ; inline
: BI_BITFIELDS 3 ; inline
CONSTANT: BI_RGB 0
CONSTANT: BI_RLE8 1
CONSTANT: BI_RLE4 2
CONSTANT: BI_BITFIELDS 3
: DIB_RGB_COLORS 0 ; inline
: DIB_PAL_COLORS 1 ; inline
CONSTANT: DIB_RGB_COLORS 0
CONSTANT: DIB_PAL_COLORS 1
LIBRARY: gdi32

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

@ -1,93 +1,93 @@
! Copyright (C) 2005, 2006 Doug Coleman.
! 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
: MAX_PATH 260 ; inline
CONSTANT: MAX_PATH 260
: GHND HEX: 40 ; inline
: GMEM_FIXED 0 ; inline
: GMEM_MOVEABLE 2 ; inline
: GMEM_ZEROINIT HEX: 40 ; inline
: GPTR HEX: 40 ; inline
CONSTANT: GHND HEX: 40
CONSTANT: GMEM_FIXED 0
CONSTANT: GMEM_MOVEABLE 2
CONSTANT: GMEM_ZEROINIT HEX: 40
CONSTANT: GPTR HEX: 40
: GENERIC_READ HEX: 80000000 ; inline
: GENERIC_WRITE HEX: 40000000 ; inline
: GENERIC_EXECUTE HEX: 20000000 ; inline
: GENERIC_ALL HEX: 10000000 ; inline
CONSTANT: GENERIC_READ HEX: 80000000
CONSTANT: GENERIC_WRITE HEX: 40000000
CONSTANT: GENERIC_EXECUTE HEX: 20000000
CONSTANT: GENERIC_ALL HEX: 10000000
: CREATE_NEW 1 ; inline
: CREATE_ALWAYS 2 ; inline
: OPEN_EXISTING 3 ; inline
: OPEN_ALWAYS 4 ; inline
: TRUNCATE_EXISTING 5 ; inline
CONSTANT: CREATE_NEW 1
CONSTANT: CREATE_ALWAYS 2
CONSTANT: OPEN_EXISTING 3
CONSTANT: OPEN_ALWAYS 4
CONSTANT: TRUNCATE_EXISTING 5
: FILE_LIST_DIRECTORY HEX: 00000001 ; inline
: FILE_READ_DAT HEX: 00000001 ; inline
: FILE_ADD_FILE HEX: 00000002 ; inline
: FILE_WRITE_DATA HEX: 00000002 ; inline
: FILE_ADD_SUBDIRECTORY HEX: 00000004 ; inline
: FILE_APPEND_DATA HEX: 00000004 ; inline
: FILE_CREATE_PIPE_INSTANCE HEX: 00000004 ; inline
: FILE_READ_EA HEX: 00000008 ; inline
: FILE_READ_PROPERTIES HEX: 00000008 ; inline
: FILE_WRITE_EA HEX: 00000010 ; inline
: FILE_WRITE_PROPERTIES HEX: 00000010 ; inline
: FILE_EXECUTE HEX: 00000020 ; inline
: FILE_TRAVERSE HEX: 00000020 ; inline
: FILE_DELETE_CHILD HEX: 00000040 ; inline
: FILE_READ_ATTRIBUTES HEX: 00000080 ; inline
: FILE_WRITE_ATTRIBUTES HEX: 00000100 ; inline
CONSTANT: FILE_LIST_DIRECTORY HEX: 00000001
CONSTANT: FILE_READ_DAT HEX: 00000001
CONSTANT: FILE_ADD_FILE HEX: 00000002
CONSTANT: FILE_WRITE_DATA HEX: 00000002
CONSTANT: FILE_ADD_SUBDIRECTORY HEX: 00000004
CONSTANT: FILE_APPEND_DATA HEX: 00000004
CONSTANT: FILE_CREATE_PIPE_INSTANCE HEX: 00000004
CONSTANT: FILE_READ_EA HEX: 00000008
CONSTANT: FILE_READ_PROPERTIES HEX: 00000008
CONSTANT: FILE_WRITE_EA HEX: 00000010
CONSTANT: FILE_WRITE_PROPERTIES HEX: 00000010
CONSTANT: FILE_EXECUTE HEX: 00000020
CONSTANT: FILE_TRAVERSE HEX: 00000020
CONSTANT: FILE_DELETE_CHILD HEX: 00000040
CONSTANT: FILE_READ_ATTRIBUTES HEX: 00000080
CONSTANT: FILE_WRITE_ATTRIBUTES HEX: 00000100
: FILE_SHARE_READ 1 ; inline
: FILE_SHARE_WRITE 2 ; inline
: FILE_SHARE_DELETE 4 ; inline
: FILE_SHARE_VALID_FLAGS 7 ; inline
CONSTANT: FILE_SHARE_READ 1
CONSTANT: FILE_SHARE_WRITE 2
CONSTANT: FILE_SHARE_DELETE 4
CONSTANT: FILE_SHARE_VALID_FLAGS 7
: FILE_FLAG_WRITE_THROUGH HEX: 80000000 ; inline
: FILE_FLAG_OVERLAPPED HEX: 40000000 ; inline
: FILE_FLAG_NO_BUFFERING HEX: 20000000 ; inline
: FILE_FLAG_RANDOM_ACCESS HEX: 10000000 ; inline
: FILE_FLAG_SEQUENTIAL_SCAN HEX: 08000000 ; inline
: FILE_FLAG_DELETE_ON_CLOSE HEX: 04000000 ; inline
: FILE_FLAG_BACKUP_SEMANTICS HEX: 02000000 ; inline
: FILE_FLAG_POSIX_SEMANTICS HEX: 01000000 ; inline
: FILE_FLAG_OPEN_REPARSE_POINT HEX: 00200000 ; inline
: FILE_FLAG_OPEN_NO_RECALL HEX: 00100000 ; inline
: FILE_FLAG_FIRST_PIPE_INSTANCE HEX: 00080000 ; inline
CONSTANT: FILE_FLAG_WRITE_THROUGH HEX: 80000000
CONSTANT: FILE_FLAG_OVERLAPPED HEX: 40000000
CONSTANT: FILE_FLAG_NO_BUFFERING HEX: 20000000
CONSTANT: FILE_FLAG_RANDOM_ACCESS HEX: 10000000
CONSTANT: FILE_FLAG_SEQUENTIAL_SCAN HEX: 08000000
CONSTANT: FILE_FLAG_DELETE_ON_CLOSE HEX: 04000000
CONSTANT: FILE_FLAG_BACKUP_SEMANTICS HEX: 02000000
CONSTANT: FILE_FLAG_POSIX_SEMANTICS HEX: 01000000
CONSTANT: FILE_FLAG_OPEN_REPARSE_POINT HEX: 00200000
CONSTANT: FILE_FLAG_OPEN_NO_RECALL HEX: 00100000
CONSTANT: FILE_FLAG_FIRST_PIPE_INSTANCE HEX: 00080000
: FILE_ATTRIBUTE_READONLY HEX: 00000001 ; inline
: FILE_ATTRIBUTE_HIDDEN HEX: 00000002 ; inline
: FILE_ATTRIBUTE_SYSTEM HEX: 00000004 ; inline
: FILE_ATTRIBUTE_DIRECTORY HEX: 00000010 ; inline
: FILE_ATTRIBUTE_ARCHIVE HEX: 00000020 ; inline
: FILE_ATTRIBUTE_DEVICE HEX: 00000040 ; inline
: FILE_ATTRIBUTE_NORMAL HEX: 00000080 ; inline
: FILE_ATTRIBUTE_TEMPORARY HEX: 00000100 ; inline
: FILE_ATTRIBUTE_SPARSE_FILE HEX: 00000200 ; inline
: FILE_ATTRIBUTE_REPARSE_POINT HEX: 00000400 ; inline
: FILE_ATTRIBUTE_COMPRESSED HEX: 00000800 ; inline
: FILE_ATTRIBUTE_OFFLINE HEX: 00001000 ; inline
: FILE_ATTRIBUTE_NOT_CONTENT_INDEXED HEX: 00002000 ; inline
: FILE_ATTRIBUTE_ENCRYPTED HEX: 00004000 ; inline
CONSTANT: FILE_ATTRIBUTE_READONLY HEX: 00000001
CONSTANT: FILE_ATTRIBUTE_HIDDEN HEX: 00000002
CONSTANT: FILE_ATTRIBUTE_SYSTEM HEX: 00000004
CONSTANT: FILE_ATTRIBUTE_DIRECTORY HEX: 00000010
CONSTANT: FILE_ATTRIBUTE_ARCHIVE HEX: 00000020
CONSTANT: FILE_ATTRIBUTE_DEVICE HEX: 00000040
CONSTANT: FILE_ATTRIBUTE_NORMAL HEX: 00000080
CONSTANT: FILE_ATTRIBUTE_TEMPORARY HEX: 00000100
CONSTANT: FILE_ATTRIBUTE_SPARSE_FILE HEX: 00000200
CONSTANT: FILE_ATTRIBUTE_REPARSE_POINT HEX: 00000400
CONSTANT: FILE_ATTRIBUTE_COMPRESSED HEX: 00000800
CONSTANT: FILE_ATTRIBUTE_OFFLINE HEX: 00001000
CONSTANT: FILE_ATTRIBUTE_NOT_CONTENT_INDEXED HEX: 00002000
CONSTANT: FILE_ATTRIBUTE_ENCRYPTED HEX: 00004000
: FILE_NOTIFY_CHANGE_FILE HEX: 001 ; inline
: FILE_NOTIFY_CHANGE_DIR_NAME HEX: 002 ; inline
: FILE_NOTIFY_CHANGE_ATTRIBUTES HEX: 004 ; inline
: FILE_NOTIFY_CHANGE_SIZE HEX: 008 ; inline
: FILE_NOTIFY_CHANGE_LAST_WRITE HEX: 010 ; inline
: FILE_NOTIFY_CHANGE_LAST_ACCESS HEX: 020 ; inline
: FILE_NOTIFY_CHANGE_CREATION HEX: 040 ; inline
: FILE_NOTIFY_CHANGE_EA HEX: 080 ; inline
: FILE_NOTIFY_CHANGE_SECURITY HEX: 100 ; inline
: FILE_NOTIFY_CHANGE_FILE_NAME HEX: 200 ; inline
: FILE_NOTIFY_CHANGE_ALL HEX: 3ff ; inline
CONSTANT: FILE_NOTIFY_CHANGE_FILE HEX: 001
CONSTANT: FILE_NOTIFY_CHANGE_DIR_NAME HEX: 002
CONSTANT: FILE_NOTIFY_CHANGE_ATTRIBUTES HEX: 004
CONSTANT: FILE_NOTIFY_CHANGE_SIZE HEX: 008
CONSTANT: FILE_NOTIFY_CHANGE_LAST_WRITE HEX: 010
CONSTANT: FILE_NOTIFY_CHANGE_LAST_ACCESS HEX: 020
CONSTANT: FILE_NOTIFY_CHANGE_CREATION HEX: 040
CONSTANT: FILE_NOTIFY_CHANGE_EA HEX: 080
CONSTANT: FILE_NOTIFY_CHANGE_SECURITY HEX: 100
CONSTANT: FILE_NOTIFY_CHANGE_FILE_NAME HEX: 200
CONSTANT: FILE_NOTIFY_CHANGE_ALL HEX: 3ff
: FILE_ACTION_ADDED 1 ; inline
: FILE_ACTION_REMOVED 2 ; inline
: FILE_ACTION_MODIFIED 3 ; inline
: FILE_ACTION_RENAMED_OLD_NAME 4 ; inline
: FILE_ACTION_RENAMED_NEW_NAME 5 ; inline
CONSTANT: FILE_ACTION_ADDED 1
CONSTANT: FILE_ACTION_REMOVED 2
CONSTANT: FILE_ACTION_MODIFIED 3
CONSTANT: FILE_ACTION_RENAMED_OLD_NAME 4
CONSTANT: FILE_ACTION_RENAMED_NEW_NAME 5
C-STRUCT: FILE_NOTIFY_INFORMATION
{ "DWORD" "NextEntryOffset" }
@ -96,107 +96,106 @@ C-STRUCT: FILE_NOTIFY_INFORMATION
{ "WCHAR[1]" "FileName" } ;
TYPEDEF: FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION
: STD_INPUT_HANDLE -10 ; inline
: STD_OUTPUT_HANDLE -11 ; inline
: STD_ERROR_HANDLE -12 ; inline
CONSTANT: STD_INPUT_HANDLE -10
CONSTANT: STD_OUTPUT_HANDLE -11
CONSTANT: STD_ERROR_HANDLE -12
: INVALID_HANDLE_VALUE -1 <alien> ; inline
: INVALID_FILE_SIZE HEX: FFFFFFFF ; inline
: INVALID_SET_FILE_POINTER HEX: ffffffff ; inline
: INVALID_HANDLE_VALUE ( -- alien ) -1 <alien> ; inline
CONSTANT: INVALID_FILE_SIZE HEX: FFFFFFFF
CONSTANT: INVALID_SET_FILE_POINTER HEX: ffffffff
: FILE_BEGIN 0 ; inline
: FILE_CURRENT 1 ; inline
: FILE_END 2 ; inline
CONSTANT: FILE_BEGIN 0
CONSTANT: FILE_CURRENT 1
CONSTANT: FILE_END 2
: OF_READ 0 ;
: OF_READWRITE 2 ;
: OF_WRITE 1 ;
: OF_SHARE_COMPAT 0 ;
: OF_SHARE_DENY_NONE 64 ;
: OF_SHARE_DENY_READ 48 ;
: OF_SHARE_DENY_WRITE 32 ;
: OF_SHARE_EXCLUSIVE 16 ;
: OF_CANCEL 2048 ;
: OF_CREATE 4096 ;
: OF_DELETE 512 ;
: OF_EXIST 16384 ;
: OF_PARSE 256 ;
: OF_PROMPT 8192 ;
: OF_REOPEN 32768 ;
: OF_VERIFY 1024 ;
CONSTANT: OF_READ 0
CONSTANT: OF_READWRITE 2
CONSTANT: OF_WRITE 1
CONSTANT: OF_SHARE_COMPAT 0
CONSTANT: OF_SHARE_DENY_NONE 64
CONSTANT: OF_SHARE_DENY_READ 48
CONSTANT: OF_SHARE_DENY_WRITE 32
CONSTANT: OF_SHARE_EXCLUSIVE 16
CONSTANT: OF_CANCEL 2048
CONSTANT: OF_CREATE 4096
CONSTANT: OF_DELETE 512
CONSTANT: OF_EXIST 16384
CONSTANT: OF_PARSE 256
CONSTANT: OF_PROMPT 8192
CONSTANT: OF_REOPEN 32768
CONSTANT: OF_VERIFY 1024
: INFINITE HEX: FFFFFFFF ; inline
CONSTANT: INFINITE HEX: FFFFFFFF
! From C:\cygwin\usr\include\w32api\winbase.h
: FILE_TYPE_UNKNOWN 0 ;
: FILE_TYPE_DISK 1 ;
: FILE_TYPE_CHAR 2 ;
: FILE_TYPE_PIPE 3 ;
: FILE_TYPE_REMOTE HEX: 8000 ;
CONSTANT: FILE_TYPE_UNKNOWN 0
CONSTANT: FILE_TYPE_DISK 1
CONSTANT: FILE_TYPE_CHAR 2
CONSTANT: FILE_TYPE_PIPE 3
CONSTANT: FILE_TYPE_REMOTE HEX: 8000
: TIME_ZONE_ID_UNKNOWN 0 ; inline
: TIME_ZONE_ID_STANDARD 1 ; inline
: TIME_ZONE_ID_DAYLIGHT 2 ; inline
: TIME_ZONE_ID_INVALID HEX: FFFFFFFF ; inline
CONSTANT: TIME_ZONE_ID_UNKNOWN 0
CONSTANT: TIME_ZONE_ID_STANDARD 1
CONSTANT: TIME_ZONE_ID_DAYLIGHT 2
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
: PF_SSE3_INSTRUCTIONS_AVAILABLE 13 ; inline
CONSTANT: MAX_COMPUTERNAME_LENGTH 15
CONSTANT: UNLEN 256
: MAX_COMPUTERNAME_LENGTH 15 ; inline
: UNLEN 256 ; inline
CONSTANT: PROCESS_TERMINATE HEX: 1
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
: PROCESS_CREATE_THREAD ( -- n ) HEX: 2 ; inline
: 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
CONSTANT: MEM_COMMIT HEX: 1000
CONSTANT: MEM_RELEASE HEX: 8000
: MEM_COMMIT ( -- n ) HEX: 1000 ; inline
: MEM_RELEASE ( -- n ) HEX: 8000 ; inline
CONSTANT: PAGE_NOACCESS 1
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
: PAGE_READONLY 2 ; inline
: PAGE_READWRITE 4 ; inline
: PAGE_WRITECOPY 8 ; inline
: PAGE_EXECUTE HEX: 10 ; inline
: PAGE_EXECUTE_READ HEX: 20 ; inline
: PAGE_EXECUTE_READWRITE HEX: 40 ; inline
: PAGE_EXECUTE_WRITECOPY HEX: 80 ; inline
: PAGE_GUARD HEX: 100 ; inline
: PAGE_NOCACHE HEX: 200 ; inline
CONSTANT: SEC_BASED HEX: 00200000
CONSTANT: SEC_NO_CHANGE HEX: 00400000
CONSTANT: SEC_FILE HEX: 00800000
CONSTANT: SEC_IMAGE HEX: 01000000
CONSTANT: SEC_VLM HEX: 02000000
CONSTANT: SEC_RESERVE HEX: 04000000
CONSTANT: SEC_COMMIT HEX: 08000000
CONSTANT: SEC_NOCACHE HEX: 10000000
ALIAS: MEM_IMAGE SEC_IMAGE
: SEC_BASED HEX: 00200000 ; inline
: 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
CONSTANT: ERROR_ALREADY_EXISTS 183
: 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 ;
: FILE_MAP_READ 4 ;
: FILE_MAP_WRITE 2 ;
: FILE_MAP_COPY 1 ;
: THREAD_MODE_BACKGROUND_BEGIN HEX: 10000 ; inline
: THREAD_MODE_BACKGROUND_END HEX: 20000 ; inline
: THREAD_PRIORITY_ABOVE_NORMAL 1 ; inline
: THREAD_PRIORITY_BELOW_NORMAL -1 ; inline
: 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
CONSTANT: THREAD_MODE_BACKGROUND_BEGIN HEX: 10000
CONSTANT: THREAD_MODE_BACKGROUND_END HEX: 20000
CONSTANT: THREAD_PRIORITY_ABOVE_NORMAL 1
CONSTANT: THREAD_PRIORITY_BELOW_NORMAL -1
CONSTANT: THREAD_PRIORITY_HIGHEST 2
CONSTANT: THREAD_PRIORITY_IDLE -15
CONSTANT: THREAD_PRIORITY_LOWEST -2
CONSTANT: THREAD_PRIORITY_NORMAL 0
CONSTANT: THREAD_PRIORITY_TIME_CRITICAL 15
C-STRUCT: OVERLAPPED
{ "UINT_PTR" "internal" }
@ -321,74 +320,74 @@ C-STRUCT: GUID
{ { "UCHAR" 8 } "Data4" } ;
: SE_CREATE_TOKEN_NAME "SeCreateTokenPrivilege" ;
: SE_ASSIGNPRIMARYTOKEN_NAME "SeAssignPrimaryTokenPrivilege" ;
: SE_LOCK_MEMORY_NAME "SeLockMemoryPrivilege" ;
: SE_INCREASE_QUOTA_NAME "SeIncreaseQuotaPrivilege" ;
: SE_UNSOLICITED_INPUT_NAME "SeUnsolicitedInputPrivilege" ;
: SE_MACHINE_ACCOUNT_NAME "SeMachineAccountPrivilege" ;
: SE_TCB_NAME "SeTcbPrivilege" ;
: SE_SECURITY_NAME "SeSecurityPrivilege" ;
: SE_TAKE_OWNERSHIP_NAME "SeTakeOwnershipPrivilege" ;
: SE_LOAD_DRIVER_NAME "SeLoadDriverPrivilege" ;
: SE_SYSTEM_PROFILE_NAME "SeSystemProfilePrivilege" ;
: SE_SYSTEMTIME_NAME "SeSystemtimePrivilege" ;
: SE_PROF_SINGLE_PROCESS_NAME "SeProfileSingleProcessPrivilege" ;
: SE_INC_BASE_PRIORITY_NAME "SeIncreaseBasePriorityPrivilege" ;
: SE_CREATE_PAGEFILE_NAME "SeCreatePagefilePrivilege" ;
: SE_CREATE_PERMANENT_NAME "SeCreatePermanentPrivilege" ;
: SE_BACKUP_NAME "SeBackupPrivilege" ;
: SE_RESTORE_NAME "SeRestorePrivilege" ;
: SE_SHUTDOWN_NAME "SeShutdownPrivilege" ;
: SE_DEBUG_NAME "SeDebugPrivilege" ;
: SE_AUDIT_NAME "SeAuditPrivilege" ;
: SE_SYSTEM_ENVIRONMENT_NAME "SeSystemEnvironmentPrivilege" ;
: SE_CHANGE_NOTIFY_NAME "SeChangeNotifyPrivilege" ;
: SE_REMOTE_SHUTDOWN_NAME "SeRemoteShutdownPrivilege" ;
: SE_UNDOCK_NAME "SeUndockPrivilege" ;
: SE_ENABLE_DELEGATION_NAME "SeEnableDelegationPrivilege" ;
: SE_MANAGE_VOLUME_NAME "SeManageVolumePrivilege" ;
: SE_IMPERSONATE_NAME "SeImpersonatePrivilege" ;
: SE_CREATE_GLOBAL_NAME "SeCreateGlobalPrivilege" ;
CONSTANT: SE_CREATE_TOKEN_NAME "SeCreateTokenPrivilege"
CONSTANT: SE_ASSIGNPRIMARYTOKEN_NAME "SeAssignPrimaryTokenPrivilege"
CONSTANT: SE_LOCK_MEMORY_NAME "SeLockMemoryPrivilege"
CONSTANT: SE_INCREASE_QUOTA_NAME "SeIncreaseQuotaPrivilege"
CONSTANT: SE_UNSOLICITED_INPUT_NAME "SeUnsolicitedInputPrivilege"
CONSTANT: SE_MACHINE_ACCOUNT_NAME "SeMachineAccountPrivilege"
CONSTANT: SE_TCB_NAME "SeTcbPrivilege"
CONSTANT: SE_SECURITY_NAME "SeSecurityPrivilege"
CONSTANT: SE_TAKE_OWNERSHIP_NAME "SeTakeOwnershipPrivilege"
CONSTANT: SE_LOAD_DRIVER_NAME "SeLoadDriverPrivilege"
CONSTANT: SE_SYSTEM_PROFILE_NAME "SeSystemProfilePrivilege"
CONSTANT: SE_SYSTEMTIME_NAME "SeSystemtimePrivilege"
CONSTANT: SE_PROF_SINGLE_PROCESS_NAME "SeProfileSingleProcessPrivilege"
CONSTANT: SE_INC_BASE_PRIORITY_NAME "SeIncreaseBasePriorityPrivilege"
CONSTANT: SE_CREATE_PAGEFILE_NAME "SeCreatePagefilePrivilege"
CONSTANT: SE_CREATE_PERMANENT_NAME "SeCreatePermanentPrivilege"
CONSTANT: SE_BACKUP_NAME "SeBackupPrivilege"
CONSTANT: SE_RESTORE_NAME "SeRestorePrivilege"
CONSTANT: SE_SHUTDOWN_NAME "SeShutdownPrivilege"
CONSTANT: SE_DEBUG_NAME "SeDebugPrivilege"
CONSTANT: SE_AUDIT_NAME "SeAuditPrivilege"
CONSTANT: SE_SYSTEM_ENVIRONMENT_NAME "SeSystemEnvironmentPrivilege"
CONSTANT: SE_CHANGE_NOTIFY_NAME "SeChangeNotifyPrivilege"
CONSTANT: SE_REMOTE_SHUTDOWN_NAME "SeRemoteShutdownPrivilege"
CONSTANT: SE_UNDOCK_NAME "SeUndockPrivilege"
CONSTANT: SE_ENABLE_DELEGATION_NAME "SeEnableDelegationPrivilege"
CONSTANT: SE_MANAGE_VOLUME_NAME "SeManageVolumePrivilege"
CONSTANT: SE_IMPERSONATE_NAME "SeImpersonatePrivilege"
CONSTANT: SE_CREATE_GLOBAL_NAME "SeCreateGlobalPrivilege"
: SE_GROUP_MANDATORY HEX: 00000001 ;
: SE_GROUP_ENABLED_BY_DEFAULT HEX: 00000002 ;
: SE_GROUP_ENABLED HEX: 00000004 ;
: SE_GROUP_OWNER HEX: 00000008 ;
: SE_GROUP_USE_FOR_DENY_ONLY HEX: 00000010 ;
: SE_GROUP_LOGON_ID HEX: C0000000 ;
: SE_GROUP_RESOURCE HEX: 20000000 ;
CONSTANT: SE_GROUP_MANDATORY HEX: 00000001
CONSTANT: SE_GROUP_ENABLED_BY_DEFAULT HEX: 00000002
CONSTANT: SE_GROUP_ENABLED HEX: 00000004
CONSTANT: SE_GROUP_OWNER HEX: 00000008
CONSTANT: SE_GROUP_USE_FOR_DENY_ONLY HEX: 00000010
CONSTANT: SE_GROUP_LOGON_ID HEX: C0000000
CONSTANT: SE_GROUP_RESOURCE HEX: 20000000
: SE_PRIVILEGE_ENABLED_BY_DEFAULT HEX: 00000001 ;
: SE_PRIVILEGE_ENABLED HEX: 00000002 ;
: SE_PRIVILEGE_REMOVE HEX: 00000004 ;
: SE_PRIVILEGE_USED_FOR_ACCESS HEX: 80000000 ;
CONSTANT: SE_PRIVILEGE_ENABLED_BY_DEFAULT HEX: 00000001
CONSTANT: SE_PRIVILEGE_ENABLED HEX: 00000002
CONSTANT: SE_PRIVILEGE_REMOVE HEX: 00000004
CONSTANT: SE_PRIVILEGE_USED_FOR_ACCESS HEX: 80000000
: PRIVILEGE_SET_ALL_NECESSARY 1 ;
CONSTANT: PRIVILEGE_SET_ALL_NECESSARY 1
: SE_OWNER_DEFAULTED HEX: 00000001 ;
: SE_GROUP_DEFAULTED HEX: 00000002 ;
: SE_DACL_PRESENT HEX: 00000004 ;
: SE_DACL_DEFAULTED HEX: 00000008 ;
: SE_SACL_PRESENT HEX: 00000010 ;
: SE_SACL_DEFAULTED HEX: 00000020 ;
: SE_DACL_AUTO_INHERIT_REQ HEX: 00000100 ;
: SE_SACL_AUTO_INHERIT_REQ HEX: 00000200 ;
: SE_DACL_AUTO_INHERITED HEX: 00000400 ;
: SE_SACL_AUTO_INHERITED HEX: 00000800 ;
: SE_DACL_PROTECTED HEX: 00001000 ;
: SE_SACL_PROTECTED HEX: 00002000 ;
: SE_SELF_RELATIVE HEX: 00008000 ;
CONSTANT: SE_OWNER_DEFAULTED HEX: 00000001
CONSTANT: SE_GROUP_DEFAULTED HEX: 00000002
CONSTANT: SE_DACL_PRESENT HEX: 00000004
CONSTANT: SE_DACL_DEFAULTED HEX: 00000008
CONSTANT: SE_SACL_PRESENT HEX: 00000010
CONSTANT: SE_SACL_DEFAULTED HEX: 00000020
CONSTANT: SE_DACL_AUTO_INHERIT_REQ HEX: 00000100
CONSTANT: SE_SACL_AUTO_INHERIT_REQ HEX: 00000200
CONSTANT: SE_DACL_AUTO_INHERITED HEX: 00000400
CONSTANT: SE_SACL_AUTO_INHERITED HEX: 00000800
CONSTANT: SE_DACL_PROTECTED HEX: 00001000
CONSTANT: SE_SACL_PROTECTED HEX: 00002000
CONSTANT: SE_SELF_RELATIVE HEX: 00008000
: ANYSIZE_ARRAY 1 ; inline
CONSTANT: ANYSIZE_ARRAY 1
: MAXIMUM_WAIT_OBJECTS 64 ; inline
: MAXIMUM_SUSPEND_COUNT HEX: 7f ; inline
: WAIT_OBJECT_0 0 ; inline
: WAIT_ABANDONED_0 128 ; inline
: WAIT_TIMEOUT 258 ; inline
: WAIT_IO_COMPLETION HEX: c0 ; inline
: WAIT_FAILED HEX: ffffffff ; inline
CONSTANT: MAXIMUM_WAIT_OBJECTS 64
CONSTANT: MAXIMUM_SUSPEND_COUNT HEX: 7f
CONSTANT: WAIT_OBJECT_0 0
CONSTANT: WAIT_ABANDONED_0 128
CONSTANT: WAIT_TIMEOUT 258
CONSTANT: WAIT_IO_COMPLETION HEX: c0
CONSTANT: WAIT_FAILED HEX: ffffffff
C-STRUCT: LUID
{ "DWORD" "LowPart" }
@ -427,7 +426,7 @@ C-STRUCT: BY_HANDLE_FILE_INFORMATION
{ "DWORD" "nFileIndexLow" } ;
TYPEDEF: BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION
: OFS_MAXPATHNAME 128 ;
CONSTANT: OFS_MAXPATHNAME 128
C-STRUCT: OFSTRUCT
{ "BYTE" "cBytes" }
@ -489,34 +488,34 @@ C-STRUCT: SECURITY_ATTRIBUTES
{ "LPVOID" "lpSecurityDescriptor" }
{ "BOOL" "bInheritHandle" } ;
: HANDLE_FLAG_INHERIT 1 ; inline
: HANDLE_FLAG_PROTECT_FROM_CLOSE 2 ; inline
CONSTANT: HANDLE_FLAG_INHERIT 1
CONSTANT: HANDLE_FLAG_PROTECT_FROM_CLOSE 2
: STARTF_USESHOWWINDOW HEX: 00000001 ; inline
: STARTF_USESIZE HEX: 00000002 ; inline
: STARTF_USEPOSITION HEX: 00000004 ; inline
: STARTF_USECOUNTCHARS HEX: 00000008 ; inline
: STARTF_USEFILLATTRIBUTE HEX: 00000010 ; inline
: STARTF_RUNFULLSCREEN HEX: 00000020 ; inline
: STARTF_FORCEONFEEDBACK HEX: 00000040 ; inline
: STARTF_FORCEOFFFEEDBACK HEX: 00000080 ; inline
: STARTF_USESTDHANDLES HEX: 00000100 ; inline
: STARTF_USEHOTKEY HEX: 00000200 ; inline
CONSTANT: STARTF_USESHOWWINDOW HEX: 00000001
CONSTANT: STARTF_USESIZE HEX: 00000002
CONSTANT: STARTF_USEPOSITION HEX: 00000004
CONSTANT: STARTF_USECOUNTCHARS HEX: 00000008
CONSTANT: STARTF_USEFILLATTRIBUTE HEX: 00000010
CONSTANT: STARTF_RUNFULLSCREEN HEX: 00000020
CONSTANT: STARTF_FORCEONFEEDBACK HEX: 00000040
CONSTANT: STARTF_FORCEOFFFEEDBACK HEX: 00000080
CONSTANT: STARTF_USESTDHANDLES HEX: 00000100
CONSTANT: STARTF_USEHOTKEY HEX: 00000200
: PIPE_ACCESS_INBOUND 1 ; inline
: PIPE_ACCESS_OUTBOUND 2 ; inline
: PIPE_ACCESS_DUPLEX 3 ; inline
CONSTANT: PIPE_ACCESS_INBOUND 1
CONSTANT: PIPE_ACCESS_OUTBOUND 2
CONSTANT: PIPE_ACCESS_DUPLEX 3
: PIPE_TYPE_BYTE 0 ; inline
: PIPE_TYPE_MESSAGE 4 ; inline
CONSTANT: PIPE_TYPE_BYTE 0
CONSTANT: PIPE_TYPE_MESSAGE 4
: PIPE_READMODE_BYTE 0 ; inline
: PIPE_READMODE_MESSAGE 2 ; inline
CONSTANT: PIPE_READMODE_BYTE 0
CONSTANT: PIPE_READMODE_MESSAGE 2
: PIPE_WAIT 0 ; inline
: PIPE_NOWAIT 1 ; inline
CONSTANT: PIPE_WAIT 0
CONSTANT: PIPE_NOWAIT 1
: PIPE_UNLIMITED_INSTANCES 255 ; inline
CONSTANT: PIPE_UNLIMITED_INSTANCES 255
LIBRARY: kernel32
! FUNCTION: _hread
@ -641,29 +640,29 @@ ALIAS: CreateNamedPipe CreateNamedPipeW
! FUNCTION: CreateNlsSecurityDescriptor
FUNCTION: BOOL CreatePipe ( PHANDLE hReadPipe, PHANDLE hWritePipe, LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize ) ;
: DEBUG_PROCESS HEX: 00000001 ;
: DEBUG_ONLY_THIS_PROCESS HEX: 00000002 ;
: CREATE_SUSPENDED HEX: 00000004 ;
: DETACHED_PROCESS HEX: 00000008 ;
: CREATE_NEW_CONSOLE HEX: 00000010 ;
: NORMAL_PRIORITY_CLASS HEX: 00000020 ;
: IDLE_PRIORITY_CLASS HEX: 00000040 ;
: HIGH_PRIORITY_CLASS HEX: 00000080 ;
: REALTIME_PRIORITY_CLASS HEX: 00000100 ;
: CREATE_NEW_PROCESS_GROUP HEX: 00000200 ;
: CREATE_UNICODE_ENVIRONMENT HEX: 00000400 ;
: CREATE_SEPARATE_WOW_VDM HEX: 00000800 ;
: CREATE_SHARED_WOW_VDM HEX: 00001000 ;
: CREATE_FORCEDOS HEX: 00002000 ;
: BELOW_NORMAL_PRIORITY_CLASS HEX: 00004000 ;
: ABOVE_NORMAL_PRIORITY_CLASS HEX: 00008000 ;
: CREATE_BREAKAWAY_FROM_JOB HEX: 01000000 ;
: CREATE_WITH_USERPROFILE HEX: 02000000 ;
: CREATE_DEFAULT_ERROR_MODE HEX: 04000000 ;
: CREATE_NO_WINDOW HEX: 08000000 ;
: PROFILE_USER HEX: 10000000 ;
: PROFILE_KERNEL HEX: 20000000 ;
: PROFILE_SERVER HEX: 40000000 ;
CONSTANT: DEBUG_PROCESS HEX: 00000001
CONSTANT: DEBUG_ONLY_THIS_PROCESS HEX: 00000002
CONSTANT: CREATE_SUSPENDED HEX: 00000004
CONSTANT: DETACHED_PROCESS HEX: 00000008
CONSTANT: CREATE_NEW_CONSOLE HEX: 00000010
CONSTANT: NORMAL_PRIORITY_CLASS HEX: 00000020
CONSTANT: IDLE_PRIORITY_CLASS HEX: 00000040
CONSTANT: HIGH_PRIORITY_CLASS HEX: 00000080
CONSTANT: REALTIME_PRIORITY_CLASS HEX: 00000100
CONSTANT: CREATE_NEW_PROCESS_GROUP HEX: 00000200
CONSTANT: CREATE_UNICODE_ENVIRONMENT HEX: 00000400
CONSTANT: CREATE_SEPARATE_WOW_VDM HEX: 00000800
CONSTANT: CREATE_SHARED_WOW_VDM HEX: 00001000
CONSTANT: CREATE_FORCEDOS HEX: 00002000
CONSTANT: BELOW_NORMAL_PRIORITY_CLASS HEX: 00004000
CONSTANT: ABOVE_NORMAL_PRIORITY_CLASS HEX: 00008000
CONSTANT: CREATE_BREAKAWAY_FROM_JOB HEX: 01000000
CONSTANT: CREATE_WITH_USERPROFILE HEX: 02000000
CONSTANT: CREATE_DEFAULT_ERROR_MODE HEX: 04000000
CONSTANT: CREATE_NO_WINDOW HEX: 08000000
CONSTANT: PROFILE_USER HEX: 10000000
CONSTANT: PROFILE_KERNEL HEX: 20000000
CONSTANT: PROFILE_SERVER HEX: 40000000
FUNCTION: BOOL CreateProcessW ( LPCTSTR lpApplicationname,
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
combinators io.encodings.utf16n io.files io.pathnames kernel
windows windows.com windows.com.syntax windows.ole32
windows.user32 ;
windows.user32 constants alias ;
IN: windows.shell32
: CSIDL_DESKTOP HEX: 00 ; inline
: CSIDL_INTERNET HEX: 01 ; inline
: CSIDL_PROGRAMS HEX: 02 ; inline
: CSIDL_CONTROLS HEX: 03 ; inline
: CSIDL_PRINTERS HEX: 04 ; inline
: CSIDL_PERSONAL HEX: 05 ; inline
: CSIDL_FAVORITES HEX: 06 ; inline
: CSIDL_STARTUP HEX: 07 ; inline
: CSIDL_RECENT HEX: 08 ; inline
: CSIDL_SENDTO HEX: 09 ; inline
: CSIDL_BITBUCKET HEX: 0a ; inline
: CSIDL_STARTMENU HEX: 0b ; inline
: CSIDL_MYDOCUMENTS HEX: 0c ; inline
: CSIDL_MYMUSIC HEX: 0d ; inline
: CSIDL_MYVIDEO HEX: 0e ; inline
: CSIDL_DESKTOPDIRECTORY HEX: 10 ; inline
: CSIDL_DRIVES HEX: 11 ; inline
: CSIDL_NETWORK HEX: 12 ; inline
: CSIDL_NETHOOD HEX: 13 ; inline
: CSIDL_FONTS HEX: 14 ; inline
: CSIDL_TEMPLATES HEX: 15 ; inline
: CSIDL_COMMON_STARTMENU HEX: 16 ; inline
: CSIDL_COMMON_PROGRAMS HEX: 17 ; inline
: CSIDL_COMMON_STARTUP HEX: 18 ; inline
: CSIDL_COMMON_DESKTOPDIRECTORY HEX: 19 ; inline
: CSIDL_APPDATA HEX: 1a ; inline
: CSIDL_PRINTHOOD HEX: 1b ; inline
: CSIDL_LOCAL_APPDATA HEX: 1c ; inline
: CSIDL_ALTSTARTUP HEX: 1d ; inline
: CSIDL_COMMON_ALTSTARTUP HEX: 1e ; inline
: CSIDL_COMMON_FAVORITES HEX: 1f ; inline
: CSIDL_INTERNET_CACHE HEX: 20 ; inline
: CSIDL_COOKIES HEX: 21 ; inline
: CSIDL_HISTORY HEX: 22 ; inline
: CSIDL_COMMON_APPDATA HEX: 23 ; inline
: CSIDL_WINDOWS HEX: 24 ; inline
: CSIDL_SYSTEM HEX: 25 ; inline
: CSIDL_PROGRAM_FILES HEX: 26 ; inline
: CSIDL_MYPICTURES HEX: 27 ; inline
: CSIDL_PROFILE HEX: 28 ; inline
: CSIDL_SYSTEMX86 HEX: 29 ; inline
: CSIDL_PROGRAM_FILESX86 HEX: 2a ; inline
: CSIDL_PROGRAM_FILES_COMMON HEX: 2b ; inline
: CSIDL_PROGRAM_FILES_COMMONX86 HEX: 2c ; inline
: CSIDL_COMMON_TEMPLATES HEX: 2d ; inline
: CSIDL_COMMON_DOCUMENTS HEX: 2e ; inline
: CSIDL_COMMON_ADMINTOOLS HEX: 2f ; inline
: CSIDL_ADMINTOOLS HEX: 30 ; inline
: CSIDL_CONNECTIONS HEX: 31 ; inline
: CSIDL_COMMON_MUSIC HEX: 35 ; inline
: CSIDL_COMMON_PICTURES HEX: 36 ; inline
: CSIDL_COMMON_VIDEO HEX: 37 ; inline
: CSIDL_RESOURCES HEX: 38 ; inline
: CSIDL_RESOURCES_LOCALIZED HEX: 39 ; inline
: CSIDL_COMMON_OEM_LINKS HEX: 3a ; inline
: CSIDL_CDBURN_AREA HEX: 3b ; inline
: CSIDL_COMPUTERSNEARME HEX: 3d ; inline
: CSIDL_PROFILES HEX: 3e ; inline
: CSIDL_FOLDER_MASK HEX: ff ; inline
: CSIDL_FLAG_PER_USER_INIT HEX: 800 ; inline
: CSIDL_FLAG_NO_ALIAS HEX: 1000 ; inline
: CSIDL_FLAG_DONT_VERIFY HEX: 4000 ; inline
: CSIDL_FLAG_CREATE HEX: 8000 ; inline
: CSIDL_FLAG_MASK HEX: ff00 ; inline
CONSTANT: CSIDL_DESKTOP HEX: 00
CONSTANT: CSIDL_INTERNET HEX: 01
CONSTANT: CSIDL_PROGRAMS HEX: 02
CONSTANT: CSIDL_CONTROLS HEX: 03
CONSTANT: CSIDL_PRINTERS HEX: 04
CONSTANT: CSIDL_PERSONAL HEX: 05
CONSTANT: CSIDL_FAVORITES HEX: 06
CONSTANT: CSIDL_STARTUP HEX: 07
CONSTANT: CSIDL_RECENT HEX: 08
CONSTANT: CSIDL_SENDTO HEX: 09
CONSTANT: CSIDL_BITBUCKET HEX: 0a
CONSTANT: CSIDL_STARTMENU HEX: 0b
CONSTANT: CSIDL_MYDOCUMENTS HEX: 0c
CONSTANT: CSIDL_MYMUSIC HEX: 0d
CONSTANT: CSIDL_MYVIDEO HEX: 0e
CONSTANT: CSIDL_DESKTOPDIRECTORY HEX: 10
CONSTANT: CSIDL_DRIVES HEX: 11
CONSTANT: CSIDL_NETWORK HEX: 12
CONSTANT: CSIDL_NETHOOD HEX: 13
CONSTANT: CSIDL_FONTS HEX: 14
CONSTANT: CSIDL_TEMPLATES HEX: 15
CONSTANT: CSIDL_COMMON_STARTMENU HEX: 16
CONSTANT: CSIDL_COMMON_PROGRAMS HEX: 17
CONSTANT: CSIDL_COMMON_STARTUP HEX: 18
CONSTANT: CSIDL_COMMON_DESKTOPDIRECTORY HEX: 19
CONSTANT: CSIDL_APPDATA HEX: 1a
CONSTANT: CSIDL_PRINTHOOD HEX: 1b
CONSTANT: CSIDL_LOCAL_APPDATA HEX: 1c
CONSTANT: CSIDL_ALTSTARTUP HEX: 1d
CONSTANT: CSIDL_COMMON_ALTSTARTUP HEX: 1e
CONSTANT: CSIDL_COMMON_FAVORITES HEX: 1f
CONSTANT: CSIDL_INTERNET_CACHE HEX: 20
CONSTANT: CSIDL_COOKIES HEX: 21
CONSTANT: CSIDL_HISTORY HEX: 22
CONSTANT: CSIDL_COMMON_APPDATA HEX: 23
CONSTANT: CSIDL_WINDOWS HEX: 24
CONSTANT: CSIDL_SYSTEM HEX: 25
CONSTANT: CSIDL_PROGRAM_FILES HEX: 26
CONSTANT: CSIDL_MYPICTURES HEX: 27
CONSTANT: CSIDL_PROFILE HEX: 28
CONSTANT: CSIDL_SYSTEMX86 HEX: 29
CONSTANT: CSIDL_PROGRAM_FILESX86 HEX: 2a
CONSTANT: CSIDL_PROGRAM_FILES_COMMON HEX: 2b
CONSTANT: CSIDL_PROGRAM_FILES_COMMONX86 HEX: 2c
CONSTANT: CSIDL_COMMON_TEMPLATES HEX: 2d
CONSTANT: CSIDL_COMMON_DOCUMENTS HEX: 2e
CONSTANT: CSIDL_COMMON_ADMINTOOLS HEX: 2f
CONSTANT: CSIDL_ADMINTOOLS HEX: 30
CONSTANT: CSIDL_CONNECTIONS HEX: 31
CONSTANT: CSIDL_COMMON_MUSIC HEX: 35
CONSTANT: CSIDL_COMMON_PICTURES HEX: 36
CONSTANT: CSIDL_COMMON_VIDEO HEX: 37
CONSTANT: CSIDL_RESOURCES HEX: 38
CONSTANT: CSIDL_RESOURCES_LOCALIZED HEX: 39
CONSTANT: CSIDL_COMMON_OEM_LINKS HEX: 3a
CONSTANT: CSIDL_CDBURN_AREA HEX: 3b
CONSTANT: CSIDL_COMPUTERSNEARME HEX: 3d
CONSTANT: CSIDL_PROFILES HEX: 3e
CONSTANT: CSIDL_FOLDER_MASK HEX: ff
CONSTANT: CSIDL_FLAG_PER_USER_INIT HEX: 800
CONSTANT: CSIDL_FLAG_NO_ALIAS HEX: 1000
CONSTANT: CSIDL_FLAG_DONT_VERIFY HEX: 4000
CONSTANT: CSIDL_FLAG_CREATE HEX: 8000
CONSTANT: CSIDL_FLAG_MASK HEX: ff00
: ERROR_FILE_NOT_FOUND 2 ; inline
CONSTANT: ERROR_FILE_NOT_FOUND 2
: SHGFP_TYPE_CURRENT 0 ; inline
: SHGFP_TYPE_DEFAULT 1 ; inline
CONSTANT: SHGFP_TYPE_CURRENT 0
CONSTANT: SHGFP_TYPE_DEFAULT 1
LIBRARY: shell32
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 ) ;
: ShellExecute ShellExecuteW ; inline
ALIAS: ShellExecute ShellExecuteW
: open-in-explorer ( dir -- )
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 )
CSIDL_APPDATA shell32-directory ;
: windows ( -- str )
: windows-directory ( -- str )
CSIDL_WINDOWS shell32-directory ;
: programs ( -- str )
@ -123,50 +123,50 @@ FUNCTION: HINSTANCE ShellExecuteW ( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFi
: program-files-common-x86 ( -- str )
CSIDL_PROGRAM_FILES_COMMONX86 shell32-directory ;
: SHCONTF_FOLDERS 32 ; inline
: SHCONTF_NONFOLDERS 64 ; inline
: SHCONTF_INCLUDEHIDDEN 128 ; inline
: SHCONTF_INIT_ON_FIRST_NEXT 256 ; inline
: SHCONTF_NETPRINTERSRCH 512 ; inline
: SHCONTF_SHAREABLE 1024 ; inline
: SHCONTF_STORAGE 2048 ; inline
CONSTANT: SHCONTF_FOLDERS 32
CONSTANT: SHCONTF_NONFOLDERS 64
CONSTANT: SHCONTF_INCLUDEHIDDEN 128
CONSTANT: SHCONTF_INIT_ON_FIRST_NEXT 256
CONSTANT: SHCONTF_NETPRINTERSRCH 512
CONSTANT: SHCONTF_SHAREABLE 1024
CONSTANT: SHCONTF_STORAGE 2048
TYPEDEF: DWORD SHCONTF
: SHGDN_NORMAL 0 ; inline
: SHGDN_INFOLDER 1 ; inline
: SHGDN_FOREDITING HEX: 1000 ; inline
: SHGDN_INCLUDE_NONFILESYS HEX: 2000 ; inline
: SHGDN_FORADDRESSBAR HEX: 4000 ; inline
: SHGDN_FORPARSING HEX: 8000 ; inline
CONSTANT: SHGDN_NORMAL 0
CONSTANT: SHGDN_INFOLDER 1
CONSTANT: SHGDN_FOREDITING HEX: 1000
CONSTANT: SHGDN_INCLUDE_NONFILESYS HEX: 2000
CONSTANT: SHGDN_FORADDRESSBAR HEX: 4000
CONSTANT: SHGDN_FORPARSING HEX: 8000
TYPEDEF: DWORD SHGDNF
: SFGAO_CANCOPY DROPEFFECT_COPY ; inline
: SFGAO_CANMOVE DROPEFFECT_MOVE ; inline
: SFGAO_CANLINK DROPEFFECT_LINK ; inline
: SFGAO_CANRENAME HEX: 00000010 ; inline
: SFGAO_CANDELETE HEX: 00000020 ; inline
: SFGAO_HASPROPSHEET HEX: 00000040 ; inline
: SFGAO_DROPTARGET HEX: 00000100 ; inline
: SFGAO_CAPABILITYMASK HEX: 00000177 ; inline
: SFGAO_LINK HEX: 00010000 ; inline
: SFGAO_SHARE HEX: 00020000 ; inline
: SFGAO_READONLY HEX: 00040000 ; inline
: SFGAO_GHOSTED HEX: 00080000 ; inline
: SFGAO_HIDDEN HEX: 00080000 ; inline
: SFGAO_DISPLAYATTRMASK HEX: 000F0000 ; inline
: SFGAO_FILESYSANCESTOR HEX: 10000000 ; inline
: SFGAO_FOLDER HEX: 20000000 ; inline
: SFGAO_FILESYSTEM HEX: 40000000 ; inline
: SFGAO_HASSUBFOLDER HEX: 80000000 ; inline
: SFGAO_CONTENTSMASK HEX: 80000000 ; inline
: SFGAO_VALIDATE HEX: 01000000 ; inline
: SFGAO_REMOVABLE HEX: 02000000 ; inline
: SFGAO_COMPRESSED HEX: 04000000 ; inline
: SFGAO_BROWSABLE HEX: 08000000 ; inline
: SFGAO_NONENUMERATED HEX: 00100000 ; inline
: SFGAO_NEWCONTENT HEX: 00200000 ; inline
ALIAS: SFGAO_CANCOPY DROPEFFECT_COPY
ALIAS: SFGAO_CANMOVE DROPEFFECT_MOVE
ALIAS: SFGAO_CANLINK DROPEFFECT_LINK
CONSTANT: SFGAO_CANRENAME HEX: 00000010
CONSTANT: SFGAO_CANDELETE HEX: 00000020
CONSTANT: SFGAO_HASPROPSHEET HEX: 00000040
CONSTANT: SFGAO_DROPTARGET HEX: 00000100
CONSTANT: SFGAO_CAPABILITYMASK HEX: 00000177
CONSTANT: SFGAO_LINK HEX: 00010000
CONSTANT: SFGAO_SHARE HEX: 00020000
CONSTANT: SFGAO_READONLY HEX: 00040000
CONSTANT: SFGAO_GHOSTED HEX: 00080000
CONSTANT: SFGAO_HIDDEN HEX: 00080000
CONSTANT: SFGAO_DISPLAYATTRMASK HEX: 000F0000
CONSTANT: SFGAO_FILESYSANCESTOR HEX: 10000000
CONSTANT: SFGAO_FOLDER HEX: 20000000
CONSTANT: SFGAO_FILESYSTEM HEX: 40000000
CONSTANT: SFGAO_HASSUBFOLDER HEX: 80000000
CONSTANT: SFGAO_CONTENTSMASK HEX: 80000000
CONSTANT: SFGAO_VALIDATE HEX: 01000000
CONSTANT: SFGAO_REMOVABLE HEX: 02000000
CONSTANT: SFGAO_COMPRESSED HEX: 04000000
CONSTANT: SFGAO_BROWSABLE HEX: 08000000
CONSTANT: SFGAO_NONENUMERATED HEX: 00100000
CONSTANT: SFGAO_NEWCONTENT HEX: 00200000
TYPEDEF: ULONG SFGAOF
@ -223,5 +223,4 @@ COM-INTERFACE: IShellFolder IUnknown {000214E6-0000-0000-C000-000000000046}
FUNCTION: HRESULT SHGetDesktopFolder ( IShellFolder** ppshf ) ;
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 ;
: 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 ;
: snarf-property ( prop-return -- string )
dup *void* [ *void* ascii alien>string ] [ drop f ] if ;
: 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*>
[ XGetWindowProperty drop ] keep snarf-property ;
@ -58,7 +58,7 @@ TUPLE: x-clipboard atom contents ;
dpy get swap
[ XSelectionRequestEvent-requestor ] keep
[ XSelectionRequestEvent-property ] keep
>r "TIMESTAMP" x-atom 32 PropModeReplace r>
[ "TIMESTAMP" x-atom 32 PropModeReplace ] dip
XSelectionRequestEvent-time <int>
1 XChangeProperty drop ;
@ -71,7 +71,7 @@ TUPLE: x-clipboard atom contents ;
over XSelectionRequestEvent-selection over set-XSelectionEvent-selection
over XSelectionRequestEvent-target over set-XSelectionEvent-target
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
flush-dpy ;

View File

@ -36,12 +36,12 @@ GENERIC: selection-request-event ( event window -- )
GENERIC: client-event ( event window -- )
: 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 )
>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? ;
@ -71,15 +71,15 @@ GENERIC: client-event ( event window -- )
} case ;
: configured-loc ( event -- dim )
dup XConfigureEvent-x swap XConfigureEvent-y 2array ;
[ XConfigureEvent-x ] [ XConfigureEvent-y ] bi 2array ;
: configured-dim ( event -- dim )
dup XConfigureEvent-width swap XConfigureEvent-height 2array ;
[ XConfigureEvent-width ] [ XConfigureEvent-height ] bi 2array ;
: mouse-event-loc ( event -- loc )
dup XButtonEvent-x swap XButtonEvent-y 2array ;
[ XButtonEvent-x ] [ XButtonEvent-y ] bi 2array ;
: close-box? ( event -- ? )
dup XClientMessageEvent-message_type "WM_PROTOCOLS" x-atom =
swap XClientMessageEvent-data0 "WM_DELETE_WINDOW" x-atom =
and ;
[ XClientMessageEvent-message_type "WM_PROTOCOLS" x-atom = ]
[ XClientMessageEvent-data0 "WM_DELETE_WINDOW" x-atom = ]
bi and ;

View File

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

View File

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

View File

@ -90,7 +90,7 @@ M: assoc assoc-clone-like ( assoc exemplar -- newassoc )
] if ; inline recursive
: assoc-stack ( key seq -- value )
dup length 1- swap (assoc-stack) ; flushable
[ length 1- ] keep (assoc-stack) ; flushable
: assoc-subset? ( assoc1 assoc2 -- ? )
[ 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 )
swap [ key? not ] curry filter ;
: (substitute)
: substituter ( assoc -- quot )
[ dupd at* [ nip ] [ drop ] if ] curry ; inline
: substitute-here ( seq assoc -- )
(substitute) change-each ;
substituter change-each ;
: substitute ( seq assoc -- newseq )
(substitute) map ;
substituter map ;
: cache ( key assoc quot -- value )
2over at* [

View File

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

View File

@ -24,9 +24,11 @@ SINGLETON: crc32
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
init-crc32

View File

@ -290,6 +290,12 @@ M: tuple-class (define-tuple-class)
tri* define-declared
] 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
[
dup "slots" word-prop [

View File

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

View File

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

View File

@ -32,9 +32,9 @@ M: object <decoder> f decoder boa ;
<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 )
[ stream>> ] [ code>> ] bi ; inline

View File

@ -57,8 +57,8 @@ HELP: normalize-path
{ $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." } ;
HELP: <pathname> ( str -- pathname )
{ $values { "str" "a pathname string" } { "pathname" pathname } }
HELP: <pathname>
{ $values { "string" "a pathname string" } { "pathname" pathname } }
{ $description "Creates a new " { $link pathname } "." } ;
HELP: home

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