! Copyright (C) 2008 Slava Pestov.\r
! See http://factorcode.org/license.txt for BSD license.\r
-USING: accessors words quotations kernel effects sequences parser ;\r
+USING: accessors words quotations kernel effects sequences\r
+parser definitions ;\r
IN: alias\r
\r
PREDICATE: alias < word "alias" word-prop ;\r
\r
+: define-alias ( new old -- )\r
+ [ [ 1quotation ] [ stack-effect ] bi define-inline ]\r
+ [ drop t "alias" set-word-prop ] 2bi ;\r
+\r
+: ALIAS: CREATE-WORD scan-word define-alias ; parsing\r
+\r
M: alias reset-word\r
[ call-next-method ] [ f "alias" set-word-prop ] bi ;\r
\r
M: alias stack-effect\r
def>> first stack-effect ;\r
-\r
-: define-alias ( new old -- )\r
- [ 1quotation define-inline ]\r
- [ drop t "alias" set-word-prop ] 2bi ;\r
-\r
-: ALIAS: CREATE-WORD scan-word define-alias ; parsing\r
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 ]
[ (>>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
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 ;
<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
: 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>>
SYMBOL: objects
-: (objects) <id> objects get ; inline
+: (objects) ( obj -- id assoc ) <id> objects get ; inline
: lookup-object ( obj -- n/f ) (objects) at ;
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
[ month>> +month ] keep
[ year>> +year ] keep ; inline
-: +slots [ bi@ + ] curry 2keep ; inline
+: +slots ( obj1 obj2 quot -- n obj1 obj2 )
+ [ bi@ + ] curry 2keep ; inline
PRIVATE>
HELP: <remote-channel>
{ $values { "node" "a node object" }
{ "id" "the id of the published channel on the node" }
+ { "remote-channel" remote-channel }
}
{ $description "Create a remote channel that acts as a proxy for a "
"channel on another node. The remote node's channel must have been "
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 )
-{ $values { "name" "an EVP message digest name" } { "checksum" openssl-checksum } }
+HELP: <openssl-checksum>
+{ $values { "name" "an EVP message digest name" } { "openssl-checksum" openssl-checksum } }
{ $description "Creates a new OpenSSL checksum object." } ;
HELP: openssl-md5
: NSBackingStoreNonretained 1 ; inline
: NSBackingStoreBuffered 2 ; inline
-: standard-window-type
+: standard-window-type ( -- n )
{
NSTitledWindowMask
NSClosableWindowMask
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
! 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
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
! 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 )
#! 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
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
M: ##dispatch generate-insn
[ src>> register ] [ temp>> register ] [ offset>> ] tri %dispatch ;
-: >slot<
+: >slot< ( insn -- dst obj slot tag )
{
[ dst>> register ]
[ obj>> register ]
M: ##slot-imm generate-insn
>slot< %slot-imm ;
-: >set-slot<
+: >set-slot< ( insn -- src obj slot tag )
{
[ src>> register ]
[ obj>> register ]
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 ;
\r
: [future] ( quot -- quot' ) '[ _ curry future ] ; inline\r
\r
-: future-values dup [ ?future ] change-each ; inline\r
+: future-values ( futures -- futures )\r
+ dup [ ?future ] change-each ; inline\r
\r
PRIVATE>\r
\r
--- /dev/null
+! 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
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 ;
+: LOAD32 ( n r -- ) [ w>h/h ] dip tuck LIS dup rot ORI ;
: immediate? ( n -- ? ) HEX: -8000 HEX: 7fff between? ;
: LOAD ( n r -- ) over immediate? [ LI ] [ LOAD32 ] if ;
GENERIC: BC ( a b c -- )
M: integer BC 0 0 16 b-insn ;
-M: word BC >r 0 BC r> rc-relative-ppc-2 rel-word ;
-M: label BC >r 0 BC r> rc-relative-ppc-2 label-fixup ;
+M: word BC [ 0 BC ] dip rc-relative-ppc-2 rel-word ;
+M: label BC [ 0 BC ] dip rc-relative-ppc-2 label-fixup ;
: CREATE-B ( -- word ) scan "B" prepend create-in ;
M: ppc %prologue ( n -- )
0 11 LOAD32 rc-absolute-ppc-2/2 rel-this
0 MFLR
- 1 1 pick neg ADDI
- 11 1 pick xt-save STW
- dup 11 LI
- 11 1 pick next-save STW
- 0 1 rot lr-save + STW ;
+ {
+ [ [ 1 1 ] dip neg ADDI ]
+ [ [ 11 1 ] dip xt-save STW ]
+ [ 11 LI ]
+ [ [ 11 1 ] dip next-save STW ]
+ [ [ 0 1 ] dip lr-save + STW ]
+ } cleave ;
M: ppc %epilogue ( n -- )
#! At the end of each word that calls a subroutine, we store
#! the previous link register value in r0 by popping it off
#! the stack, set the link register to the contents of r0,
#! and jump to the link register.
- 0 1 pick lr-save + LWZ
- 1 1 rot ADDI
+ [ [ 0 1 ] dip lr-save + LWZ ]
+ [ [ 1 1 ] dip ADDI ] bi
0 MTLR ;
:: (%boolean) ( dst temp word -- )
M: single-float-regs STF drop STFS ;
M: double-float-regs STF drop STFD ;
-M: float-regs %save-param-reg >r 1 rot local@ r> STF ;
+M: float-regs %save-param-reg [ 1 rot local@ ] dip STF ;
GENERIC: LF ( dst src off reg-class -- )
M: single-float-regs LF drop LFS ;
M: double-float-regs LF drop LFD ;
-M: float-regs %load-param-reg >r 1 rot local@ r> LF ;
+M: float-regs %load-param-reg [ 1 rot local@ ] dip LF ;
M: stack-params %load-param-reg ( stack reg reg-class -- )
- drop >r 0 1 rot local@ LWZ 0 1 r> param@ STW ;
+ drop [ 0 1 rot local@ LWZ 0 1 ] dip param@ STW ;
: next-param@ ( n -- x ) param@ stack-frame get total-size>> + ;
#! Funky. Read the parameter from the caller's stack frame.
#! This word is used in callbacks
drop
- 0 1 rot next-param@ LWZ
- 0 1 rot local@ STW ;
+ [ 0 1 ] dip next-param@ LWZ
+ [ 0 1 ] dip local@ STW ;
M: ppc %prepare-unbox ( -- )
! First parameter is top of stack
f %alien-invoke
! Store the return value on the C stack
[
- 3 1 pick local@ STW
- 4 1 rot cell + local@ STW
+ [ [ 3 1 ] dip local@ STW ]
+ [ [ 4 1 ] dip cell + local@ STW ] bi
] when* ;
M: ppc %unbox-large-struct ( n c-type -- )
! Value must be in r3
! Compute destination address and load struct size
- [ 4 1 rot local@ ADDI ] [ heap-size 5 LI ] bi*
+ [ [ 4 1 ] dip local@ ADDI ] [ heap-size 5 LI ] bi*
! Call the function
"to_value_struct" f %alien-invoke ;
! If the source is a stack location, load it into freg #0.
! If the source is f, then we assume the value is already in
! freg #0.
- >r
- over [ 0 over param-reg swap %load-param-reg ] [ 2drop ] if
- r> f %alien-invoke ;
+ [ over [ 0 over param-reg swap %load-param-reg ] [ 2drop ] if ] dip
+ f %alien-invoke ;
M: ppc %box-long-long ( n func -- )
- >r [
- 3 1 pick local@ LWZ
- 4 1 rot cell + local@ LWZ
- ] when* r> f %alien-invoke ;
+ [
+ [
+ [ [ 3 1 ] dip local@ LWZ ]
+ [ [ 4 1 ] dip cell + local@ LWZ ] bi
+ ] when*
+ ] dip f %alien-invoke ;
: struct-return@ ( n -- n )
[ stack-frame get params>> ] unless* local@ ;
M: ppc %box-large-struct ( n c-type -- )
! If n = f, then we're boxing a returned struct
! Compute destination address and load struct size
- [ 3 1 rot struct-return@ ADDI ] [ heap-size 4 LI ] bi*
+ [ [ 3 1 ] dip struct-return@ ADDI ] [ heap-size 4 LI ] bi*
! Call the function
"box_value_struct" f %alien-invoke ;
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 ;
! 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 ( -- )
CHAR: , delimiter set-global
-: delimiter> delimiter get ; inline
+: delimiter> ( -- delimiter ) delimiter get ; inline
DEFER: quoted-field ( -- endchar )
{ $description "The user is responsible for choosing a primary key for tuples inserted with this database type. Keys must be unique or else the database will throw an error. Usually it is better to use a " { $link +db-assigned-id+ } "." } ;
HELP: <generator-bind>
+{ $values { "slot-name" object } { "key" object } { "generator-singleton" object } { "type" object } { "generator-bind" generator-bind } }
{ $description "" } ;
HELP: <literal-bind>
+{ $values { "key" object } { "type" object } { "value" object } { "literal-bind" literal-bind } }
{ $description "" } ;
HELP: <low-level-binding>
+{ $values { "value" object } { "low-level-binding" low-level-binding } }
{ $description "" } ;
HELP: BIG-INTEGER
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 )
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 )
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 )
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 )
! 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 )
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
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 -- )
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 )
! 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
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 )
--- /dev/null
+Doug Coleman
--- /dev/null
+TextPad editor integration
--- /dev/null
+unportable
--- /dev/null
+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
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 )
-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"
-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
assocs classes io.servers.connection destructors calendar
io.timeouts io.streams.duplex threads continuations math
concurrency.promises byte-arrays io.backend tools.hexdump
-tools.files io.streams.string ;
+tools.files io.streams.string math.bitwise ;
IN: ftp.server
TUPLE: ftp-client url mode state command-promise user password ;
[ >>raw ] [ tokenize-command >>tokenized ] bi ;
: (send-response) ( n string separator -- )
- rot number>string write write ftp-send ;
+ [ number>string write ] 2dip write ftp-send ;
: send-response ( ftp-response -- )
[ n>> ] [ strings>> ] bi
: handle-TYPE ( obj -- )
[
tokenized>> second parse-type
- 200 "Switching to " rot " mode" 3append server-response
+ [ 200 ] dip "Switching to " " mode" surround server-response
] [
2drop "TYPE is binary only" ftp-error
] recover ;
remote-address get class new 0 >>port binary <server> ;
: port>bytes ( port -- hi lo )
- [ -8 shift ] keep [ HEX: ff bitand ] bi@ ;
+ [ -8 shift ] keep [ 8 bits ] bi@ ;
: handle-PWD ( obj -- )
drop
- 257 current-directory get "\"" "\"" surround server-response ;
+ 257 current-directory get "\"" dup surround server-response ;
: handle-SYST ( obj -- )
drop
finish-directory ;
: transfer-outgoing-file ( path -- )
- 150 "Opening BINARY mode data connection for "
- rot
- [ file-name ] [
- " " swap file-info size>> number>string
- "(" " bytes)." surround append
- ] bi 3append server-response ;
+ [
+ 150
+ "Opening BINARY mode data connection for "
+ ] dip
+ [
+ file-name
+ ] [
+ file-info size>> number>string
+ "(" " bytes)." surround
+ ] bi " " glue append server-response ;
: transfer-incoming-file ( path -- )
- 150 "Opening BINARY mode data connection for " rot append
+ [ 150 ] dip "Opening BINARY mode data connection for " prepend
server-response ;
: finish-file-transfer ( -- )
: handle-SIZE ( obj -- )
[
+ [ 213 ] dip
tokenized>> second file-info size>>
- 213 swap number>string server-response
+ number>string server-response
] [
2drop
550 "Could not get file size" server-response
: handle-PASV ( obj -- )
drop client get passive >>mode drop
- expect-connection
- [
- "Entering Passive Mode (127,0,0,1," %
- port>bytes [ number>string ] bi@ "," glue %
- ")" %
- ] "" make 227 swap server-response ;
+ 221
+ expect-connection port>bytes [ number>string ] bi@ "," glue
+ "Entering Passive Mode (127,0,0,1," ")" surround
+ server-response ;
: handle-EPSV ( obj -- )
drop
client get command-promise>> [
"You already have a passive stream" ftp-error
] [
- 229 "Entering Extended Passive Mode (|||"
+ 229
expect-connection number>string
- "|)" 3append server-response
+ "Entering Extended Passive Mode (|||" "|)" surround
+ server-response
] if ;
! LPRT 6,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,242,186
{ $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>
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
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? ;
: check-values ( word element -- )
{
+ [ drop { [ symbol? ] [ macro? ] [ parsing-word? ] } 1|| ]
[ drop "declared-effect" word-prop not ]
[ nip contains-funky-elements? ]
- [ drop macro? ]
[
[ effect-values >array ]
[ extract-values >array ]
] each ;
: vocab-exists? ( name -- ? )
- dup vocab swap "all-vocabs" get member? or ;
+ [ vocab ] [ "all-vocabs" get member? ] bi or ;
: check-modules ( element -- )
\ $vocab-link swap elements [
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
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." } ;
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 )
-{ $values { "response" response } { "responder" trivial-responder } }
+HELP: <trivial-responder>
+{ $values { "response" response } { "trivial-responder" trivial-responder } }
{ $description "Creates a new trivial responder which outputs the same response for every request." } ;
HELP: benchmark?
[ (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 ;
: 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
! 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
--- /dev/null
+unportable
--- /dev/null
+unportable
--- /dev/null
+unportable
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 ;
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 )
[
-USING: io.files kernel tools.test io.backend
+USING: io.files io.pathnames kernel tools.test io.backend
io.files.windows.nt splitting sequences ;
IN: io.files.windows.nt.tests
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
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 ;
USING: io.launcher tools.test calendar accessors environment
namespaces kernel system arrays io io.files io.encodings.ascii
-sequences parser assocs hashtables math continuations eval ;
+sequences parser assocs hashtables math continuations eval
+io.files.temp io.directories io.pathnames ;
IN: io.launcher.windows.nt.tests
[ ] [
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> } "." } ;
{ $class-description "A bidirectional stream wrapping an input and output stream." } ;
HELP: <duplex-stream>
-{ $values { "in" "an input stream" } { "out" "an output stream" } { "stream" " a duplex stream" } }
+{ $values { "in" "an input stream" } { "out" "an output stream" } { "duplex-stream" duplex-stream } }
{ $description "Creates a duplex stream. Writing to a duplex stream will write to " { $snippet "out" } ", and reading from a duplex stream will read from " { $snippet "in" } ". Closing a duplex stream closes both the input and output streams." } ;
HELP: with-stream
{ $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 } "." } ;
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
\ 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
>>
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 ;
"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." } ;
{ 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." } ;
$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
TUPLE: interval { from read-only } { to read-only } ;
-: <interval> ( from to -- int )
+: <interval> ( from to -- interval )
2dup [ first ] bi@ {
{ [ 2dup > ] [ 2drop 2drop empty-interval ] }
{ [ 2dup = ] [
<PRIVATE
-: ** conjugate * ; inline
+: ** ( x y -- z ) conjugate * ; inline
: 2q ( u v -- u' u'' v' v'' ) [ first2 ] bi@ ; inline
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
$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
: 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 )
: 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
! This file is based on the gl.h that comes with xorg-x11 6.8.2
USING: alien alien.syntax combinators kernel parser sequences
-system words opengl.gl.extensions ;
+system words opengl.gl.extensions alias constants ;
IN: opengl.gl
! Constants
! Boolean values
-: GL_FALSE HEX: 0 ; inline
-: GL_TRUE HEX: 1 ; inline
+CONSTANT: GL_FALSE HEX: 0
+CONSTANT: GL_TRUE HEX: 1
! Data types
-: GL_BYTE HEX: 1400 ; inline
-: GL_UNSIGNED_BYTE HEX: 1401 ; inline
-: GL_SHORT HEX: 1402 ; inline
-: GL_UNSIGNED_SHORT HEX: 1403 ; inline
-: GL_INT HEX: 1404 ; inline
-: GL_UNSIGNED_INT HEX: 1405 ; inline
-: GL_FLOAT HEX: 1406 ; inline
-: GL_2_BYTES HEX: 1407 ; inline
-: GL_3_BYTES HEX: 1408 ; inline
-: GL_4_BYTES HEX: 1409 ; inline
-: GL_DOUBLE HEX: 140A ; inline
+CONSTANT: GL_BYTE HEX: 1400
+CONSTANT: GL_UNSIGNED_BYTE HEX: 1401
+CONSTANT: GL_SHORT HEX: 1402
+CONSTANT: GL_UNSIGNED_SHORT HEX: 1403
+CONSTANT: GL_INT HEX: 1404
+CONSTANT: GL_UNSIGNED_INT HEX: 1405
+CONSTANT: GL_FLOAT HEX: 1406
+CONSTANT: GL_2_BYTES HEX: 1407
+CONSTANT: GL_3_BYTES HEX: 1408
+CONSTANT: GL_4_BYTES HEX: 1409
+CONSTANT: GL_DOUBLE HEX: 140A
! Primitives
-: GL_POINTS HEX: 0000 ; inline
-: GL_LINES HEX: 0001 ; inline
-: GL_LINE_LOOP HEX: 0002 ; inline
-: GL_LINE_STRIP HEX: 0003 ; inline
-: GL_TRIANGLES HEX: 0004 ; inline
-: GL_TRIANGLE_STRIP HEX: 0005 ; inline
-: GL_TRIANGLE_FAN HEX: 0006 ; inline
-: GL_QUADS HEX: 0007 ; inline
-: GL_QUAD_STRIP HEX: 0008 ; inline
-: GL_POLYGON HEX: 0009 ; inline
+CONSTANT: GL_POINTS HEX: 0000
+CONSTANT: GL_LINES HEX: 0001
+CONSTANT: GL_LINE_LOOP HEX: 0002
+CONSTANT: GL_LINE_STRIP HEX: 0003
+CONSTANT: GL_TRIANGLES HEX: 0004
+CONSTANT: GL_TRIANGLE_STRIP HEX: 0005
+CONSTANT: GL_TRIANGLE_FAN HEX: 0006
+CONSTANT: GL_QUADS HEX: 0007
+CONSTANT: GL_QUAD_STRIP HEX: 0008
+CONSTANT: GL_POLYGON HEX: 0009
! Vertex arrays
-: GL_VERTEX_ARRAY HEX: 8074 ; inline
-: GL_NORMAL_ARRAY HEX: 8075 ; inline
-: GL_COLOR_ARRAY HEX: 8076 ; inline
-: GL_INDEX_ARRAY HEX: 8077 ; inline
-: GL_TEXTURE_COORD_ARRAY HEX: 8078 ; inline
-: GL_EDGE_FLAG_ARRAY HEX: 8079 ; inline
-: GL_VERTEX_ARRAY_SIZE HEX: 807A ; inline
-: GL_VERTEX_ARRAY_TYPE HEX: 807B ; inline
-: GL_VERTEX_ARRAY_STRIDE HEX: 807C ; inline
-: GL_NORMAL_ARRAY_TYPE HEX: 807E ; inline
-: GL_NORMAL_ARRAY_STRIDE HEX: 807F ; inline
-: GL_COLOR_ARRAY_SIZE HEX: 8081 ; inline
-: GL_COLOR_ARRAY_TYPE HEX: 8082 ; inline
-: GL_COLOR_ARRAY_STRIDE HEX: 8083 ; inline
-: GL_INDEX_ARRAY_TYPE HEX: 8085 ; inline
-: GL_INDEX_ARRAY_STRIDE HEX: 8086 ; inline
-: GL_TEXTURE_COORD_ARRAY_SIZE HEX: 8088 ; inline
-: GL_TEXTURE_COORD_ARRAY_TYPE HEX: 8089 ; inline
-: GL_TEXTURE_COORD_ARRAY_STRIDE HEX: 808A ; inline
-: GL_EDGE_FLAG_ARRAY_STRIDE HEX: 808C ; inline
-: GL_VERTEX_ARRAY_POINTER HEX: 808E ; inline
-: GL_NORMAL_ARRAY_POINTER HEX: 808F ; inline
-: GL_COLOR_ARRAY_POINTER HEX: 8090 ; inline
-: GL_INDEX_ARRAY_POINTER HEX: 8091 ; inline
-: GL_TEXTURE_COORD_ARRAY_POINTER HEX: 8092 ; inline
-: GL_EDGE_FLAG_ARRAY_POINTER HEX: 8093 ; inline
-: GL_V2F HEX: 2A20 ; inline
-: GL_V3F HEX: 2A21 ; inline
-: GL_C4UB_V2F HEX: 2A22 ; inline
-: GL_C4UB_V3F HEX: 2A23 ; inline
-: GL_C3F_V3F HEX: 2A24 ; inline
-: GL_N3F_V3F HEX: 2A25 ; inline
-: GL_C4F_N3F_V3F HEX: 2A26 ; inline
-: GL_T2F_V3F HEX: 2A27 ; inline
-: GL_T4F_V4F HEX: 2A28 ; inline
-: GL_T2F_C4UB_V3F HEX: 2A29 ; inline
-: GL_T2F_C3F_V3F HEX: 2A2A ; inline
-: GL_T2F_N3F_V3F HEX: 2A2B ; inline
-: GL_T2F_C4F_N3F_V3F HEX: 2A2C ; inline
-: GL_T4F_C4F_N3F_V4F HEX: 2A2D ; inline
+CONSTANT: GL_VERTEX_ARRAY HEX: 8074
+CONSTANT: GL_NORMAL_ARRAY HEX: 8075
+CONSTANT: GL_COLOR_ARRAY HEX: 8076
+CONSTANT: GL_INDEX_ARRAY HEX: 8077
+CONSTANT: GL_TEXTURE_COORD_ARRAY HEX: 8078
+CONSTANT: GL_EDGE_FLAG_ARRAY HEX: 8079
+CONSTANT: GL_VERTEX_ARRAY_SIZE HEX: 807A
+CONSTANT: GL_VERTEX_ARRAY_TYPE HEX: 807B
+CONSTANT: GL_VERTEX_ARRAY_STRIDE HEX: 807C
+CONSTANT: GL_NORMAL_ARRAY_TYPE HEX: 807E
+CONSTANT: GL_NORMAL_ARRAY_STRIDE HEX: 807F
+CONSTANT: GL_COLOR_ARRAY_SIZE HEX: 8081
+CONSTANT: GL_COLOR_ARRAY_TYPE HEX: 8082
+CONSTANT: GL_COLOR_ARRAY_STRIDE HEX: 8083
+CONSTANT: GL_INDEX_ARRAY_TYPE HEX: 8085
+CONSTANT: GL_INDEX_ARRAY_STRIDE HEX: 8086
+CONSTANT: GL_TEXTURE_COORD_ARRAY_SIZE HEX: 8088
+CONSTANT: GL_TEXTURE_COORD_ARRAY_TYPE HEX: 8089
+CONSTANT: GL_TEXTURE_COORD_ARRAY_STRIDE HEX: 808A
+CONSTANT: GL_EDGE_FLAG_ARRAY_STRIDE HEX: 808C
+CONSTANT: GL_VERTEX_ARRAY_POINTER HEX: 808E
+CONSTANT: GL_NORMAL_ARRAY_POINTER HEX: 808F
+CONSTANT: GL_COLOR_ARRAY_POINTER HEX: 8090
+CONSTANT: GL_INDEX_ARRAY_POINTER HEX: 8091
+CONSTANT: GL_TEXTURE_COORD_ARRAY_POINTER HEX: 8092
+CONSTANT: GL_EDGE_FLAG_ARRAY_POINTER HEX: 8093
+CONSTANT: GL_V2F HEX: 2A20
+CONSTANT: GL_V3F HEX: 2A21
+CONSTANT: GL_C4UB_V2F HEX: 2A22
+CONSTANT: GL_C4UB_V3F HEX: 2A23
+CONSTANT: GL_C3F_V3F HEX: 2A24
+CONSTANT: GL_N3F_V3F HEX: 2A25
+CONSTANT: GL_C4F_N3F_V3F HEX: 2A26
+CONSTANT: GL_T2F_V3F HEX: 2A27
+CONSTANT: GL_T4F_V4F HEX: 2A28
+CONSTANT: GL_T2F_C4UB_V3F HEX: 2A29
+CONSTANT: GL_T2F_C3F_V3F HEX: 2A2A
+CONSTANT: GL_T2F_N3F_V3F HEX: 2A2B
+CONSTANT: GL_T2F_C4F_N3F_V3F HEX: 2A2C
+CONSTANT: GL_T4F_C4F_N3F_V4F HEX: 2A2D
! Matrix mode
-: GL_MATRIX_MODE HEX: 0BA0 ; inline
-: GL_MODELVIEW HEX: 1700 ; inline
-: GL_PROJECTION HEX: 1701 ; inline
-: GL_TEXTURE HEX: 1702 ; inline
+CONSTANT: GL_MATRIX_MODE HEX: 0BA0
+CONSTANT: GL_MODELVIEW HEX: 1700
+CONSTANT: GL_PROJECTION HEX: 1701
+CONSTANT: GL_TEXTURE HEX: 1702
! Points
-: GL_POINT_SMOOTH HEX: 0B10 ; inline
-: GL_POINT_SIZE HEX: 0B11 ; inline
-: GL_POINT_SIZE_GRANULARITY HEX: 0B13 ; inline
-: GL_POINT_SIZE_RANGE HEX: 0B12 ; inline
+CONSTANT: GL_POINT_SMOOTH HEX: 0B10
+CONSTANT: GL_POINT_SIZE HEX: 0B11
+CONSTANT: GL_POINT_SIZE_GRANULARITY HEX: 0B13
+CONSTANT: GL_POINT_SIZE_RANGE HEX: 0B12
! Lines
-: GL_LINE_SMOOTH HEX: 0B20 ; inline
-: GL_LINE_STIPPLE HEX: 0B24 ; inline
-: GL_LINE_STIPPLE_PATTERN HEX: 0B25 ; inline
-: GL_LINE_STIPPLE_REPEAT HEX: 0B26 ; inline
-: GL_LINE_WIDTH HEX: 0B21 ; inline
-: GL_LINE_WIDTH_GRANULARITY HEX: 0B23 ; inline
-: GL_LINE_WIDTH_RANGE HEX: 0B22 ; inline
+CONSTANT: GL_LINE_SMOOTH HEX: 0B20
+CONSTANT: GL_LINE_STIPPLE HEX: 0B24
+CONSTANT: GL_LINE_STIPPLE_PATTERN HEX: 0B25
+CONSTANT: GL_LINE_STIPPLE_REPEAT HEX: 0B26
+CONSTANT: GL_LINE_WIDTH HEX: 0B21
+CONSTANT: GL_LINE_WIDTH_GRANULARITY HEX: 0B23
+CONSTANT: GL_LINE_WIDTH_RANGE HEX: 0B22
! Polygons
-: GL_POINT HEX: 1B00 ; inline
-: GL_LINE HEX: 1B01 ; inline
-: GL_FILL HEX: 1B02 ; inline
-: GL_CW HEX: 0900 ; inline
-: GL_CCW HEX: 0901 ; inline
-: GL_FRONT HEX: 0404 ; inline
-: GL_BACK HEX: 0405 ; inline
-: GL_POLYGON_MODE HEX: 0B40 ; inline
-: GL_POLYGON_SMOOTH HEX: 0B41 ; inline
-: GL_POLYGON_STIPPLE HEX: 0B42 ; inline
-: GL_EDGE_FLAG HEX: 0B43 ; inline
-: GL_CULL_FACE HEX: 0B44 ; inline
-: GL_CULL_FACE_MODE HEX: 0B45 ; inline
-: GL_FRONT_FACE HEX: 0B46 ; inline
-: GL_POLYGON_OFFSET_FACTOR HEX: 8038 ; inline
-: GL_POLYGON_OFFSET_UNITS HEX: 2A00 ; inline
-: GL_POLYGON_OFFSET_POINT HEX: 2A01 ; inline
-: GL_POLYGON_OFFSET_LINE HEX: 2A02 ; inline
-: GL_POLYGON_OFFSET_FILL HEX: 8037 ; inline
+CONSTANT: GL_POINT HEX: 1B00
+CONSTANT: GL_LINE HEX: 1B01
+CONSTANT: GL_FILL HEX: 1B02
+CONSTANT: GL_CW HEX: 0900
+CONSTANT: GL_CCW HEX: 0901
+CONSTANT: GL_FRONT HEX: 0404
+CONSTANT: GL_BACK HEX: 0405
+CONSTANT: GL_POLYGON_MODE HEX: 0B40
+CONSTANT: GL_POLYGON_SMOOTH HEX: 0B41
+CONSTANT: GL_POLYGON_STIPPLE HEX: 0B42
+CONSTANT: GL_EDGE_FLAG HEX: 0B43
+CONSTANT: GL_CULL_FACE HEX: 0B44
+CONSTANT: GL_CULL_FACE_MODE HEX: 0B45
+CONSTANT: GL_FRONT_FACE HEX: 0B46
+CONSTANT: GL_POLYGON_OFFSET_FACTOR HEX: 8038
+CONSTANT: GL_POLYGON_OFFSET_UNITS HEX: 2A00
+CONSTANT: GL_POLYGON_OFFSET_POINT HEX: 2A01
+CONSTANT: GL_POLYGON_OFFSET_LINE HEX: 2A02
+CONSTANT: GL_POLYGON_OFFSET_FILL HEX: 8037
! Display Lists
-: GL_COMPILE HEX: 1300 ; inline
-: GL_COMPILE_AND_EXECUTE HEX: 1301 ; inline
-: GL_LIST_BASE HEX: 0B32 ; inline
-: GL_LIST_INDEX HEX: 0B33 ; inline
-: GL_LIST_MODE HEX: 0B30 ; inline
+CONSTANT: GL_COMPILE HEX: 1300
+CONSTANT: GL_COMPILE_AND_EXECUTE HEX: 1301
+CONSTANT: GL_LIST_BASE HEX: 0B32
+CONSTANT: GL_LIST_INDEX HEX: 0B33
+CONSTANT: GL_LIST_MODE HEX: 0B30
! Depth buffer
-: GL_NEVER HEX: 0200 ; inline
-: GL_LESS HEX: 0201 ; inline
-: GL_EQUAL HEX: 0202 ; inline
-: GL_LEQUAL HEX: 0203 ; inline
-: GL_GREATER HEX: 0204 ; inline
-: GL_NOTEQUAL HEX: 0205 ; inline
-: GL_GEQUAL HEX: 0206 ; inline
-: GL_ALWAYS HEX: 0207 ; inline
-: GL_DEPTH_TEST HEX: 0B71 ; inline
-: GL_DEPTH_BITS HEX: 0D56 ; inline
-: GL_DEPTH_CLEAR_VALUE HEX: 0B73 ; inline
-: GL_DEPTH_FUNC HEX: 0B74 ; inline
-: GL_DEPTH_RANGE HEX: 0B70 ; inline
-: GL_DEPTH_WRITEMASK HEX: 0B72 ; inline
-: GL_DEPTH_COMPONENT HEX: 1902 ; inline
+CONSTANT: GL_NEVER HEX: 0200
+CONSTANT: GL_LESS HEX: 0201
+CONSTANT: GL_EQUAL HEX: 0202
+CONSTANT: GL_LEQUAL HEX: 0203
+CONSTANT: GL_GREATER HEX: 0204
+CONSTANT: GL_NOTEQUAL HEX: 0205
+CONSTANT: GL_GEQUAL HEX: 0206
+CONSTANT: GL_ALWAYS HEX: 0207
+CONSTANT: GL_DEPTH_TEST HEX: 0B71
+CONSTANT: GL_DEPTH_BITS HEX: 0D56
+CONSTANT: GL_DEPTH_CLEAR_VALUE HEX: 0B73
+CONSTANT: GL_DEPTH_FUNC HEX: 0B74
+CONSTANT: GL_DEPTH_RANGE HEX: 0B70
+CONSTANT: GL_DEPTH_WRITEMASK HEX: 0B72
+CONSTANT: GL_DEPTH_COMPONENT HEX: 1902
! Lighting
-: GL_LIGHTING HEX: 0B50 ; inline
-: GL_LIGHT0 HEX: 4000 ; inline
-: GL_LIGHT1 HEX: 4001 ; inline
-: GL_LIGHT2 HEX: 4002 ; inline
-: GL_LIGHT3 HEX: 4003 ; inline
-: GL_LIGHT4 HEX: 4004 ; inline
-: GL_LIGHT5 HEX: 4005 ; inline
-: GL_LIGHT6 HEX: 4006 ; inline
-: GL_LIGHT7 HEX: 4007 ; inline
-: GL_SPOT_EXPONENT HEX: 1205 ; inline
-: GL_SPOT_CUTOFF HEX: 1206 ; inline
-: GL_CONSTANT_ATTENUATION HEX: 1207 ; inline
-: GL_LINEAR_ATTENUATION HEX: 1208 ; inline
-: GL_QUADRATIC_ATTENUATION HEX: 1209 ; inline
-: GL_AMBIENT HEX: 1200 ; inline
-: GL_DIFFUSE HEX: 1201 ; inline
-: GL_SPECULAR HEX: 1202 ; inline
-: GL_SHININESS HEX: 1601 ; inline
-: GL_EMISSION HEX: 1600 ; inline
-: GL_POSITION HEX: 1203 ; inline
-: GL_SPOT_DIRECTION HEX: 1204 ; inline
-: GL_AMBIENT_AND_DIFFUSE HEX: 1602 ; inline
-: GL_COLOR_INDEXES HEX: 1603 ; inline
-: GL_LIGHT_MODEL_TWO_SIDE HEX: 0B52 ; inline
-: GL_LIGHT_MODEL_LOCAL_VIEWER HEX: 0B51 ; inline
-: GL_LIGHT_MODEL_AMBIENT HEX: 0B53 ; inline
-: GL_FRONT_AND_BACK HEX: 0408 ; inline
-: GL_SHADE_MODEL HEX: 0B54 ; inline
-: GL_FLAT HEX: 1D00 ; inline
-: GL_SMOOTH HEX: 1D01 ; inline
-: GL_COLOR_MATERIAL HEX: 0B57 ; inline
-: GL_COLOR_MATERIAL_FACE HEX: 0B55 ; inline
-: GL_COLOR_MATERIAL_PARAMETER HEX: 0B56 ; inline
-: GL_NORMALIZE HEX: 0BA1 ; inline
+CONSTANT: GL_LIGHTING HEX: 0B50
+CONSTANT: GL_LIGHT0 HEX: 4000
+CONSTANT: GL_LIGHT1 HEX: 4001
+CONSTANT: GL_LIGHT2 HEX: 4002
+CONSTANT: GL_LIGHT3 HEX: 4003
+CONSTANT: GL_LIGHT4 HEX: 4004
+CONSTANT: GL_LIGHT5 HEX: 4005
+CONSTANT: GL_LIGHT6 HEX: 4006
+CONSTANT: GL_LIGHT7 HEX: 4007
+CONSTANT: GL_SPOT_EXPONENT HEX: 1205
+CONSTANT: GL_SPOT_CUTOFF HEX: 1206
+CONSTANT: GL_CONSTANT_ATTENUATION HEX: 1207
+CONSTANT: GL_LINEAR_ATTENUATION HEX: 1208
+CONSTANT: GL_QUADRATIC_ATTENUATION HEX: 1209
+CONSTANT: GL_AMBIENT HEX: 1200
+CONSTANT: GL_DIFFUSE HEX: 1201
+CONSTANT: GL_SPECULAR HEX: 1202
+CONSTANT: GL_SHININESS HEX: 1601
+CONSTANT: GL_EMISSION HEX: 1600
+CONSTANT: GL_POSITION HEX: 1203
+CONSTANT: GL_SPOT_DIRECTION HEX: 1204
+CONSTANT: GL_AMBIENT_AND_DIFFUSE HEX: 1602
+CONSTANT: GL_COLOR_INDEXES HEX: 1603
+CONSTANT: GL_LIGHT_MODEL_TWO_SIDE HEX: 0B52
+CONSTANT: GL_LIGHT_MODEL_LOCAL_VIEWER HEX: 0B51
+CONSTANT: GL_LIGHT_MODEL_AMBIENT HEX: 0B53
+CONSTANT: GL_FRONT_AND_BACK HEX: 0408
+CONSTANT: GL_SHADE_MODEL HEX: 0B54
+CONSTANT: GL_FLAT HEX: 1D00
+CONSTANT: GL_SMOOTH HEX: 1D01
+CONSTANT: GL_COLOR_MATERIAL HEX: 0B57
+CONSTANT: GL_COLOR_MATERIAL_FACE HEX: 0B55
+CONSTANT: GL_COLOR_MATERIAL_PARAMETER HEX: 0B56
+CONSTANT: GL_NORMALIZE HEX: 0BA1
! User clipping planes
-: GL_CLIP_PLANE0 HEX: 3000 ; inline
-: GL_CLIP_PLANE1 HEX: 3001 ; inline
-: GL_CLIP_PLANE2 HEX: 3002 ; inline
-: GL_CLIP_PLANE3 HEX: 3003 ; inline
-: GL_CLIP_PLANE4 HEX: 3004 ; inline
-: GL_CLIP_PLANE5 HEX: 3005 ; inline
+CONSTANT: GL_CLIP_PLANE0 HEX: 3000
+CONSTANT: GL_CLIP_PLANE1 HEX: 3001
+CONSTANT: GL_CLIP_PLANE2 HEX: 3002
+CONSTANT: GL_CLIP_PLANE3 HEX: 3003
+CONSTANT: GL_CLIP_PLANE4 HEX: 3004
+CONSTANT: GL_CLIP_PLANE5 HEX: 3005
! Accumulation buffer
-: GL_ACCUM_RED_BITS HEX: 0D58 ; inline
-: GL_ACCUM_GREEN_BITS HEX: 0D59 ; inline
-: GL_ACCUM_BLUE_BITS HEX: 0D5A ; inline
-: GL_ACCUM_ALPHA_BITS HEX: 0D5B ; inline
-: GL_ACCUM_CLEAR_VALUE HEX: 0B80 ; inline
-: GL_ACCUM HEX: 0100 ; inline
-: GL_ADD HEX: 0104 ; inline
-: GL_LOAD HEX: 0101 ; inline
-: GL_MULT HEX: 0103 ; inline
-: GL_RETURN HEX: 0102 ; inline
+CONSTANT: GL_ACCUM_RED_BITS HEX: 0D58
+CONSTANT: GL_ACCUM_GREEN_BITS HEX: 0D59
+CONSTANT: GL_ACCUM_BLUE_BITS HEX: 0D5A
+CONSTANT: GL_ACCUM_ALPHA_BITS HEX: 0D5B
+CONSTANT: GL_ACCUM_CLEAR_VALUE HEX: 0B80
+CONSTANT: GL_ACCUM HEX: 0100
+CONSTANT: GL_ADD HEX: 0104
+CONSTANT: GL_LOAD HEX: 0101
+CONSTANT: GL_MULT HEX: 0103
+CONSTANT: GL_RETURN HEX: 0102
! Alpha testing
-: GL_ALPHA_TEST HEX: 0BC0 ; inline
-: GL_ALPHA_TEST_REF HEX: 0BC2 ; inline
-: GL_ALPHA_TEST_FUNC HEX: 0BC1 ; inline
+CONSTANT: GL_ALPHA_TEST HEX: 0BC0
+CONSTANT: GL_ALPHA_TEST_REF HEX: 0BC2
+CONSTANT: GL_ALPHA_TEST_FUNC HEX: 0BC1
! Blending
-: GL_BLEND HEX: 0BE2 ; inline
-: GL_BLEND_SRC HEX: 0BE1 ; inline
-: GL_BLEND_DST HEX: 0BE0 ; inline
-: GL_ZERO HEX: 0 ; inline
-: GL_ONE HEX: 1 ; inline
-: GL_SRC_COLOR HEX: 0300 ; inline
-: GL_ONE_MINUS_SRC_COLOR HEX: 0301 ; inline
-: GL_SRC_ALPHA HEX: 0302 ; inline
-: GL_ONE_MINUS_SRC_ALPHA HEX: 0303 ; inline
-: GL_DST_ALPHA HEX: 0304 ; inline
-: GL_ONE_MINUS_DST_ALPHA HEX: 0305 ; inline
-: GL_DST_COLOR HEX: 0306 ; inline
-: GL_ONE_MINUS_DST_COLOR HEX: 0307 ; inline
-: GL_SRC_ALPHA_SATURATE HEX: 0308 ; inline
+CONSTANT: GL_BLEND HEX: 0BE2
+CONSTANT: GL_BLEND_SRC HEX: 0BE1
+CONSTANT: GL_BLEND_DST HEX: 0BE0
+CONSTANT: GL_ZERO HEX: 0
+CONSTANT: GL_ONE HEX: 1
+CONSTANT: GL_SRC_COLOR HEX: 0300
+CONSTANT: GL_ONE_MINUS_SRC_COLOR HEX: 0301
+CONSTANT: GL_SRC_ALPHA HEX: 0302
+CONSTANT: GL_ONE_MINUS_SRC_ALPHA HEX: 0303
+CONSTANT: GL_DST_ALPHA HEX: 0304
+CONSTANT: GL_ONE_MINUS_DST_ALPHA HEX: 0305
+CONSTANT: GL_DST_COLOR HEX: 0306
+CONSTANT: GL_ONE_MINUS_DST_COLOR HEX: 0307
+CONSTANT: GL_SRC_ALPHA_SATURATE HEX: 0308
! Render Mode
-: GL_FEEDBACK HEX: 1C01 ; inline
-: GL_RENDER HEX: 1C00 ; inline
-: GL_SELECT HEX: 1C02 ; inline
+CONSTANT: GL_FEEDBACK HEX: 1C01
+CONSTANT: GL_RENDER HEX: 1C00
+CONSTANT: GL_SELECT HEX: 1C02
! Feedback
-: GL_2D HEX: 0600 ; inline
-: GL_3D HEX: 0601 ; inline
-: GL_3D_COLOR HEX: 0602 ; inline
-: GL_3D_COLOR_TEXTURE HEX: 0603 ; inline
-: GL_4D_COLOR_TEXTURE HEX: 0604 ; inline
-: GL_POINT_TOKEN HEX: 0701 ; inline
-: GL_LINE_TOKEN HEX: 0702 ; inline
-: GL_LINE_RESET_TOKEN HEX: 0707 ; inline
-: GL_POLYGON_TOKEN HEX: 0703 ; inline
-: GL_BITMAP_TOKEN HEX: 0704 ; inline
-: GL_DRAW_PIXEL_TOKEN HEX: 0705 ; inline
-: GL_COPY_PIXEL_TOKEN HEX: 0706 ; inline
-: GL_PASS_THROUGH_TOKEN HEX: 0700 ; inline
-: GL_FEEDBACK_BUFFER_POINTER HEX: 0DF0 ; inline
-: GL_FEEDBACK_BUFFER_SIZE HEX: 0DF1 ; inline
-: GL_FEEDBACK_BUFFER_TYPE HEX: 0DF2 ; inline
+CONSTANT: GL_2D HEX: 0600
+CONSTANT: GL_3D HEX: 0601
+CONSTANT: GL_3D_COLOR HEX: 0602
+CONSTANT: GL_3D_COLOR_TEXTURE HEX: 0603
+CONSTANT: GL_4D_COLOR_TEXTURE HEX: 0604
+CONSTANT: GL_POINT_TOKEN HEX: 0701
+CONSTANT: GL_LINE_TOKEN HEX: 0702
+CONSTANT: GL_LINE_RESET_TOKEN HEX: 0707
+CONSTANT: GL_POLYGON_TOKEN HEX: 0703
+CONSTANT: GL_BITMAP_TOKEN HEX: 0704
+CONSTANT: GL_DRAW_PIXEL_TOKEN HEX: 0705
+CONSTANT: GL_COPY_PIXEL_TOKEN HEX: 0706
+CONSTANT: GL_PASS_THROUGH_TOKEN HEX: 0700
+CONSTANT: GL_FEEDBACK_BUFFER_POINTER HEX: 0DF0
+CONSTANT: GL_FEEDBACK_BUFFER_SIZE HEX: 0DF1
+CONSTANT: GL_FEEDBACK_BUFFER_TYPE HEX: 0DF2
! Selection
-: GL_SELECTION_BUFFER_POINTER HEX: 0DF3 ; inline
-: GL_SELECTION_BUFFER_SIZE HEX: 0DF4 ; inline
+CONSTANT: GL_SELECTION_BUFFER_POINTER HEX: 0DF3
+CONSTANT: GL_SELECTION_BUFFER_SIZE HEX: 0DF4
! Fog
-: GL_FOG HEX: 0B60 ; inline
-: GL_FOG_MODE HEX: 0B65 ; inline
-: GL_FOG_DENSITY HEX: 0B62 ; inline
-: GL_FOG_COLOR HEX: 0B66 ; inline
-: GL_FOG_INDEX HEX: 0B61 ; inline
-: GL_FOG_START HEX: 0B63 ; inline
-: GL_FOG_END HEX: 0B64 ; inline
-: GL_LINEAR HEX: 2601 ; inline
-: GL_EXP HEX: 0800 ; inline
-: GL_EXP2 HEX: 0801 ; inline
+CONSTANT: GL_FOG HEX: 0B60
+CONSTANT: GL_FOG_MODE HEX: 0B65
+CONSTANT: GL_FOG_DENSITY HEX: 0B62
+CONSTANT: GL_FOG_COLOR HEX: 0B66
+CONSTANT: GL_FOG_INDEX HEX: 0B61
+CONSTANT: GL_FOG_START HEX: 0B63
+CONSTANT: GL_FOG_END HEX: 0B64
+CONSTANT: GL_LINEAR HEX: 2601
+CONSTANT: GL_EXP HEX: 0800
+CONSTANT: GL_EXP2 HEX: 0801
! Logic Ops
-: GL_LOGIC_OP HEX: 0BF1 ; inline
-: GL_INDEX_LOGIC_OP HEX: 0BF1 ; inline
-: GL_COLOR_LOGIC_OP HEX: 0BF2 ; inline
-: GL_LOGIC_OP_MODE HEX: 0BF0 ; inline
-: GL_CLEAR HEX: 1500 ; inline
-: GL_SET HEX: 150F ; inline
-: GL_COPY HEX: 1503 ; inline
-: GL_COPY_INVERTED HEX: 150C ; inline
-: GL_NOOP HEX: 1505 ; inline
-: GL_INVERT HEX: 150A ; inline
-: GL_AND HEX: 1501 ; inline
-: GL_NAND HEX: 150E ; inline
-: GL_OR HEX: 1507 ; inline
-: GL_NOR HEX: 1508 ; inline
-: GL_XOR HEX: 1506 ; inline
-: GL_EQUIV HEX: 1509 ; inline
-: GL_AND_REVERSE HEX: 1502 ; inline
-: GL_AND_INVERTED HEX: 1504 ; inline
-: GL_OR_REVERSE HEX: 150B ; inline
-: GL_OR_INVERTED HEX: 150D ; inline
+CONSTANT: GL_LOGIC_OP HEX: 0BF1
+CONSTANT: GL_INDEX_LOGIC_OP HEX: 0BF1
+CONSTANT: GL_COLOR_LOGIC_OP HEX: 0BF2
+CONSTANT: GL_LOGIC_OP_MODE HEX: 0BF0
+CONSTANT: GL_CLEAR HEX: 1500
+CONSTANT: GL_SET HEX: 150F
+CONSTANT: GL_COPY HEX: 1503
+CONSTANT: GL_COPY_INVERTED HEX: 150C
+CONSTANT: GL_NOOP HEX: 1505
+CONSTANT: GL_INVERT HEX: 150A
+CONSTANT: GL_AND HEX: 1501
+CONSTANT: GL_NAND HEX: 150E
+CONSTANT: GL_OR HEX: 1507
+CONSTANT: GL_NOR HEX: 1508
+CONSTANT: GL_XOR HEX: 1506
+CONSTANT: GL_EQUIV HEX: 1509
+CONSTANT: GL_AND_REVERSE HEX: 1502
+CONSTANT: GL_AND_INVERTED HEX: 1504
+CONSTANT: GL_OR_REVERSE HEX: 150B
+CONSTANT: GL_OR_INVERTED HEX: 150D
! Stencil
-: GL_STENCIL_TEST HEX: 0B90 ; inline
-: GL_STENCIL_WRITEMASK HEX: 0B98 ; inline
-: GL_STENCIL_BITS HEX: 0D57 ; inline
-: GL_STENCIL_FUNC HEX: 0B92 ; inline
-: GL_STENCIL_VALUE_MASK HEX: 0B93 ; inline
-: GL_STENCIL_REF HEX: 0B97 ; inline
-: GL_STENCIL_FAIL HEX: 0B94 ; inline
-: GL_STENCIL_PASS_DEPTH_PASS HEX: 0B96 ; inline
-: GL_STENCIL_PASS_DEPTH_FAIL HEX: 0B95 ; inline
-: GL_STENCIL_CLEAR_VALUE HEX: 0B91 ; inline
-: GL_STENCIL_INDEX HEX: 1901 ; inline
-: GL_KEEP HEX: 1E00 ; inline
-: GL_REPLACE HEX: 1E01 ; inline
-: GL_INCR HEX: 1E02 ; inline
-: GL_DECR HEX: 1E03 ; inline
+CONSTANT: GL_STENCIL_TEST HEX: 0B90
+CONSTANT: GL_STENCIL_WRITEMASK HEX: 0B98
+CONSTANT: GL_STENCIL_BITS HEX: 0D57
+CONSTANT: GL_STENCIL_FUNC HEX: 0B92
+CONSTANT: GL_STENCIL_VALUE_MASK HEX: 0B93
+CONSTANT: GL_STENCIL_REF HEX: 0B97
+CONSTANT: GL_STENCIL_FAIL HEX: 0B94
+CONSTANT: GL_STENCIL_PASS_DEPTH_PASS HEX: 0B96
+CONSTANT: GL_STENCIL_PASS_DEPTH_FAIL HEX: 0B95
+CONSTANT: GL_STENCIL_CLEAR_VALUE HEX: 0B91
+CONSTANT: GL_STENCIL_INDEX HEX: 1901
+CONSTANT: GL_KEEP HEX: 1E00
+CONSTANT: GL_REPLACE HEX: 1E01
+CONSTANT: GL_INCR HEX: 1E02
+CONSTANT: GL_DECR HEX: 1E03
! Buffers, Pixel Drawing/Reading
-: GL_NONE HEX: 0 ; inline
-: GL_LEFT HEX: 0406 ; inline
-: GL_RIGHT HEX: 0407 ; inline
-! defined elsewhere
-! GL_FRONT HEX: 0404
-! GL_BACK HEX: 0405
-! GL_FRONT_AND_BACK HEX: 0408
-: GL_FRONT_LEFT HEX: 0400 ; inline
-: GL_FRONT_RIGHT HEX: 0401 ; inline
-: GL_BACK_LEFT HEX: 0402 ; inline
-: GL_BACK_RIGHT HEX: 0403 ; inline
-: GL_AUX0 HEX: 0409 ; inline
-: GL_AUX1 HEX: 040A ; inline
-: GL_AUX2 HEX: 040B ; inline
-: GL_AUX3 HEX: 040C ; inline
-: GL_COLOR_INDEX HEX: 1900 ; inline
-: GL_RED HEX: 1903 ; inline
-: GL_GREEN HEX: 1904 ; inline
-: GL_BLUE HEX: 1905 ; inline
-: GL_ALPHA HEX: 1906 ; inline
-: GL_LUMINANCE HEX: 1909 ; inline
-: GL_LUMINANCE_ALPHA HEX: 190A ; inline
-: GL_ALPHA_BITS HEX: 0D55 ; inline
-: GL_RED_BITS HEX: 0D52 ; inline
-: GL_GREEN_BITS HEX: 0D53 ; inline
-: GL_BLUE_BITS HEX: 0D54 ; inline
-: GL_INDEX_BITS HEX: 0D51 ; inline
-: GL_SUBPIXEL_BITS HEX: 0D50 ; inline
-: GL_AUX_BUFFERS HEX: 0C00 ; inline
-: GL_READ_BUFFER HEX: 0C02 ; inline
-: GL_DRAW_BUFFER HEX: 0C01 ; inline
-: GL_DOUBLEBUFFER HEX: 0C32 ; inline
-: GL_STEREO HEX: 0C33 ; inline
-: GL_BITMAP HEX: 1A00 ; inline
-: GL_COLOR HEX: 1800 ; inline
-: GL_DEPTH HEX: 1801 ; inline
-: GL_STENCIL HEX: 1802 ; inline
-: GL_DITHER HEX: 0BD0 ; inline
-: GL_RGB HEX: 1907 ; inline
-: GL_RGBA HEX: 1908 ; inline
+CONSTANT: GL_NONE HEX: 0
+CONSTANT: GL_LEFT HEX: 0406
+CONSTANT: GL_RIGHT HEX: 0407
+
+CONSTANT: GL_FRONT_RIGHT HEX: 0401
+CONSTANT: GL_BACK_LEFT HEX: 0402
+CONSTANT: GL_BACK_RIGHT HEX: 0403
+CONSTANT: GL_AUX0 HEX: 0409
+CONSTANT: GL_AUX1 HEX: 040A
+CONSTANT: GL_AUX2 HEX: 040B
+CONSTANT: GL_AUX3 HEX: 040C
+CONSTANT: GL_COLOR_INDEX HEX: 1900
+CONSTANT: GL_RED HEX: 1903
+CONSTANT: GL_GREEN HEX: 1904
+CONSTANT: GL_BLUE HEX: 1905
+CONSTANT: GL_ALPHA HEX: 1906
+CONSTANT: GL_LUMINANCE HEX: 1909
+CONSTANT: GL_LUMINANCE_ALPHA HEX: 190A
+CONSTANT: GL_ALPHA_BITS HEX: 0D55
+CONSTANT: GL_RED_BITS HEX: 0D52
+CONSTANT: GL_GREEN_BITS HEX: 0D53
+CONSTANT: GL_BLUE_BITS HEX: 0D54
+CONSTANT: GL_INDEX_BITS HEX: 0D51
+CONSTANT: GL_SUBPIXEL_BITS HEX: 0D50
+CONSTANT: GL_AUX_BUFFERS HEX: 0C00
+CONSTANT: GL_READ_BUFFER HEX: 0C02
+CONSTANT: GL_DRAW_BUFFER HEX: 0C01
+CONSTANT: GL_DOUBLEBUFFER HEX: 0C32
+CONSTANT: GL_STEREO HEX: 0C33
+CONSTANT: GL_BITMAP HEX: 1A00
+CONSTANT: GL_COLOR HEX: 1800
+CONSTANT: GL_DEPTH HEX: 1801
+CONSTANT: GL_STENCIL HEX: 1802
+CONSTANT: GL_DITHER HEX: 0BD0
+CONSTANT: GL_RGB HEX: 1907
+CONSTANT: GL_RGBA HEX: 1908
! Implementation limits
-: GL_MAX_LIST_NESTING HEX: 0B31 ; inline
-: GL_MAX_ATTRIB_STACK_DEPTH HEX: 0D35 ; inline
-: GL_MAX_MODELVIEW_STACK_DEPTH HEX: 0D36 ; inline
-: GL_MAX_NAME_STACK_DEPTH HEX: 0D37 ; inline
-: GL_MAX_PROJECTION_STACK_DEPTH HEX: 0D38 ; inline
-: GL_MAX_TEXTURE_STACK_DEPTH HEX: 0D39 ; inline
-: GL_MAX_EVAL_ORDER HEX: 0D30 ; inline
-: GL_MAX_LIGHTS HEX: 0D31 ; inline
-: GL_MAX_CLIP_PLANES HEX: 0D32 ; inline
-: GL_MAX_TEXTURE_SIZE HEX: 0D33 ; inline
-: GL_MAX_PIXEL_MAP_TABLE HEX: 0D34 ; inline
-: GL_MAX_VIEWPORT_DIMS HEX: 0D3A ; inline
-: GL_MAX_CLIENT_ATTRIB_STACK_DEPTH HEX: 0D3B ; inline
+CONSTANT: GL_MAX_LIST_NESTING HEX: 0B31
+CONSTANT: GL_MAX_ATTRIB_STACK_DEPTH HEX: 0D35
+CONSTANT: GL_MAX_MODELVIEW_STACK_DEPTH HEX: 0D36
+CONSTANT: GL_MAX_NAME_STACK_DEPTH HEX: 0D37
+CONSTANT: GL_MAX_PROJECTION_STACK_DEPTH HEX: 0D38
+CONSTANT: GL_MAX_TEXTURE_STACK_DEPTH HEX: 0D39
+CONSTANT: GL_MAX_EVAL_ORDER HEX: 0D30
+CONSTANT: GL_MAX_LIGHTS HEX: 0D31
+CONSTANT: GL_MAX_CLIP_PLANES HEX: 0D32
+CONSTANT: GL_MAX_TEXTURE_SIZE HEX: 0D33
+CONSTANT: GL_MAX_PIXEL_MAP_TABLE HEX: 0D34
+CONSTANT: GL_MAX_VIEWPORT_DIMS HEX: 0D3A
+CONSTANT: GL_MAX_CLIENT_ATTRIB_STACK_DEPTH HEX: 0D3B
! Gets
-: GL_ATTRIB_STACK_DEPTH HEX: 0BB0 ; inline
-: GL_CLIENT_ATTRIB_STACK_DEPTH HEX: 0BB1 ; inline
-: GL_COLOR_CLEAR_VALUE HEX: 0C22 ; inline
-: GL_COLOR_WRITEMASK HEX: 0C23 ; inline
-: GL_CURRENT_INDEX HEX: 0B01 ; inline
-: GL_CURRENT_COLOR HEX: 0B00 ; inline
-: GL_CURRENT_NORMAL HEX: 0B02 ; inline
-: GL_CURRENT_RASTER_COLOR HEX: 0B04 ; inline
-: GL_CURRENT_RASTER_DISTANCE HEX: 0B09 ; inline
-: GL_CURRENT_RASTER_INDEX HEX: 0B05 ; inline
-: GL_CURRENT_RASTER_POSITION HEX: 0B07 ; inline
-: GL_CURRENT_RASTER_TEXTURE_COORDS HEX: 0B06 ; inline
-: GL_CURRENT_RASTER_POSITION_VALID HEX: 0B08 ; inline
-: GL_CURRENT_TEXTURE_COORDS HEX: 0B03 ; inline
-: GL_INDEX_CLEAR_VALUE HEX: 0C20 ; inline
-: GL_INDEX_MODE HEX: 0C30 ; inline
-: GL_INDEX_WRITEMASK HEX: 0C21 ; inline
-: GL_MODELVIEW_MATRIX HEX: 0BA6 ; inline
-: GL_MODELVIEW_STACK_DEPTH HEX: 0BA3 ; inline
-: GL_NAME_STACK_DEPTH HEX: 0D70 ; inline
-: GL_PROJECTION_MATRIX HEX: 0BA7 ; inline
-: GL_PROJECTION_STACK_DEPTH HEX: 0BA4 ; inline
-: GL_RENDER_MODE HEX: 0C40 ; inline
-: GL_RGBA_MODE HEX: 0C31 ; inline
-: GL_TEXTURE_MATRIX HEX: 0BA8 ; inline
-: GL_TEXTURE_STACK_DEPTH HEX: 0BA5 ; inline
-: GL_VIEWPORT HEX: 0BA2 ; inline
+CONSTANT: GL_ATTRIB_STACK_DEPTH HEX: 0BB0
+CONSTANT: GL_CLIENT_ATTRIB_STACK_DEPTH HEX: 0BB1
+CONSTANT: GL_COLOR_CLEAR_VALUE HEX: 0C22
+CONSTANT: GL_COLOR_WRITEMASK HEX: 0C23
+CONSTANT: GL_CURRENT_INDEX HEX: 0B01
+CONSTANT: GL_CURRENT_COLOR HEX: 0B00
+CONSTANT: GL_CURRENT_NORMAL HEX: 0B02
+CONSTANT: GL_CURRENT_RASTER_COLOR HEX: 0B04
+CONSTANT: GL_CURRENT_RASTER_DISTANCE HEX: 0B09
+CONSTANT: GL_CURRENT_RASTER_INDEX HEX: 0B05
+CONSTANT: GL_CURRENT_RASTER_POSITION HEX: 0B07
+CONSTANT: GL_CURRENT_RASTER_TEXTURE_COORDS HEX: 0B06
+CONSTANT: GL_CURRENT_RASTER_POSITION_VALID HEX: 0B08
+CONSTANT: GL_CURRENT_TEXTURE_COORDS HEX: 0B03
+CONSTANT: GL_INDEX_CLEAR_VALUE HEX: 0C20
+CONSTANT: GL_INDEX_MODE HEX: 0C30
+CONSTANT: GL_INDEX_WRITEMASK HEX: 0C21
+CONSTANT: GL_MODELVIEW_MATRIX HEX: 0BA6
+CONSTANT: GL_MODELVIEW_STACK_DEPTH HEX: 0BA3
+CONSTANT: GL_NAME_STACK_DEPTH HEX: 0D70
+CONSTANT: GL_PROJECTION_MATRIX HEX: 0BA7
+CONSTANT: GL_PROJECTION_STACK_DEPTH HEX: 0BA4
+CONSTANT: GL_RENDER_MODE HEX: 0C40
+CONSTANT: GL_RGBA_MODE HEX: 0C31
+CONSTANT: GL_TEXTURE_MATRIX HEX: 0BA8
+CONSTANT: GL_TEXTURE_STACK_DEPTH HEX: 0BA5
+CONSTANT: GL_VIEWPORT HEX: 0BA2
! Evaluators inline
-: GL_AUTO_NORMAL HEX: 0D80 ; inline
-: GL_MAP1_COLOR_4 HEX: 0D90 ; inline
-: GL_MAP1_INDEX HEX: 0D91 ; inline
-: GL_MAP1_NORMAL HEX: 0D92 ; inline
-: GL_MAP1_TEXTURE_COORD_1 HEX: 0D93 ; inline
-: GL_MAP1_TEXTURE_COORD_2 HEX: 0D94 ; inline
-: GL_MAP1_TEXTURE_COORD_3 HEX: 0D95 ; inline
-: GL_MAP1_TEXTURE_COORD_4 HEX: 0D96 ; inline
-: GL_MAP1_VERTEX_3 HEX: 0D97 ; inline
-: GL_MAP1_VERTEX_4 HEX: 0D98 ; inline
-: GL_MAP2_COLOR_4 HEX: 0DB0 ; inline
-: GL_MAP2_INDEX HEX: 0DB1 ; inline
-: GL_MAP2_NORMAL HEX: 0DB2 ; inline
-: GL_MAP2_TEXTURE_COORD_1 HEX: 0DB3 ; inline
-: GL_MAP2_TEXTURE_COORD_2 HEX: 0DB4 ; inline
-: GL_MAP2_TEXTURE_COORD_3 HEX: 0DB5 ; inline
-: GL_MAP2_TEXTURE_COORD_4 HEX: 0DB6 ; inline
-: GL_MAP2_VERTEX_3 HEX: 0DB7 ; inline
-: GL_MAP2_VERTEX_4 HEX: 0DB8 ; inline
-: GL_MAP1_GRID_DOMAIN HEX: 0DD0 ; inline
-: GL_MAP1_GRID_SEGMENTS HEX: 0DD1 ; inline
-: GL_MAP2_GRID_DOMAIN HEX: 0DD2 ; inline
-: GL_MAP2_GRID_SEGMENTS HEX: 0DD3 ; inline
-: GL_COEFF HEX: 0A00 ; inline
-: GL_DOMAIN HEX: 0A02 ; inline
-: GL_ORDER HEX: 0A01 ; inline
+CONSTANT: GL_AUTO_NORMAL HEX: 0D80
+CONSTANT: GL_MAP1_COLOR_4 HEX: 0D90
+CONSTANT: GL_MAP1_INDEX HEX: 0D91
+CONSTANT: GL_MAP1_NORMAL HEX: 0D92
+CONSTANT: GL_MAP1_TEXTURE_COORD_1 HEX: 0D93
+CONSTANT: GL_MAP1_TEXTURE_COORD_2 HEX: 0D94
+CONSTANT: GL_MAP1_TEXTURE_COORD_3 HEX: 0D95
+CONSTANT: GL_MAP1_TEXTURE_COORD_4 HEX: 0D96
+CONSTANT: GL_MAP1_VERTEX_3 HEX: 0D97
+CONSTANT: GL_MAP1_VERTEX_4 HEX: 0D98
+CONSTANT: GL_MAP2_COLOR_4 HEX: 0DB0
+CONSTANT: GL_MAP2_INDEX HEX: 0DB1
+CONSTANT: GL_MAP2_NORMAL HEX: 0DB2
+CONSTANT: GL_MAP2_TEXTURE_COORD_1 HEX: 0DB3
+CONSTANT: GL_MAP2_TEXTURE_COORD_2 HEX: 0DB4
+CONSTANT: GL_MAP2_TEXTURE_COORD_3 HEX: 0DB5
+CONSTANT: GL_MAP2_TEXTURE_COORD_4 HEX: 0DB6
+CONSTANT: GL_MAP2_VERTEX_3 HEX: 0DB7
+CONSTANT: GL_MAP2_VERTEX_4 HEX: 0DB8
+CONSTANT: GL_MAP1_GRID_DOMAIN HEX: 0DD0
+CONSTANT: GL_MAP1_GRID_SEGMENTS HEX: 0DD1
+CONSTANT: GL_MAP2_GRID_DOMAIN HEX: 0DD2
+CONSTANT: GL_MAP2_GRID_SEGMENTS HEX: 0DD3
+CONSTANT: GL_COEFF HEX: 0A00
+CONSTANT: GL_DOMAIN HEX: 0A02
+CONSTANT: GL_ORDER HEX: 0A01
! Hints inline
-: GL_FOG_HINT HEX: 0C54 ; inline
-: GL_LINE_SMOOTH_HINT HEX: 0C52 ; inline
-: GL_PERSPECTIVE_CORRECTION_HINT HEX: 0C50 ; inline
-: GL_POINT_SMOOTH_HINT HEX: 0C51 ; inline
-: GL_POLYGON_SMOOTH_HINT HEX: 0C53 ; inline
-: GL_DONT_CARE HEX: 1100 ; inline
-: GL_FASTEST HEX: 1101 ; inline
-: GL_NICEST HEX: 1102 ; inline
+CONSTANT: GL_FOG_HINT HEX: 0C54
+CONSTANT: GL_LINE_SMOOTH_HINT HEX: 0C52
+CONSTANT: GL_PERSPECTIVE_CORRECTION_HINT HEX: 0C50
+CONSTANT: GL_POINT_SMOOTH_HINT HEX: 0C51
+CONSTANT: GL_POLYGON_SMOOTH_HINT HEX: 0C53
+CONSTANT: GL_DONT_CARE HEX: 1100
+CONSTANT: GL_FASTEST HEX: 1101
+CONSTANT: GL_NICEST HEX: 1102
! Scissor box inline
-: GL_SCISSOR_TEST HEX: 0C11 ; inline
-: GL_SCISSOR_BOX HEX: 0C10 ; inline
+CONSTANT: GL_SCISSOR_TEST HEX: 0C11
+CONSTANT: GL_SCISSOR_BOX HEX: 0C10
! Pixel Mode / Transfer inline
-: GL_MAP_COLOR HEX: 0D10 ; inline
-: GL_MAP_STENCIL HEX: 0D11 ; inline
-: GL_INDEX_SHIFT HEX: 0D12 ; inline
-: GL_INDEX_OFFSET HEX: 0D13 ; inline
-: GL_RED_SCALE HEX: 0D14 ; inline
-: GL_RED_BIAS HEX: 0D15 ; inline
-: GL_GREEN_SCALE HEX: 0D18 ; inline
-: GL_GREEN_BIAS HEX: 0D19 ; inline
-: GL_BLUE_SCALE HEX: 0D1A ; inline
-: GL_BLUE_BIAS HEX: 0D1B ; inline
-: GL_ALPHA_SCALE HEX: 0D1C ; inline
-: GL_ALPHA_BIAS HEX: 0D1D ; inline
-: GL_DEPTH_SCALE HEX: 0D1E ; inline
-: GL_DEPTH_BIAS HEX: 0D1F ; inline
-: GL_PIXEL_MAP_S_TO_S_SIZE HEX: 0CB1 ; inline
-: GL_PIXEL_MAP_I_TO_I_SIZE HEX: 0CB0 ; inline
-: GL_PIXEL_MAP_I_TO_R_SIZE HEX: 0CB2 ; inline
-: GL_PIXEL_MAP_I_TO_G_SIZE HEX: 0CB3 ; inline
-: GL_PIXEL_MAP_I_TO_B_SIZE HEX: 0CB4 ; inline
-: GL_PIXEL_MAP_I_TO_A_SIZE HEX: 0CB5 ; inline
-: GL_PIXEL_MAP_R_TO_R_SIZE HEX: 0CB6 ; inline
-: GL_PIXEL_MAP_G_TO_G_SIZE HEX: 0CB7 ; inline
-: GL_PIXEL_MAP_B_TO_B_SIZE HEX: 0CB8 ; inline
-: GL_PIXEL_MAP_A_TO_A_SIZE HEX: 0CB9 ; inline
-: GL_PIXEL_MAP_S_TO_S HEX: 0C71 ; inline
-: GL_PIXEL_MAP_I_TO_I HEX: 0C70 ; inline
-: GL_PIXEL_MAP_I_TO_R HEX: 0C72 ; inline
-: GL_PIXEL_MAP_I_TO_G HEX: 0C73 ; inline
-: GL_PIXEL_MAP_I_TO_B HEX: 0C74 ; inline
-: GL_PIXEL_MAP_I_TO_A HEX: 0C75 ; inline
-: GL_PIXEL_MAP_R_TO_R HEX: 0C76 ; inline
-: GL_PIXEL_MAP_G_TO_G HEX: 0C77 ; inline
-: GL_PIXEL_MAP_B_TO_B HEX: 0C78 ; inline
-: GL_PIXEL_MAP_A_TO_A HEX: 0C79 ; inline
-: GL_PACK_ALIGNMENT HEX: 0D05 ; inline
-: GL_PACK_LSB_FIRST HEX: 0D01 ; inline
-: GL_PACK_ROW_LENGTH HEX: 0D02 ; inline
-: GL_PACK_SKIP_PIXELS HEX: 0D04 ; inline
-: GL_PACK_SKIP_ROWS HEX: 0D03 ; inline
-: GL_PACK_SWAP_BYTES HEX: 0D00 ; inline
-: GL_UNPACK_ALIGNMENT HEX: 0CF5 ; inline
-: GL_UNPACK_LSB_FIRST HEX: 0CF1 ; inline
-: GL_UNPACK_ROW_LENGTH HEX: 0CF2 ; inline
-: GL_UNPACK_SKIP_PIXELS HEX: 0CF4 ; inline
-: GL_UNPACK_SKIP_ROWS HEX: 0CF3 ; inline
-: GL_UNPACK_SWAP_BYTES HEX: 0CF0 ; inline
-: GL_ZOOM_X HEX: 0D16 ; inline
-: GL_ZOOM_Y HEX: 0D17 ; inline
+CONSTANT: GL_MAP_COLOR HEX: 0D10
+CONSTANT: GL_MAP_STENCIL HEX: 0D11
+CONSTANT: GL_INDEX_SHIFT HEX: 0D12
+CONSTANT: GL_INDEX_OFFSET HEX: 0D13
+CONSTANT: GL_RED_SCALE HEX: 0D14
+CONSTANT: GL_RED_BIAS HEX: 0D15
+CONSTANT: GL_GREEN_SCALE HEX: 0D18
+CONSTANT: GL_GREEN_BIAS HEX: 0D19
+CONSTANT: GL_BLUE_SCALE HEX: 0D1A
+CONSTANT: GL_BLUE_BIAS HEX: 0D1B
+CONSTANT: GL_ALPHA_SCALE HEX: 0D1C
+CONSTANT: GL_ALPHA_BIAS HEX: 0D1D
+CONSTANT: GL_DEPTH_SCALE HEX: 0D1E
+CONSTANT: GL_DEPTH_BIAS HEX: 0D1F
+CONSTANT: GL_PIXEL_MAP_S_TO_S_SIZE HEX: 0CB1
+CONSTANT: GL_PIXEL_MAP_I_TO_I_SIZE HEX: 0CB0
+CONSTANT: GL_PIXEL_MAP_I_TO_R_SIZE HEX: 0CB2
+CONSTANT: GL_PIXEL_MAP_I_TO_G_SIZE HEX: 0CB3
+CONSTANT: GL_PIXEL_MAP_I_TO_B_SIZE HEX: 0CB4
+CONSTANT: GL_PIXEL_MAP_I_TO_A_SIZE HEX: 0CB5
+CONSTANT: GL_PIXEL_MAP_R_TO_R_SIZE HEX: 0CB6
+CONSTANT: GL_PIXEL_MAP_G_TO_G_SIZE HEX: 0CB7
+CONSTANT: GL_PIXEL_MAP_B_TO_B_SIZE HEX: 0CB8
+CONSTANT: GL_PIXEL_MAP_A_TO_A_SIZE HEX: 0CB9
+CONSTANT: GL_PIXEL_MAP_S_TO_S HEX: 0C71
+CONSTANT: GL_PIXEL_MAP_I_TO_I HEX: 0C70
+CONSTANT: GL_PIXEL_MAP_I_TO_R HEX: 0C72
+CONSTANT: GL_PIXEL_MAP_I_TO_G HEX: 0C73
+CONSTANT: GL_PIXEL_MAP_I_TO_B HEX: 0C74
+CONSTANT: GL_PIXEL_MAP_I_TO_A HEX: 0C75
+CONSTANT: GL_PIXEL_MAP_R_TO_R HEX: 0C76
+CONSTANT: GL_PIXEL_MAP_G_TO_G HEX: 0C77
+CONSTANT: GL_PIXEL_MAP_B_TO_B HEX: 0C78
+CONSTANT: GL_PIXEL_MAP_A_TO_A HEX: 0C79
+CONSTANT: GL_PACK_ALIGNMENT HEX: 0D05
+CONSTANT: GL_PACK_LSB_FIRST HEX: 0D01
+CONSTANT: GL_PACK_ROW_LENGTH HEX: 0D02
+CONSTANT: GL_PACK_SKIP_PIXELS HEX: 0D04
+CONSTANT: GL_PACK_SKIP_ROWS HEX: 0D03
+CONSTANT: GL_PACK_SWAP_BYTES HEX: 0D00
+CONSTANT: GL_UNPACK_ALIGNMENT HEX: 0CF5
+CONSTANT: GL_UNPACK_LSB_FIRST HEX: 0CF1
+CONSTANT: GL_UNPACK_ROW_LENGTH HEX: 0CF2
+CONSTANT: GL_UNPACK_SKIP_PIXELS HEX: 0CF4
+CONSTANT: GL_UNPACK_SKIP_ROWS HEX: 0CF3
+CONSTANT: GL_UNPACK_SWAP_BYTES HEX: 0CF0
+CONSTANT: GL_ZOOM_X HEX: 0D16
+CONSTANT: GL_ZOOM_Y HEX: 0D17
! Texture mapping inline
-: GL_TEXTURE_ENV HEX: 2300 ; inline
-: GL_TEXTURE_ENV_MODE HEX: 2200 ; inline
-: GL_TEXTURE_1D HEX: 0DE0 ; inline
-: GL_TEXTURE_2D HEX: 0DE1 ; inline
-: GL_TEXTURE_WRAP_S HEX: 2802 ; inline
-: GL_TEXTURE_WRAP_T HEX: 2803 ; inline
-: GL_TEXTURE_MAG_FILTER HEX: 2800 ; inline
-: GL_TEXTURE_MIN_FILTER HEX: 2801 ; inline
-: GL_TEXTURE_ENV_COLOR HEX: 2201 ; inline
-: GL_TEXTURE_GEN_S HEX: 0C60 ; inline
-: GL_TEXTURE_GEN_T HEX: 0C61 ; inline
-: GL_TEXTURE_GEN_MODE HEX: 2500 ; inline
-: GL_TEXTURE_BORDER_COLOR HEX: 1004 ; inline
-: GL_TEXTURE_WIDTH HEX: 1000 ; inline
-: GL_TEXTURE_HEIGHT HEX: 1001 ; inline
-: GL_TEXTURE_BORDER HEX: 1005 ; inline
-: GL_TEXTURE_COMPONENTS HEX: 1003 ; inline
-: GL_TEXTURE_RED_SIZE HEX: 805C ; inline
-: GL_TEXTURE_GREEN_SIZE HEX: 805D ; inline
-: GL_TEXTURE_BLUE_SIZE HEX: 805E ; inline
-: GL_TEXTURE_ALPHA_SIZE HEX: 805F ; inline
-: GL_TEXTURE_LUMINANCE_SIZE HEX: 8060 ; inline
-: GL_TEXTURE_INTENSITY_SIZE HEX: 8061 ; inline
-: GL_NEAREST_MIPMAP_NEAREST HEX: 2700 ; inline
-: GL_NEAREST_MIPMAP_LINEAR HEX: 2702 ; inline
-: GL_LINEAR_MIPMAP_NEAREST HEX: 2701 ; inline
-: GL_LINEAR_MIPMAP_LINEAR HEX: 2703 ; inline
-: GL_OBJECT_LINEAR HEX: 2401 ; inline
-: GL_OBJECT_PLANE HEX: 2501 ; inline
-: GL_EYE_LINEAR HEX: 2400 ; inline
-: GL_EYE_PLANE HEX: 2502 ; inline
-: GL_SPHERE_MAP HEX: 2402 ; inline
-: GL_DECAL HEX: 2101 ; inline
-: GL_MODULATE HEX: 2100 ; inline
-: GL_NEAREST HEX: 2600 ; inline
-: GL_REPEAT HEX: 2901 ; inline
-: GL_CLAMP HEX: 2900 ; inline
-: GL_S HEX: 2000 ; inline
-: GL_T HEX: 2001 ; inline
-: GL_R HEX: 2002 ; inline
-: GL_Q HEX: 2003 ; inline
-: GL_TEXTURE_GEN_R HEX: 0C62 ; inline
-: GL_TEXTURE_GEN_Q HEX: 0C63 ; inline
+CONSTANT: GL_TEXTURE_ENV HEX: 2300
+CONSTANT: GL_TEXTURE_ENV_MODE HEX: 2200
+CONSTANT: GL_TEXTURE_1D HEX: 0DE0
+CONSTANT: GL_TEXTURE_2D HEX: 0DE1
+CONSTANT: GL_TEXTURE_WRAP_S HEX: 2802
+CONSTANT: GL_TEXTURE_WRAP_T HEX: 2803
+CONSTANT: GL_TEXTURE_MAG_FILTER HEX: 2800
+CONSTANT: GL_TEXTURE_MIN_FILTER HEX: 2801
+CONSTANT: GL_TEXTURE_ENV_COLOR HEX: 2201
+CONSTANT: GL_TEXTURE_GEN_S HEX: 0C60
+CONSTANT: GL_TEXTURE_GEN_T HEX: 0C61
+CONSTANT: GL_TEXTURE_GEN_MODE HEX: 2500
+CONSTANT: GL_TEXTURE_BORDER_COLOR HEX: 1004
+CONSTANT: GL_TEXTURE_WIDTH HEX: 1000
+CONSTANT: GL_TEXTURE_HEIGHT HEX: 1001
+CONSTANT: GL_TEXTURE_BORDER HEX: 1005
+CONSTANT: GL_TEXTURE_COMPONENTS HEX: 1003
+CONSTANT: GL_TEXTURE_RED_SIZE HEX: 805C
+CONSTANT: GL_TEXTURE_GREEN_SIZE HEX: 805D
+CONSTANT: GL_TEXTURE_BLUE_SIZE HEX: 805E
+CONSTANT: GL_TEXTURE_ALPHA_SIZE HEX: 805F
+CONSTANT: GL_TEXTURE_LUMINANCE_SIZE HEX: 8060
+CONSTANT: GL_TEXTURE_INTENSITY_SIZE HEX: 8061
+CONSTANT: GL_NEAREST_MIPMAP_NEAREST HEX: 2700
+CONSTANT: GL_NEAREST_MIPMAP_LINEAR HEX: 2702
+CONSTANT: GL_LINEAR_MIPMAP_NEAREST HEX: 2701
+CONSTANT: GL_LINEAR_MIPMAP_LINEAR HEX: 2703
+CONSTANT: GL_OBJECT_LINEAR HEX: 2401
+CONSTANT: GL_OBJECT_PLANE HEX: 2501
+CONSTANT: GL_EYE_LINEAR HEX: 2400
+CONSTANT: GL_EYE_PLANE HEX: 2502
+CONSTANT: GL_SPHERE_MAP HEX: 2402
+CONSTANT: GL_DECAL HEX: 2101
+CONSTANT: GL_MODULATE HEX: 2100
+CONSTANT: GL_NEAREST HEX: 2600
+CONSTANT: GL_REPEAT HEX: 2901
+CONSTANT: GL_CLAMP HEX: 2900
+CONSTANT: GL_S HEX: 2000
+CONSTANT: GL_T HEX: 2001
+CONSTANT: GL_R HEX: 2002
+CONSTANT: GL_Q HEX: 2003
+CONSTANT: GL_TEXTURE_GEN_R HEX: 0C62
+CONSTANT: GL_TEXTURE_GEN_Q HEX: 0C63
! Utility inline
-: GL_VENDOR HEX: 1F00 ; inline
-: GL_RENDERER HEX: 1F01 ; inline
-: GL_VERSION HEX: 1F02 ; inline
-: GL_EXTENSIONS HEX: 1F03 ; inline
+CONSTANT: GL_VENDOR HEX: 1F00
+CONSTANT: GL_RENDERER HEX: 1F01
+CONSTANT: GL_VERSION HEX: 1F02
+CONSTANT: GL_EXTENSIONS HEX: 1F03
! Errors inline
-: GL_NO_ERROR HEX: 0 ; inline
-: GL_INVALID_VALUE HEX: 0501 ; inline
-: GL_INVALID_ENUM HEX: 0500 ; inline
-: GL_INVALID_OPERATION HEX: 0502 ; inline
-: GL_STACK_OVERFLOW HEX: 0503 ; inline
-: GL_STACK_UNDERFLOW HEX: 0504 ; inline
-: GL_OUT_OF_MEMORY HEX: 0505 ; inline
+CONSTANT: GL_NO_ERROR HEX: 0
+CONSTANT: GL_INVALID_VALUE HEX: 0501
+CONSTANT: GL_INVALID_ENUM HEX: 0500
+CONSTANT: GL_INVALID_OPERATION HEX: 0502
+CONSTANT: GL_STACK_OVERFLOW HEX: 0503
+CONSTANT: GL_STACK_UNDERFLOW HEX: 0504
+CONSTANT: GL_OUT_OF_MEMORY HEX: 0505
! glPush/PopAttrib bits
-: GL_CURRENT_BIT HEX: 00000001 ; inline
-: GL_POINT_BIT HEX: 00000002 ; inline
-: GL_LINE_BIT HEX: 00000004 ; inline
-: GL_POLYGON_BIT HEX: 00000008 ; inline
-: GL_POLYGON_STIPPLE_BIT HEX: 00000010 ; inline
-: GL_PIXEL_MODE_BIT HEX: 00000020 ; inline
-: GL_LIGHTING_BIT HEX: 00000040 ; inline
-: GL_FOG_BIT HEX: 00000080 ; inline
-: GL_DEPTH_BUFFER_BIT HEX: 00000100 ; inline
-: GL_ACCUM_BUFFER_BIT HEX: 00000200 ; inline
-: GL_STENCIL_BUFFER_BIT HEX: 00000400 ; inline
-: GL_VIEWPORT_BIT HEX: 00000800 ; inline
-: GL_TRANSFORM_BIT HEX: 00001000 ; inline
-: GL_ENABLE_BIT HEX: 00002000 ; inline
-: GL_COLOR_BUFFER_BIT HEX: 00004000 ; inline
-: GL_HINT_BIT HEX: 00008000 ; inline
-: GL_EVAL_BIT HEX: 00010000 ; inline
-: GL_LIST_BIT HEX: 00020000 ; inline
-: GL_TEXTURE_BIT HEX: 00040000 ; inline
-: GL_SCISSOR_BIT HEX: 00080000 ; inline
-: GL_ALL_ATTRIB_BITS HEX: 000FFFFF ; inline
+CONSTANT: GL_CURRENT_BIT HEX: 00000001
+CONSTANT: GL_POINT_BIT HEX: 00000002
+CONSTANT: GL_LINE_BIT HEX: 00000004
+CONSTANT: GL_POLYGON_BIT HEX: 00000008
+CONSTANT: GL_POLYGON_STIPPLE_BIT HEX: 00000010
+CONSTANT: GL_PIXEL_MODE_BIT HEX: 00000020
+CONSTANT: GL_LIGHTING_BIT HEX: 00000040
+CONSTANT: GL_FOG_BIT HEX: 00000080
+CONSTANT: GL_DEPTH_BUFFER_BIT HEX: 00000100
+CONSTANT: GL_ACCUM_BUFFER_BIT HEX: 00000200
+CONSTANT: GL_STENCIL_BUFFER_BIT HEX: 00000400
+CONSTANT: GL_VIEWPORT_BIT HEX: 00000800
+CONSTANT: GL_TRANSFORM_BIT HEX: 00001000
+CONSTANT: GL_ENABLE_BIT HEX: 00002000
+CONSTANT: GL_COLOR_BUFFER_BIT HEX: 00004000
+CONSTANT: GL_HINT_BIT HEX: 00008000
+CONSTANT: GL_EVAL_BIT HEX: 00010000
+CONSTANT: GL_LIST_BIT HEX: 00020000
+CONSTANT: GL_TEXTURE_BIT HEX: 00040000
+CONSTANT: GL_SCISSOR_BIT HEX: 00080000
+CONSTANT: GL_ALL_ATTRIB_BITS HEX: 000FFFFF
! OpenGL 1.1
-: GL_PROXY_TEXTURE_1D HEX: 8063 ; inline
-: GL_PROXY_TEXTURE_2D HEX: 8064 ; inline
-: GL_TEXTURE_PRIORITY HEX: 8066 ; inline
-: GL_TEXTURE_RESIDENT HEX: 8067 ; inline
-: GL_TEXTURE_BINDING_1D HEX: 8068 ; inline
-: GL_TEXTURE_BINDING_2D HEX: 8069 ; inline
-: GL_TEXTURE_INTERNAL_FORMAT HEX: 1003 ; inline
-: GL_ALPHA4 HEX: 803B ; inline
-: GL_ALPHA8 HEX: 803C ; inline
-: GL_ALPHA12 HEX: 803D ; inline
-: GL_ALPHA16 HEX: 803E ; inline
-: GL_LUMINANCE4 HEX: 803F ; inline
-: GL_LUMINANCE8 HEX: 8040 ; inline
-: GL_LUMINANCE12 HEX: 8041 ; inline
-: GL_LUMINANCE16 HEX: 8042 ; inline
-: GL_LUMINANCE4_ALPHA4 HEX: 8043 ; inline
-: GL_LUMINANCE6_ALPHA2 HEX: 8044 ; inline
-: GL_LUMINANCE8_ALPHA8 HEX: 8045 ; inline
-: GL_LUMINANCE12_ALPHA4 HEX: 8046 ; inline
-: GL_LUMINANCE12_ALPHA12 HEX: 8047 ; inline
-: GL_LUMINANCE16_ALPHA16 HEX: 8048 ; inline
-: GL_INTENSITY HEX: 8049 ; inline
-: GL_INTENSITY4 HEX: 804A ; inline
-: GL_INTENSITY8 HEX: 804B ; inline
-: GL_INTENSITY12 HEX: 804C ; inline
-: GL_INTENSITY16 HEX: 804D ; inline
-: GL_R3_G3_B2 HEX: 2A10 ; inline
-: GL_RGB4 HEX: 804F ; inline
-: GL_RGB5 HEX: 8050 ; inline
-: GL_RGB8 HEX: 8051 ; inline
-: GL_RGB10 HEX: 8052 ; inline
-: GL_RGB12 HEX: 8053 ; inline
-: GL_RGB16 HEX: 8054 ; inline
-: GL_RGBA2 HEX: 8055 ; inline
-: GL_RGBA4 HEX: 8056 ; inline
-: GL_RGB5_A1 HEX: 8057 ; inline
-: GL_RGBA8 HEX: 8058 ; inline
-: GL_RGB10_A2 HEX: 8059 ; inline
-: GL_RGBA12 HEX: 805A ; inline
-: GL_RGBA16 HEX: 805B ; inline
-: GL_CLIENT_PIXEL_STORE_BIT HEX: 00000001 ; inline
-: GL_CLIENT_VERTEX_ARRAY_BIT HEX: 00000002 ; inline
-: GL_ALL_CLIENT_ATTRIB_BITS HEX: FFFFFFFF ; inline
-: GL_CLIENT_ALL_ATTRIB_BITS HEX: FFFFFFFF ; inline
+CONSTANT: GL_PROXY_TEXTURE_1D HEX: 8063
+CONSTANT: GL_PROXY_TEXTURE_2D HEX: 8064
+CONSTANT: GL_TEXTURE_PRIORITY HEX: 8066
+CONSTANT: GL_TEXTURE_RESIDENT HEX: 8067
+CONSTANT: GL_TEXTURE_BINDING_1D HEX: 8068
+CONSTANT: GL_TEXTURE_BINDING_2D HEX: 8069
+CONSTANT: GL_TEXTURE_INTERNAL_FORMAT HEX: 1003
+CONSTANT: GL_ALPHA4 HEX: 803B
+CONSTANT: GL_ALPHA8 HEX: 803C
+CONSTANT: GL_ALPHA12 HEX: 803D
+CONSTANT: GL_ALPHA16 HEX: 803E
+CONSTANT: GL_LUMINANCE4 HEX: 803F
+CONSTANT: GL_LUMINANCE8 HEX: 8040
+CONSTANT: GL_LUMINANCE12 HEX: 8041
+CONSTANT: GL_LUMINANCE16 HEX: 8042
+CONSTANT: GL_LUMINANCE4_ALPHA4 HEX: 8043
+CONSTANT: GL_LUMINANCE6_ALPHA2 HEX: 8044
+CONSTANT: GL_LUMINANCE8_ALPHA8 HEX: 8045
+CONSTANT: GL_LUMINANCE12_ALPHA4 HEX: 8046
+CONSTANT: GL_LUMINANCE12_ALPHA12 HEX: 8047
+CONSTANT: GL_LUMINANCE16_ALPHA16 HEX: 8048
+CONSTANT: GL_INTENSITY HEX: 8049
+CONSTANT: GL_INTENSITY4 HEX: 804A
+CONSTANT: GL_INTENSITY8 HEX: 804B
+CONSTANT: GL_INTENSITY12 HEX: 804C
+CONSTANT: GL_INTENSITY16 HEX: 804D
+CONSTANT: GL_R3_G3_B2 HEX: 2A10
+CONSTANT: GL_RGB4 HEX: 804F
+CONSTANT: GL_RGB5 HEX: 8050
+CONSTANT: GL_RGB8 HEX: 8051
+CONSTANT: GL_RGB10 HEX: 8052
+CONSTANT: GL_RGB12 HEX: 8053
+CONSTANT: GL_RGB16 HEX: 8054
+CONSTANT: GL_RGBA2 HEX: 8055
+CONSTANT: GL_RGBA4 HEX: 8056
+CONSTANT: GL_RGB5_A1 HEX: 8057
+CONSTANT: GL_RGBA8 HEX: 8058
+CONSTANT: GL_RGB10_A2 HEX: 8059
+CONSTANT: GL_RGBA12 HEX: 805A
+CONSTANT: GL_RGBA16 HEX: 805B
+CONSTANT: GL_CLIENT_PIXEL_STORE_BIT HEX: 00000001
+CONSTANT: GL_CLIENT_VERTEX_ARRAY_BIT HEX: 00000002
+CONSTANT: GL_ALL_CLIENT_ATTRIB_BITS HEX: FFFFFFFF
+CONSTANT: GL_CLIENT_ALL_ATTRIB_BITS HEX: FFFFFFFF
LIBRARY: gl
! OpenGL 1.2
-: GL_SMOOTH_POINT_SIZE_RANGE HEX: 0B12 ; inline
-: GL_SMOOTH_POINT_SIZE_GRANULARITY HEX: 0B13 ; inline
-: GL_SMOOTH_LINE_WIDTH_RANGE HEX: 0B22 ; inline
-: GL_SMOOTH_LINE_WIDTH_GRANULARITY HEX: 0B23 ; inline
-: GL_UNSIGNED_BYTE_3_3_2 HEX: 8032 ; inline
-: GL_UNSIGNED_SHORT_4_4_4_4 HEX: 8033 ; inline
-: GL_UNSIGNED_SHORT_5_5_5_1 HEX: 8034 ; inline
-: GL_UNSIGNED_INT_8_8_8_8 HEX: 8035 ; inline
-: GL_UNSIGNED_INT_10_10_10_2 HEX: 8036 ; inline
-: GL_RESCALE_NORMAL HEX: 803A ; inline
-: GL_TEXTURE_BINDING_3D HEX: 806A ; inline
-: GL_PACK_SKIP_IMAGES HEX: 806B ; inline
-: GL_PACK_IMAGE_HEIGHT HEX: 806C ; inline
-: GL_UNPACK_SKIP_IMAGES HEX: 806D ; inline
-: GL_UNPACK_IMAGE_HEIGHT HEX: 806E ; inline
-: GL_TEXTURE_3D HEX: 806F ; inline
-: GL_PROXY_TEXTURE_3D HEX: 8070 ; inline
-: GL_TEXTURE_DEPTH HEX: 8071 ; inline
-: GL_TEXTURE_WRAP_R HEX: 8072 ; inline
-: GL_MAX_3D_TEXTURE_SIZE HEX: 8073 ; inline
-: GL_BGR HEX: 80E0 ; inline
-: GL_BGRA HEX: 80E1 ; inline
-: GL_MAX_ELEMENTS_VERTICES HEX: 80E8 ; inline
-: GL_MAX_ELEMENTS_INDICES HEX: 80E9 ; inline
-: GL_CLAMP_TO_EDGE HEX: 812F ; inline
-: GL_TEXTURE_MIN_LOD HEX: 813A ; inline
-: GL_TEXTURE_MAX_LOD HEX: 813B ; inline
-: GL_TEXTURE_BASE_LEVEL HEX: 813C ; inline
-: GL_TEXTURE_MAX_LEVEL HEX: 813D ; inline
-: GL_LIGHT_MODEL_COLOR_CONTROL HEX: 81F8 ; inline
-: GL_SINGLE_COLOR HEX: 81F9 ; inline
-: GL_SEPARATE_SPECULAR_COLOR HEX: 81FA ; inline
-: GL_UNSIGNED_BYTE_2_3_3_REV HEX: 8362 ; inline
-: GL_UNSIGNED_SHORT_5_6_5 HEX: 8363 ; inline
-: GL_UNSIGNED_SHORT_5_6_5_REV HEX: 8364 ; inline
-: GL_UNSIGNED_SHORT_4_4_4_4_REV HEX: 8365 ; inline
-: GL_UNSIGNED_SHORT_1_5_5_5_REV HEX: 8366 ; inline
-: GL_UNSIGNED_INT_8_8_8_8_REV HEX: 8367 ; inline
-: GL_UNSIGNED_INT_2_10_10_10_REV HEX: 8368 ; inline
-: GL_ALIASED_POINT_SIZE_RANGE HEX: 846D ; inline
-: GL_ALIASED_LINE_WIDTH_RANGE HEX: 846E ; inline
+CONSTANT: GL_SMOOTH_POINT_SIZE_RANGE HEX: 0B12
+CONSTANT: GL_SMOOTH_POINT_SIZE_GRANULARITY HEX: 0B13
+CONSTANT: GL_SMOOTH_LINE_WIDTH_RANGE HEX: 0B22
+CONSTANT: GL_SMOOTH_LINE_WIDTH_GRANULARITY HEX: 0B23
+CONSTANT: GL_UNSIGNED_BYTE_3_3_2 HEX: 8032
+CONSTANT: GL_UNSIGNED_SHORT_4_4_4_4 HEX: 8033
+CONSTANT: GL_UNSIGNED_SHORT_5_5_5_1 HEX: 8034
+CONSTANT: GL_UNSIGNED_INT_8_8_8_8 HEX: 8035
+CONSTANT: GL_UNSIGNED_INT_10_10_10_2 HEX: 8036
+CONSTANT: GL_RESCALE_NORMAL HEX: 803A
+CONSTANT: GL_TEXTURE_BINDING_3D HEX: 806A
+CONSTANT: GL_PACK_SKIP_IMAGES HEX: 806B
+CONSTANT: GL_PACK_IMAGE_HEIGHT HEX: 806C
+CONSTANT: GL_UNPACK_SKIP_IMAGES HEX: 806D
+CONSTANT: GL_UNPACK_IMAGE_HEIGHT HEX: 806E
+CONSTANT: GL_TEXTURE_3D HEX: 806F
+CONSTANT: GL_PROXY_TEXTURE_3D HEX: 8070
+CONSTANT: GL_TEXTURE_DEPTH HEX: 8071
+CONSTANT: GL_TEXTURE_WRAP_R HEX: 8072
+CONSTANT: GL_MAX_3D_TEXTURE_SIZE HEX: 8073
+CONSTANT: GL_BGR HEX: 80E0
+CONSTANT: GL_BGRA HEX: 80E1
+CONSTANT: GL_MAX_ELEMENTS_VERTICES HEX: 80E8
+CONSTANT: GL_MAX_ELEMENTS_INDICES HEX: 80E9
+CONSTANT: GL_CLAMP_TO_EDGE HEX: 812F
+CONSTANT: GL_TEXTURE_MIN_LOD HEX: 813A
+CONSTANT: GL_TEXTURE_MAX_LOD HEX: 813B
+CONSTANT: GL_TEXTURE_BASE_LEVEL HEX: 813C
+CONSTANT: GL_TEXTURE_MAX_LEVEL HEX: 813D
+CONSTANT: GL_LIGHT_MODEL_COLOR_CONTROL HEX: 81F8
+CONSTANT: GL_SINGLE_COLOR HEX: 81F9
+CONSTANT: GL_SEPARATE_SPECULAR_COLOR HEX: 81FA
+CONSTANT: GL_UNSIGNED_BYTE_2_3_3_REV HEX: 8362
+CONSTANT: GL_UNSIGNED_SHORT_5_6_5 HEX: 8363
+CONSTANT: GL_UNSIGNED_SHORT_5_6_5_REV HEX: 8364
+CONSTANT: GL_UNSIGNED_SHORT_4_4_4_4_REV HEX: 8365
+CONSTANT: GL_UNSIGNED_SHORT_1_5_5_5_REV HEX: 8366
+CONSTANT: GL_UNSIGNED_INT_8_8_8_8_REV HEX: 8367
+CONSTANT: GL_UNSIGNED_INT_2_10_10_10_REV HEX: 8368
+CONSTANT: GL_ALIASED_POINT_SIZE_RANGE HEX: 846D
+CONSTANT: GL_ALIASED_LINE_WIDTH_RANGE HEX: 846E
GL-FUNCTION: void glCopyTexSubImage3D { glCopyTexSubImage3DEXT } ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) ;
GL-FUNCTION: void glDrawRangeElements { glDrawRangeElementsEXT } ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLvoid* indices ) ;
! OpenGL 1.3
-: GL_MULTISAMPLE HEX: 809D ; inline
-: GL_SAMPLE_ALPHA_TO_COVERAGE HEX: 809E ; inline
-: GL_SAMPLE_ALPHA_TO_ONE HEX: 809F ; inline
-: GL_SAMPLE_COVERAGE HEX: 80A0 ; inline
-: GL_SAMPLE_BUFFERS HEX: 80A8 ; inline
-: GL_SAMPLES HEX: 80A9 ; inline
-: GL_SAMPLE_COVERAGE_VALUE HEX: 80AA ; inline
-: GL_SAMPLE_COVERAGE_INVERT HEX: 80AB ; inline
-: GL_CLAMP_TO_BORDER HEX: 812D ; inline
-: GL_TEXTURE0 HEX: 84C0 ; inline
-: GL_TEXTURE1 HEX: 84C1 ; inline
-: GL_TEXTURE2 HEX: 84C2 ; inline
-: GL_TEXTURE3 HEX: 84C3 ; inline
-: GL_TEXTURE4 HEX: 84C4 ; inline
-: GL_TEXTURE5 HEX: 84C5 ; inline
-: GL_TEXTURE6 HEX: 84C6 ; inline
-: GL_TEXTURE7 HEX: 84C7 ; inline
-: GL_TEXTURE8 HEX: 84C8 ; inline
-: GL_TEXTURE9 HEX: 84C9 ; inline
-: GL_TEXTURE10 HEX: 84CA ; inline
-: GL_TEXTURE11 HEX: 84CB ; inline
-: GL_TEXTURE12 HEX: 84CC ; inline
-: GL_TEXTURE13 HEX: 84CD ; inline
-: GL_TEXTURE14 HEX: 84CE ; inline
-: GL_TEXTURE15 HEX: 84CF ; inline
-: GL_TEXTURE16 HEX: 84D0 ; inline
-: GL_TEXTURE17 HEX: 84D1 ; inline
-: GL_TEXTURE18 HEX: 84D2 ; inline
-: GL_TEXTURE19 HEX: 84D3 ; inline
-: GL_TEXTURE20 HEX: 84D4 ; inline
-: GL_TEXTURE21 HEX: 84D5 ; inline
-: GL_TEXTURE22 HEX: 84D6 ; inline
-: GL_TEXTURE23 HEX: 84D7 ; inline
-: GL_TEXTURE24 HEX: 84D8 ; inline
-: GL_TEXTURE25 HEX: 84D9 ; inline
-: GL_TEXTURE26 HEX: 84DA ; inline
-: GL_TEXTURE27 HEX: 84DB ; inline
-: GL_TEXTURE28 HEX: 84DC ; inline
-: GL_TEXTURE29 HEX: 84DD ; inline
-: GL_TEXTURE30 HEX: 84DE ; inline
-: GL_TEXTURE31 HEX: 84DF ; inline
-: GL_ACTIVE_TEXTURE HEX: 84E0 ; inline
-: GL_CLIENT_ACTIVE_TEXTURE HEX: 84E1 ; inline
-: GL_MAX_TEXTURE_UNITS HEX: 84E2 ; inline
-: GL_TRANSPOSE_MODELVIEW_MATRIX HEX: 84E3 ; inline
-: GL_TRANSPOSE_PROJECTION_MATRIX HEX: 84E4 ; inline
-: GL_TRANSPOSE_TEXTURE_MATRIX HEX: 84E5 ; inline
-: GL_TRANSPOSE_COLOR_MATRIX HEX: 84E6 ; inline
-: GL_SUBTRACT HEX: 84E7 ; inline
-: GL_COMPRESSED_ALPHA HEX: 84E9 ; inline
-: GL_COMPRESSED_LUMINANCE HEX: 84EA ; inline
-: GL_COMPRESSED_LUMINANCE_ALPHA HEX: 84EB ; inline
-: GL_COMPRESSED_INTENSITY HEX: 84EC ; inline
-: GL_COMPRESSED_RGB HEX: 84ED ; inline
-: GL_COMPRESSED_RGBA HEX: 84EE ; inline
-: GL_TEXTURE_COMPRESSION_HINT HEX: 84EF ; inline
-: GL_NORMAL_MAP HEX: 8511 ; inline
-: GL_REFLECTION_MAP HEX: 8512 ; inline
-: GL_TEXTURE_CUBE_MAP HEX: 8513 ; inline
-: GL_TEXTURE_BINDING_CUBE_MAP HEX: 8514 ; inline
-: GL_TEXTURE_CUBE_MAP_POSITIVE_X HEX: 8515 ; inline
-: GL_TEXTURE_CUBE_MAP_NEGATIVE_X HEX: 8516 ; inline
-: GL_TEXTURE_CUBE_MAP_POSITIVE_Y HEX: 8517 ; inline
-: GL_TEXTURE_CUBE_MAP_NEGATIVE_Y HEX: 8518 ; inline
-: GL_TEXTURE_CUBE_MAP_POSITIVE_Z HEX: 8519 ; inline
-: GL_TEXTURE_CUBE_MAP_NEGATIVE_Z HEX: 851A ; inline
-: GL_PROXY_TEXTURE_CUBE_MAP HEX: 851B ; inline
-: GL_MAX_CUBE_MAP_TEXTURE_SIZE HEX: 851C ; inline
-: GL_COMBINE HEX: 8570 ; inline
-: GL_COMBINE_RGB HEX: 8571 ; inline
-: GL_COMBINE_ALPHA HEX: 8572 ; inline
-: GL_RGB_SCALE HEX: 8573 ; inline
-: GL_ADD_SIGNED HEX: 8574 ; inline
-: GL_INTERPOLATE HEX: 8575 ; inline
-: GL_CONSTANT HEX: 8576 ; inline
-: GL_PRIMARY_COLOR HEX: 8577 ; inline
-: GL_PREVIOUS HEX: 8578 ; inline
-: GL_SOURCE0_RGB HEX: 8580 ; inline
-: GL_SOURCE1_RGB HEX: 8581 ; inline
-: GL_SOURCE2_RGB HEX: 8582 ; inline
-: GL_SOURCE0_ALPHA HEX: 8588 ; inline
-: GL_SOURCE1_ALPHA HEX: 8589 ; inline
-: GL_SOURCE2_ALPHA HEX: 858A ; inline
-: GL_OPERAND0_RGB HEX: 8590 ; inline
-: GL_OPERAND1_RGB HEX: 8591 ; inline
-: GL_OPERAND2_RGB HEX: 8592 ; inline
-: GL_OPERAND0_ALPHA HEX: 8598 ; inline
-: GL_OPERAND1_ALPHA HEX: 8599 ; inline
-: GL_OPERAND2_ALPHA HEX: 859A ; inline
-: GL_TEXTURE_COMPRESSED_IMAGE_SIZE HEX: 86A0 ; inline
-: GL_TEXTURE_COMPRESSED HEX: 86A1 ; inline
-: GL_NUM_COMPRESSED_TEXTURE_FORMATS HEX: 86A2 ; inline
-: GL_COMPRESSED_TEXTURE_FORMATS HEX: 86A3 ; inline
-: GL_DOT3_RGB HEX: 86AE ; inline
-: GL_DOT3_RGBA HEX: 86AF ; inline
-: GL_MULTISAMPLE_BIT HEX: 20000000 ; inline
+CONSTANT: GL_MULTISAMPLE HEX: 809D
+CONSTANT: GL_SAMPLE_ALPHA_TO_COVERAGE HEX: 809E
+CONSTANT: GL_SAMPLE_ALPHA_TO_ONE HEX: 809F
+CONSTANT: GL_SAMPLE_COVERAGE HEX: 80A0
+CONSTANT: GL_SAMPLE_BUFFERS HEX: 80A8
+CONSTANT: GL_SAMPLES HEX: 80A9
+CONSTANT: GL_SAMPLE_COVERAGE_VALUE HEX: 80AA
+CONSTANT: GL_SAMPLE_COVERAGE_INVERT HEX: 80AB
+CONSTANT: GL_CLAMP_TO_BORDER HEX: 812D
+CONSTANT: GL_TEXTURE0 HEX: 84C0
+CONSTANT: GL_TEXTURE1 HEX: 84C1
+CONSTANT: GL_TEXTURE2 HEX: 84C2
+CONSTANT: GL_TEXTURE3 HEX: 84C3
+CONSTANT: GL_TEXTURE4 HEX: 84C4
+CONSTANT: GL_TEXTURE5 HEX: 84C5
+CONSTANT: GL_TEXTURE6 HEX: 84C6
+CONSTANT: GL_TEXTURE7 HEX: 84C7
+CONSTANT: GL_TEXTURE8 HEX: 84C8
+CONSTANT: GL_TEXTURE9 HEX: 84C9
+CONSTANT: GL_TEXTURE10 HEX: 84CA
+CONSTANT: GL_TEXTURE11 HEX: 84CB
+CONSTANT: GL_TEXTURE12 HEX: 84CC
+CONSTANT: GL_TEXTURE13 HEX: 84CD
+CONSTANT: GL_TEXTURE14 HEX: 84CE
+CONSTANT: GL_TEXTURE15 HEX: 84CF
+CONSTANT: GL_TEXTURE16 HEX: 84D0
+CONSTANT: GL_TEXTURE17 HEX: 84D1
+CONSTANT: GL_TEXTURE18 HEX: 84D2
+CONSTANT: GL_TEXTURE19 HEX: 84D3
+CONSTANT: GL_TEXTURE20 HEX: 84D4
+CONSTANT: GL_TEXTURE21 HEX: 84D5
+CONSTANT: GL_TEXTURE22 HEX: 84D6
+CONSTANT: GL_TEXTURE23 HEX: 84D7
+CONSTANT: GL_TEXTURE24 HEX: 84D8
+CONSTANT: GL_TEXTURE25 HEX: 84D9
+CONSTANT: GL_TEXTURE26 HEX: 84DA
+CONSTANT: GL_TEXTURE27 HEX: 84DB
+CONSTANT: GL_TEXTURE28 HEX: 84DC
+CONSTANT: GL_TEXTURE29 HEX: 84DD
+CONSTANT: GL_TEXTURE30 HEX: 84DE
+CONSTANT: GL_TEXTURE31 HEX: 84DF
+CONSTANT: GL_ACTIVE_TEXTURE HEX: 84E0
+CONSTANT: GL_CLIENT_ACTIVE_TEXTURE HEX: 84E1
+CONSTANT: GL_MAX_TEXTURE_UNITS HEX: 84E2
+CONSTANT: GL_TRANSPOSE_MODELVIEW_MATRIX HEX: 84E3
+CONSTANT: GL_TRANSPOSE_PROJECTION_MATRIX HEX: 84E4
+CONSTANT: GL_TRANSPOSE_TEXTURE_MATRIX HEX: 84E5
+CONSTANT: GL_TRANSPOSE_COLOR_MATRIX HEX: 84E6
+CONSTANT: GL_SUBTRACT HEX: 84E7
+CONSTANT: GL_COMPRESSED_ALPHA HEX: 84E9
+CONSTANT: GL_COMPRESSED_LUMINANCE HEX: 84EA
+CONSTANT: GL_COMPRESSED_LUMINANCE_ALPHA HEX: 84EB
+CONSTANT: GL_COMPRESSED_INTENSITY HEX: 84EC
+CONSTANT: GL_COMPRESSED_RGB HEX: 84ED
+CONSTANT: GL_COMPRESSED_RGBA HEX: 84EE
+CONSTANT: GL_TEXTURE_COMPRESSION_HINT HEX: 84EF
+CONSTANT: GL_NORMAL_MAP HEX: 8511
+CONSTANT: GL_REFLECTION_MAP HEX: 8512
+CONSTANT: GL_TEXTURE_CUBE_MAP HEX: 8513
+CONSTANT: GL_TEXTURE_BINDING_CUBE_MAP HEX: 8514
+CONSTANT: GL_TEXTURE_CUBE_MAP_POSITIVE_X HEX: 8515
+CONSTANT: GL_TEXTURE_CUBE_MAP_NEGATIVE_X HEX: 8516
+CONSTANT: GL_TEXTURE_CUBE_MAP_POSITIVE_Y HEX: 8517
+CONSTANT: GL_TEXTURE_CUBE_MAP_NEGATIVE_Y HEX: 8518
+CONSTANT: GL_TEXTURE_CUBE_MAP_POSITIVE_Z HEX: 8519
+CONSTANT: GL_TEXTURE_CUBE_MAP_NEGATIVE_Z HEX: 851A
+CONSTANT: GL_PROXY_TEXTURE_CUBE_MAP HEX: 851B
+CONSTANT: GL_MAX_CUBE_MAP_TEXTURE_SIZE HEX: 851C
+CONSTANT: GL_COMBINE HEX: 8570
+CONSTANT: GL_COMBINE_RGB HEX: 8571
+CONSTANT: GL_COMBINE_ALPHA HEX: 8572
+CONSTANT: GL_RGB_SCALE HEX: 8573
+CONSTANT: GL_ADD_SIGNED HEX: 8574
+CONSTANT: GL_INTERPOLATE HEX: 8575
+CONSTANT: GL_CONSTANT HEX: 8576
+CONSTANT: GL_PRIMARY_COLOR HEX: 8577
+CONSTANT: GL_PREVIOUS HEX: 8578
+CONSTANT: GL_SOURCE0_RGB HEX: 8580
+CONSTANT: GL_SOURCE1_RGB HEX: 8581
+CONSTANT: GL_SOURCE2_RGB HEX: 8582
+CONSTANT: GL_SOURCE0_ALPHA HEX: 8588
+CONSTANT: GL_SOURCE1_ALPHA HEX: 8589
+CONSTANT: GL_SOURCE2_ALPHA HEX: 858A
+CONSTANT: GL_OPERAND0_RGB HEX: 8590
+CONSTANT: GL_OPERAND1_RGB HEX: 8591
+CONSTANT: GL_OPERAND2_RGB HEX: 8592
+CONSTANT: GL_OPERAND0_ALPHA HEX: 8598
+CONSTANT: GL_OPERAND1_ALPHA HEX: 8599
+CONSTANT: GL_OPERAND2_ALPHA HEX: 859A
+CONSTANT: GL_TEXTURE_COMPRESSED_IMAGE_SIZE HEX: 86A0
+CONSTANT: GL_TEXTURE_COMPRESSED HEX: 86A1
+CONSTANT: GL_NUM_COMPRESSED_TEXTURE_FORMATS HEX: 86A2
+CONSTANT: GL_COMPRESSED_TEXTURE_FORMATS HEX: 86A3
+CONSTANT: GL_DOT3_RGB HEX: 86AE
+CONSTANT: GL_DOT3_RGBA HEX: 86AF
+CONSTANT: GL_MULTISAMPLE_BIT HEX: 20000000
GL-FUNCTION: void glActiveTexture { glActiveTextureARB } ( GLenum texture ) ;
GL-FUNCTION: void glClientActiveTexture { glClientActiveTextureARB } ( GLenum texture ) ;
! OpenGL 1.4
-: GL_BLEND_DST_RGB HEX: 80C8 ; inline
-: GL_BLEND_SRC_RGB HEX: 80C9 ; inline
-: GL_BLEND_DST_ALPHA HEX: 80CA ; inline
-: GL_BLEND_SRC_ALPHA HEX: 80CB ; inline
-: GL_POINT_SIZE_MIN HEX: 8126 ; inline
-: GL_POINT_SIZE_MAX HEX: 8127 ; inline
-: GL_POINT_FADE_THRESHOLD_SIZE HEX: 8128 ; inline
-: GL_POINT_DISTANCE_ATTENUATION HEX: 8129 ; inline
-: GL_GENERATE_MIPMAP HEX: 8191 ; inline
-: GL_GENERATE_MIPMAP_HINT HEX: 8192 ; inline
-: GL_DEPTH_COMPONENT16 HEX: 81A5 ; inline
-: GL_DEPTH_COMPONENT24 HEX: 81A6 ; inline
-: GL_DEPTH_COMPONENT32 HEX: 81A7 ; inline
-: GL_MIRRORED_REPEAT HEX: 8370 ; inline
-: GL_FOG_COORDINATE_SOURCE HEX: 8450 ; inline
-: GL_FOG_COORDINATE HEX: 8451 ; inline
-: GL_FRAGMENT_DEPTH HEX: 8452 ; inline
-: GL_CURRENT_FOG_COORDINATE HEX: 8453 ; inline
-: GL_FOG_COORDINATE_ARRAY_TYPE HEX: 8454 ; inline
-: GL_FOG_COORDINATE_ARRAY_STRIDE HEX: 8455 ; inline
-: GL_FOG_COORDINATE_ARRAY_POINTER HEX: 8456 ; inline
-: GL_FOG_COORDINATE_ARRAY HEX: 8457 ; inline
-: GL_COLOR_SUM HEX: 8458 ; inline
-: GL_CURRENT_SECONDARY_COLOR HEX: 8459 ; inline
-: GL_SECONDARY_COLOR_ARRAY_SIZE HEX: 845A ; inline
-: GL_SECONDARY_COLOR_ARRAY_TYPE HEX: 845B ; inline
-: GL_SECONDARY_COLOR_ARRAY_STRIDE HEX: 845C ; inline
-: GL_SECONDARY_COLOR_ARRAY_POINTER HEX: 845D ; inline
-: GL_SECONDARY_COLOR_ARRAY HEX: 845E ; inline
-: GL_MAX_TEXTURE_LOD_BIAS HEX: 84FD ; inline
-: GL_TEXTURE_FILTER_CONTROL HEX: 8500 ; inline
-: GL_TEXTURE_LOD_BIAS HEX: 8501 ; inline
-: GL_INCR_WRAP HEX: 8507 ; inline
-: GL_DECR_WRAP HEX: 8508 ; inline
-: GL_TEXTURE_DEPTH_SIZE HEX: 884A ; inline
-: GL_DEPTH_TEXTURE_MODE HEX: 884B ; inline
-: GL_TEXTURE_COMPARE_MODE HEX: 884C ; inline
-: GL_TEXTURE_COMPARE_FUNC HEX: 884D ; inline
-: GL_COMPARE_R_TO_TEXTURE HEX: 884E ; inline
+CONSTANT: GL_BLEND_DST_RGB HEX: 80C8
+CONSTANT: GL_BLEND_SRC_RGB HEX: 80C9
+CONSTANT: GL_BLEND_DST_ALPHA HEX: 80CA
+CONSTANT: GL_BLEND_SRC_ALPHA HEX: 80CB
+CONSTANT: GL_POINT_SIZE_MIN HEX: 8126
+CONSTANT: GL_POINT_SIZE_MAX HEX: 8127
+CONSTANT: GL_POINT_FADE_THRESHOLD_SIZE HEX: 8128
+CONSTANT: GL_POINT_DISTANCE_ATTENUATION HEX: 8129
+CONSTANT: GL_GENERATE_MIPMAP HEX: 8191
+CONSTANT: GL_GENERATE_MIPMAP_HINT HEX: 8192
+CONSTANT: GL_DEPTH_COMPONENT16 HEX: 81A5
+CONSTANT: GL_DEPTH_COMPONENT24 HEX: 81A6
+CONSTANT: GL_DEPTH_COMPONENT32 HEX: 81A7
+CONSTANT: GL_MIRRORED_REPEAT HEX: 8370
+CONSTANT: GL_FOG_COORDINATE_SOURCE HEX: 8450
+CONSTANT: GL_FOG_COORDINATE HEX: 8451
+CONSTANT: GL_FRAGMENT_DEPTH HEX: 8452
+CONSTANT: GL_CURRENT_FOG_COORDINATE HEX: 8453
+CONSTANT: GL_FOG_COORDINATE_ARRAY_TYPE HEX: 8454
+CONSTANT: GL_FOG_COORDINATE_ARRAY_STRIDE HEX: 8455
+CONSTANT: GL_FOG_COORDINATE_ARRAY_POINTER HEX: 8456
+CONSTANT: GL_FOG_COORDINATE_ARRAY HEX: 8457
+CONSTANT: GL_COLOR_SUM HEX: 8458
+CONSTANT: GL_CURRENT_SECONDARY_COLOR HEX: 8459
+CONSTANT: GL_SECONDARY_COLOR_ARRAY_SIZE HEX: 845A
+CONSTANT: GL_SECONDARY_COLOR_ARRAY_TYPE HEX: 845B
+CONSTANT: GL_SECONDARY_COLOR_ARRAY_STRIDE HEX: 845C
+CONSTANT: GL_SECONDARY_COLOR_ARRAY_POINTER HEX: 845D
+CONSTANT: GL_SECONDARY_COLOR_ARRAY HEX: 845E
+CONSTANT: GL_MAX_TEXTURE_LOD_BIAS HEX: 84FD
+CONSTANT: GL_TEXTURE_FILTER_CONTROL HEX: 8500
+CONSTANT: GL_TEXTURE_LOD_BIAS HEX: 8501
+CONSTANT: GL_INCR_WRAP HEX: 8507
+CONSTANT: GL_DECR_WRAP HEX: 8508
+CONSTANT: GL_TEXTURE_DEPTH_SIZE HEX: 884A
+CONSTANT: GL_DEPTH_TEXTURE_MODE HEX: 884B
+CONSTANT: GL_TEXTURE_COMPARE_MODE HEX: 884C
+CONSTANT: GL_TEXTURE_COMPARE_FUNC HEX: 884D
+CONSTANT: GL_COMPARE_R_TO_TEXTURE HEX: 884E
GL-FUNCTION: void glBlendColor { glBlendColorEXT } ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) ;
GL-FUNCTION: void glBlendEquation { glBlendEquationEXT } ( GLenum mode ) ;
! OpenGL 1.5
-: GL_BUFFER_SIZE HEX: 8764 ; inline
-: GL_BUFFER_USAGE HEX: 8765 ; inline
-: GL_QUERY_COUNTER_BITS HEX: 8864 ; inline
-: GL_CURRENT_QUERY HEX: 8865 ; inline
-: GL_QUERY_RESULT HEX: 8866 ; inline
-: GL_QUERY_RESULT_AVAILABLE HEX: 8867 ; inline
-: GL_ARRAY_BUFFER HEX: 8892 ; inline
-: GL_ELEMENT_ARRAY_BUFFER HEX: 8893 ; inline
-: GL_ARRAY_BUFFER_BINDING HEX: 8894 ; inline
-: GL_ELEMENT_ARRAY_BUFFER_BINDING HEX: 8895 ; inline
-: GL_VERTEX_ARRAY_BUFFER_BINDING HEX: 8896 ; inline
-: GL_NORMAL_ARRAY_BUFFER_BINDING HEX: 8897 ; inline
-: GL_COLOR_ARRAY_BUFFER_BINDING HEX: 8898 ; inline
-: GL_INDEX_ARRAY_BUFFER_BINDING HEX: 8899 ; inline
-: GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING HEX: 889A ; inline
-: GL_EDGE_FLAG_ARRAY_BUFFER_BINDING HEX: 889B ; inline
-: GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING HEX: 889C ; inline
-: GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING HEX: 889D ; inline
-: GL_WEIGHT_ARRAY_BUFFER_BINDING HEX: 889E ; inline
-: GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING HEX: 889F ; inline
-: GL_READ_ONLY HEX: 88B8 ; inline
-: GL_WRITE_ONLY HEX: 88B9 ; inline
-: GL_READ_WRITE HEX: 88BA ; inline
-: GL_BUFFER_ACCESS HEX: 88BB ; inline
-: GL_BUFFER_MAPPED HEX: 88BC ; inline
-: GL_BUFFER_MAP_POINTER HEX: 88BD ; inline
-: GL_STREAM_DRAW HEX: 88E0 ; inline
-: GL_STREAM_READ HEX: 88E1 ; inline
-: GL_STREAM_COPY HEX: 88E2 ; inline
-: GL_STATIC_DRAW HEX: 88E4 ; inline
-: GL_STATIC_READ HEX: 88E5 ; inline
-: GL_STATIC_COPY HEX: 88E6 ; inline
-: GL_DYNAMIC_DRAW HEX: 88E8 ; inline
-: GL_DYNAMIC_READ HEX: 88E9 ; inline
-: GL_DYNAMIC_COPY HEX: 88EA ; inline
-: GL_SAMPLES_PASSED HEX: 8914 ; inline
-: GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE ; inline
-: GL_FOG_COORD GL_FOG_COORDINATE ; inline
-: GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY ; inline
-: GL_SRC0_RGB GL_SOURCE0_RGB ; inline
-: GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER ; inline
-: GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE ; inline
-: GL_SRC1_ALPHA GL_SOURCE1_ALPHA ; inline
-: GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE ; inline
-: GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE ; inline
-: GL_SRC0_ALPHA GL_SOURCE0_ALPHA ; inline
-: GL_SRC1_RGB GL_SOURCE1_RGB ; inline
-: GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING ; inline
-: GL_SRC2_ALPHA GL_SOURCE2_ALPHA ; inline
-: GL_SRC2_RGB GL_SOURCE2_RGB ; inline
+CONSTANT: GL_BUFFER_SIZE HEX: 8764
+CONSTANT: GL_BUFFER_USAGE HEX: 8765
+CONSTANT: GL_QUERY_COUNTER_BITS HEX: 8864
+CONSTANT: GL_CURRENT_QUERY HEX: 8865
+CONSTANT: GL_QUERY_RESULT HEX: 8866
+CONSTANT: GL_QUERY_RESULT_AVAILABLE HEX: 8867
+CONSTANT: GL_ARRAY_BUFFER HEX: 8892
+CONSTANT: GL_ELEMENT_ARRAY_BUFFER HEX: 8893
+CONSTANT: GL_ARRAY_BUFFER_BINDING HEX: 8894
+CONSTANT: GL_ELEMENT_ARRAY_BUFFER_BINDING HEX: 8895
+CONSTANT: GL_VERTEX_ARRAY_BUFFER_BINDING HEX: 8896
+CONSTANT: GL_NORMAL_ARRAY_BUFFER_BINDING HEX: 8897
+CONSTANT: GL_COLOR_ARRAY_BUFFER_BINDING HEX: 8898
+CONSTANT: GL_INDEX_ARRAY_BUFFER_BINDING HEX: 8899
+CONSTANT: GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING HEX: 889A
+CONSTANT: GL_EDGE_FLAG_ARRAY_BUFFER_BINDING HEX: 889B
+CONSTANT: GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING HEX: 889C
+CONSTANT: GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING HEX: 889D
+CONSTANT: GL_WEIGHT_ARRAY_BUFFER_BINDING HEX: 889E
+CONSTANT: GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING HEX: 889F
+CONSTANT: GL_READ_ONLY HEX: 88B8
+CONSTANT: GL_WRITE_ONLY HEX: 88B9
+CONSTANT: GL_READ_WRITE HEX: 88BA
+CONSTANT: GL_BUFFER_ACCESS HEX: 88BB
+CONSTANT: GL_BUFFER_MAPPED HEX: 88BC
+CONSTANT: GL_BUFFER_MAP_POINTER HEX: 88BD
+CONSTANT: GL_STREAM_DRAW HEX: 88E0
+CONSTANT: GL_STREAM_READ HEX: 88E1
+CONSTANT: GL_STREAM_COPY HEX: 88E2
+CONSTANT: GL_STATIC_DRAW HEX: 88E4
+CONSTANT: GL_STATIC_READ HEX: 88E5
+CONSTANT: GL_STATIC_COPY HEX: 88E6
+CONSTANT: GL_DYNAMIC_DRAW HEX: 88E8
+CONSTANT: GL_DYNAMIC_READ HEX: 88E9
+CONSTANT: GL_DYNAMIC_COPY HEX: 88EA
+CONSTANT: GL_SAMPLES_PASSED HEX: 8914
+ALIAS: GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
+ALIAS: GL_FOG_COORD GL_FOG_COORDINATE
+ALIAS: GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY
+ALIAS: GL_SRC0_RGB GL_SOURCE0_RGB
+ALIAS: GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER
+ALIAS: GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
+ALIAS: GL_SRC1_ALPHA GL_SOURCE1_ALPHA
+ALIAS: GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE
+ALIAS: GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
+ALIAS: GL_SRC0_ALPHA GL_SOURCE0_ALPHA
+ALIAS: GL_SRC1_RGB GL_SOURCE1_RGB
+ALIAS: GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
+ALIAS: GL_SRC2_ALPHA GL_SOURCE2_ALPHA
+ALIAS: GL_SRC2_RGB GL_SOURCE2_RGB
TYPEDEF: ptrdiff_t GLsizeiptr
TYPEDEF: ptrdiff_t GLintptr
! OpenGL 2.0
-: GL_VERTEX_ATTRIB_ARRAY_ENABLED HEX: 8622 ; inline
-: GL_VERTEX_ATTRIB_ARRAY_SIZE HEX: 8623 ; inline
-: GL_VERTEX_ATTRIB_ARRAY_STRIDE HEX: 8624 ; inline
-: GL_VERTEX_ATTRIB_ARRAY_TYPE HEX: 8625 ; inline
-: GL_CURRENT_VERTEX_ATTRIB HEX: 8626 ; inline
-: GL_VERTEX_PROGRAM_POINT_SIZE HEX: 8642 ; inline
-: GL_VERTEX_PROGRAM_TWO_SIDE HEX: 8643 ; inline
-: GL_VERTEX_ATTRIB_ARRAY_POINTER HEX: 8645 ; inline
-: GL_STENCIL_BACK_FUNC HEX: 8800 ; inline
-: GL_STENCIL_BACK_FAIL HEX: 8801 ; inline
-: GL_STENCIL_BACK_PASS_DEPTH_FAIL HEX: 8802 ; inline
-: GL_STENCIL_BACK_PASS_DEPTH_PASS HEX: 8803 ; inline
-: GL_MAX_DRAW_BUFFERS HEX: 8824 ; inline
-: GL_DRAW_BUFFER0 HEX: 8825 ; inline
-: GL_DRAW_BUFFER1 HEX: 8826 ; inline
-: GL_DRAW_BUFFER2 HEX: 8827 ; inline
-: GL_DRAW_BUFFER3 HEX: 8828 ; inline
-: GL_DRAW_BUFFER4 HEX: 8829 ; inline
-: GL_DRAW_BUFFER5 HEX: 882A ; inline
-: GL_DRAW_BUFFER6 HEX: 882B ; inline
-: GL_DRAW_BUFFER7 HEX: 882C ; inline
-: GL_DRAW_BUFFER8 HEX: 882D ; inline
-: GL_DRAW_BUFFER9 HEX: 882E ; inline
-: GL_DRAW_BUFFER10 HEX: 882F ; inline
-: GL_DRAW_BUFFER11 HEX: 8830 ; inline
-: GL_DRAW_BUFFER12 HEX: 8831 ; inline
-: GL_DRAW_BUFFER13 HEX: 8832 ; inline
-: GL_DRAW_BUFFER14 HEX: 8833 ; inline
-: GL_DRAW_BUFFER15 HEX: 8834 ; inline
-: GL_BLEND_EQUATION_ALPHA HEX: 883D ; inline
-: GL_POINT_SPRITE HEX: 8861 ; inline
-: GL_COORD_REPLACE HEX: 8862 ; inline
-: GL_MAX_VERTEX_ATTRIBS HEX: 8869 ; inline
-: GL_VERTEX_ATTRIB_ARRAY_NORMALIZED HEX: 886A ; inline
-: GL_MAX_TEXTURE_COORDS HEX: 8871 ; inline
-: GL_MAX_TEXTURE_IMAGE_UNITS HEX: 8872 ; inline
-: GL_FRAGMENT_SHADER HEX: 8B30 ; inline
-: GL_VERTEX_SHADER HEX: 8B31 ; inline
-: GL_MAX_FRAGMENT_UNIFORM_COMPONENTS HEX: 8B49 ; inline
-: GL_MAX_VERTEX_UNIFORM_COMPONENTS HEX: 8B4A ; inline
-: GL_MAX_VARYING_FLOATS HEX: 8B4B ; inline
-: GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS HEX: 8B4C ; inline
-: GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS HEX: 8B4D ; inline
-: GL_SHADER_TYPE HEX: 8B4F ; inline
-: GL_FLOAT_VEC2 HEX: 8B50 ; inline
-: GL_FLOAT_VEC3 HEX: 8B51 ; inline
-: GL_FLOAT_VEC4 HEX: 8B52 ; inline
-: GL_INT_VEC2 HEX: 8B53 ; inline
-: GL_INT_VEC3 HEX: 8B54 ; inline
-: GL_INT_VEC4 HEX: 8B55 ; inline
-: GL_BOOL HEX: 8B56 ; inline
-: GL_BOOL_VEC2 HEX: 8B57 ; inline
-: GL_BOOL_VEC3 HEX: 8B58 ; inline
-: GL_BOOL_VEC4 HEX: 8B59 ; inline
-: GL_FLOAT_MAT2 HEX: 8B5A ; inline
-: GL_FLOAT_MAT3 HEX: 8B5B ; inline
-: GL_FLOAT_MAT4 HEX: 8B5C ; inline
-: GL_SAMPLER_1D HEX: 8B5D ; inline
-: GL_SAMPLER_2D HEX: 8B5E ; inline
-: GL_SAMPLER_3D HEX: 8B5F ; inline
-: GL_SAMPLER_CUBE HEX: 8B60 ; inline
-: GL_SAMPLER_1D_SHADOW HEX: 8B61 ; inline
-: GL_SAMPLER_2D_SHADOW HEX: 8B62 ; inline
-: GL_DELETE_STATUS HEX: 8B80 ; inline
-: GL_COMPILE_STATUS HEX: 8B81 ; inline
-: GL_LINK_STATUS HEX: 8B82 ; inline
-: GL_VALIDATE_STATUS HEX: 8B83 ; inline
-: GL_INFO_LOG_LENGTH HEX: 8B84 ; inline
-: GL_ATTACHED_SHADERS HEX: 8B85 ; inline
-: GL_ACTIVE_UNIFORMS HEX: 8B86 ; inline
-: GL_ACTIVE_UNIFORM_MAX_LENGTH HEX: 8B87 ; inline
-: GL_SHADER_SOURCE_LENGTH HEX: 8B88 ; inline
-: GL_ACTIVE_ATTRIBUTES HEX: 8B89 ; inline
-: GL_ACTIVE_ATTRIBUTE_MAX_LENGTH HEX: 8B8A ; inline
-: GL_FRAGMENT_SHADER_DERIVATIVE_HINT HEX: 8B8B ; inline
-: GL_SHADING_LANGUAGE_VERSION HEX: 8B8C ; inline
-: GL_CURRENT_PROGRAM HEX: 8B8D ; inline
-: GL_POINT_SPRITE_COORD_ORIGIN HEX: 8CA0 ; inline
-: GL_LOWER_LEFT HEX: 8CA1 ; inline
-: GL_UPPER_LEFT HEX: 8CA2 ; inline
-: GL_STENCIL_BACK_REF HEX: 8CA3 ; inline
-: GL_STENCIL_BACK_VALUE_MASK HEX: 8CA4 ; inline
-: GL_STENCIL_BACK_WRITEMASK HEX: 8CA5 ; inline
-: GL_BLEND_EQUATION HEX: 8009 ; inline
-: GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION ; inline
+CONSTANT: GL_VERTEX_ATTRIB_ARRAY_ENABLED HEX: 8622
+CONSTANT: GL_VERTEX_ATTRIB_ARRAY_SIZE HEX: 8623
+CONSTANT: GL_VERTEX_ATTRIB_ARRAY_STRIDE HEX: 8624
+CONSTANT: GL_VERTEX_ATTRIB_ARRAY_TYPE HEX: 8625
+CONSTANT: GL_CURRENT_VERTEX_ATTRIB HEX: 8626
+CONSTANT: GL_VERTEX_PROGRAM_POINT_SIZE HEX: 8642
+CONSTANT: GL_VERTEX_PROGRAM_TWO_SIDE HEX: 8643
+CONSTANT: GL_VERTEX_ATTRIB_ARRAY_POINTER HEX: 8645
+CONSTANT: GL_STENCIL_BACK_FUNC HEX: 8800
+CONSTANT: GL_STENCIL_BACK_FAIL HEX: 8801
+CONSTANT: GL_STENCIL_BACK_PASS_DEPTH_FAIL HEX: 8802
+CONSTANT: GL_STENCIL_BACK_PASS_DEPTH_PASS HEX: 8803
+CONSTANT: GL_MAX_DRAW_BUFFERS HEX: 8824
+CONSTANT: GL_DRAW_BUFFER0 HEX: 8825
+CONSTANT: GL_DRAW_BUFFER1 HEX: 8826
+CONSTANT: GL_DRAW_BUFFER2 HEX: 8827
+CONSTANT: GL_DRAW_BUFFER3 HEX: 8828
+CONSTANT: GL_DRAW_BUFFER4 HEX: 8829
+CONSTANT: GL_DRAW_BUFFER5 HEX: 882A
+CONSTANT: GL_DRAW_BUFFER6 HEX: 882B
+CONSTANT: GL_DRAW_BUFFER7 HEX: 882C
+CONSTANT: GL_DRAW_BUFFER8 HEX: 882D
+CONSTANT: GL_DRAW_BUFFER9 HEX: 882E
+CONSTANT: GL_DRAW_BUFFER10 HEX: 882F
+CONSTANT: GL_DRAW_BUFFER11 HEX: 8830
+CONSTANT: GL_DRAW_BUFFER12 HEX: 8831
+CONSTANT: GL_DRAW_BUFFER13 HEX: 8832
+CONSTANT: GL_DRAW_BUFFER14 HEX: 8833
+CONSTANT: GL_DRAW_BUFFER15 HEX: 8834
+CONSTANT: GL_BLEND_EQUATION_ALPHA HEX: 883D
+CONSTANT: GL_POINT_SPRITE HEX: 8861
+CONSTANT: GL_COORD_REPLACE HEX: 8862
+CONSTANT: GL_MAX_VERTEX_ATTRIBS HEX: 8869
+CONSTANT: GL_VERTEX_ATTRIB_ARRAY_NORMALIZED HEX: 886A
+CONSTANT: GL_MAX_TEXTURE_COORDS HEX: 8871
+CONSTANT: GL_MAX_TEXTURE_IMAGE_UNITS HEX: 8872
+CONSTANT: GL_FRAGMENT_SHADER HEX: 8B30
+CONSTANT: GL_VERTEX_SHADER HEX: 8B31
+CONSTANT: GL_MAX_FRAGMENT_UNIFORM_COMPONENTS HEX: 8B49
+CONSTANT: GL_MAX_VERTEX_UNIFORM_COMPONENTS HEX: 8B4A
+CONSTANT: GL_MAX_VARYING_FLOATS HEX: 8B4B
+CONSTANT: GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS HEX: 8B4C
+CONSTANT: GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS HEX: 8B4D
+CONSTANT: GL_SHADER_TYPE HEX: 8B4F
+CONSTANT: GL_FLOAT_VEC2 HEX: 8B50
+CONSTANT: GL_FLOAT_VEC3 HEX: 8B51
+CONSTANT: GL_FLOAT_VEC4 HEX: 8B52
+CONSTANT: GL_INT_VEC2 HEX: 8B53
+CONSTANT: GL_INT_VEC3 HEX: 8B54
+CONSTANT: GL_INT_VEC4 HEX: 8B55
+CONSTANT: GL_BOOL HEX: 8B56
+CONSTANT: GL_BOOL_VEC2 HEX: 8B57
+CONSTANT: GL_BOOL_VEC3 HEX: 8B58
+CONSTANT: GL_BOOL_VEC4 HEX: 8B59
+CONSTANT: GL_FLOAT_MAT2 HEX: 8B5A
+CONSTANT: GL_FLOAT_MAT3 HEX: 8B5B
+CONSTANT: GL_FLOAT_MAT4 HEX: 8B5C
+CONSTANT: GL_SAMPLER_1D HEX: 8B5D
+CONSTANT: GL_SAMPLER_2D HEX: 8B5E
+CONSTANT: GL_SAMPLER_3D HEX: 8B5F
+CONSTANT: GL_SAMPLER_CUBE HEX: 8B60
+CONSTANT: GL_SAMPLER_1D_SHADOW HEX: 8B61
+CONSTANT: GL_SAMPLER_2D_SHADOW HEX: 8B62
+CONSTANT: GL_DELETE_STATUS HEX: 8B80
+CONSTANT: GL_COMPILE_STATUS HEX: 8B81
+CONSTANT: GL_LINK_STATUS HEX: 8B82
+CONSTANT: GL_VALIDATE_STATUS HEX: 8B83
+CONSTANT: GL_INFO_LOG_LENGTH HEX: 8B84
+CONSTANT: GL_ATTACHED_SHADERS HEX: 8B85
+CONSTANT: GL_ACTIVE_UNIFORMS HEX: 8B86
+CONSTANT: GL_ACTIVE_UNIFORM_MAX_LENGTH HEX: 8B87
+CONSTANT: GL_SHADER_SOURCE_LENGTH HEX: 8B88
+CONSTANT: GL_ACTIVE_ATTRIBUTES HEX: 8B89
+CONSTANT: GL_ACTIVE_ATTRIBUTE_MAX_LENGTH HEX: 8B8A
+CONSTANT: GL_FRAGMENT_SHADER_DERIVATIVE_HINT HEX: 8B8B
+CONSTANT: GL_SHADING_LANGUAGE_VERSION HEX: 8B8C
+CONSTANT: GL_CURRENT_PROGRAM HEX: 8B8D
+CONSTANT: GL_POINT_SPRITE_COORD_ORIGIN HEX: 8CA0
+CONSTANT: GL_LOWER_LEFT HEX: 8CA1
+CONSTANT: GL_UPPER_LEFT HEX: 8CA2
+CONSTANT: GL_STENCIL_BACK_REF HEX: 8CA3
+CONSTANT: GL_STENCIL_BACK_VALUE_MASK HEX: 8CA4
+CONSTANT: GL_STENCIL_BACK_WRITEMASK HEX: 8CA5
+CONSTANT: GL_BLEND_EQUATION HEX: 8009
+ALIAS: GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION
TYPEDEF: char GLchar
! OpenGL 2.1
-: GL_CURRENT_RASTER_SECONDARY_COLOR HEX: 845F ; inline
-: GL_PIXEL_PACK_BUFFER HEX: 88EB ; inline
-: GL_PIXEL_UNPACK_BUFFER HEX: 88EC ; inline
-: GL_PIXEL_PACK_BUFFER_BINDING HEX: 88ED ; inline
-: GL_PIXEL_UNPACK_BUFFER_BINDING HEX: 88EF ; inline
-: GL_SRGB HEX: 8C40 ; inline
-: GL_SRGB8 HEX: 8C41 ; inline
-: GL_SRGB_ALPHA HEX: 8C42 ; inline
-: GL_SRGB8_ALPHA8 HEX: 8C43 ; inline
-: GL_SLUMINANCE_ALPHA HEX: 8C44 ; inline
-: GL_SLUMINANCE8_ALPHA8 HEX: 8C45 ; inline
-: GL_SLUMINANCE HEX: 8C46 ; inline
-: GL_SLUMINANCE8 HEX: 8C47 ; inline
-: GL_COMPRESSED_SRGB HEX: 8C48 ; inline
-: GL_COMPRESSED_SRGB_ALPHA HEX: 8C49 ; inline
-: GL_COMPRESSED_SLUMINANCE HEX: 8C4A ; inline
-: GL_COMPRESSED_SLUMINANCE_ALPHA HEX: 8C4B ; inline
+CONSTANT: GL_CURRENT_RASTER_SECONDARY_COLOR HEX: 845F
+CONSTANT: GL_PIXEL_PACK_BUFFER HEX: 88EB
+CONSTANT: GL_PIXEL_UNPACK_BUFFER HEX: 88EC
+CONSTANT: GL_PIXEL_PACK_BUFFER_BINDING HEX: 88ED
+CONSTANT: GL_PIXEL_UNPACK_BUFFER_BINDING HEX: 88EF
+CONSTANT: GL_SRGB HEX: 8C40
+CONSTANT: GL_SRGB8 HEX: 8C41
+CONSTANT: GL_SRGB_ALPHA HEX: 8C42
+CONSTANT: GL_SRGB8_ALPHA8 HEX: 8C43
+CONSTANT: GL_SLUMINANCE_ALPHA HEX: 8C44
+CONSTANT: GL_SLUMINANCE8_ALPHA8 HEX: 8C45
+CONSTANT: GL_SLUMINANCE HEX: 8C46
+CONSTANT: GL_SLUMINANCE8 HEX: 8C47
+CONSTANT: GL_COMPRESSED_SRGB HEX: 8C48
+CONSTANT: GL_COMPRESSED_SRGB_ALPHA HEX: 8C49
+CONSTANT: GL_COMPRESSED_SLUMINANCE HEX: 8C4A
+CONSTANT: GL_COMPRESSED_SLUMINANCE_ALPHA HEX: 8C4B
GL-FUNCTION: void glUniformMatrix2x3fv { } ( GLint location, GLsizei count, GLboolean transpose, GLfloat* value ) ;
GL-FUNCTION: void glUniformMatrix2x4fv { } ( GLint location, GLsizei count, GLboolean transpose, GLfloat* value ) ;
! GL_EXT_framebuffer_object
-: GL_INVALID_FRAMEBUFFER_OPERATION_EXT HEX: 0506 ; inline
-: GL_MAX_RENDERBUFFER_SIZE_EXT HEX: 84E8 ; inline
-: GL_FRAMEBUFFER_BINDING_EXT HEX: 8CA6 ; inline
-: GL_RENDERBUFFER_BINDING_EXT HEX: 8CA7 ; inline
-: GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT HEX: 8CD0 ; inline
-: GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT HEX: 8CD1 ; inline
-: GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT HEX: 8CD2 ; inline
-: GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT HEX: 8CD3 ; inline
-: GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT HEX: 8CD4 ; inline
-: GL_FRAMEBUFFER_COMPLETE_EXT HEX: 8CD5 ; inline
-: GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT HEX: 8CD6 ; inline
-: GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT HEX: 8CD7 ; inline
-: GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT HEX: 8CD9 ; inline
-: GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT HEX: 8CDA ; inline
-: GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT HEX: 8CDB ; inline
-: GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT HEX: 8CDC ; inline
-: GL_FRAMEBUFFER_UNSUPPORTED_EXT HEX: 8CDD ; inline
-: GL_MAX_COLOR_ATTACHMENTS_EXT HEX: 8CDF ; inline
-: GL_COLOR_ATTACHMENT0_EXT HEX: 8CE0 ; inline
-: GL_COLOR_ATTACHMENT1_EXT HEX: 8CE1 ; inline
-: GL_COLOR_ATTACHMENT2_EXT HEX: 8CE2 ; inline
-: GL_COLOR_ATTACHMENT3_EXT HEX: 8CE3 ; inline
-: GL_COLOR_ATTACHMENT4_EXT HEX: 8CE4 ; inline
-: GL_COLOR_ATTACHMENT5_EXT HEX: 8CE5 ; inline
-: GL_COLOR_ATTACHMENT6_EXT HEX: 8CE6 ; inline
-: GL_COLOR_ATTACHMENT7_EXT HEX: 8CE7 ; inline
-: GL_COLOR_ATTACHMENT8_EXT HEX: 8CE8 ; inline
-: GL_COLOR_ATTACHMENT9_EXT HEX: 8CE9 ; inline
-: GL_COLOR_ATTACHMENT10_EXT HEX: 8CEA ; inline
-: GL_COLOR_ATTACHMENT11_EXT HEX: 8CEB ; inline
-: GL_COLOR_ATTACHMENT12_EXT HEX: 8CEC ; inline
-: GL_COLOR_ATTACHMENT13_EXT HEX: 8CED ; inline
-: GL_COLOR_ATTACHMENT14_EXT HEX: 8CEE ; inline
-: GL_COLOR_ATTACHMENT15_EXT HEX: 8CEF ; inline
-: GL_DEPTH_ATTACHMENT_EXT HEX: 8D00 ; inline
-: GL_STENCIL_ATTACHMENT_EXT HEX: 8D20 ; inline
-: GL_FRAMEBUFFER_EXT HEX: 8D40 ; inline
-: GL_RENDERBUFFER_EXT HEX: 8D41 ; inline
-: GL_RENDERBUFFER_WIDTH_EXT HEX: 8D42 ; inline
-: GL_RENDERBUFFER_HEIGHT_EXT HEX: 8D43 ; inline
-: GL_RENDERBUFFER_INTERNAL_FORMAT_EXT HEX: 8D44 ; inline
-: GL_STENCIL_INDEX1_EXT HEX: 8D46 ; inline
-: GL_STENCIL_INDEX4_EXT HEX: 8D47 ; inline
-: GL_STENCIL_INDEX8_EXT HEX: 8D48 ; inline
-: GL_STENCIL_INDEX16_EXT HEX: 8D49 ; inline
-: GL_RENDERBUFFER_RED_SIZE_EXT HEX: 8D50 ; inline
-: GL_RENDERBUFFER_GREEN_SIZE_EXT HEX: 8D51 ; inline
-: GL_RENDERBUFFER_BLUE_SIZE_EXT HEX: 8D52 ; inline
-: GL_RENDERBUFFER_ALPHA_SIZE_EXT HEX: 8D53 ; inline
-: GL_RENDERBUFFER_DEPTH_SIZE_EXT HEX: 8D54 ; inline
-: GL_RENDERBUFFER_STENCIL_SIZE_EXT HEX: 8D55 ; inline
+CONSTANT: GL_INVALID_FRAMEBUFFER_OPERATION_EXT HEX: 0506
+CONSTANT: GL_MAX_RENDERBUFFER_SIZE_EXT HEX: 84E8
+CONSTANT: GL_FRAMEBUFFER_BINDING_EXT HEX: 8CA6
+CONSTANT: GL_RENDERBUFFER_BINDING_EXT HEX: 8CA7
+CONSTANT: GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT HEX: 8CD0
+CONSTANT: GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT HEX: 8CD1
+CONSTANT: GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT HEX: 8CD2
+CONSTANT: GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT HEX: 8CD3
+CONSTANT: GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT HEX: 8CD4
+CONSTANT: GL_FRAMEBUFFER_COMPLETE_EXT HEX: 8CD5
+CONSTANT: GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT HEX: 8CD6
+CONSTANT: GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT HEX: 8CD7
+CONSTANT: GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT HEX: 8CD9
+CONSTANT: GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT HEX: 8CDA
+CONSTANT: GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT HEX: 8CDB
+CONSTANT: GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT HEX: 8CDC
+CONSTANT: GL_FRAMEBUFFER_UNSUPPORTED_EXT HEX: 8CDD
+CONSTANT: GL_MAX_COLOR_ATTACHMENTS_EXT HEX: 8CDF
+CONSTANT: GL_COLOR_ATTACHMENT0_EXT HEX: 8CE0
+CONSTANT: GL_COLOR_ATTACHMENT1_EXT HEX: 8CE1
+CONSTANT: GL_COLOR_ATTACHMENT2_EXT HEX: 8CE2
+CONSTANT: GL_COLOR_ATTACHMENT3_EXT HEX: 8CE3
+CONSTANT: GL_COLOR_ATTACHMENT4_EXT HEX: 8CE4
+CONSTANT: GL_COLOR_ATTACHMENT5_EXT HEX: 8CE5
+CONSTANT: GL_COLOR_ATTACHMENT6_EXT HEX: 8CE6
+CONSTANT: GL_COLOR_ATTACHMENT7_EXT HEX: 8CE7
+CONSTANT: GL_COLOR_ATTACHMENT8_EXT HEX: 8CE8
+CONSTANT: GL_COLOR_ATTACHMENT9_EXT HEX: 8CE9
+CONSTANT: GL_COLOR_ATTACHMENT10_EXT HEX: 8CEA
+CONSTANT: GL_COLOR_ATTACHMENT11_EXT HEX: 8CEB
+CONSTANT: GL_COLOR_ATTACHMENT12_EXT HEX: 8CEC
+CONSTANT: GL_COLOR_ATTACHMENT13_EXT HEX: 8CED
+CONSTANT: GL_COLOR_ATTACHMENT14_EXT HEX: 8CEE
+CONSTANT: GL_COLOR_ATTACHMENT15_EXT HEX: 8CEF
+CONSTANT: GL_DEPTH_ATTACHMENT_EXT HEX: 8D00
+CONSTANT: GL_STENCIL_ATTACHMENT_EXT HEX: 8D20
+CONSTANT: GL_FRAMEBUFFER_EXT HEX: 8D40
+CONSTANT: GL_RENDERBUFFER_EXT HEX: 8D41
+CONSTANT: GL_RENDERBUFFER_WIDTH_EXT HEX: 8D42
+CONSTANT: GL_RENDERBUFFER_HEIGHT_EXT HEX: 8D43
+CONSTANT: GL_RENDERBUFFER_INTERNAL_FORMAT_EXT HEX: 8D44
+CONSTANT: GL_STENCIL_INDEX1_EXT HEX: 8D46
+CONSTANT: GL_STENCIL_INDEX4_EXT HEX: 8D47
+CONSTANT: GL_STENCIL_INDEX8_EXT HEX: 8D48
+CONSTANT: GL_STENCIL_INDEX16_EXT HEX: 8D49
+CONSTANT: GL_RENDERBUFFER_RED_SIZE_EXT HEX: 8D50
+CONSTANT: GL_RENDERBUFFER_GREEN_SIZE_EXT HEX: 8D51
+CONSTANT: GL_RENDERBUFFER_BLUE_SIZE_EXT HEX: 8D52
+CONSTANT: GL_RENDERBUFFER_ALPHA_SIZE_EXT HEX: 8D53
+CONSTANT: GL_RENDERBUFFER_DEPTH_SIZE_EXT HEX: 8D54
+CONSTANT: GL_RENDERBUFFER_STENCIL_SIZE_EXT HEX: 8D55
GL-FUNCTION: void glBindFramebufferEXT { } ( GLenum target, GLuint framebuffer ) ;
GL-FUNCTION: void glBindRenderbufferEXT { } ( GLenum target, GLuint renderbuffer ) ;
! GL_ARB_texture_float
-: GL_RGBA32F_ARB HEX: 8814 ; inline
-: GL_RGB32F_ARB HEX: 8815 ; inline
-: GL_ALPHA32F_ARB HEX: 8816 ; inline
-: GL_INTENSITY32F_ARB HEX: 8817 ; inline
-: GL_LUMINANCE32F_ARB HEX: 8818 ; inline
-: GL_LUMINANCE_ALPHA32F_ARB HEX: 8819 ; inline
-: GL_RGBA16F_ARB HEX: 881A ; inline
-: GL_RGB16F_ARB HEX: 881B ; inline
-: GL_ALPHA16F_ARB HEX: 881C ; inline
-: GL_INTENSITY16F_ARB HEX: 881D ; inline
-: GL_LUMINANCE16F_ARB HEX: 881E ; inline
-: GL_LUMINANCE_ALPHA16F_ARB HEX: 881F ; inline
-: GL_TEXTURE_RED_TYPE_ARB HEX: 8C10 ; inline
-: GL_TEXTURE_GREEN_TYPE_ARB HEX: 8C11 ; inline
-: GL_TEXTURE_BLUE_TYPE_ARB HEX: 8C12 ; inline
-: GL_TEXTURE_ALPHA_TYPE_ARB HEX: 8C13 ; inline
-: GL_TEXTURE_LUMINANCE_TYPE_ARB HEX: 8C14 ; inline
-: GL_TEXTURE_INTENSITY_TYPE_ARB HEX: 8C15 ; inline
-: GL_TEXTURE_DEPTH_TYPE_ARB HEX: 8C16 ; inline
-: GL_UNSIGNED_NORMALIZED_ARB HEX: 8C17 ; inline
+CONSTANT: GL_RGBA32F_ARB HEX: 8814
+CONSTANT: GL_RGB32F_ARB HEX: 8815
+CONSTANT: GL_ALPHA32F_ARB HEX: 8816
+CONSTANT: GL_INTENSITY32F_ARB HEX: 8817
+CONSTANT: GL_LUMINANCE32F_ARB HEX: 8818
+CONSTANT: GL_LUMINANCE_ALPHA32F_ARB HEX: 8819
+CONSTANT: GL_RGBA16F_ARB HEX: 881A
+CONSTANT: GL_RGB16F_ARB HEX: 881B
+CONSTANT: GL_ALPHA16F_ARB HEX: 881C
+CONSTANT: GL_INTENSITY16F_ARB HEX: 881D
+CONSTANT: GL_LUMINANCE16F_ARB HEX: 881E
+CONSTANT: GL_LUMINANCE_ALPHA16F_ARB HEX: 881F
+CONSTANT: GL_TEXTURE_RED_TYPE_ARB HEX: 8C10
+CONSTANT: GL_TEXTURE_GREEN_TYPE_ARB HEX: 8C11
+CONSTANT: GL_TEXTURE_BLUE_TYPE_ARB HEX: 8C12
+CONSTANT: GL_TEXTURE_ALPHA_TYPE_ARB HEX: 8C13
+CONSTANT: GL_TEXTURE_LUMINANCE_TYPE_ARB HEX: 8C14
+CONSTANT: GL_TEXTURE_INTENSITY_TYPE_ARB HEX: 8C15
+CONSTANT: GL_TEXTURE_DEPTH_TYPE_ARB HEX: 8C16
+CONSTANT: GL_UNSIGNED_NORMALIZED_ARB HEX: 8C17
! 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
{ [ os unix? ] [ "libssl" "libssl.so" "cdecl" add-library ] }
} cond >>
-: X509_FILETYPE_PEM 1 ; inline
-: X509_FILETYPE_ASN1 2 ; inline
-: X509_FILETYPE_DEFAULT 3 ; inline
-
-: SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 ; inline
-: SSL_FILETYPE_PEM X509_FILETYPE_PEM ; inline
-
-: 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
-
-: 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
-
-: SSL_CTRL_SET_MSG_CALLBACK 13 ; inline
-: SSL_CTRL_SET_MSG_CALLBACK_ARG 14 ; inline
-
-: 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
-
-: 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
-
-: SSL_CTRL_GET_MAX_CERT_LIST 50 ; inline
-: SSL_CTRL_SET_MAX_CERT_LIST 51 ; inline
-
-: 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: X509_FILETYPE_PEM 1
+CONSTANT: X509_FILETYPE_ASN1 2
+CONSTANT: X509_FILETYPE_DEFAULT 3
+
+ALIAS: SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1
+ALIAS: SSL_FILETYPE_PEM X509_FILETYPE_PEM
+
+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
+
+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
+
+CONSTANT: SSL_CTRL_SET_MSG_CALLBACK 13
+CONSTANT: SSL_CTRL_SET_MSG_CALLBACK_ARG 14
+
+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
+
+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
+
+CONSTANT: SSL_CTRL_GET_MAX_CERT_LIST 50
+CONSTANT: SSL_CTRL_SET_MAX_CERT_LIST 51
+
+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 )
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 ) ;
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 ) ;
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 ) ;
: 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
: 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
>>
! obj_mac.h
! ===============================================
-: NID_commonName 13 ; inline
+CONSTANT: NID_commonName 13
: 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 ;
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 )
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 } "." } ;
<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
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." } ;
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? [
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{ \ } ;
: effect-required? ( word -- ? )
{
- { [ dup inline? ] [ drop f ] }
{ [ dup deferred? ] [ drop f ] }
{ [ dup crossref? not ] [ drop f ] }
[ def>> [ word? ] contains? ]
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
! See http://factorcode.org/license.txt for BSD license.
USING: accessors calendar.format combinators io.files
kernel math.parser sequences splitting system tools.files
-generalizations tools.files.private ;
+generalizations tools.files.private io.files.info ;
IN: tools.files.windows
<PRIVATE
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 ;
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-
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 )
-{ $values { "pane" pane } { "stream" "a new " { $link pane-stream } } }
+HELP: <pane-stream>
+{ $values { "pane" pane } { "pane-stream" "a new " { $link pane-stream } } }
{ $description "Creates a new " { $link pane-stream } " for writing to " { $snippet "pane" } "." } ;
{ with-pane make-pane } related-words
! 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
+constants ;
IN: unix
-: MAXPATHLEN 1024 ; inline
-
-: O_RDONLY HEX: 0000 ; inline
-: O_WRONLY HEX: 0001 ; inline
-: O_RDWR HEX: 0002 ; inline
-: O_NONBLOCK HEX: 0004 ; inline
-: O_APPEND HEX: 0008 ; inline
-: O_CREAT HEX: 0200 ; inline
-: O_TRUNC HEX: 0400 ; inline
-: O_EXCL HEX: 0800 ; inline
-: O_NOCTTY HEX: 20000 ; inline
-: O_NDELAY O_NONBLOCK ; inline
-
-: SOL_SOCKET HEX: ffff ; inline
-: SO_REUSEADDR HEX: 4 ; inline
-: SO_OOBINLINE HEX: 100 ; inline
-: SO_SNDTIMEO HEX: 1005 ; inline
-: SO_RCVTIMEO HEX: 1006 ; inline
-
-: F_SETFD 2 ; inline
-: F_SETFL 4 ; inline
-: FD_CLOEXEC 1 ; inline
+CONSTANT: MAXPATHLEN 1024
+
+CONSTANT: O_RDONLY HEX: 0000
+CONSTANT: O_WRONLY HEX: 0001
+CONSTANT: O_RDWR HEX: 0002
+CONSTANT: O_NONBLOCK HEX: 0004
+CONSTANT: O_APPEND HEX: 0008
+CONSTANT: O_CREAT HEX: 0200
+CONSTANT: O_TRUNC HEX: 0400
+CONSTANT: O_EXCL HEX: 0800
+CONSTANT: O_NOCTTY HEX: 20000
+ALIAS: O_NDELAY O_NONBLOCK
+
+CONSTANT: SOL_SOCKET HEX: ffff
+CONSTANT: SO_REUSEADDR HEX: 4
+CONSTANT: SO_OOBINLINE HEX: 100
+CONSTANT: SO_SNDTIMEO HEX: 1005
+CONSTANT: SO_RCVTIMEO HEX: 1006
+
+CONSTANT: F_SETFD 2
+CONSTANT: F_SETFL 4
+CONSTANT: FD_CLOEXEC 1
C-STRUCT: sockaddr-in
{ "uchar" "len" }
{ "time_t" "pw_expire" }
{ "int" "pw_fields" } ;
-: max-un-path 104 ; inline
+CONSTANT: max-un-path 104
-: SOCK_STREAM 1 ; inline
-: SOCK_DGRAM 2 ; inline
+CONSTANT: SOCK_STREAM 1
+CONSTANT: SOCK_DGRAM 2
-: AF_UNSPEC 0 ; inline
-: AF_UNIX 1 ; inline
-: AF_INET 2 ; inline
-: AF_INET6 30 ; inline
+CONSTANT: AF_UNSPEC 0
+CONSTANT: AF_UNIX 1
+CONSTANT: AF_INET 2
+CONSTANT: AF_INET6 30
-: 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
+CONSTANT: IPPROTO_TCP 6
+CONSTANT: IPPROTO_UDP 17
-: AI_PASSIVE 1 ; inline
+CONSTANT: AI_PASSIVE 1
-: SEEK_SET 0 ; inline
-: SEEK_CUR 1 ; inline
-: SEEK_END 2 ; inline
+CONSTANT: SEEK_SET 0
+CONSTANT: SEEK_CUR 1
+CONSTANT: SEEK_END 2
os {
{ macosx [ "unix.bsd.macosx" require ] }
-USING: alien.syntax ;
+USING: alien.syntax alias constants ;
IN: unix
: FD_SETSIZE 1024 ;
{ "u_int8_t" "d_namlen" }
{ { "char" 256 } "d_name" } ;
-: EPERM 1 ; inline
-: ENOENT 2 ; inline
-: ESRCH 3 ; inline
-: EINTR 4 ; inline
-: EIO 5 ; inline
-: ENXIO 6 ; inline
-: E2BIG 7 ; inline
-: ENOEXEC 8 ; inline
-: EBADF 9 ; inline
-: ECHILD 10 ; inline
-: EDEADLK 11 ; inline
-: ENOMEM 12 ; inline
-: EACCES 13 ; inline
-: EFAULT 14 ; inline
-: ENOTBLK 15 ; inline
-: EBUSY 16 ; inline
-: EEXIST 17 ; inline
-: EXDEV 18 ; inline
-: ENODEV 19 ; inline
-: ENOTDIR 20 ; inline
-: EISDIR 21 ; inline
-: EINVAL 22 ; inline
-: ENFILE 23 ; inline
-: EMFILE 24 ; inline
-: ENOTTY 25 ; inline
-: ETXTBSY 26 ; inline
-: EFBIG 27 ; inline
-: ENOSPC 28 ; inline
-: ESPIPE 29 ; inline
-: EROFS 30 ; inline
-: EMLINK 31 ; inline
-: EPIPE 32 ; inline
-: EDOM 33 ; inline
-: ERANGE 34 ; inline
-: EAGAIN 35 ; inline
-: EWOULDBLOCK EAGAIN ; inline
-: EINPROGRESS 36 ; inline
-: EALREADY 37 ; inline
-: ENOTSOCK 38 ; inline
-: EDESTADDRREQ 39 ; inline
-: EMSGSIZE 40 ; inline
-: EPROTOTYPE 41 ; inline
-: ENOPROTOOPT 42 ; inline
-: EPROTONOSUPPORT 43 ; inline
-: ESOCKTNOSUPPORT 44 ; inline
-: EOPNOTSUPP 45 ; inline
-: ENOTSUP EOPNOTSUPP ; inline
-: EPFNOSUPPORT 46 ; inline
-: EAFNOSUPPORT 47 ; inline
-: EADDRINUSE 48 ; inline
-: EADDRNOTAVAIL 49 ; inline
-: ENETDOWN 50 ; inline
-: ENETUNREACH 51 ; inline
-: ENETRESET 52 ; inline
-: ECONNABORTED 53 ; inline
-: ECONNRESET 54 ; inline
-: ENOBUFS 55 ; inline
-: EISCONN 56 ; inline
-: ENOTCONN 57 ; inline
-: ESHUTDOWN 58 ; inline
-: ETOOMANYREFS 59 ; inline
-: ETIMEDOUT 60 ; inline
-: ECONNREFUSED 61 ; inline
-: ELOOP 62 ; inline
-: ENAMETOOLONG 63 ; inline
-: EHOSTDOWN 64 ; inline
-: EHOSTUNREACH 65 ; inline
-: ENOTEMPTY 66 ; inline
-: EPROCLIM 67 ; inline
-: EUSERS 68 ; inline
-: EDQUOT 69 ; inline
-: ESTALE 70 ; inline
-: EREMOTE 71 ; inline
-: EBADRPC 72 ; inline
-: ERPCMISMATCH 73 ; inline
-: EPROGUNAVAIL 74 ; inline
-: EPROGMISMATCH 75 ; inline
-: EPROCUNAVAIL 76 ; inline
-: ENOLCK 77 ; inline
-: ENOSYS 78 ; inline
-: EFTYPE 79 ; inline
-: EAUTH 80 ; inline
-: ENEEDAUTH 81 ; inline
-: EIDRM 82 ; inline
-: ENOMSG 83 ; inline
-: EOVERFLOW 84 ; inline
-: ECANCELED 85 ; inline
-: EILSEQ 86 ; inline
-: ENOATTR 87 ; inline
-: EDOOFUS 88 ; inline
-: EBADMSG 89 ; inline
-: EMULTIHOP 90 ; inline
-: ENOLINK 91 ; inline
-: EPROTO 92 ; inline
+CONSTANT: EPERM 1
+CONSTANT: ENOENT 2
+CONSTANT: ESRCH 3
+CONSTANT: EINTR 4
+CONSTANT: EIO 5
+CONSTANT: ENXIO 6
+CONSTANT: E2BIG 7
+CONSTANT: ENOEXEC 8
+CONSTANT: EBADF 9
+CONSTANT: ECHILD 10
+CONSTANT: EDEADLK 11
+CONSTANT: ENOMEM 12
+CONSTANT: EACCES 13
+CONSTANT: EFAULT 14
+CONSTANT: ENOTBLK 15
+CONSTANT: EBUSY 16
+CONSTANT: EEXIST 17
+CONSTANT: EXDEV 18
+CONSTANT: ENODEV 19
+CONSTANT: ENOTDIR 20
+CONSTANT: EISDIR 21
+CONSTANT: EINVAL 22
+CONSTANT: ENFILE 23
+CONSTANT: EMFILE 24
+CONSTANT: ENOTTY 25
+CONSTANT: ETXTBSY 26
+CONSTANT: EFBIG 27
+CONSTANT: ENOSPC 28
+CONSTANT: ESPIPE 29
+CONSTANT: EROFS 30
+CONSTANT: EMLINK 31
+CONSTANT: EPIPE 32
+CONSTANT: EDOM 33
+CONSTANT: ERANGE 34
+CONSTANT: EAGAIN 35
+ALIAS: EWOULDBLOCK EAGAIN
+CONSTANT: EINPROGRESS 36
+CONSTANT: EALREADY 37
+CONSTANT: ENOTSOCK 38
+CONSTANT: EDESTADDRREQ 39
+CONSTANT: EMSGSIZE 40
+CONSTANT: EPROTOTYPE 41
+CONSTANT: ENOPROTOOPT 42
+CONSTANT: EPROTONOSUPPORT 43
+CONSTANT: ESOCKTNOSUPPORT 44
+CONSTANT: EOPNOTSUPP 45
+ALIAS: ENOTSUP EOPNOTSUPP
+CONSTANT: EPFNOSUPPORT 46
+CONSTANT: EAFNOSUPPORT 47
+CONSTANT: EADDRINUSE 48
+CONSTANT: EADDRNOTAVAIL 49
+CONSTANT: ENETDOWN 50
+CONSTANT: ENETUNREACH 51
+CONSTANT: ENETRESET 52
+CONSTANT: ECONNABORTED 53
+CONSTANT: ECONNRESET 54
+CONSTANT: ENOBUFS 55
+CONSTANT: EISCONN 56
+CONSTANT: ENOTCONN 57
+CONSTANT: ESHUTDOWN 58
+CONSTANT: ETOOMANYREFS 59
+CONSTANT: ETIMEDOUT 60
+CONSTANT: ECONNREFUSED 61
+CONSTANT: ELOOP 62
+CONSTANT: ENAMETOOLONG 63
+CONSTANT: EHOSTDOWN 64
+CONSTANT: EHOSTUNREACH 65
+CONSTANT: ENOTEMPTY 66
+CONSTANT: EPROCLIM 67
+CONSTANT: EUSERS 68
+CONSTANT: EDQUOT 69
+CONSTANT: ESTALE 70
+CONSTANT: EREMOTE 71
+CONSTANT: EBADRPC 72
+CONSTANT: ERPCMISMATCH 73
+CONSTANT: EPROGUNAVAIL 74
+CONSTANT: EPROGMISMATCH 75
+CONSTANT: EPROCUNAVAIL 76
+CONSTANT: ENOLCK 77
+CONSTANT: ENOSYS 78
+CONSTANT: EFTYPE 79
+CONSTANT: EAUTH 80
+CONSTANT: ENEEDAUTH 81
+CONSTANT: EIDRM 82
+CONSTANT: ENOMSG 83
+CONSTANT: EOVERFLOW 84
+CONSTANT: ECANCELED 85
+CONSTANT: EILSEQ 86
+CONSTANT: ENOATTR 87
+CONSTANT: EDOOFUS 88
+CONSTANT: EBADMSG 89
+CONSTANT: EMULTIHOP 90
+CONSTANT: ENOLINK 91
+CONSTANT: EPROTO 92
-USING: alien.syntax unix.time ;
+USING: alien.syntax unix.time alias constants ;
IN: unix
-: FD_SETSIZE 1024 ; inline
+CONSTANT: FD_SETSIZE 1024
C-STRUCT: addrinfo
{ "int" "flags" }
{ "void*" "addr" }
{ "addrinfo*" "next" } ;
-: _UTX_USERSIZE 256 ; inline
-: _UTX_LINESIZE 32 ; inline
-: _UTX_IDSIZE 4 ; inline
-: _UTX_HOSTSIZE 256 ; inline
+CONSTANT: _UTX_USERSIZE 256
+CONSTANT: _UTX_LINESIZE 32
+CONSTANT: _UTX_IDSIZE 4
+CONSTANT: _UTX_HOSTSIZE 256
C-STRUCT: utmpx
{ { "char" _UTX_USERSIZE } "ut_user" }
{ { "char" _UTX_HOSTSIZE } "ut_host" }
{ { "uint" 16 } "ut_pad" } ;
-: __DARWIN_MAXPATHLEN 1024 ; inline
-: __DARWIN_MAXNAMELEN 255 ; inline
-: __DARWIN_MAXNAMELEN+1 255 ; inline
+CONSTANT: __DARWIN_MAXPATHLEN 1024
+CONSTANT: __DARWIN_MAXNAMELEN 255
+CONSTANT: __DARWIN_MAXNAMELEN+1 255
C-STRUCT: dirent
{ "ino_t" "d_ino" }
{ "__uint8_t" "d_namlen" }
{ { "char" __DARWIN_MAXNAMELEN+1 } "d_name" } ;
-: EPERM 1 ; inline
-: ENOENT 2 ; inline
-: ESRCH 3 ; inline
-: EINTR 4 ; inline
-: EIO 5 ; inline
-: ENXIO 6 ; inline
-: E2BIG 7 ; inline
-: ENOEXEC 8 ; inline
-: EBADF 9 ; inline
-: ECHILD 10 ; inline
-: EDEADLK 11 ; inline
-: ENOMEM 12 ; inline
-: EACCES 13 ; inline
-: EFAULT 14 ; inline
-: ENOTBLK 15 ; inline
-: EBUSY 16 ; inline
-: EEXIST 17 ; inline
-: EXDEV 18 ; inline
-: ENODEV 19 ; inline
-: ENOTDIR 20 ; inline
-: EISDIR 21 ; inline
-: EINVAL 22 ; inline
-: ENFILE 23 ; inline
-: EMFILE 24 ; inline
-: ENOTTY 25 ; inline
-: ETXTBSY 26 ; inline
-: EFBIG 27 ; inline
-: ENOSPC 28 ; inline
-: ESPIPE 29 ; inline
-: EROFS 30 ; inline
-: EMLINK 31 ; inline
-: EPIPE 32 ; inline
-: EDOM 33 ; inline
-: ERANGE 34 ; inline
-: EAGAIN 35 ; inline
-: EWOULDBLOCK EAGAIN ; inline
-: EINPROGRESS 36 ; inline
-: EALREADY 37 ; inline
-: ENOTSOCK 38 ; inline
-: EDESTADDRREQ 39 ; inline
-: EMSGSIZE 40 ; inline
-: EPROTOTYPE 41 ; inline
-: ENOPROTOOPT 42 ; inline
-: EPROTONOSUPPORT 43 ; inline
-: ESOCKTNOSUPPORT 44 ; inline
-: ENOTSUP 45 ; inline
-: EPFNOSUPPORT 46 ; inline
-: EAFNOSUPPORT 47 ; inline
-: EADDRINUSE 48 ; inline
-: EADDRNOTAVAIL 49 ; inline
-: ENETDOWN 50 ; inline
-: ENETUNREACH 51 ; inline
-: ENETRESET 52 ; inline
-: ECONNABORTED 53 ; inline
-: ECONNRESET 54 ; inline
-: ENOBUFS 55 ; inline
-: EISCONN 56 ; inline
-: ENOTCONN 57 ; inline
-: ESHUTDOWN 58 ; inline
-: ETOOMANYREFS 59 ; inline
-: ETIMEDOUT 60 ; inline
-: ECONNREFUSED 61 ; inline
-: ELOOP 62 ; inline
-: ENAMETOOLONG 63 ; inline
-: EHOSTDOWN 64 ; inline
-: EHOSTUNREACH 65 ; inline
-: ENOTEMPTY 66 ; inline
-: EPROCLIM 67 ; inline
-: EUSERS 68 ; inline
-: EDQUOT 69 ; inline
-: ESTALE 70 ; inline
-: EREMOTE 71 ; inline
-: EBADRPC 72 ; inline
-: ERPCMISMATCH 73 ; inline
-: EPROGUNAVAIL 74 ; inline
-: EPROGMISMATCH 75 ; inline
-: EPROCUNAVAIL 76 ; inline
-: ENOLCK 77 ; inline
-: ENOSYS 78 ; inline
-: EFTYPE 79 ; inline
-: EAUTH 80 ; inline
-: ENEEDAUTH 81 ; inline
-: EPWROFF 82 ; inline
-: EDEVERR 83 ; inline
-: EOVERFLOW 84 ; inline
-: EBADEXEC 85 ; inline
-: EBADARCH 86 ; inline
-: ESHLIBVERS 87 ; inline
-: EBADMACHO 88 ; inline
-: ECANCELED 89 ; inline
-: EIDRM 90 ; inline
-: ENOMSG 91 ; inline
-: EILSEQ 92 ; inline
-: ENOATTR 93 ; inline
-: EBADMSG 94 ; inline
-: EMULTIHOP 95 ; inline
-: ENODATA 96 ; inline
-: ENOLINK 97 ; inline
-: ENOSR 98 ; inline
-: ENOSTR 99 ; inline
-: EPROTO 100 ; inline
-: ETIME 101 ; inline
-: EOPNOTSUPP 102 ; inline
-: ENOPOLICY 103 ; inline
+CONSTANT: EPERM 1
+CONSTANT: ENOENT 2
+CONSTANT: ESRCH 3
+CONSTANT: EINTR 4
+CONSTANT: EIO 5
+CONSTANT: ENXIO 6
+CONSTANT: E2BIG 7
+CONSTANT: ENOEXEC 8
+CONSTANT: EBADF 9
+CONSTANT: ECHILD 10
+CONSTANT: EDEADLK 11
+CONSTANT: ENOMEM 12
+CONSTANT: EACCES 13
+CONSTANT: EFAULT 14
+CONSTANT: ENOTBLK 15
+CONSTANT: EBUSY 16
+CONSTANT: EEXIST 17
+CONSTANT: EXDEV 18
+CONSTANT: ENODEV 19
+CONSTANT: ENOTDIR 20
+CONSTANT: EISDIR 21
+CONSTANT: EINVAL 22
+CONSTANT: ENFILE 23
+CONSTANT: EMFILE 24
+CONSTANT: ENOTTY 25
+CONSTANT: ETXTBSY 26
+CONSTANT: EFBIG 27
+CONSTANT: ENOSPC 28
+CONSTANT: ESPIPE 29
+CONSTANT: EROFS 30
+CONSTANT: EMLINK 31
+CONSTANT: EPIPE 32
+CONSTANT: EDOM 33
+CONSTANT: ERANGE 34
+CONSTANT: EAGAIN 35
+ALIAS: EWOULDBLOCK EAGAIN
+CONSTANT: EINPROGRESS 36
+CONSTANT: EALREADY 37
+CONSTANT: ENOTSOCK 38
+CONSTANT: EDESTADDRREQ 39
+CONSTANT: EMSGSIZE 40
+CONSTANT: EPROTOTYPE 41
+CONSTANT: ENOPROTOOPT 42
+CONSTANT: EPROTONOSUPPORT 43
+CONSTANT: ESOCKTNOSUPPORT 44
+CONSTANT: ENOTSUP 45
+CONSTANT: EPFNOSUPPORT 46
+CONSTANT: EAFNOSUPPORT 47
+CONSTANT: EADDRINUSE 48
+CONSTANT: EADDRNOTAVAIL 49
+CONSTANT: ENETDOWN 50
+CONSTANT: ENETUNREACH 51
+CONSTANT: ENETRESET 52
+CONSTANT: ECONNABORTED 53
+CONSTANT: ECONNRESET 54
+CONSTANT: ENOBUFS 55
+CONSTANT: EISCONN 56
+CONSTANT: ENOTCONN 57
+CONSTANT: ESHUTDOWN 58
+CONSTANT: ETOOMANYREFS 59
+CONSTANT: ETIMEDOUT 60
+CONSTANT: ECONNREFUSED 61
+CONSTANT: ELOOP 62
+CONSTANT: ENAMETOOLONG 63
+CONSTANT: EHOSTDOWN 64
+CONSTANT: EHOSTUNREACH 65
+CONSTANT: ENOTEMPTY 66
+CONSTANT: EPROCLIM 67
+CONSTANT: EUSERS 68
+CONSTANT: EDQUOT 69
+CONSTANT: ESTALE 70
+CONSTANT: EREMOTE 71
+CONSTANT: EBADRPC 72
+CONSTANT: ERPCMISMATCH 73
+CONSTANT: EPROGUNAVAIL 74
+CONSTANT: EPROGMISMATCH 75
+CONSTANT: EPROCUNAVAIL 76
+CONSTANT: ENOLCK 77
+CONSTANT: ENOSYS 78
+CONSTANT: EFTYPE 79
+CONSTANT: EAUTH 80
+CONSTANT: ENEEDAUTH 81
+CONSTANT: EPWROFF 82
+CONSTANT: EDEVERR 83
+CONSTANT: EOVERFLOW 84
+CONSTANT: EBADEXEC 85
+CONSTANT: EBADARCH 86
+CONSTANT: ESHLIBVERS 87
+CONSTANT: EBADMACHO 88
+CONSTANT: ECANCELED 89
+CONSTANT: EIDRM 90
+CONSTANT: ENOMSG 91
+CONSTANT: EILSEQ 92
+CONSTANT: ENOATTR 93
+CONSTANT: EBADMSG 94
+CONSTANT: EMULTIHOP 95
+CONSTANT: ENODATA 96
+CONSTANT: ENOLINK 97
+CONSTANT: ENOSR 98
+CONSTANT: ENOSTR 99
+CONSTANT: EPROTO 100
+CONSTANT: ETIME 101
+CONSTANT: EOPNOTSUPP 102
+CONSTANT: ENOPOLICY 103
-USING: alien.syntax alien.c-types math vocabs.loader ;
+USING: alien.syntax alien.c-types math vocabs.loader constants alias ;
IN: unix
-: FD_SETSIZE 256 ; inline
+CONSTANT: FD_SETSIZE 256
C-STRUCT: addrinfo
{ "int" "flags" }
{ "__uint8_t" "d_namlen" }
{ { "char" 256 } "d_name" } ;
-: EPERM 1 ; inline
-: ENOENT 2 ; inline
-: ESRCH 3 ; inline
-: EINTR 4 ; inline
-: EIO 5 ; inline
-: ENXIO 6 ; inline
-: E2BIG 7 ; inline
-: ENOEXEC 8 ; inline
-: EBADF 9 ; inline
-: ECHILD 10 ; inline
-: EDEADLK 11 ; inline
-: ENOMEM 12 ; inline
-: EACCES 13 ; inline
-: EFAULT 14 ; inline
-: ENOTBLK 15 ; inline
-: EBUSY 16 ; inline
-: EEXIST 17 ; inline
-: EXDEV 18 ; inline
-: ENODEV 19 ; inline
-: ENOTDIR 20 ; inline
-: EISDIR 21 ; inline
-: EINVAL 22 ; inline
-: ENFILE 23 ; inline
-: EMFILE 24 ; inline
-: ENOTTY 25 ; inline
-: ETXTBSY 26 ; inline
-: EFBIG 27 ; inline
-: ENOSPC 28 ; inline
-: ESPIPE 29 ; inline
-: EROFS 30 ; inline
-: EMLINK 31 ; inline
-: EPIPE 32 ; inline
-: EDOM 33 ; inline
-: ERANGE 34 ; inline
-: EAGAIN 35 ; inline
-: EWOULDBLOCK EAGAIN ; inline
-: EINPROGRESS 36 ; inline
-: EALREADY 37 ; inline
-: ENOTSOCK 38 ; inline
-: EDESTADDRREQ 39 ; inline
-: EMSGSIZE 40 ; inline
-: EPROTOTYPE 41 ; inline
-: ENOPROTOOPT 42 ; inline
-: EPROTONOSUPPORT 43 ; inline
-: ESOCKTNOSUPPORT 44 ; inline
-: EOPNOTSUPP 45 ; inline
-: EPFNOSUPPORT 46 ; inline
-: EAFNOSUPPORT 47 ; inline
-: EADDRINUSE 48 ; inline
-: EADDRNOTAVAIL 49 ; inline
-: ENETDOWN 50 ; inline
-: ENETUNREACH 51 ; inline
-: ENETRESET 52 ; inline
-: ECONNABORTED 53 ; inline
-: ECONNRESET 54 ; inline
-: ENOBUFS 55 ; inline
-: EISCONN 56 ; inline
-: ENOTCONN 57 ; inline
-: ESHUTDOWN 58 ; inline
-: ETOOMANYREFS 59 ; inline
-: ETIMEDOUT 60 ; inline
-: ECONNREFUSED 61 ; inline
-: ELOOP 62 ; inline
-: ENAMETOOLONG 63 ; inline
-: EHOSTDOWN 64 ; inline
-: EHOSTUNREACH 65 ; inline
-: ENOTEMPTY 66 ; inline
-: EPROCLIM 67 ; inline
-: EUSERS 68 ; inline
-: EDQUOT 69 ; inline
-: ESTALE 70 ; inline
-: EREMOTE 71 ; inline
-: EBADRPC 72 ; inline
-: ERPCMISMATCH 73 ; inline
-: EPROGUNAVAIL 74 ; inline
-: EPROGMISMATCH 75 ; inline
-: EPROCUNAVAIL 76 ; inline
-: ENOLCK 77 ; inline
-: ENOSYS 78 ; inline
-: EFTYPE 79 ; inline
-: EAUTH 80 ; inline
-: ENEEDAUTH 81 ; inline
-: EIDRM 82 ; inline
-: ENOMSG 83 ; inline
-: EOVERFLOW 84 ; inline
-: EILSEQ 85 ; inline
-: ENOTSUP 86 ; inline
-: ECANCELED 87 ; inline
-: EBADMSG 88 ; inline
-: ENODATA 89 ; inline
-: ENOSR 90 ; inline
-: ENOSTR 91 ; inline
-: ETIME 92 ; inline
-: ENOATTR 93 ; inline
-: EMULTIHOP 94 ; inline
-: ENOLINK 95 ; inline
-: EPROTO 96 ; inline
-: ELAST 96 ; inline
+CONSTANT: EPERM 1
+CONSTANT: ENOENT 2
+CONSTANT: ESRCH 3
+CONSTANT: EINTR 4
+CONSTANT: EIO 5
+CONSTANT: ENXIO 6
+CONSTANT: E2BIG 7
+CONSTANT: ENOEXEC 8
+CONSTANT: EBADF 9
+CONSTANT: ECHILD 10
+CONSTANT: EDEADLK 11
+CONSTANT: ENOMEM 12
+CONSTANT: EACCES 13
+CONSTANT: EFAULT 14
+CONSTANT: ENOTBLK 15
+CONSTANT: EBUSY 16
+CONSTANT: EEXIST 17
+CONSTANT: EXDEV 18
+CONSTANT: ENODEV 19
+CONSTANT: ENOTDIR 20
+CONSTANT: EISDIR 21
+CONSTANT: EINVAL 22
+CONSTANT: ENFILE 23
+CONSTANT: EMFILE 24
+CONSTANT: ENOTTY 25
+CONSTANT: ETXTBSY 26
+CONSTANT: EFBIG 27
+CONSTANT: ENOSPC 28
+CONSTANT: ESPIPE 29
+CONSTANT: EROFS 30
+CONSTANT: EMLINK 31
+CONSTANT: EPIPE 32
+CONSTANT: EDOM 33
+CONSTANT: ERANGE 34
+CONSTANT: EAGAIN 35
+ALIAS: EWOULDBLOCK EAGAIN
+CONSTANT: EINPROGRESS 36
+CONSTANT: EALREADY 37
+CONSTANT: ENOTSOCK 38
+CONSTANT: EDESTADDRREQ 39
+CONSTANT: EMSGSIZE 40
+CONSTANT: EPROTOTYPE 41
+CONSTANT: ENOPROTOOPT 42
+CONSTANT: EPROTONOSUPPORT 43
+CONSTANT: ESOCKTNOSUPPORT 44
+CONSTANT: EOPNOTSUPP 45
+CONSTANT: EPFNOSUPPORT 46
+CONSTANT: EAFNOSUPPORT 47
+CONSTANT: EADDRINUSE 48
+CONSTANT: EADDRNOTAVAIL 49
+CONSTANT: ENETDOWN 50
+CONSTANT: ENETUNREACH 51
+CONSTANT: ENETRESET 52
+CONSTANT: ECONNABORTED 53
+CONSTANT: ECONNRESET 54
+CONSTANT: ENOBUFS 55
+CONSTANT: EISCONN 56
+CONSTANT: ENOTCONN 57
+CONSTANT: ESHUTDOWN 58
+CONSTANT: ETOOMANYREFS 59
+CONSTANT: ETIMEDOUT 60
+CONSTANT: ECONNREFUSED 61
+CONSTANT: ELOOP 62
+CONSTANT: ENAMETOOLONG 63
+CONSTANT: EHOSTDOWN 64
+CONSTANT: EHOSTUNREACH 65
+CONSTANT: ENOTEMPTY 66
+CONSTANT: EPROCLIM 67
+CONSTANT: EUSERS 68
+CONSTANT: EDQUOT 69
+CONSTANT: ESTALE 70
+CONSTANT: EREMOTE 71
+CONSTANT: EBADRPC 72
+CONSTANT: ERPCMISMATCH 73
+CONSTANT: EPROGUNAVAIL 74
+CONSTANT: EPROGMISMATCH 75
+CONSTANT: EPROCUNAVAIL 76
+CONSTANT: ENOLCK 77
+CONSTANT: ENOSYS 78
+CONSTANT: EFTYPE 79
+CONSTANT: EAUTH 80
+CONSTANT: ENEEDAUTH 81
+CONSTANT: EIDRM 82
+CONSTANT: ENOMSG 83
+CONSTANT: EOVERFLOW 84
+CONSTANT: EILSEQ 85
+CONSTANT: ENOTSUP 86
+CONSTANT: ECANCELED 87
+CONSTANT: EBADMSG 88
+CONSTANT: ENODATA 89
+CONSTANT: ENOSR 90
+CONSTANT: ENOSTR 91
+CONSTANT: ETIME 92
+CONSTANT: ENOATTR 93
+CONSTANT: EMULTIHOP 94
+CONSTANT: ENOLINK 95
+CONSTANT: EPROTO 96
+CONSTANT: ELAST 96
TYPEDEF: __uint8_t sa_family_t
-: _UTX_USERSIZE 32 ; inline
-: _UTX_LINESIZE 32 ; inline
-: _UTX_IDSIZE 4 ; inline
-: _UTX_HOSTSIZE 256 ; inline
+CONSTANT: _UTX_USERSIZE 32
+CONSTANT: _UTX_LINESIZE 32
+CONSTANT: _UTX_IDSIZE 4
+CONSTANT: _UTX_HOSTSIZE 256
: _SS_MAXSIZE ( -- n )
128 ; inline
-USING: alien.syntax ;
+USING: alien.syntax constants alias ;
IN: unix
-: FD_SETSIZE 1024 ; inline
+CONSTANT: FD_SETSIZE 1024
C-STRUCT: addrinfo
{ "int" "flags" }
{ "__uint8_t" "d_namlen" }
{ { "char" 256 } "d_name" } ;
-: EPERM 1 ; inline
-: ENOENT 2 ; inline
-: ESRCH 3 ; inline
-: EINTR 4 ; inline
-: EIO 5 ; inline
-: ENXIO 6 ; inline
-: E2BIG 7 ; inline
-: ENOEXEC 8 ; inline
-: EBADF 9 ; inline
-: ECHILD 10 ; inline
-: EDEADLK 11 ; inline
-: ENOMEM 12 ; inline
-: EACCES 13 ; inline
-: EFAULT 14 ; inline
-: ENOTBLK 15 ; inline
-: EBUSY 16 ; inline
-: EEXIST 17 ; inline
-: EXDEV 18 ; inline
-: ENODEV 19 ; inline
-: ENOTDIR 20 ; inline
-: EISDIR 21 ; inline
-: EINVAL 22 ; inline
-: ENFILE 23 ; inline
-: EMFILE 24 ; inline
-: ENOTTY 25 ; inline
-: ETXTBSY 26 ; inline
-: EFBIG 27 ; inline
-: ENOSPC 28 ; inline
-: ESPIPE 29 ; inline
-: EROFS 30 ; inline
-: EMLINK 31 ; inline
-: EPIPE 32 ; inline
-: EDOM 33 ; inline
-: ERANGE 34 ; inline
-: EAGAIN 35 ; inline
-: EWOULDBLOCK EAGAIN ; inline
-: EINPROGRESS 36 ; inline
-: EALREADY 37 ; inline
-: ENOTSOCK 38 ; inline
-: EDESTADDRREQ 39 ; inline
-: EMSGSIZE 40 ; inline
-: EPROTOTYPE 41 ; inline
-: ENOPROTOOPT 42 ; inline
-: EPROTONOSUPPORT 43 ; inline
-: ESOCKTNOSUPPORT 44 ; inline
-: EOPNOTSUPP 45 ; inline
-: EPFNOSUPPORT 46 ; inline
-: EAFNOSUPPORT 47 ; inline
-: EADDRINUSE 48 ; inline
-: EADDRNOTAVAIL 49 ; inline
-: ENETDOWN 50 ; inline
-: ENETUNREACH 51 ; inline
-: ENETRESET 52 ; inline
-: ECONNABORTED 53 ; inline
-: ECONNRESET 54 ; inline
-: ENOBUFS 55 ; inline
-: EISCONN 56 ; inline
-: ENOTCONN 57 ; inline
-: ESHUTDOWN 58 ; inline
-: ETOOMANYREFS 59 ; inline
-: ETIMEDOUT 60 ; inline
-: ECONNREFUSED 61 ; inline
-: ELOOP 62 ; inline
-: ENAMETOOLONG 63 ; inline
-: EHOSTDOWN 64 ; inline
-: EHOSTUNREACH 65 ; inline
-: ENOTEMPTY 66 ; inline
-: EPROCLIM 67 ; inline
-: EUSERS 68 ; inline
-: EDQUOT 69 ; inline
-: ESTALE 70 ; inline
-: EREMOTE 71 ; inline
-: EBADRPC 72 ; inline
-: ERPCMISMATCH 73 ; inline
-: EPROGUNAVAIL 74 ; inline
-: EPROGMISMATCH 75 ; inline
-: EPROCUNAVAIL 76 ; inline
-: ENOLCK 77 ; inline
-: ENOSYS 78 ; inline
-: EFTYPE 79 ; inline
-: EAUTH 80 ; inline
-: ENEEDAUTH 81 ; inline
-: EIPSEC 82 ; inline
-: ENOATTR 83 ; inline
-: EILSEQ 84 ; inline
-: ENOMEDIUM 85 ; inline
-: EMEDIUMTYPE 86 ; inline
-: EOVERFLOW 87 ; inline
-: ECANCELED 88 ; inline
+CONSTANT: EPERM 1
+CONSTANT: ENOENT 2
+CONSTANT: ESRCH 3
+CONSTANT: EINTR 4
+CONSTANT: EIO 5
+CONSTANT: ENXIO 6
+CONSTANT: E2BIG 7
+CONSTANT: ENOEXEC 8
+CONSTANT: EBADF 9
+CONSTANT: ECHILD 10
+CONSTANT: EDEADLK 11
+CONSTANT: ENOMEM 12
+CONSTANT: EACCES 13
+CONSTANT: EFAULT 14
+CONSTANT: ENOTBLK 15
+CONSTANT: EBUSY 16
+CONSTANT: EEXIST 17
+CONSTANT: EXDEV 18
+CONSTANT: ENODEV 19
+CONSTANT: ENOTDIR 20
+CONSTANT: EISDIR 21
+CONSTANT: EINVAL 22
+CONSTANT: ENFILE 23
+CONSTANT: EMFILE 24
+CONSTANT: ENOTTY 25
+CONSTANT: ETXTBSY 26
+CONSTANT: EFBIG 27
+CONSTANT: ENOSPC 28
+CONSTANT: ESPIPE 29
+CONSTANT: EROFS 30
+CONSTANT: EMLINK 31
+CONSTANT: EPIPE 32
+CONSTANT: EDOM 33
+CONSTANT: ERANGE 34
+CONSTANT: EAGAIN 35
+ALIAS: EWOULDBLOCK EAGAIN
+CONSTANT: EINPROGRESS 36
+CONSTANT: EALREADY 37
+CONSTANT: ENOTSOCK 38
+CONSTANT: EDESTADDRREQ 39
+CONSTANT: EMSGSIZE 40
+CONSTANT: EPROTOTYPE 41
+CONSTANT: ENOPROTOOPT 42
+CONSTANT: EPROTONOSUPPORT 43
+CONSTANT: ESOCKTNOSUPPORT 44
+CONSTANT: EOPNOTSUPP 45
+CONSTANT: EPFNOSUPPORT 46
+CONSTANT: EAFNOSUPPORT 47
+CONSTANT: EADDRINUSE 48
+CONSTANT: EADDRNOTAVAIL 49
+CONSTANT: ENETDOWN 50
+CONSTANT: ENETUNREACH 51
+CONSTANT: ENETRESET 52
+CONSTANT: ECONNABORTED 53
+CONSTANT: ECONNRESET 54
+CONSTANT: ENOBUFS 55
+CONSTANT: EISCONN 56
+CONSTANT: ENOTCONN 57
+CONSTANT: ESHUTDOWN 58
+CONSTANT: ETOOMANYREFS 59
+CONSTANT: ETIMEDOUT 60
+CONSTANT: ECONNREFUSED 61
+CONSTANT: ELOOP 62
+CONSTANT: ENAMETOOLONG 63
+CONSTANT: EHOSTDOWN 64
+CONSTANT: EHOSTUNREACH 65
+CONSTANT: ENOTEMPTY 66
+CONSTANT: EPROCLIM 67
+CONSTANT: EUSERS 68
+CONSTANT: EDQUOT 69
+CONSTANT: ESTALE 70
+CONSTANT: EREMOTE 71
+CONSTANT: EBADRPC 72
+CONSTANT: ERPCMISMATCH 73
+CONSTANT: EPROGUNAVAIL 74
+CONSTANT: EPROGMISMATCH 75
+CONSTANT: EPROCUNAVAIL 76
+CONSTANT: ENOLCK 77
+CONSTANT: ENOSYS 78
+CONSTANT: EFTYPE 79
+CONSTANT: EAUTH 80
+CONSTANT: ENEEDAUTH 81
+CONSTANT: EIPSEC 82
+CONSTANT: ENOATTR 83
+CONSTANT: EILSEQ 84
+CONSTANT: ENOMEDIUM 85
+CONSTANT: EMEDIUMTYPE 86
+CONSTANT: EOVERFLOW 87
+CONSTANT: ECANCELED 88
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax constants ;
IN: unix.getfsstat.freebsd
-: MNT_WAIT 1 ; inline ! synchronously wait for I/O to complete
-: MNT_NOWAIT 2 ; inline ! start all I/O, but do not wait for it
-: MNT_LAZY 3 ; inline ! push data not written by filesystem syncer
-: MNT_SUSPEND 4 ; inline ! Suspend file system after sync
+CONSTANT: MNT_WAIT 1 ! synchronously wait for I/O to complete
+CONSTANT: MNT_NOWAIT 2 ! start all I/O, but do not wait for it
+CONSTANT: MNT_LAZY 3 ! push data not written by filesystem syncer
+CONSTANT: MNT_SUSPEND 4 ! Suspend file system after sync
FUNCTION: int getfsstat ( statfs* buf, int bufsize, int flags ) ;
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax constants ;
IN: unix.getfsstat.macosx
-: MNT_WAIT 1 ; inline ! synchronously wait for I/O to complete
-: MNT_NOWAIT 2 ; inline ! start all I/O, but do not wait for it
+CONSTANT: MNT_WAIT 1 ! synchronously wait for I/O to complete
+CONSTANT: MNT_NOWAIT 2 ! start all I/O, but do not wait for it
FUNCTION: int getfsstat64 ( statfs* buf, int bufsize, int flags ) ;
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax constants ;
IN: unix.getfsstat.netbsd
-: MNT_WAIT 1 ; inline ! synchronously wait for I/O to complete
-: MNT_NOWAIT 2 ; inline ! start all I/O, but do not wait for it
-: MNT_LAZY 3 ; inline ! push data not written by filesystem syncer
+CONSTANT: MNT_WAIT 1 ! synchronously wait for I/O to complete
+CONSTANT: MNT_NOWAIT 2 ! start all I/O, but do not wait for it
+CONSTANT: MNT_LAZY 3 ! push data not written by filesystem syncer
FUNCTION: int getvfsstat ( statfs* buf, int bufsize, int flags ) ;
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax constants ;
IN: unix.getfsstat.openbsd
-: MNT_WAIT 1 ; ! synchronously wait for I/O to complete
-: MNT_NOWAIT 2 ; ! start all I/O, but do not wait for it
-: MNT_LAZY 3 ; ! push data not written by filesystem syncer
+CONSTANT: MNT_WAIT 1 ! synchronously wait for I/O to complete
+CONSTANT: MNT_NOWAIT 2 ! start all I/O, but do not wait for it
+CONSTANT: MNT_LAZY 3 ! push data not written by filesystem syncer
FUNCTION: int getfsstat ( statfs* buf, int bufsize, int flags ) ;
-USE: alien.syntax
+USING: alien.syntax constants ;
IN: unix.kqueue
C-STRUCT: kevent
FUNCTION: int kevent ( int kq, kevent* changelist, int nchanges, kevent* eventlist, int nevents, timespec* timeout ) ;
-: EVFILT_READ -1 ; inline
-: EVFILT_WRITE -2 ; inline
-: EVFILT_AIO -3 ; inline ! attached to aio requests
-: EVFILT_VNODE -4 ; inline ! attached to vnodes
-: EVFILT_PROC -5 ; inline ! attached to struct proc
-: EVFILT_SIGNAL -6 ; inline ! attached to struct proc
-: EVFILT_TIMER -7 ; inline ! timers
-: EVFILT_NETDEV -8 ; inline ! Mach ports
-: EVFILT_FS -9 ; inline ! Filesystem events
+CONSTANT: EVFILT_READ -1
+CONSTANT: EVFILT_WRITE -2
+CONSTANT: EVFILT_AIO -3 ! attached to aio requests
+CONSTANT: EVFILT_VNODE -4 ! attached to vnodes
+CONSTANT: EVFILT_PROC -5 ! attached to struct proc
+CONSTANT: EVFILT_SIGNAL -6 ! attached to struct proc
+CONSTANT: EVFILT_TIMER -7 ! timers
+CONSTANT: EVFILT_NETDEV -8 ! Mach ports
+CONSTANT: EVFILT_FS -9 ! Filesystem events
! 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 >>
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
-
-: EV_POLL EV_FLAG0 ; inline
-: EV_OOBAND EV_FLAG1 ; inline
-
-: NOTE_LOWAT HEX: 00000001 ; inline ! 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
-
-: 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
-
-: 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
-
-: 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: EV_EOF HEX: 8000 ! EOF detected
+CONSTANT: EV_ERROR HEX: 4000 ! error, data contains errno
+
+ALIAS: EV_POLL EV_FLAG0
+ALIAS: EV_OOBAND EV_FLAG1
+
+CONSTANT: NOTE_LOWAT HEX: 00000001 ! low water mark
+
+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
+
+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
+
+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
+
+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
-USE: alien.syntax
+USING: alien.syntax constants ;
IN: unix.kqueue
C-STRUCT: kevent
FUNCTION: int kevent ( int kq, kevent* changelist, int nchanges, kevent* eventlist, int nevents, timespec* timeout ) ;
-: EVFILT_READ -1 ; inline
-: EVFILT_WRITE -2 ; inline
-: EVFILT_AIO -3 ; inline ! attached to aio requests
-: EVFILT_VNODE -4 ; inline ! attached to vnodes
-: EVFILT_PROC -5 ; inline ! attached to struct proc
-: EVFILT_SIGNAL -6 ; inline ! attached to struct proc
-: EVFILT_TIMER -7 ; inline ! timers
-: EVFILT_MACHPORT -8 ; inline ! Mach ports
-: EVFILT_FS -9 ; inline ! Filesystem events
+CONSTANT: EVFILT_READ -1
+CONSTANT: EVFILT_WRITE -2
+CONSTANT: EVFILT_AIO -3 ! attached to aio requests
+CONSTANT: EVFILT_VNODE -4 ! attached to vnodes
+CONSTANT: EVFILT_PROC -5 ! attached to struct proc
+CONSTANT: EVFILT_SIGNAL -6 ! attached to struct proc
+CONSTANT: EVFILT_TIMER -7 ! timers
+CONSTANT: EVFILT_MACHPORT -8 ! Mach ports
+CONSTANT: EVFILT_FS -9 ! Filesystem events
-USE: alien.syntax
+USING: alien.syntax constants ;
IN: unix.kqueue
C-STRUCT: kevent
FUNCTION: int kevent ( int kq, kevent* changelist, size_t nchanges, kevent* eventlist, size_t nevents, timespec* timeout ) ;
-: EVFILT_READ 0 ; inline
-: EVFILT_WRITE 1 ; inline
-: EVFILT_AIO 2 ; inline ! attached to aio requests
-: EVFILT_VNODE 3 ; inline ! attached to vnodes
-: EVFILT_PROC 4 ; inline ! attached to struct proc
-: EVFILT_SIGNAL 5 ; inline ! attached to struct proc
-: EVFILT_TIMER 6 ; inline ! timers
-: EVFILT_SYSCOUNT 7 ; inline ! Filesystem events
+CONSTANT: EVFILT_READ 0
+CONSTANT: EVFILT_WRITE 1
+CONSTANT: EVFILT_AIO 2 ! attached to aio requests
+CONSTANT: EVFILT_VNODE 3 ! attached to vnodes
+CONSTANT: EVFILT_PROC 4 ! attached to struct proc
+CONSTANT: EVFILT_SIGNAL 5 ! attached to struct proc
+CONSTANT: EVFILT_TIMER 6 ! timers
+CONSTANT: EVFILT_SYSCOUNT 7 ! Filesystem events
-USE: alien.syntax
+USING: alien.syntax constants ;
IN: unix.kqueue
C-STRUCT: kevent
FUNCTION: int kevent ( int kq, kevent* changelist, int nchanges, kevent* eventlist, int nevents, timespec* timeout ) ;
-: EVFILT_READ -1 ; inline
-: EVFILT_WRITE -2 ; inline
-: EVFILT_AIO -3 ; inline ! attached to aio requests
-: EVFILT_VNODE -4 ; inline ! attached to vnodes
-: EVFILT_PROC -5 ; inline ! attached to struct proc
-: EVFILT_SIGNAL -6 ; inline ! attached to struct proc
-: EVFILT_TIMER -7 ; inline ! timers
+CONSTANT: EVFILT_READ -1
+CONSTANT: EVFILT_WRITE -2
+CONSTANT: EVFILT_AIO -3 ! attached to aio requests
+CONSTANT: EVFILT_VNODE -4 ! attached to vnodes
+CONSTANT: EVFILT_PROC -5 ! attached to struct proc
+CONSTANT: EVFILT_SIGNAL -6 ! attached to struct proc
+CONSTANT: EVFILT_TIMER -7 ! timers
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
IN: unix.linux.epoll
-USING: alien.syntax math ;
+USING: alien.syntax math constants ;
FUNCTION: int epoll_create ( int size ) ;
FUNCTION: int epoll_wait ( int epfd, epoll_event* events, int maxevents, int timeout ) ;
-: EPOLL_CTL_ADD 1 ; inline ! Add a file decriptor to the interface.
-: EPOLL_CTL_DEL 2 ; inline ! Remove a file decriptor from the interface.
-: EPOLL_CTL_MOD 3 ; inline ! Change file decriptor epoll_event structure.
+CONSTANT: EPOLL_CTL_ADD 1 ! Add a file decriptor to the interface.
+CONSTANT: EPOLL_CTL_DEL 2 ! Remove a file decriptor from the interface.
+CONSTANT: EPOLL_CTL_MOD 3 ! Change file decriptor epoll_event structure.
-: EPOLLIN HEX: 001 ; inline
-: EPOLLPRI HEX: 002 ; inline
-: EPOLLOUT HEX: 004 ; inline
-: EPOLLRDNORM HEX: 040 ; inline
-: EPOLLRDBAND HEX: 080 ; inline
-: EPOLLWRNORM HEX: 100 ; inline
-: EPOLLWRBAND HEX: 200 ; inline
-: EPOLLMSG HEX: 400 ; inline
-: EPOLLERR HEX: 008 ; inline
-: EPOLLHUP HEX: 010 ; inline
-: EPOLLONESHOT 30 2^ ; inline
-: EPOLLET 31 2^ ; inline
+CONSTANT: EPOLLIN HEX: 001
+CONSTANT: EPOLLPRI HEX: 002
+CONSTANT: EPOLLOUT HEX: 004
+CONSTANT: EPOLLRDNORM HEX: 040
+CONSTANT: EPOLLRDBAND HEX: 080
+CONSTANT: EPOLLWRNORM HEX: 100
+CONSTANT: EPOLLWRBAND HEX: 200
+CONSTANT: EPOLLMSG HEX: 400
+CONSTANT: EPOLLERR HEX: 008
+CONSTANT: EPOLLHUP HEX: 010
+: EPOLLONESHOT ( -- n ) 30 2^ ; inline
+: EPOLLET ( -- n ) 31 2^ ; inline
! Copyright (C) 2008 Slava Pestov.\r
! See http://factorcode.org/license.txt for BSD license.\r
-USING: alien.syntax math math.bitwise ;\r
+USING: alien.syntax math math.bitwise constants ;\r
IN: unix.linux.inotify\r
\r
C-STRUCT: inotify-event\r
{ "char[0]" "name" } ! stub for possible name\r
;\r
\r
-: IN_ACCESS HEX: 1 ; inline ! File was accessed\r
-: IN_MODIFY HEX: 2 ; inline ! File was modified\r
-: IN_ATTRIB HEX: 4 ; inline ! Metadata changed\r
-: IN_CLOSE_WRITE HEX: 8 ; inline ! Writtable file was closed\r
-: IN_CLOSE_NOWRITE HEX: 10 ; inline ! Unwrittable file closed\r
-: IN_OPEN HEX: 20 ; inline ! File was opened\r
-: IN_MOVED_FROM HEX: 40 ; inline ! File was moved from X\r
-: IN_MOVED_TO HEX: 80 ; inline ! File was moved to Y\r
-: IN_CREATE HEX: 100 ; inline ! Subfile was created\r
-: IN_DELETE HEX: 200 ; inline ! Subfile was deleted\r
-: IN_DELETE_SELF HEX: 400 ; inline ! Self was deleted\r
-: IN_MOVE_SELF HEX: 800 ; inline ! Self was moved\r
-\r
-: IN_UNMOUNT HEX: 2000 ; inline ! Backing fs was unmounted\r
-: IN_Q_OVERFLOW HEX: 4000 ; inline ! Event queued overflowed\r
-: IN_IGNORED HEX: 8000 ; inline ! File was ignored\r
+CONSTANT: IN_ACCESS HEX: 1 ! File was accessed\r
+CONSTANT: IN_MODIFY HEX: 2 ! File was modified\r
+CONSTANT: IN_ATTRIB HEX: 4 ! Metadata changed\r
+CONSTANT: IN_CLOSE_WRITE HEX: 8 ! Writtable file was closed\r
+CONSTANT: IN_CLOSE_NOWRITE HEX: 10 ! Unwrittable file closed\r
+CONSTANT: IN_OPEN HEX: 20 ! File was opened\r
+CONSTANT: IN_MOVED_FROM HEX: 40 ! File was moved from X\r
+CONSTANT: IN_MOVED_TO HEX: 80 ! File was moved to Y\r
+CONSTANT: IN_CREATE HEX: 100 ! Subfile was created\r
+CONSTANT: IN_DELETE HEX: 200 ! Subfile was deleted\r
+CONSTANT: IN_DELETE_SELF HEX: 400 ! Self was deleted\r
+CONSTANT: IN_MOVE_SELF HEX: 800 ! Self was moved\r
+\r
+CONSTANT: IN_UNMOUNT HEX: 2000 ! Backing fs was unmounted\r
+CONSTANT: IN_Q_OVERFLOW HEX: 4000 ! Event queued overflowed\r
+CONSTANT: IN_IGNORED HEX: 8000 ! File was ignored\r
\r
: IN_CLOSE ( -- n ) IN_CLOSE_WRITE IN_CLOSE_NOWRITE bitor ; inline ! close\r
-: IN_MOVE ( -- n ) IN_MOVED_FROM IN_MOVED_TO bitor ; inline ! moves\r
+: IN_MOVE ( -- n ) IN_MOVED_FROM IN_MOVED_TO bitor ; inline ! moves\r
\r
-: IN_ONLYDIR HEX: 1000000 ; inline ! only watch the path if it is a directory\r
-: IN_DONT_FOLLOW HEX: 2000000 ; inline ! don't follow a sym link\r
-: IN_MASK_ADD HEX: 20000000 ; inline ! add to the mask of an already existing watch\r
-: IN_ISDIR HEX: 40000000 ; inline ! event occurred against dir\r
-: IN_ONESHOT HEX: 80000000 ; inline ! only send event once\r
+CONSTANT: IN_ONLYDIR HEX: 1000000 ! only watch the path if it is a directory\r
+CONSTANT: IN_DONT_FOLLOW HEX: 2000000 ! don't follow a sym link\r
+CONSTANT: IN_MASK_ADD HEX: 20000000 ! add to the mask of an already existing watch\r
+CONSTANT: IN_ISDIR HEX: 40000000 ! event occurred against dir\r
+CONSTANT: IN_ONESHOT HEX: 80000000 ! only send event once\r
\r
: IN_CHANGE_EVENTS ( -- n )\r
{\r
! Copyright (C) 2005, 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax alias constants ;
IN: unix
! Linux.
-: MAXPATHLEN 1024 ; inline
+CONSTANT: MAXPATHLEN 1024
-: O_RDONLY HEX: 0000 ; inline
-: O_WRONLY HEX: 0001 ; inline
-: O_RDWR HEX: 0002 ; inline
-: O_CREAT HEX: 0040 ; inline
-: O_EXCL HEX: 0080 ; inline
-: O_NOCTTY HEX: 0100 ; inline
-: O_TRUNC HEX: 0200 ; inline
-: O_APPEND HEX: 0400 ; inline
-: O_NONBLOCK HEX: 0800 ; inline
-: O_NDELAY O_NONBLOCK ; inline
+CONSTANT: O_RDONLY HEX: 0000
+CONSTANT: O_WRONLY HEX: 0001
+CONSTANT: O_RDWR HEX: 0002
+CONSTANT: O_CREAT HEX: 0040
+CONSTANT: O_EXCL HEX: 0080
+CONSTANT: O_NOCTTY HEX: 0100
+CONSTANT: O_TRUNC HEX: 0200
+CONSTANT: O_APPEND HEX: 0400
+CONSTANT: O_NONBLOCK HEX: 0800
-: SOL_SOCKET 1 ; inline
+ALIAS: O_NDELAY O_NONBLOCK
-: FD_SETSIZE 1024 ; inline
+CONSTANT: SOL_SOCKET 1
-: SO_REUSEADDR 2 ; inline
-: SO_OOBINLINE 10 ; inline
-: SO_SNDTIMEO HEX: 15 ; inline
-: SO_RCVTIMEO HEX: 14 ; inline
+CONSTANT: FD_SETSIZE 1024
-: F_SETFD 2 ; inline
-: FD_CLOEXEC 1 ; inline
+CONSTANT: SO_REUSEADDR 2
+CONSTANT: SO_OOBINLINE 10
+CONSTANT: SO_SNDTIMEO HEX: 15
+CONSTANT: SO_RCVTIMEO HEX: 14
-: F_SETFL 4 ; inline
+CONSTANT: F_SETFD 2
+CONSTANT: FD_CLOEXEC 1
+
+CONSTANT: F_SETFL 4
C-STRUCT: addrinfo
{ "int" "flags" }
{ { "uchar" 16 } "addr" }
{ "uint" "scopeid" } ;
-: max-un-path 108 ; inline
+CONSTANT: max-un-path 108
C-STRUCT: sockaddr-un
{ "ushort" "family" }
{ { "char" max-un-path } "path" } ;
-: SOCK_STREAM 1 ; inline
-: SOCK_DGRAM 2 ; inline
+CONSTANT: SOCK_STREAM 1
+CONSTANT: SOCK_DGRAM 2
-: AF_UNSPEC 0 ; inline
-: AF_UNIX 1 ; inline
-: AF_INET 2 ; inline
-: AF_INET6 10 ; inline
+CONSTANT: AF_UNSPEC 0
+CONSTANT: AF_UNIX 1
+CONSTANT: AF_INET 2
+CONSTANT: AF_INET6 10
-: 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
+CONSTANT: IPPROTO_TCP 6
+CONSTANT: IPPROTO_UDP 17
-: AI_PASSIVE 1 ; inline
+CONSTANT: AI_PASSIVE 1
-: SEEK_SET 0 ; inline
-: SEEK_CUR 1 ; inline
-: SEEK_END 2 ; inline
+CONSTANT: SEEK_SET 0
+CONSTANT: SEEK_CUR 1
+CONSTANT: SEEK_END 2
C-STRUCT: passwd
{ "char*" "pw_name" }
{ "uchar" "d_type" }
{ { "char" 256 } "d_name" } ;
-: EPERM 1 ; inline
-: ENOENT 2 ; inline
-: ESRCH 3 ; inline
-: EINTR 4 ; inline
-: EIO 5 ; inline
-: ENXIO 6 ; inline
-: E2BIG 7 ; inline
-: ENOEXEC 8 ; inline
-: EBADF 9 ; inline
-: ECHILD 10 ; inline
-: EAGAIN 11 ; inline
-: ENOMEM 12 ; inline
-: EACCES 13 ; inline
-: EFAULT 14 ; inline
-: ENOTBLK 15 ; inline
-: EBUSY 16 ; inline
-: EEXIST 17 ; inline
-: EXDEV 18 ; inline
-: ENODEV 19 ; inline
-: ENOTDIR 20 ; inline
-: EISDIR 21 ; inline
-: EINVAL 22 ; inline
-: ENFILE 23 ; inline
-: EMFILE 24 ; inline
-: ENOTTY 25 ; inline
-: ETXTBSY 26 ; inline
-: EFBIG 27 ; inline
-: ENOSPC 28 ; inline
-: ESPIPE 29 ; inline
-: EROFS 30 ; inline
-: EMLINK 31 ; inline
-: EPIPE 32 ; inline
-: EDOM 33 ; inline
-: ERANGE 34 ; inline
-: EDEADLK 35 ; inline
-: ENAMETOOLONG 36 ; inline
-: ENOLCK 37 ; inline
-: ENOSYS 38 ; inline
-: ENOTEMPTY 39 ; inline
-: ELOOP 40 ; inline
-: EWOULDBLOCK EAGAIN ; inline
-: ENOMSG 42 ; inline
-: EIDRM 43 ; inline
-: ECHRNG 44 ; inline
-: EL2NSYNC 45 ; inline
-: EL3HLT 46 ; inline
-: EL3RST 47 ; inline
-: ELNRNG 48 ; inline
-: EUNATCH 49 ; inline
-: ENOCSI 50 ; inline
-: EL2HLT 51 ; inline
-: EBADE 52 ; inline
-: EBADR 53 ; inline
-: EXFULL 54 ; inline
-: ENOANO 55 ; inline
-: EBADRQC 56 ; inline
-: EBADSLT 57 ; inline
-: EDEADLOCK EDEADLK ; inline
-: EBFONT 59 ; inline
-: ENOSTR 60 ; inline
-: ENODATA 61 ; inline
-: ETIME 62 ; inline
-: ENOSR 63 ; inline
-: ENONET 64 ; inline
-: ENOPKG 65 ; inline
-: EREMOTE 66 ; inline
-: ENOLINK 67 ; inline
-: EADV 68 ; inline
-: ESRMNT 69 ; inline
-: ECOMM 70 ; inline
-: EPROTO 71 ; inline
-: EMULTIHOP 72 ; inline
-: EDOTDOT 73 ; inline
-: EBADMSG 74 ; inline
-: EOVERFLOW 75 ; inline
-: ENOTUNIQ 76 ; inline
-: EBADFD 77 ; inline
-: EREMCHG 78 ; inline
-: ELIBACC 79 ; inline
-: ELIBBAD 80 ; inline
-: ELIBSCN 81 ; inline
-: ELIBMAX 82 ; inline
-: ELIBEXEC 83 ; inline
-: EILSEQ 84 ; inline
-: ERESTART 85 ; inline
-: ESTRPIPE 86 ; inline
-: EUSERS 87 ; inline
-: ENOTSOCK 88 ; inline
-: EDESTADDRREQ 89 ; inline
-: EMSGSIZE 90 ; inline
-: EPROTOTYPE 91 ; inline
-: ENOPROTOOPT 92 ; inline
-: EPROTONOSUPPORT 93 ; inline
-: ESOCKTNOSUPPORT 94 ; inline
-: EOPNOTSUPP 95 ; inline
-: EPFNOSUPPORT 96 ; inline
-: EAFNOSUPPORT 97 ; inline
-: EADDRINUSE 98 ; inline
-: EADDRNOTAVAIL 99 ; inline
-: ENETDOWN 100 ; inline
-: ENETUNREACH 101 ; inline
-: ENETRESET 102 ; inline
-: ECONNABORTED 103 ; inline
-: ECONNRESET 104 ; inline
-: ENOBUFS 105 ; inline
-: EISCONN 106 ; inline
-: ENOTCONN 107 ; inline
-: ESHUTDOWN 108 ; inline
-: ETOOMANYREFS 109 ; inline
-: ETIMEDOUT 110 ; inline
-: ECONNREFUSED 111 ; inline
-: EHOSTDOWN 112 ; inline
-: EHOSTUNREACH 113 ; inline
-: EALREADY 114 ; inline
-: EINPROGRESS 115 ; inline
-: ESTALE 116 ; inline
-: EUCLEAN 117 ; inline
-: ENOTNAM 118 ; inline
-: ENAVAIL 119 ; inline
-: EISNAM 120 ; inline
-: EREMOTEIO 121 ; inline
-: EDQUOT 122 ; inline
-: ENOMEDIUM 123 ; inline
-: EMEDIUMTYPE 124 ; inline
-: ECANCELED 125 ; inline
-: ENOKEY 126 ; inline
-: EKEYEXPIRED 127 ; inline
-: EKEYREVOKED 128 ; inline
-: EKEYREJECTED 129 ; inline
-: EOWNERDEAD 130 ; inline
-: ENOTRECOVERABLE 131 ; inline
+CONSTANT: EPERM 1
+CONSTANT: ENOENT 2
+CONSTANT: ESRCH 3
+CONSTANT: EINTR 4
+CONSTANT: EIO 5
+CONSTANT: ENXIO 6
+CONSTANT: E2BIG 7
+CONSTANT: ENOEXEC 8
+CONSTANT: EBADF 9
+CONSTANT: ECHILD 10
+CONSTANT: EAGAIN 11
+CONSTANT: ENOMEM 12
+CONSTANT: EACCES 13
+CONSTANT: EFAULT 14
+CONSTANT: ENOTBLK 15
+CONSTANT: EBUSY 16
+CONSTANT: EEXIST 17
+CONSTANT: EXDEV 18
+CONSTANT: ENODEV 19
+CONSTANT: ENOTDIR 20
+CONSTANT: EISDIR 21
+CONSTANT: EINVAL 22
+CONSTANT: ENFILE 23
+CONSTANT: EMFILE 24
+CONSTANT: ENOTTY 25
+CONSTANT: ETXTBSY 26
+CONSTANT: EFBIG 27
+CONSTANT: ENOSPC 28
+CONSTANT: ESPIPE 29
+CONSTANT: EROFS 30
+CONSTANT: EMLINK 31
+CONSTANT: EPIPE 32
+CONSTANT: EDOM 33
+CONSTANT: ERANGE 34
+CONSTANT: EDEADLK 35
+CONSTANT: ENAMETOOLONG 36
+CONSTANT: ENOLCK 37
+CONSTANT: ENOSYS 38
+CONSTANT: ENOTEMPTY 39
+CONSTANT: ELOOP 40
+ALIAS: EWOULDBLOCK EAGAIN
+CONSTANT: ENOMSG 42
+CONSTANT: EIDRM 43
+CONSTANT: ECHRNG 44
+CONSTANT: EL2NSYNC 45
+CONSTANT: EL3HLT 46
+CONSTANT: EL3RST 47
+CONSTANT: ELNRNG 48
+CONSTANT: EUNATCH 49
+CONSTANT: ENOCSI 50
+CONSTANT: EL2HLT 51
+CONSTANT: EBADE 52
+CONSTANT: EBADR 53
+CONSTANT: EXFULL 54
+CONSTANT: ENOANO 55
+CONSTANT: EBADRQC 56
+CONSTANT: EBADSLT 57
+ALIAS: EDEADLOCK EDEADLK
+CONSTANT: EBFONT 59
+CONSTANT: ENOSTR 60
+CONSTANT: ENODATA 61
+CONSTANT: ETIME 62
+CONSTANT: ENOSR 63
+CONSTANT: ENONET 64
+CONSTANT: ENOPKG 65
+CONSTANT: EREMOTE 66
+CONSTANT: ENOLINK 67
+CONSTANT: EADV 68
+CONSTANT: ESRMNT 69
+CONSTANT: ECOMM 70
+CONSTANT: EPROTO 71
+CONSTANT: EMULTIHOP 72
+CONSTANT: EDOTDOT 73
+CONSTANT: EBADMSG 74
+CONSTANT: EOVERFLOW 75
+CONSTANT: ENOTUNIQ 76
+CONSTANT: EBADFD 77
+CONSTANT: EREMCHG 78
+CONSTANT: ELIBACC 79
+CONSTANT: ELIBBAD 80
+CONSTANT: ELIBSCN 81
+CONSTANT: ELIBMAX 82
+CONSTANT: ELIBEXEC 83
+CONSTANT: EILSEQ 84
+CONSTANT: ERESTART 85
+CONSTANT: ESTRPIPE 86
+CONSTANT: EUSERS 87
+CONSTANT: ENOTSOCK 88
+CONSTANT: EDESTADDRREQ 89
+CONSTANT: EMSGSIZE 90
+CONSTANT: EPROTOTYPE 91
+CONSTANT: ENOPROTOOPT 92
+CONSTANT: EPROTONOSUPPORT 93
+CONSTANT: ESOCKTNOSUPPORT 94
+CONSTANT: EOPNOTSUPP 95
+CONSTANT: EPFNOSUPPORT 96
+CONSTANT: EAFNOSUPPORT 97
+CONSTANT: EADDRINUSE 98
+CONSTANT: EADDRNOTAVAIL 99
+CONSTANT: ENETDOWN 100
+CONSTANT: ENETUNREACH 101
+CONSTANT: ENETRESET 102
+CONSTANT: ECONNABORTED 103
+CONSTANT: ECONNRESET 104
+CONSTANT: ENOBUFS 105
+CONSTANT: EISCONN 106
+CONSTANT: ENOTCONN 107
+CONSTANT: ESHUTDOWN 108
+CONSTANT: ETOOMANYREFS 109
+CONSTANT: ETIMEDOUT 110
+CONSTANT: ECONNREFUSED 111
+CONSTANT: EHOSTDOWN 112
+CONSTANT: EHOSTUNREACH 113
+CONSTANT: EALREADY 114
+CONSTANT: EINPROGRESS 115
+CONSTANT: ESTALE 116
+CONSTANT: EUCLEAN 117
+CONSTANT: ENOTNAM 118
+CONSTANT: ENAVAIL 119
+CONSTANT: EISNAM 120
+CONSTANT: EREMOTEIO 121
+CONSTANT: EDQUOT 122
+CONSTANT: ENOMEDIUM 123
+CONSTANT: EMEDIUMTYPE 124
+CONSTANT: ECANCELED 125
+CONSTANT: ENOKEY 126
+CONSTANT: EKEYEXPIRED 127
+CONSTANT: EKEYREVOKED 128
+CONSTANT: EKEYREJECTED 129
+CONSTANT: EOWNERDEAD 130
+CONSTANT: ENOTRECOVERABLE 131
USING: kernel alien.c-types alien.strings sequences math alien.syntax unix
vectors kernel namespaces continuations threads assocs vectors
-io.backend.unix io.encodings.utf8 unix.utilities ;
+io.backend.unix io.encodings.utf8 unix.utilities constants ;
IN: unix.process
! Low-level Unix process launching utilities. These are used
[ [ fork-process dup zero? ] dip [ drop ] prepose ] dip
if ; inline
-: SIGKILL 9 ; inline
-: SIGTERM 15 ; inline
+CONSTANT: SIGKILL 9
+CONSTANT: SIGTERM 15
FUNCTION: int kill ( pid_t pid, int sig ) ;
-: PRIO_PROCESS 0 ; inline
-: PRIO_PGRP 1 ; inline
-: PRIO_USER 2 ; inline
+CONSTANT: PRIO_PROCESS 0
+CONSTANT: PRIO_PGRP 1
+CONSTANT: PRIO_USER 2
-: PRIO_MIN -20 ; inline
-: PRIO_MAX 20 ; inline
+CONSTANT: PRIO_MIN -20
+CONSTANT: PRIO_MAX 20
! which/who = 0 for current process
FUNCTION: int getpriority ( int which, int who ) ;
FUNCTION: int setpriority ( int which, int who, int prio ) ;
: set-priority ( n -- )
- 0 0 rot setpriority io-error ;
+ [ 0 0 ] dip setpriority io-error ;
! Flags for waitpid
-: WNOHANG 1 ; inline
-: WUNTRACED 2 ; inline
+CONSTANT: WNOHANG 1
+CONSTANT: WUNTRACED 2
-: WSTOPPED 2 ; inline
-: WEXITED 4 ; inline
-: WCONTINUED 8 ; inline
-: WNOWAIT HEX: 1000000 ; inline
+CONSTANT: WSTOPPED 2
+CONSTANT: WEXITED 4
+CONSTANT: WCONTINUED 8
+CONSTANT: WNOWAIT HEX: 1000000
! Examining status
! Copyright (C) 2006 Patrick Mauritz.
! See http://factorcode.org/license.txt for BSD license.
IN: unix
-USING: alien.syntax system kernel ;
+USING: alien.syntax system kernel layouts constants ;
! Solaris.
-: O_RDONLY HEX: 0000 ; inline
-: O_WRONLY HEX: 0001 ; inline
-: O_RDWR HEX: 0002 ; inline
-: O_APPEND HEX: 0008 ; inline
-: O_CREAT HEX: 0100 ; inline
-: O_TRUNC HEX: 0200 ; inline
+CONSTANT: O_RDONLY HEX: 0000
+CONSTANT: O_WRONLY HEX: 0001
+CONSTANT: O_RDWR HEX: 0002
+CONSTANT: O_APPEND HEX: 0008
+CONSTANT: O_CREAT HEX: 0100
+CONSTANT: O_TRUNC HEX: 0200
-: SEEK_END 2 ; inline
+CONSTANT: SEEK_END 2
-: SOL_SOCKET HEX: ffff ; inline
+CONSTANT: SOL_SOCKET HEX: ffff
-: FD_SETSIZE cell 4 = 1024 65536 ? ; inline
+: FD_SETSIZE ( -- n ) cell 4 = 1024 65536 ? ;
-: SO_REUSEADDR 4 ; inline
-: SO_OOBINLINE HEX: 0100 ; inline
-: SO_SNDTIMEO HEX: 1005 ; inline
-: SO_RCVTIMEO HEX: 1006 ; inline
+CONSTANT: SO_REUSEADDR 4
+CONSTANT: SO_OOBINLINE HEX: 0100
+CONSTANT: SO_SNDTIMEO HEX: 1005
+CONSTANT: SO_RCVTIMEO HEX: 1006
-: F_SETFL 4 ; ! set file status flags
-: O_NONBLOCK HEX: 80 ; ! no delay
+CONSTANT: F_SETFL 4 ! set file status flags
+CONSTANT: O_NONBLOCK HEX: 80 ! no delay
C-STRUCT: addrinfo
{ "int" "flags" }
{ "ushort" "family" }
{ { "char" max-un-path } "path" } ;
-: EINTR 4 ; inline
-: EAGAIN 11 ; inline
-: EINPROGRESS 150 ; inline
+CONSTANT: EINTR 4
+CONSTANT: EAGAIN 11
+CONSTANT: EINPROGRESS 150
-: SOCK_STREAM 2 ; inline
-: SOCK_DGRAM 1 ; inline
+CONSTANT: SOCK_STREAM 2
+CONSTANT: SOCK_DGRAM 1
-: AF_UNSPEC 0 ; inline
-: AF_UNIX 1 ; inline
-: AF_INET 2 ; inline
-: AF_INET6 26 ; inline
+CONSTANT: AF_UNSPEC 0
+CONSTANT: AF_UNIX 1
+CONSTANT: AF_INET 2
+CONSTANT: AF_INET6 26
-: 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
+CONSTANT: IPPROTO_TCP 6
+CONSTANT: IPPROTO_UDP 17
-: AI_PASSIVE 8 ; inline
+CONSTANT: AI_PASSIVE 8
FUNCTION: int __xstat ( int ver, char* pathname, stat* buf ) ;
FUNCTION: int __lxstat ( int ver, char* pathname, stat* buf ) ;
-: stat ( pathname buf -- int ) 3 -rot __xstat ;
-: lstat ( pathname buf -- int ) 3 -rot __lxstat ;
+: stat ( pathname buf -- int ) [ 3 ] 2dip __xstat ;
+: lstat ( pathname buf -- int ) [ 3 ] 2dip __lxstat ;
FUNCTION: int __xstat ( int ver, char* pathname, stat* buf ) ;
FUNCTION: int __lxstat ( int ver, char* pathname, stat* buf ) ;
-: stat ( pathname buf -- int ) 1 -rot __xstat ;
-: lstat ( pathname buf -- int ) 1 -rot __lxstat ;
+: stat ( pathname buf -- int ) [ 1 ] 2dip __xstat ;
+: lstat ( pathname buf -- int ) [ 1 ] 2dip __lxstat ;
FUNCTION: int __stat30 ( char* pathname, stat* buf ) ;
FUNCTION: int __lstat30 ( char* pathname, stat* buf ) ;
-: stat ( pathname buf -- n ) __stat30 ; inline
-: lstat ( pathname buf -- n ) __lstat30 ; inline
+: stat ( pathname buf -- n ) __stat30 ;
+: lstat ( pathname buf -- n ) __lstat30 ;
FUNCTION: int __stat13 ( char* pathname, stat* buf ) ;
FUNCTION: int __lstat13 ( char* pathname, stat* buf ) ;
-: stat ( pathname buf -- n ) __stat13 ; inline
-: lstat ( pathname buf -- n ) __lstat13 ; inline
+: stat ( pathname buf -- n ) __stat13 ;
+: lstat ( pathname buf -- n ) __lstat13 ;
USING: kernel system combinators alien.syntax alien.c-types
-math io.backend.unix vocabs.loader unix ;
+math io.backend.unix vocabs.loader unix constants ;
IN: unix.stat
! File Types
-: S_IFMT OCT: 170000 ; ! These bits determine file type.
+CONSTANT: S_IFMT OCT: 170000 ! These bits determine file type.
-: S_IFDIR OCT: 40000 ; inline ! Directory.
-: S_IFCHR OCT: 20000 ; inline ! Character device.
-: S_IFBLK OCT: 60000 ; inline ! Block device.
-: S_IFREG OCT: 100000 ; inline ! Regular file.
-: S_IFIFO OCT: 010000 ; inline ! FIFO.
-: S_IFLNK OCT: 120000 ; inline ! Symbolic link.
-: S_IFSOCK OCT: 140000 ; inline ! Socket.
-: S_IFWHT OCT: 160000 ; inline ! Whiteout.
+CONSTANT: S_IFDIR OCT: 40000 ! Directory.
+CONSTANT: S_IFCHR OCT: 20000 ! Character device.
+CONSTANT: S_IFBLK OCT: 60000 ! Block device.
+CONSTANT: S_IFREG OCT: 100000 ! Regular file.
+CONSTANT: S_IFIFO OCT: 010000 ! FIFO.
+CONSTANT: S_IFLNK OCT: 120000 ! Symbolic link.
+CONSTANT: S_IFSOCK OCT: 140000 ! Socket.
+CONSTANT: S_IFWHT OCT: 160000 ! Whiteout.
FUNCTION: int chmod ( char* path, mode_t mode ) ;
FUNCTION: int fchmod ( int fd, mode_t mode ) ;
C-STRUCT: fsid
{ { "int" 2 } "__val" } ;
- TYPEDEF: fsid __fsid_t
- TYPEDEF: fsid fsid_t
+TYPEDEF: fsid __fsid_t
+TYPEDEF: fsid fsid_t
<< os {
{ linux [ "unix.stat.linux" require ] }
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax constants ;
IN: unix.statfs.freebsd
-: MFSNAMELEN 16 ; inline ! length of type name including null */
-: MNAMELEN 88 ; inline ! size of on/from name bufs
-: STATFS_VERSION HEX: 20030518 ; inline ! current version number
+CONSTANT: MFSNAMELEN 16 ! length of type name including null */
+CONSTANT: MNAMELEN 88 ! size of on/from name bufs
+CONSTANT: STATFS_VERSION HEX: 20030518 ! current version number
C-STRUCT: statfs
{ "uint32_t" "f_version" }
! 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 )
{
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
+ALIAS: 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" } ;
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax constants ;
IN: unix.statfs.openbsd
-: MFSNAMELEN 16 ; inline
-: MNAMELEN 90 ; inline
+CONSTANT: MFSNAMELEN 16
+CONSTANT: MNAMELEN 90
C-STRUCT: statfs
{ "u_int32_t" "f_flags" }
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax constants ;
IN: unix.statvfs.freebsd
C-STRUCT: statvfs
{ "ulong" "f_namemax" } ;
! Flags
-: ST_RDONLY HEX: 1 ; inline ! Read-only file system
-: ST_NOSUID HEX: 2 ; inline ! Does not honor setuid/setgid
+CONSTANT: ST_RDONLY HEX: 1 ! Read-only file system
+CONSTANT: ST_NOSUID HEX: 2 ! Does not honor setuid/setgid
FUNCTION: int statvfs ( char* path, statvfs* buf ) ;
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax constants ;
IN: unix.statvfs.linux
C-STRUCT: statvfs64
FUNCTION: int statvfs64 ( char* path, statvfs64* buf ) ;
-: ST_RDONLY 1 ; inline ! Mount read-only.
-: ST_NOSUID 2 ; inline ! Ignore suid and sgid bits.
-: ST_NODEV 4 ; inline ! Disallow access to device special files.
-: ST_NOEXEC 8 ; inline ! Disallow program execution.
-: ST_SYNCHRONOUS 16 ; inline ! Writes are synced at once.
-: ST_MANDLOCK 64 ; inline ! Allow mandatory locks on an FS.
-: ST_WRITE 128 ; inline ! Write on file/directory/symlink.
-: ST_APPEND 256 ; inline ! Append-only file.
-: ST_IMMUTABLE 512 ; inline ! Immutable file.
-: ST_NOATIME 1024 ; inline ! Do not update access times.
+CONSTANT: ST_RDONLY 1 ! Mount read-only.
+CONSTANT: ST_NOSUID 2 ! Ignore suid and sgid bits.
+CONSTANT: ST_NODEV 4 ! Disallow access to device special files.
+CONSTANT: ST_NOEXEC 8 ! Disallow program execution.
+CONSTANT: ST_SYNCHRONOUS 16 ! Writes are synced at once.
+CONSTANT: ST_MANDLOCK 64 ! Allow mandatory locks on an FS.
+CONSTANT: ST_WRITE 128 ! Write on file/directory/symlink.
+CONSTANT: ST_APPEND 256 ! Append-only file.
+CONSTANT: ST_IMMUTABLE 512 ! Immutable file.
+CONSTANT: ST_NOATIME 1024 ! Do not update access times.
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax constants ;
IN: unix.statvfs.macosx
C-STRUCT: statvfs
{ "ulong" "f_namemax" } ;
! Flags
-: ST_RDONLY HEX: 1 ; inline ! Read-only file system
-: ST_NOSUID HEX: 2 ; inline ! Does not honor setuid/setgid
+CONSTANT: ST_RDONLY HEX: 1 ! Read-only file system
+CONSTANT: ST_NOSUID HEX: 2 ! Does not honor setuid/setgid
FUNCTION: int statvfs ( char* path, statvfs* buf ) ;
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax constants ;
IN: unix.statvfs.netbsd
-: _VFS_NAMELEN 32 ; inline
-: _VFS_MNAMELEN 1024 ; inline
+CONSTANT: _VFS_NAMELEN 32
+CONSTANT: _VFS_MNAMELEN 1024
C-STRUCT: statvfs
- { "ulong" "f_flag" }
+ { "ulong" "f_flag" }
{ "ulong" "f_bsize" }
- { "ulong" "f_frsize" }
- { "ulong" "f_iosize" }
- { "fsblkcnt_t" "f_blocks" }
- { "fsblkcnt_t" "f_bfree" }
- { "fsblkcnt_t" "f_bavail" }
- { "fsblkcnt_t" "f_bresvd" }
+ { "ulong" "f_frsize" }
+ { "ulong" "f_iosize" }
+ { "fsblkcnt_t" "f_blocks" }
+ { "fsblkcnt_t" "f_bfree" }
+ { "fsblkcnt_t" "f_bavail" }
+ { "fsblkcnt_t" "f_bresvd" }
{ "fsfilcnt_t" "f_files" }
{ "fsfilcnt_t" "f_ffree" }
- { "fsfilcnt_t" "f_favail" }
- { "fsfilcnt_t" "f_fresvd" }
- { "uint64_t" "f_syncreads" }
- { "uint64_t" "f_syncwrites" }
- { "uint64_t" "f_asyncreads" }
- { "uint64_t" "f_asyncwrites" }
+ { "fsfilcnt_t" "f_favail" }
+ { "fsfilcnt_t" "f_fresvd" }
+ { "uint64_t" "f_syncreads" }
+ { "uint64_t" "f_syncwrites" }
+ { "uint64_t" "f_asyncreads" }
+ { "uint64_t" "f_asyncwrites" }
{ "fsid_t" "f_fsidx" }
{ "ulong" "f_fsid" }
- { "ulong" "f_namemax" }
+ { "ulong" "f_namemax" }
{ "uid_t" "f_owner" }
- { { "uint32_t" 4 } "f_spare" }
+ { { "uint32_t" 4 } "f_spare" }
{ { "char" _VFS_NAMELEN } "f_fstypename" }
{ { "char" _VFS_MNAMELEN } "f_mntonname" }
{ { "char" _VFS_MNAMELEN } "f_mntfromname" } ;
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.syntax ;
+USING: alien.syntax constants ;
IN: unix.statvfs.openbsd
C-STRUCT: statvfs
{ "ulong" "f_flag" }
{ "ulong" "f_namemax" } ;
-: ST_RDONLY 1 ; inline
-: ST_NOSUID 2 ; inline
+CONSTANT: ST_RDONLY 1
+CONSTANT: ST_NOSUID 2
FUNCTION: int statvfs ( char* path, statvfs* buf ) ;
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
-
-: MAP_FILE 0 ; inline
-: MAP_SHARED 1 ; inline
-: MAP_PRIVATE 2 ; inline
-
-: MAP_FAILED -1 <alien> ; inline
-
-: NGROUPS_MAX 16 ; inline
-
-: 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: PROT_NONE 0
+CONSTANT: PROT_READ 1
+CONSTANT: PROT_WRITE 2
+CONSTANT: PROT_EXEC 4
+
+CONSTANT: MAP_FILE 0
+CONSTANT: MAP_SHARED 1
+CONSTANT: MAP_PRIVATE 2
+
+: MAP_FAILED ( -- alien ) -1 <alien> ; inline
+
+CONSTANT: NGROUPS_MAX 16
+
+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" }
FUNCTION: ssize_t readlink ( char* path, char* buf, size_t bufsize ) ;
-: PATH_MAX 1024 ; inline
+CONSTANT: PATH_MAX 1024
: read-symbolic-link ( path -- path )
PATH_MAX <byte-array> dup [
USING: alien.c-types alien.syntax combinators continuations
io.encodings.string io.encodings.utf8 kernel sequences strings
unix calendar system accessors unix.time calendar.unix
-vocabs.loader ;
+vocabs.loader constants ;
IN: unix.utmpx
-: EMPTY 0 ; inline
-: RUN_LVL 1 ; inline
-: BOOT_TIME 2 ; inline
-: OLD_TIME 3 ; inline
-: NEW_TIME 4 ; inline
-: INIT_PROCESS 5 ; inline
-: LOGIN_PROCESS 6 ; inline
-: USER_PROCESS 7 ; inline
-: DEAD_PROCESS 8 ; inline
-: ACCOUNTING 9 ; inline
-: SIGNATURE 10 ; inline
-: SHUTDOWN_TIME 11 ; inline
+CONSTANT: EMPTY 0
+CONSTANT: RUN_LVL 1
+CONSTANT: BOOT_TIME 2
+CONSTANT: OLD_TIME 3
+CONSTANT: NEW_TIME 4
+CONSTANT: INIT_PROCESS 5
+CONSTANT: LOGIN_PROCESS 6
+CONSTANT: USER_PROCESS 7
+CONSTANT: DEAD_PROCESS 8
+CONSTANT: ACCOUNTING 9
+CONSTANT: SIGNATURE 10
+CONSTANT: SHUTDOWN_TIME 11
FUNCTION: void setutxent ( ) ;
FUNCTION: void endutxent ( ) ;
<PRIVATE
-: >vlist< [ length>> ] [ vector>> ] bi ; inline
+: >vlist< ( vlist -- len vec )
+ [ length>> ] [ vector>> ] bi ; inline
: unshare ( len vec -- len vec' )
clone [ set-length ] 2keep ; inline
-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
-
-: MS_DEF_DH_SCHANNEL_PROV
- "Microsoft DH Schannel Cryptographic Provider" ; inline
-
-: MS_DEF_DSS_DH_PROV
- "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider" ; inline
-
-: MS_DEF_DSS_PROV
- "Microsoft Base DSS Cryptographic Provider" ; inline
-
-: MS_DEF_PROV
- "Microsoft Base Cryptographic Provider v1.0" ; inline
-
-: MS_DEF_RSA_SCHANNEL_PROV
- "Microsoft RSA Schannel Cryptographic Provider" ; 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
+
+CONSTANT: MS_DEF_DH_SCHANNEL_PROV "Microsoft DH Schannel Cryptographic Provider"
+
+CONSTANT: MS_DEF_DSS_DH_PROV
+ "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
+
+CONSTANT: MS_DEF_DSS_PROV
+ "Microsoft Base DSS Cryptographic Provider"
+
+CONSTANT: MS_DEF_PROV
+ "Microsoft Base Cryptographic Provider v1.0"
+
+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" }
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" }
! 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
-
-: STANDARD_RIGHTS_READ READ_CONTROL ; inline
-: STANDARD_RIGHTS_WRITE READ_CONTROL ; inline
-: STANDARD_RIGHTS_EXECUTE READ_CONTROL ; inline
-
-: 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: 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
+
+ALIAS: STANDARD_RIGHTS_READ READ_CONTROL
+ALIAS: STANDARD_RIGHTS_WRITE READ_CONTROL
+ALIAS: STANDARD_RIGHTS_EXECUTE READ_CONTROL
+
+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 )
{
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
<<
FUNCTION: HRESULT DirectInput8Create ( HINSTANCE hinst, DWORD dwVersion, REFIID riidtlf, LPVOID* ppvOut, LPUNKNOWN punkOuter ) ;
-: DIRECTINPUT_VERSION HEX: 0800 ; inline
-
-: DI8DEVCLASS_ALL 0 ; inline
-: DI8DEVCLASS_DEVICE 1 ; inline
-: DI8DEVCLASS_POINTER 2 ; inline
-: DI8DEVCLASS_KEYBOARD 3 ; inline
-: DI8DEVCLASS_GAMECTRL 4 ; inline
-
-: 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
-
-: DIENUM_STOP 0 ; inline
-: DIENUM_CONTINUE 1 ; inline
-
-: DIDF_ABSAXIS 1 ;
-: DIDF_RELAXIS 2 ;
-
-: DIDFT_ALL HEX: 00000000 ; inline
-
-: DIDFT_RELAXIS HEX: 00000001 ; inline
-: DIDFT_ABSAXIS HEX: 00000002 ; inline
-: DIDFT_AXIS HEX: 00000003 ; inline
-
-: DIDFT_PSHBUTTON HEX: 00000004 ; inline
-: DIDFT_TGLBUTTON HEX: 00000008 ; inline
-: DIDFT_BUTTON HEX: 0000000C ; inline
-
-: DIDFT_POV HEX: 00000010 ; inline
-: DIDFT_COLLECTION HEX: 00000040 ; inline
-: DIDFT_NODATA HEX: 00000080 ; inline
-
-: DIDFT_ANYINSTANCE HEX: 00FFFF00 ; inline
-: DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE ; inline
+CONSTANT: DIRECTINPUT_VERSION HEX: 0800
+
+CONSTANT: DI8DEVCLASS_ALL 0
+CONSTANT: DI8DEVCLASS_DEVICE 1
+CONSTANT: DI8DEVCLASS_POINTER 2
+CONSTANT: DI8DEVCLASS_KEYBOARD 3
+CONSTANT: DI8DEVCLASS_GAMECTRL 4
+
+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
+
+CONSTANT: DIENUM_STOP 0
+CONSTANT: DIENUM_CONTINUE 1
+
+CONSTANT: DIDF_ABSAXIS 1
+CONSTANT: DIDF_RELAXIS 2
+
+CONSTANT: DIDFT_ALL HEX: 00000000
+
+CONSTANT: DIDFT_RELAXIS HEX: 00000001
+CONSTANT: DIDFT_ABSAXIS HEX: 00000002
+CONSTANT: DIDFT_AXIS HEX: 00000003
+
+CONSTANT: DIDFT_PSHBUTTON HEX: 00000004
+CONSTANT: DIDFT_TGLBUTTON HEX: 00000008
+CONSTANT: DIDFT_BUTTON HEX: 0000000C
+
+CONSTANT: DIDFT_POV HEX: 00000010
+CONSTANT: DIDFT_COLLECTION HEX: 00000040
+CONSTANT: DIDFT_NODATA HEX: 00000080
+
+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
-
-: 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
-
-: 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
-
-: 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
-
-: 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
-
-: DIK_CIRCUMFLEX DIK_PREVTRACK ; inline
-
-: 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: DIDFT_NOCOLLECTION HEX: 00FFFF00
+
+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
+
+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
+
+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
+
+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
+
+ALIAS: DIK_CIRCUMFLEX DIK_PREVTRACK
+
+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
-
-: DIPH_DEVICE 0 ; inline
-: DIPH_BYOFFSET 1 ; inline
-: DIPH_BYID 2 ; inline
-: DIPH_BYUSAGE 3 ; inline
+CONSTANT: DIPROPRANGE_NOMIN HEX: 80000000
+CONSTANT: DIPROPRANGE_NOMAX HEX: 7FFFFFFF
+CONSTANT: MAXCPOINTSNUM 8
+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
-
-: DIPROPAXISMODE_ABS 0 ; inline
-: DIPROPAXISMODE_REL 1 ; inline
-
-: 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
-
-: DIPROPAUTOCENTER_OFF 0 ; inline
-: DIPROPAUTOCENTER_ON 1 ; inline
-
-: DIPROP_CALIBRATIONMODE 10 <alien> ; inline
-
-: DIPROPCALIBRATIONMODE_COOKED 0 ; inline
-: DIPROPCALIBRATIONMODE_RAW 1 ; inline
-
-: 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
-
-: 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
+: DIPROP_BUFFERSIZE ( -- alien ) 1 <alien> ; inline
+: DIPROP_AXISMODE ( -- alien ) 2 <alien> ; inline
+
+CONSTANT: DIPROPAXISMODE_ABS 0
+CONSTANT: DIPROPAXISMODE_REL 1
+
+: DIPROP_GRANULARITY ( -- alien ) 3 <alien> ; inline
+: DIPROP_RANGE ( -- alien ) 4 <alien> ; inline
+: DIPROP_DEADZONE ( -- alien ) 5 <alien> ; inline
+: DIPROP_SATURATION ( -- alien ) 6 <alien> ; inline
+: DIPROP_FFGAIN ( -- alien ) 7 <alien> ; inline
+: DIPROP_FFLOAD ( -- alien ) 8 <alien> ; inline
+: DIPROP_AUTOCENTER ( -- alien ) 9 <alien> ; inline
+
+CONSTANT: DIPROPAUTOCENTER_OFF 0
+CONSTANT: DIPROPAUTOCENTER_ON 1
+
+: DIPROP_CALIBRATIONMODE ( -- alien ) 10 <alien> ; inline
+
+CONSTANT: DIPROPCALIBRATIONMODE_COOKED 0
+CONSTANT: DIPROPCALIBRATIONMODE_RAW 1
+
+: 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
+
+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}
-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
! 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
+
+CONSTANT: BI_RGB 0
+CONSTANT: BI_RLE8 1
+CONSTANT: BI_RLE4 2
+CONSTANT: BI_BITFIELDS 3
-: BI_RGB 0 ; inline
-: BI_RLE8 1 ; inline
-: BI_RLE4 2 ; inline
-: BI_BITFIELDS 3 ; inline
-
-: DIB_RGB_COLORS 0 ; inline
-: DIB_PAL_COLORS 1 ; inline
+CONSTANT: DIB_RGB_COLORS 0
+CONSTANT: DIB_PAL_COLORS 1
LIBRARY: gdi32
! 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
-
-: FILE_SHARE_READ 1 ; inline
-: FILE_SHARE_WRITE 2 ; inline
-: FILE_SHARE_DELETE 4 ; inline
-: FILE_SHARE_VALID_FLAGS 7 ; inline
-
-: 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
-
-: 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
-
-: 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
-
-: 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_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
+
+CONSTANT: FILE_SHARE_READ 1
+CONSTANT: FILE_SHARE_WRITE 2
+CONSTANT: FILE_SHARE_DELETE 4
+CONSTANT: FILE_SHARE_VALID_FLAGS 7
+
+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
+
+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
+
+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
+
+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" }
{ "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
-
-: INVALID_HANDLE_VALUE -1 <alien> ; inline
-: INVALID_FILE_SIZE HEX: FFFFFFFF ; inline
-: INVALID_SET_FILE_POINTER HEX: ffffffff ; inline
-
-: FILE_BEGIN 0 ; inline
-: FILE_CURRENT 1 ; inline
-: FILE_END 2 ; inline
-
-: 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 ;
-
-: INFINITE HEX: FFFFFFFF ; inline
+CONSTANT: STD_INPUT_HANDLE -10
+CONSTANT: STD_OUTPUT_HANDLE -11
+CONSTANT: STD_ERROR_HANDLE -12
+
+: INVALID_HANDLE_VALUE ( -- alien ) -1 <alien> ; inline
+CONSTANT: INVALID_FILE_SIZE HEX: FFFFFFFF
+CONSTANT: INVALID_SET_FILE_POINTER HEX: ffffffff
+
+CONSTANT: FILE_BEGIN 0
+CONSTANT: FILE_CURRENT 1
+CONSTANT: FILE_END 2
+
+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
+
+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 ;
-
-: 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
-
-
-: PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 ; inline
-: PF_SSE3_INSTRUCTIONS_AVAILABLE 13 ; inline
-
-: MAX_COMPUTERNAME_LENGTH 15 ; inline
-: UNLEN 256 ; inline
-
-: 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
-
-: MEM_COMMIT ( -- n ) HEX: 1000 ; inline
-: MEM_RELEASE ( -- n ) HEX: 8000 ; inline
-
-: 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
-
-: 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
-
-: ERROR_ALREADY_EXISTS 183 ; inline
-
-: 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: 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
+
+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
+
+CONSTANT: MAX_COMPUTERNAME_LENGTH 15
+CONSTANT: UNLEN 256
+
+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
+
+CONSTANT: MEM_COMMIT HEX: 1000
+CONSTANT: MEM_RELEASE HEX: 8000
+
+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
+
+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
+
+CONSTANT: ERROR_ALREADY_EXISTS 183
+
+CONSTANT: FILE_MAP_ALL_ACCESS HEX: f001f
+CONSTANT: FILE_MAP_READ 4
+CONSTANT: FILE_MAP_WRITE 2
+CONSTANT: FILE_MAP_COPY 1
+
+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" }
{ { "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" ;
-
-: 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 ;
-
-: SE_PRIVILEGE_ENABLED_BY_DEFAULT HEX: 00000001 ;
-: SE_PRIVILEGE_ENABLED HEX: 00000002 ;
-: SE_PRIVILEGE_REMOVE HEX: 00000004 ;
-: SE_PRIVILEGE_USED_FOR_ACCESS HEX: 80000000 ;
-
-: 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 ;
-
-: ANYSIZE_ARRAY 1 ; inline
-
-: 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: 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"
+
+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
+
+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
+
+CONSTANT: PRIVILEGE_SET_ALL_NECESSARY 1
+
+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
+
+CONSTANT: ANYSIZE_ARRAY 1
+
+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" }
{ "DWORD" "nFileIndexLow" } ;
TYPEDEF: BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION
-: OFS_MAXPATHNAME 128 ;
+CONSTANT: OFS_MAXPATHNAME 128
C-STRUCT: OFSTRUCT
{ "BYTE" "cBytes" }
{ "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
! 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,
! Copyright (C) 2005, 2006 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs hashtables kernel math namespaces words
-windows.types vocabs sequences ;
+windows.types vocabs sequences constants alias ;
IN: windows.messages
SYMBOL: windows-messages
: windows-message-name ( n -- name )
windows-messages get at "unknown message" or ;
-: WM_NULL HEX: 0000 ; inline
-: WM_CREATE HEX: 0001 ; inline
-: WM_DESTROY HEX: 0002 ; inline
-: WM_MOVE HEX: 0003 ; inline
-: WM_SIZE HEX: 0005 ; inline
-: WM_ACTIVATE HEX: 0006 ; inline
-: WM_SETFOCUS HEX: 0007 ; inline
-: WM_KILLFOCUS HEX: 0008 ; inline
-: WM_ENABLE HEX: 000A ; inline
-: WM_SETREDRAW HEX: 000B ; inline
-: WM_SETTEXT HEX: 000C ; inline
-: WM_GETTEXT HEX: 000D ; inline
-: WM_GETTEXTLENGTH HEX: 000E ; inline
-: WM_PAINT HEX: 000F ; inline
-: WM_CLOSE HEX: 0010 ; inline
-: WM_QUERYENDSESSION HEX: 0011 ; inline
-: WM_QUERYOPEN HEX: 0013 ; inline
-: WM_ENDSESSION HEX: 0016 ; inline
-: WM_QUIT HEX: 0012 ; inline
-: WM_ERASEBKGND HEX: 0014 ; inline
-: WM_SYSCOLORCHANGE HEX: 0015 ; inline
-: WM_SHOWWINDOW HEX: 0018 ; inline
-: WM_WININICHANGE HEX: 001A ; inline
-: WM_SETTINGCHANGE HEX: 001A ; inline
-: WM_DEVMODECHANGE HEX: 001B ; inline
-: WM_ACTIVATEAPP HEX: 001C ; inline
-: WM_FONTCHANGE HEX: 001D ; inline
-: WM_TIMECHANGE HEX: 001E ; inline
-: WM_CANCELMODE HEX: 001F ; inline
-: WM_SETCURSOR HEX: 0020 ; inline
-: WM_MOUSEACTIVATE HEX: 0021 ; inline
-: WM_CHILDACTIVATE HEX: 0022 ; inline
-: WM_QUEUESYNC HEX: 0023 ; inline
-: WM_GETMINMAXINFO HEX: 0024 ; inline
-: WM_PAINTICON HEX: 0026 ; inline
-: WM_ICONERASEBKGND HEX: 0027 ; inline
-: WM_NEXTDLGCTL HEX: 0028 ; inline
-: WM_SPOOLERSTATUS HEX: 002A ; inline
-: WM_DRAWITEM HEX: 002B ; inline
-: WM_MEASUREITEM HEX: 002C ; inline
-: WM_DELETEITEM HEX: 002D ; inline
-: WM_VKEYTOITEM HEX: 002E ; inline
-: WM_CHARTOITEM HEX: 002F ; inline
-: WM_SETFONT HEX: 0030 ; inline
-: WM_GETFONT HEX: 0031 ; inline
-: WM_SETHOTKEY HEX: 0032 ; inline
-: WM_GETHOTKEY HEX: 0033 ; inline
-: WM_QUERYDRAGICON HEX: 0037 ; inline
-: WM_COMPAREITEM HEX: 0039 ; inline
-: WM_GETOBJECT HEX: 003D ; inline
-: WM_COMPACTING HEX: 0041 ; inline
-: WM_COMMNOTIFY HEX: 0044 ; inline
-: WM_WINDOWPOSCHANGING HEX: 0046 ; inline
-: WM_WINDOWPOSCHANGED HEX: 0047 ; inline
-: WM_POWER HEX: 0048 ; inline
-: WM_COPYDATA HEX: 004A ; inline
-: WM_CANCELJOURNAL HEX: 004B ; inline
-: WM_NOTIFY HEX: 004E ; inline
-: WM_INPUTLANGCHANGEREQUEST HEX: 0050 ; inline
-: WM_INPUTLANGCHANGE HEX: 0051 ; inline
-: WM_TCARD HEX: 0052 ; inline
-: WM_HELP HEX: 0053 ; inline
-: WM_USERCHANGED HEX: 0054 ; inline
-: WM_NOTIFYFORMAT HEX: 0055 ; inline
-: WM_CONTEXTMENU HEX: 007B ; inline
-: WM_STYLECHANGING HEX: 007C ; inline
-: WM_STYLECHANGED HEX: 007D ; inline
-: WM_DISPLAYCHANGE HEX: 007E ; inline
-: WM_GETICON HEX: 007F ; inline
-: WM_SETICON HEX: 0080 ; inline
-: WM_NCCREATE HEX: 0081 ; inline
-: WM_NCDESTROY HEX: 0082 ; inline
-: WM_NCCALCSIZE HEX: 0083 ; inline
-: WM_NCHITTEST HEX: 0084 ; inline
-: WM_NCPAINT HEX: 0085 ; inline
-: WM_NCACTIVATE HEX: 0086 ; inline
-: WM_GETDLGCODE HEX: 0087 ; inline
-: WM_SYNCPAINT HEX: 0088 ; inline
-: WM_NCMOUSEMOVE HEX: 00A0 ; inline
-: WM_NCLBUTTONDOWN HEX: 00A1 ; inline
-: WM_NCLBUTTONUP HEX: 00A2 ; inline
-: WM_NCLBUTTONDBLCLK HEX: 00A3 ; inline
-: WM_NCRBUTTONDOWN HEX: 00A4 ; inline
-: WM_NCRBUTTONUP HEX: 00A5 ; inline
-: WM_NCRBUTTONDBLCLK HEX: 00A6 ; inline
-: WM_NCMBUTTONDOWN HEX: 00A7 ; inline
-: WM_NCMBUTTONUP HEX: 00A8 ; inline
-: WM_NCMBUTTONDBLCLK HEX: 00A9 ; inline
-: WM_NCXBUTTONDOWN HEX: 00AB ; inline
-: WM_NCXBUTTONUP HEX: 00AC ; inline
-: WM_NCXBUTTONDBLCLK HEX: 00AD ; inline
-: WM_NCUAHDRAWCAPTION HEX: 00AE ; inline ! undocumented
-: WM_NCUAHDRAWFRAME HEX: 00AF ; inline ! undocumented
-: WM_INPUT HEX: 00FF ; inline
-: WM_KEYFIRST HEX: 0100 ; inline
-: WM_KEYDOWN HEX: 0100 ; inline
-: WM_KEYUP HEX: 0101 ; inline
-: WM_CHAR HEX: 0102 ; inline
-: WM_DEADCHAR HEX: 0103 ; inline
-: WM_SYSKEYDOWN HEX: 0104 ; inline
-: WM_SYSKEYUP HEX: 0105 ; inline
-: WM_SYSCHAR HEX: 0106 ; inline
-: WM_SYSDEADCHAR HEX: 0107 ; inline
-: WM_UNICHAR HEX: 0109 ; inline
-: WM_KEYLAST_NT501 HEX: 0109 ; inline
-: UNICODE_NOCHAR HEX: FFFF ; inline
-: WM_KEYLAST_PRE501 HEX: 0108 ; inline
-: WM_IME_STARTCOMPOSITION HEX: 010D ; inline
-: WM_IME_ENDCOMPOSITION HEX: 010E ; inline
-: WM_IME_COMPOSITION HEX: 010F ; inline
-: WM_IME_KEYLAST HEX: 010F ; inline
-: WM_INITDIALOG HEX: 0110 ; inline
-: WM_COMMAND HEX: 0111 ; inline
-: WM_SYSCOMMAND HEX: 0112 ; inline
-: WM_TIMER HEX: 0113 ; inline
-: WM_HSCROLL HEX: 0114 ; inline
-: WM_VSCROLL HEX: 0115 ; inline
-: WM_INITMENU HEX: 0116 ; inline
-: WM_INITMENUPOPUP HEX: 0117 ; inline
-: WM_MENUSELECT HEX: 011F ; inline
-: WM_MENUCHAR HEX: 0120 ; inline
-: WM_ENTERIDLE HEX: 0121 ; inline
-: WM_MENURBUTTONUP HEX: 0122 ; inline
-: WM_MENUDRAG HEX: 0123 ; inline
-: WM_MENUGETOBJECT HEX: 0124 ; inline
-: WM_UNINITMENUPOPUP HEX: 0125 ; inline
-: WM_MENUCOMMAND HEX: 0126 ; inline
-: WM_CHANGEUISTATE HEX: 0127 ; inline
-: WM_UPDATEUISTATE HEX: 0128 ; inline
-: WM_QUERYUISTATE HEX: 0129 ; inline
-: WM_CTLCOLORMSGBOX HEX: 0132 ; inline
-: WM_CTLCOLOREDIT HEX: 0133 ; inline
-: WM_CTLCOLORLISTBOX HEX: 0134 ; inline
-: WM_CTLCOLORBTN HEX: 0135 ; inline
-: WM_CTLCOLORDLG HEX: 0136 ; inline
-: WM_CTLCOLORSCROLLBAR HEX: 0137 ; inline
-: WM_CTLCOLORSTATIC HEX: 0138 ; inline
-: WM_MOUSEFIRST HEX: 0200 ; inline
-: WM_MOUSEMOVE HEX: 0200 ; inline
-: WM_LBUTTONDOWN HEX: 0201 ; inline
-: WM_LBUTTONUP HEX: 0202 ; inline
-: WM_LBUTTONDBLCLK HEX: 0203 ; inline
-: WM_RBUTTONDOWN HEX: 0204 ; inline
-: WM_RBUTTONUP HEX: 0205 ; inline
-: WM_RBUTTONDBLCLK HEX: 0206 ; inline
-: WM_MBUTTONDOWN HEX: 0207 ; inline
-: WM_MBUTTONUP HEX: 0208 ; inline
-: WM_MBUTTONDBLCLK HEX: 0209 ; inline
-: WM_MOUSEWHEEL HEX: 020A ; inline
-: WM_XBUTTONDOWN HEX: 020B ; inline
-: WM_XBUTTONUP HEX: 020C ; inline
-: WM_XBUTTONDBLCLK HEX: 020D ; inline
-: WM_MOUSELAST_5 HEX: 020D ; inline
-: WM_MOUSELAST_4 HEX: 020A ; inline
-: WM_MOUSELAST_PRE_4 HEX: 0209 ; inline
-: WM_PARENTNOTIFY HEX: 0210 ; inline
-: WM_ENTERMENULOOP HEX: 0211 ; inline
-: WM_EXITMENULOOP HEX: 0212 ; inline
-: WM_NEXTMENU HEX: 0213 ; inline
-: WM_SIZING HEX: 0214 ; inline
-: WM_CAPTURECHANGED HEX: 0215 ; inline
-: WM_MOVING HEX: 0216 ; inline
-: WM_POWERBROADCAST HEX: 0218 ; inline
-: WM_DEVICECHANGE HEX: 0219 ; inline
-: WM_MDICREATE HEX: 0220 ; inline
-: WM_MDIDESTROY HEX: 0221 ; inline
-: WM_MDIACTIVATE HEX: 0222 ; inline
-: WM_MDIRESTORE HEX: 0223 ; inline
-: WM_MDINEXT HEX: 0224 ; inline
-: WM_MDIMAXIMIZE HEX: 0225 ; inline
-: WM_MDITILE HEX: 0226 ; inline
-: WM_MDICASCADE HEX: 0227 ; inline
-: WM_MDIICONARRANGE HEX: 0228 ; inline
-: WM_MDIGETACTIVE HEX: 0229 ; inline
-: WM_MDISETMENU HEX: 0230 ; inline
-: WM_ENTERSIZEMOVE HEX: 0231 ; inline
-: WM_EXITSIZEMOVE HEX: 0232 ; inline
-: WM_DROPFILES HEX: 0233 ; inline
-: WM_MDIREFRESHMENU HEX: 0234 ; inline
-: WM_IME_SETCONTEXT HEX: 0281 ; inline
-: WM_IME_NOTIFY HEX: 0282 ; inline
-: WM_IME_CONTROL HEX: 0283 ; inline
-: WM_IME_COMPOSITIONFULL HEX: 0284 ; inline
-: WM_IME_SELECT HEX: 0285 ; inline
-: WM_IME_CHAR HEX: 0286 ; inline
-: WM_IME_REQUEST HEX: 0288 ; inline
-: WM_IME_KEYDOWN HEX: 0290 ; inline
-: WM_IME_KEYUP HEX: 0291 ; inline
-: WM_MOUSEHOVER HEX: 02A1 ; inline
-: WM_MOUSELEAVE HEX: 02A3 ; inline
-: WM_NCMOUSEHOVER HEX: 02A0 ; inline
-: WM_NCMOUSELEAVE HEX: 02A2 ; inline
-: WM_WTSSESSION_CHANGE HEX: 02B1 ; inline
-: WM_TABLET_FIRST HEX: 02c0 ; inline
-: WM_TABLET_LAST HEX: 02df ; inline
-: WM_CUT HEX: 0300 ; inline
-: WM_COPY HEX: 0301 ; inline
-: WM_PASTE HEX: 0302 ; inline
-: WM_CLEAR HEX: 0303 ; inline
-: WM_UNDO HEX: 0304 ; inline
-: WM_RENDERFORMAT HEX: 0305 ; inline
-: WM_RENDERALLFORMATS HEX: 0306 ; inline
-: WM_DESTROYCLIPBOARD HEX: 0307 ; inline
-: WM_DRAWCLIPBOARD HEX: 0308 ; inline
-: WM_PAINTCLIPBOARD HEX: 0309 ; inline
-: WM_VSCROLLCLIPBOARD HEX: 030A ; inline
-: WM_SIZECLIPBOARD HEX: 030B ; inline
-: WM_ASKCBFORMATNAME HEX: 030C ; inline
-: WM_CHANGECBCHAIN HEX: 030D ; inline
-: WM_HSCROLLCLIPBOARD HEX: 030E ; inline
-: WM_QUERYNEWPALETTE HEX: 030F ; inline
-: WM_PALETTEISCHANGING HEX: 0310 ; inline
-: WM_PALETTECHANGED HEX: 0311 ; inline
-: WM_HOTKEY HEX: 0312 ; inline
-: WM_PRINT HEX: 0317 ; inline
-: WM_PRINTCLIENT HEX: 0318 ; inline
-: WM_APPCOMMAND HEX: 0319 ; inline
-: WM_THEMECHANGED HEX: 031A ; inline
-: WM_HANDHELDFIRST HEX: 0358 ; inline
-: WM_HANDHELDLAST HEX: 035F ; inline
-: WM_AFXFIRST HEX: 0360 ; inline
-: WM_AFXLAST HEX: 037F ; inline
-: WM_PENWINFIRST HEX: 0380 ; inline
-: WM_PENWINLAST HEX: 038F ; inline
-: WM_APP HEX: 8000 ; inline
-: WM_USER HEX: 0400 ; inline
-: EM_GETSEL HEX: 00B0 ; inline
-: EM_SETSEL HEX: 00B1 ; inline
-: EM_GETRECT HEX: 00B2 ; inline
-: EM_SETRECT HEX: 00B3 ; inline
-: EM_SETRECTNP HEX: 00B4 ; inline
-: EM_SCROLL HEX: 00B5 ; inline
-: EM_LINESCROLL HEX: 00B6 ; inline
-: EM_SCROLLCARET HEX: 00B7 ; inline
-: EM_GETMODIFY HEX: 00B8 ; inline
-: EM_SETMODIFY HEX: 00B9 ; inline
-: EM_GETLINECOUNT HEX: 00BA ; inline
-: EM_LINEINDEX HEX: 00BB ; inline
-: EM_SETHANDLE HEX: 00BC ; inline
-: EM_GETHANDLE HEX: 00BD ; inline
-: EM_GETTHUMB HEX: 00BE ; inline
-: EM_LINELENGTH HEX: 00C1 ; inline
-: EM_REPLACESEL HEX: 00C2 ; inline
-: EM_GETLINE HEX: 00C4 ; inline
-: EM_LIMITTEXT HEX: 00C5 ; inline
-: EM_CANUNDO HEX: 00C6 ; inline
-: EM_UNDO HEX: 00C7 ; inline
-: EM_FMTLINES HEX: 00C8 ; inline
-: EM_LINEFROMCHAR HEX: 00C9 ; inline
-: EM_SETTABSTOPS HEX: 00CB ; inline
-: EM_SETPASSWORDCHAR HEX: 00CC ; inline
-: EM_EMPTYUNDOBUFFER HEX: 00CD ; inline
-: EM_GETFIRSTVISIBLELINE HEX: 00CE ; inline
-: EM_SETREADONLY HEX: 00CF ; inline
-: EM_SETWORDBREAKPROC HEX: 00D0 ; inline
-: EM_GETWORDBREAKPROC HEX: 00D1 ; inline
-: EM_GETPASSWORDCHAR HEX: 00D2 ; inline
-: EM_SETMARGINS HEX: 00D3 ; inline
-: EM_GETMARGINS HEX: 00D4 ; inline
-: EM_SETLIMITTEXT EM_LIMITTEXT ; inline
-: EM_GETLIMITTEXT HEX: 00D5 ; inline
-: EM_POSFROMCHAR HEX: 00D6 ; inline
-: EM_CHARFROMPOS HEX: 00D7 ; inline
-: EM_SETIMESTATUS HEX: 00D8 ; inline
-: EM_GETIMESTATUS HEX: 00D9 ; inline
-: BM_GETCHECK HEX: 00F0 ; inline
-: BM_SETCHECK HEX: 00F1 ; inline
-: BM_GETSTATE HEX: 00F2 ; inline
-: BM_SETSTATE HEX: 00F3 ; inline
-: BM_SETSTYLE HEX: 00F4 ; inline
-: BM_CLICK HEX: 00F5 ; inline
-: BM_GETIMAGE HEX: 00F6 ; inline
-: BM_SETIMAGE HEX: 00F7 ; inline
-: STM_SETICON HEX: 0170 ; inline
-: STM_GETICON HEX: 0171 ; inline
-: STM_SETIMAGE HEX: 0172 ; inline
-: STM_GETIMAGE HEX: 0173 ; inline
-: STM_MSGMAX HEX: 0174 ; inline
-: DM_GETDEFID WM_USER ; inline
-: DM_SETDEFID WM_USER 1 + ; inline
-: DM_REPOSITION WM_USER 2 + ; inline
-: LB_ADDSTRING HEX: 0180 ; inline
-: LB_INSERTSTRING HEX: 0181 ; inline
-: LB_DELETESTRING HEX: 0182 ; inline
-: LB_SELITEMRANGEEX HEX: 0183 ; inline
-: LB_RESETCONTENT HEX: 0184 ; inline
-: LB_SETSEL HEX: 0185 ; inline
-: LB_SETCURSEL HEX: 0186 ; inline
-: LB_GETSEL HEX: 0187 ; inline
-: LB_GETCURSEL HEX: 0188 ; inline
-: LB_GETTEXT HEX: 0189 ; inline
-: LB_GETTEXTLEN HEX: 018A ; inline
-: LB_GETCOUNT HEX: 018B ; inline
-: LB_SELECTSTRING HEX: 018C ; inline
-: LB_DIR HEX: 018D ; inline
-: LB_GETTOPINDEX HEX: 018E ; inline
-: LB_FINDSTRING HEX: 018F ; inline
-: LB_GETSELCOUNT HEX: 0190 ; inline
-: LB_GETSELITEMS HEX: 0191 ; inline
-: LB_SETTABSTOPS HEX: 0192 ; inline
-: LB_GETHORIZONTALEXTENT HEX: 0193 ; inline
-: LB_SETHORIZONTALEXTENT HEX: 0194 ; inline
-: LB_SETCOLUMNWIDTH HEX: 0195 ; inline
-: LB_ADDFILE HEX: 0196 ; inline
-: LB_SETTOPINDEX HEX: 0197 ; inline
-: LB_GETITEMRECT HEX: 0198 ; inline
-: LB_GETITEMDATA HEX: 0199 ; inline
-: LB_SETITEMDATA HEX: 019A ; inline
-: LB_SELITEMRANGE HEX: 019B ; inline
-: LB_SETANCHORINDEX HEX: 019C ; inline
-: LB_GETANCHORINDEX HEX: 019D ; inline
-: LB_SETCARETINDEX HEX: 019E ; inline
-: LB_GETCARETINDEX HEX: 019F ; inline
-: LB_SETITEMHEIGHT HEX: 01A0 ; inline
-: LB_GETITEMHEIGHT HEX: 01A1 ; inline
-: LB_FINDSTRINGEXACT HEX: 01A2 ; inline
-: LB_SETLOCALE HEX: 01A5 ; inline
-: LB_GETLOCALE HEX: 01A6 ; inline
-: LB_SETCOUNT HEX: 01A7 ; inline
-: LB_INITSTORAGE HEX: 01A8 ; inline
-: LB_ITEMFROMPOINT HEX: 01A9 ; inline
-: LB_MULTIPLEADDSTRING HEX: 01B1 ; inline
-: LB_GETLISTBOXINFO HEX: 01B2 ; inline
-: LB_MSGMAX_501 HEX: 01B3 ; inline
-: LB_MSGMAX_WCE4 HEX: 01B1 ; inline
-: LB_MSGMAX_4 HEX: 01B0 ; inline
-: LB_MSGMAX_PRE4 HEX: 01A8 ; inline
-: CB_GETEDITSEL HEX: 0140 ; inline
-: CB_LIMITTEXT HEX: 0141 ; inline
-: CB_SETEDITSEL HEX: 0142 ; inline
-: CB_ADDSTRING HEX: 0143 ; inline
-: CB_DELETESTRING HEX: 0144 ; inline
-: CB_DIR HEX: 0145 ; inline
-: CB_GETCOUNT HEX: 0146 ; inline
-: CB_GETCURSEL HEX: 0147 ; inline
-: CB_GETLBTEXT HEX: 0148 ; inline
-: CB_GETLBTEXTLEN HEX: 0149 ; inline
-: CB_INSERTSTRING HEX: 014A ; inline
-: CB_RESETCONTENT HEX: 014B ; inline
-: CB_FINDSTRING HEX: 014C ; inline
-: CB_SELECTSTRING HEX: 014D ; inline
-: CB_SETCURSEL HEX: 014E ; inline
-: CB_SHOWDROPDOWN HEX: 014F ; inline
-: CB_GETITEMDATA HEX: 0150 ; inline
-: CB_SETITEMDATA HEX: 0151 ; inline
-: CB_GETDROPPEDCONTROLRECT HEX: 0152 ; inline
-: CB_SETITEMHEIGHT HEX: 0153 ; inline
-: CB_GETITEMHEIGHT HEX: 0154 ; inline
-: CB_SETEXTENDEDUI HEX: 0155 ; inline
-: CB_GETEXTENDEDUI HEX: 0156 ; inline
-: CB_GETDROPPEDSTATE HEX: 0157 ; inline
-: CB_FINDSTRINGEXACT HEX: 0158 ; inline
-: CB_SETLOCALE HEX: 0159 ; inline
-: CB_GETLOCALE HEX: 015A ; inline
-: CB_GETTOPINDEX HEX: 015B ; inline
-: CB_SETTOPINDEX HEX: 015C ; inline
-: CB_GETHORIZONTALEXTENT HEX: 015d ; inline
-: CB_SETHORIZONTALEXTENT HEX: 015e ; inline
-: CB_GETDROPPEDWIDTH HEX: 015f ; inline
-: CB_SETDROPPEDWIDTH HEX: 0160 ; inline
-: CB_INITSTORAGE HEX: 0161 ; inline
-: CB_MULTIPLEADDSTRING HEX: 0163 ; inline
-: CB_GETCOMBOBOXINFO HEX: 0164 ; inline
-: CB_MSGMAX_501 HEX: 0165 ; inline
-: CB_MSGMAX_WCE400 HEX: 0163 ; inline
-: CB_MSGMAX_400 HEX: 0162 ; inline
-: CB_MSGMAX_PRE400 HEX: 015B ; inline
-: SBM_SETPOS HEX: 00E0 ; inline
-: SBM_GETPOS HEX: 00E1 ; inline
-: SBM_SETRANGE HEX: 00E2 ; inline
-: SBM_SETRANGEREDRAW HEX: 00E6 ; inline
-: SBM_GETRANGE HEX: 00E3 ; inline
-: SBM_ENABLE_ARROWS HEX: 00E4 ; inline
-: SBM_SETSCROLLINFO HEX: 00E9 ; inline
-: SBM_GETSCROLLINFO HEX: 00EA ; inline
-: SBM_GETSCROLLBARINFO HEX: 00EB ; inline
-: LVM_FIRST HEX: 1000 ; inline ! ListView messages
-: TV_FIRST HEX: 1100 ; inline ! TreeView messages
-: HDM_FIRST HEX: 1200 ; inline ! Header messages
-: TCM_FIRST HEX: 1300 ; inline ! Tab control messages
-: PGM_FIRST HEX: 1400 ; inline ! Pager control messages
-: ECM_FIRST HEX: 1500 ; inline ! Edit control messages
-: BCM_FIRST HEX: 1600 ; inline ! Button control messages
-: CBM_FIRST HEX: 1700 ; inline ! Combobox control messages
-: CCM_FIRST HEX: 2000 ; inline ! Common control shared messages
-: CCM_LAST CCM_FIRST HEX: 0200 + ; inline
-: CCM_SETBKCOLOR CCM_FIRST 1 + ; inline
-: CCM_SETCOLORSCHEME CCM_FIRST 2 + ; inline
-: CCM_GETCOLORSCHEME CCM_FIRST 3 + ; inline
-: CCM_GETDROPTARGET CCM_FIRST 4 + ; inline
-: CCM_SETUNICODEFORMAT CCM_FIRST 5 + ; inline
-: CCM_GETUNICODEFORMAT CCM_FIRST 6 + ; inline
-: CCM_SETVERSION CCM_FIRST 7 + ; inline
-: CCM_GETVERSION CCM_FIRST 8 + ; inline
-: CCM_SETNOTIFYWINDOW CCM_FIRST 9 + ; inline
-: CCM_SETWINDOWTHEME CCM_FIRST HEX: b + ; inline
-: CCM_DPISCALE CCM_FIRST HEX: c + ; inline
-: HDM_GETITEMCOUNT HDM_FIRST 0 + ; inline
-: HDM_INSERTITEMA HDM_FIRST 1 + ; inline
-: HDM_INSERTITEMW HDM_FIRST 10 + ; inline
-: HDM_DELETEITEM HDM_FIRST 2 + ; inline
-: HDM_GETITEMA HDM_FIRST 3 + ; inline
-: HDM_GETITEMW HDM_FIRST 11 + ; inline
-: HDM_SETITEMA HDM_FIRST 4 + ; inline
-: HDM_SETITEMW HDM_FIRST 12 + ; inline
-: HDM_LAYOUT HDM_FIRST 5 + ; inline
-: HDM_HITTEST HDM_FIRST 6 + ; inline
-: HDM_GETITEMRECT HDM_FIRST 7 + ; inline
-: HDM_SETIMAGELIST HDM_FIRST 8 + ; inline
-: HDM_GETIMAGELIST HDM_FIRST 9 + ; inline
-: HDM_ORDERTOINDEX HDM_FIRST 15 + ; inline
-: HDM_CREATEDRAGIMAGE HDM_FIRST 16 + ; inline
-: HDM_GETORDERARRAY HDM_FIRST 17 + ; inline
-: HDM_SETORDERARRAY HDM_FIRST 18 + ; inline
-: HDM_SETHOTDIVIDER HDM_FIRST 19 + ; inline
-: HDM_SETBITMAPMARGIN HDM_FIRST 20 + ; inline
-: HDM_GETBITMAPMARGIN HDM_FIRST 21 + ; inline
-: HDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline
-: HDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline
-: HDM_SETFILTERCHANGETIMEOUT HDM_FIRST 22 + ; inline
-: HDM_EDITFILTER HDM_FIRST 23 + ; inline
-: HDM_CLEARFILTER HDM_FIRST 24 + ; inline
-: TB_ENABLEBUTTON WM_USER 1 + ; inline
-: TB_CHECKBUTTON WM_USER 2 + ; inline
-: TB_PRESSBUTTON WM_USER 3 + ; inline
-: TB_HIDEBUTTON WM_USER 4 + ; inline
-: TB_INDETERMINATE WM_USER 5 + ; inline
-: TB_MARKBUTTON WM_USER 6 + ; inline
-: TB_ISBUTTONENABLED WM_USER 9 + ; inline
-: TB_ISBUTTONCHECKED WM_USER 10 + ; inline
-: TB_ISBUTTONPRESSED WM_USER 11 + ; inline
-: TB_ISBUTTONHIDDEN WM_USER 12 + ; inline
-: TB_ISBUTTONINDETERMINATE WM_USER 13 + ; inline
-: TB_ISBUTTONHIGHLIGHTED WM_USER 14 + ; inline
-: TB_SETSTATE WM_USER 17 + ; inline
-: TB_GETSTATE WM_USER 18 + ; inline
-: TB_ADDBITMAP WM_USER 19 + ; inline
-: TB_ADDBUTTONSA WM_USER 20 + ; inline
-: TB_INSERTBUTTONA WM_USER 21 + ; inline
-: TB_ADDBUTTONS WM_USER 20 + ; inline
-: TB_INSERTBUTTON WM_USER 21 + ; inline
-: TB_DELETEBUTTON WM_USER 22 + ; inline
-: TB_GETBUTTON WM_USER 23 + ; inline
-: TB_BUTTONCOUNT WM_USER 24 + ; inline
-: TB_COMMANDTOINDEX WM_USER 25 + ; inline
-: TB_SAVERESTOREA WM_USER 26 + ; inline
-: TB_SAVERESTOREW WM_USER 76 + ; inline
-: TB_CUSTOMIZE WM_USER 27 + ; inline
-: TB_ADDSTRINGA WM_USER 28 + ; inline
-: TB_ADDSTRINGW WM_USER 77 + ; inline
-: TB_GETITEMRECT WM_USER 29 + ; inline
-: TB_BUTTONSTRUCTSIZE WM_USER 30 + ; inline
-: TB_SETBUTTONSIZE WM_USER 31 + ; inline
-: TB_SETBITMAPSIZE WM_USER 32 + ; inline
-: TB_AUTOSIZE WM_USER 33 + ; inline
-: TB_GETTOOLTIPS WM_USER 35 + ; inline
-: TB_SETTOOLTIPS WM_USER 36 + ; inline
-: TB_SETPARENT WM_USER 37 + ; inline
-: TB_SETROWS WM_USER 39 + ; inline
-: TB_GETROWS WM_USER 40 + ; inline
-: TB_SETCMDID WM_USER 42 + ; inline
-: TB_CHANGEBITMAP WM_USER 43 + ; inline
-: TB_GETBITMAP WM_USER 44 + ; inline
-: TB_GETBUTTONTEXTA WM_USER 45 + ; inline
-: TB_GETBUTTONTEXTW WM_USER 75 + ; inline
-: TB_REPLACEBITMAP WM_USER 46 + ; inline
-: TB_SETINDENT WM_USER 47 + ; inline
-: TB_SETIMAGELIST WM_USER 48 + ; inline
-: TB_GETIMAGELIST WM_USER 49 + ; inline
-: TB_LOADIMAGES WM_USER 50 + ; inline
-: TB_GETRECT WM_USER 51 + ; inline
-: TB_SETHOTIMAGELIST WM_USER 52 + ; inline
-: TB_GETHOTIMAGELIST WM_USER 53 + ; inline
-: TB_SETDISABLEDIMAGELIST WM_USER 54 + ; inline
-: TB_GETDISABLEDIMAGELIST WM_USER 55 + ; inline
-: TB_SETSTYLE WM_USER 56 + ; inline
-: TB_GETSTYLE WM_USER 57 + ; inline
-: TB_GETBUTTONSIZE WM_USER 58 + ; inline
-: TB_SETBUTTONWIDTH WM_USER 59 + ; inline
-: TB_SETMAXTEXTROWS WM_USER 60 + ; inline
-: TB_GETTEXTROWS WM_USER 61 + ; inline
-: TB_GETOBJECT WM_USER 62 + ; inline
-: TB_GETHOTITEM WM_USER 71 + ; inline
-: TB_SETHOTITEM WM_USER 72 + ; inline
-: TB_SETANCHORHIGHLIGHT WM_USER 73 + ; inline
-: TB_GETANCHORHIGHLIGHT WM_USER 74 + ; inline
-: TB_MAPACCELERATORA WM_USER 78 + ; inline
-: TB_GETINSERTMARK WM_USER 79 + ; inline
-: TB_SETINSERTMARK WM_USER 80 + ; inline
-: TB_INSERTMARKHITTEST WM_USER 81 + ; inline
-: TB_MOVEBUTTON WM_USER 82 + ; inline
-: TB_GETMAXSIZE WM_USER 83 + ; inline
-: TB_SETEXTENDEDSTYLE WM_USER 84 + ; inline
-: TB_GETEXTENDEDSTYLE WM_USER 85 + ; inline
-: TB_GETPADDING WM_USER 86 + ; inline
-: TB_SETPADDING WM_USER 87 + ; inline
-: TB_SETINSERTMARKCOLOR WM_USER 88 + ; inline
-: TB_GETINSERTMARKCOLOR WM_USER 89 + ; inline
-: TB_SETCOLORSCHEME CCM_SETCOLORSCHEME ; inline
-: TB_GETCOLORSCHEME CCM_GETCOLORSCHEME ; inline
-: TB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline
-: TB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline
-: TB_MAPACCELERATORW WM_USER 90 + ; inline
-: TB_GETBITMAPFLAGS WM_USER 41 + ; inline
-: TB_GETBUTTONINFOW WM_USER 63 + ; inline
-: TB_SETBUTTONINFOW WM_USER 64 + ; inline
-: TB_GETBUTTONINFOA WM_USER 65 + ; inline
-: TB_SETBUTTONINFOA WM_USER 66 + ; inline
-: TB_INSERTBUTTONW WM_USER 67 + ; inline
-: TB_ADDBUTTONSW WM_USER 68 + ; inline
-: TB_HITTEST WM_USER 69 + ; inline
-: TB_SETDRAWTEXTFLAGS WM_USER 70 + ; inline
-: TB_GETSTRINGW WM_USER 91 + ; inline
-: TB_GETSTRINGA WM_USER 92 + ; inline
-: TB_GETMETRICS WM_USER 101 + ; inline
-: TB_SETMETRICS WM_USER 102 + ; inline
-: TB_SETWINDOWTHEME CCM_SETWINDOWTHEME ; inline
-: RB_INSERTBANDA WM_USER 1 + ; inline
-: RB_DELETEBAND WM_USER 2 + ; inline
-: RB_GETBARINFO WM_USER 3 + ; inline
-: RB_SETBARINFO WM_USER 4 + ; inline
-: RB_GETBANDINFO WM_USER 5 + ; inline
-: RB_SETBANDINFOA WM_USER 6 + ; inline
-: RB_SETPARENT WM_USER 7 + ; inline
-: RB_HITTEST WM_USER 8 + ; inline
-: RB_GETRECT WM_USER 9 + ; inline
-: RB_INSERTBANDW WM_USER 10 + ; inline
-: RB_SETBANDINFOW WM_USER 11 + ; inline
-: RB_GETBANDCOUNT WM_USER 12 + ; inline
-: RB_GETROWCOUNT WM_USER 13 + ; inline
-: RB_GETROWHEIGHT WM_USER 14 + ; inline
-: RB_IDTOINDEX WM_USER 16 + ; inline
-: RB_GETTOOLTIPS WM_USER 17 + ; inline
-: RB_SETTOOLTIPS WM_USER 18 + ; inline
-: RB_SETBKCOLOR WM_USER 19 + ; inline
-: RB_GETBKCOLOR WM_USER 20 + ; inline
-: RB_SETTEXTCOLOR WM_USER 21 + ; inline
-: RB_GETTEXTCOLOR WM_USER 22 + ; inline
-: RB_SIZETORECT WM_USER 23 + ; inline
-: RB_SETCOLORSCHEME CCM_SETCOLORSCHEME ; inline
-: RB_GETCOLORSCHEME CCM_GETCOLORSCHEME ; inline
-: RB_BEGINDRAG WM_USER 24 + ; inline
-: RB_ENDDRAG WM_USER 25 + ; inline
-: RB_DRAGMOVE WM_USER 26 + ; inline
-: RB_GETBARHEIGHT WM_USER 27 + ; inline
-: RB_GETBANDINFOW WM_USER 28 + ; inline
-: RB_GETBANDINFOA WM_USER 29 + ; inline
-: RB_MINIMIZEBAND WM_USER 30 + ; inline
-: RB_MAXIMIZEBAND WM_USER 31 + ; inline
-: RB_GETDROPTARGET CCM_GETDROPTARGET ; inline
-: RB_GETBANDBORDERS WM_USER 34 + ; inline
-: RB_SHOWBAND WM_USER 35 + ; inline
-: RB_SETPALETTE WM_USER 37 + ; inline
-: RB_GETPALETTE WM_USER 38 + ; inline
-: RB_MOVEBAND WM_USER 39 + ; inline
-: RB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline
-: RB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline
-: RB_GETBANDMARGINS WM_USER 40 + ; inline
-: RB_SETWINDOWTHEME CCM_SETWINDOWTHEME ; inline
-: RB_PUSHCHEVRON WM_USER 43 + ; inline
-: TTM_ACTIVATE WM_USER 1 + ; inline
-: TTM_SETDELAYTIME WM_USER 3 + ; inline
-: TTM_ADDTOOLA WM_USER 4 + ; inline
-: TTM_ADDTOOLW WM_USER 50 + ; inline
-: TTM_DELTOOLA WM_USER 5 + ; inline
-: TTM_DELTOOLW WM_USER 51 + ; inline
-: TTM_NEWTOOLRECTA WM_USER 6 + ; inline
-: TTM_NEWTOOLRECTW WM_USER 52 + ; inline
-: TTM_RELAYEVENT WM_USER 7 + ; inline
-: TTM_GETTOOLINFOA WM_USER 8 + ; inline
-: TTM_GETTOOLINFOW WM_USER 53 + ; inline
-: TTM_SETTOOLINFOA WM_USER 9 + ; inline
-: TTM_SETTOOLINFOW WM_USER 54 + ; inline
-: TTM_HITTESTA WM_USER 10 + ; inline
-: TTM_HITTESTW WM_USER 55 + ; inline
-: TTM_GETTEXTA WM_USER 11 + ; inline
-: TTM_GETTEXTW WM_USER 56 + ; inline
-: TTM_UPDATETIPTEXTA WM_USER 12 + ; inline
-: TTM_UPDATETIPTEXTW WM_USER 57 + ; inline
-: TTM_GETTOOLCOUNT WM_USER 13 + ; inline
-: TTM_ENUMTOOLSA WM_USER 14 + ; inline
-: TTM_ENUMTOOLSW WM_USER 58 + ; inline
-: TTM_GETCURRENTTOOLA WM_USER 15 + ; inline
-: TTM_GETCURRENTTOOLW WM_USER 59 + ; inline
-: TTM_WINDOWFROMPOINT WM_USER 16 + ; inline
-: TTM_TRACKACTIVATE WM_USER 17 + ; inline
-: TTM_TRACKPOSITION WM_USER 18 + ; inline
-: TTM_SETTIPBKCOLOR WM_USER 19 + ; inline
-: TTM_SETTIPTEXTCOLOR WM_USER 20 + ; inline
-: TTM_GETDELAYTIME WM_USER 21 + ; inline
-: TTM_GETTIPBKCOLOR WM_USER 22 + ; inline
-: TTM_GETTIPTEXTCOLOR WM_USER 23 + ; inline
-: TTM_SETMAXTIPWIDTH WM_USER 24 + ; inline
-: TTM_GETMAXTIPWIDTH WM_USER 25 + ; inline
-: TTM_SETMARGIN WM_USER 26 + ; inline
-: TTM_GETMARGIN WM_USER 27 + ; inline
-: TTM_POP WM_USER 28 + ; inline
-: TTM_UPDATE WM_USER 29 + ; inline
-: TTM_GETBUBBLESIZE WM_USER 30 + ; inline
-: TTM_ADJUSTRECT WM_USER 31 + ; inline
-: TTM_SETTITLEA WM_USER 32 + ; inline
-: TTM_SETTITLEW WM_USER 33 + ; inline
-: TTM_POPUP WM_USER 34 + ; inline
-: TTM_GETTITLE WM_USER 35 + ; inline
-: TTM_SETWINDOWTHEME CCM_SETWINDOWTHEME ; inline
-: SB_SETTEXTA WM_USER 1+ ; inline
-: SB_SETTEXTW WM_USER 11 + ; inline
-: SB_GETTEXTA WM_USER 2 + ; inline
-: SB_GETTEXTW WM_USER 13 + ; inline
-: SB_GETTEXTLENGTHA WM_USER 3 + ; inline
-: SB_GETTEXTLENGTHW WM_USER 12 + ; inline
-: SB_SETPARTS WM_USER 4 + ; inline
-: SB_GETPARTS WM_USER 6 + ; inline
-: SB_GETBORDERS WM_USER 7 + ; inline
-: SB_SETMINHEIGHT WM_USER 8 + ; inline
-: SB_SIMPLE WM_USER 9 + ; inline
-: SB_GETRECT WM_USER 10 + ; inline
-: SB_ISSIMPLE WM_USER 14 + ; inline
-: SB_SETICON WM_USER 15 + ; inline
-: SB_SETTIPTEXTA WM_USER 16 + ; inline
-: SB_SETTIPTEXTW WM_USER 17 + ; inline
-: SB_GETTIPTEXTA WM_USER 18 + ; inline
-: SB_GETTIPTEXTW WM_USER 19 + ; inline
-: SB_GETICON WM_USER 20 + ; inline
-: SB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline
-: SB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline
-: SB_SETBKCOLOR CCM_SETBKCOLOR ; inline
-: SB_SIMPLEID HEX: 00ff ; inline
-: TBM_GETPOS WM_USER ; inline
-: TBM_GETRANGEMIN WM_USER 1 + ; inline
-: TBM_GETRANGEMAX WM_USER 2 + ; inline
-: TBM_GETTIC WM_USER 3 + ; inline
-: TBM_SETTIC WM_USER 4 + ; inline
-: TBM_SETPOS WM_USER 5 + ; inline
-: TBM_SETRANGE WM_USER 6 + ; inline
-: TBM_SETRANGEMIN WM_USER 7 + ; inline
-: TBM_SETRANGEMAX WM_USER 8 + ; inline
-: TBM_CLEARTICS WM_USER 9 + ; inline
-: TBM_SETSEL WM_USER 10 + ; inline
-: TBM_SETSELSTART WM_USER 11 + ; inline
-: TBM_SETSELEND WM_USER 12 + ; inline
-: TBM_GETPTICS WM_USER 14 + ; inline
-: TBM_GETTICPOS WM_USER 15 + ; inline
-: TBM_GETNUMTICS WM_USER 16 + ; inline
-: TBM_GETSELSTART WM_USER 17 + ; inline
-: TBM_GETSELEND WM_USER 18 + ; inline
-: TBM_CLEARSEL WM_USER 19 + ; inline
-: TBM_SETTICFREQ WM_USER 20 + ; inline
-: TBM_SETPAGESIZE WM_USER 21 + ; inline
-: TBM_GETPAGESIZE WM_USER 22 + ; inline
-: TBM_SETLINESIZE WM_USER 23 + ; inline
-: TBM_GETLINESIZE WM_USER 24 + ; inline
-: TBM_GETTHUMBRECT WM_USER 25 + ; inline
-: TBM_GETCHANNELRECT WM_USER 26 + ; inline
-: TBM_SETTHUMBLENGTH WM_USER 27 + ; inline
-: TBM_GETTHUMBLENGTH WM_USER 28 + ; inline
-: TBM_SETTOOLTIPS WM_USER 29 + ; inline
-: TBM_GETTOOLTIPS WM_USER 30 + ; inline
-: TBM_SETTIPSIDE WM_USER 31 + ; inline
-: TBM_SETBUDDY WM_USER 32 + ; inline
-: TBM_GETBUDDY WM_USER 33 + ; inline
-: TBM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline
-: TBM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline
-: DL_BEGINDRAG WM_USER 133 + ; inline
-: DL_DRAGGING WM_USER 134 + ; inline
-: DL_DROPPED WM_USER 135 + ; inline
-: DL_CANCELDRAG WM_USER 136 + ; inline
-: UDM_SETRANGE WM_USER 101 + ; inline
-: UDM_GETRANGE WM_USER 102 + ; inline
-: UDM_SETPOS WM_USER 103 + ; inline
-: UDM_GETPOS WM_USER 104 + ; inline
-: UDM_SETBUDDY WM_USER 105 + ; inline
-: UDM_GETBUDDY WM_USER 106 + ; inline
-: UDM_SETACCEL WM_USER 107 + ; inline
-: UDM_GETACCEL WM_USER 108 + ; inline
-: UDM_SETBASE WM_USER 109 + ; inline
-: UDM_GETBASE WM_USER 110 + ; inline
-: UDM_SETRANGE32 WM_USER 111 + ; inline
-: UDM_GETRANGE32 WM_USER 112 + ; inline
-: UDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline
-: UDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline
-: UDM_SETPOS32 WM_USER 113 + ; inline
-: UDM_GETPOS32 WM_USER 114 + ; inline
-: PBM_SETRANGE WM_USER 1 + ; inline
-: PBM_SETPOS WM_USER 2 + ; inline
-: PBM_DELTAPOS WM_USER 3 + ; inline
-: PBM_SETSTEP WM_USER 4 + ; inline
-: PBM_STEPIT WM_USER 5 + ; inline
-: PBM_SETRANGE32 WM_USER 6 + ; inline
-: PBM_GETRANGE WM_USER 7 + ; inline
-: PBM_GETPOS WM_USER 8 + ; inline
-: PBM_SETBARCOLOR WM_USER 9 + ; inline
-: PBM_SETBKCOLOR CCM_SETBKCOLOR ; inline
-: HKM_SETHOTKEY WM_USER 1 + ; inline
-: HKM_GETHOTKEY WM_USER 2 + ; inline
-: HKM_SETRULES WM_USER 3 + ; inline
-: LVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline
-: LVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline
-: LVM_GETBKCOLOR LVM_FIRST 0 + ; inline
-: LVM_SETBKCOLOR LVM_FIRST 1 + ; inline
-: LVM_GETIMAGELIST LVM_FIRST 2 + ; inline
-: LVM_SETIMAGELIST LVM_FIRST 3 + ; inline
-: LVM_GETITEMCOUNT LVM_FIRST 4 + ; inline
-: LVM_GETITEMA LVM_FIRST 5 + ; inline
-: LVM_GETITEMW LVM_FIRST 75 + ; inline
-: LVM_SETITEMA LVM_FIRST 6 + ; inline
-: LVM_SETITEMW LVM_FIRST 76 + ; inline
-: LVM_INSERTITEMA LVM_FIRST 7 + ; inline
-: LVM_INSERTITEMW LVM_FIRST 77 + ; inline
-: LVM_DELETEITEM LVM_FIRST 8 + ; inline
-: LVM_DELETEALLITEMS LVM_FIRST 9 + ; inline
-: LVM_GETCALLBACKMASK LVM_FIRST 10 + ; inline
-: LVM_SETCALLBACKMASK LVM_FIRST 11 + ; inline
-: LVM_FINDITEMA LVM_FIRST 13 + ; inline
-: LVM_FINDITEMW LVM_FIRST 83 + ; inline
-: LVM_GETITEMRECT LVM_FIRST 14 + ; inline
-: LVM_SETITEMPOSITION LVM_FIRST 15 + ; inline
-: LVM_GETITEMPOSITION LVM_FIRST 16 + ; inline
-: LVM_GETSTRINGWIDTHA LVM_FIRST 17 + ; inline
-: LVM_GETSTRINGWIDTHW LVM_FIRST 87 + ; inline
-: LVM_HITTEST LVM_FIRST 18 + ; inline
-: LVM_ENSUREVISIBLE LVM_FIRST 19 + ; inline
-: LVM_SCROLL LVM_FIRST 20 + ; inline
-: LVM_REDRAWITEMS LVM_FIRST 21 + ; inline
-: LVM_ARRANGE LVM_FIRST 22 + ; inline
-: LVM_EDITLABELA LVM_FIRST 23 + ; inline
-: LVM_EDITLABELW LVM_FIRST 118 + ; inline
-: LVM_GETEDITCONTROL LVM_FIRST 24 + ; inline
-: LVM_GETCOLUMNA LVM_FIRST 25 + ; inline
-: LVM_GETCOLUMNW LVM_FIRST 95 + ; inline
-: LVM_SETCOLUMNA LVM_FIRST 26 + ; inline
-: LVM_SETCOLUMNW LVM_FIRST 96 + ; inline
-: LVM_INSERTCOLUMNA LVM_FIRST 27 + ; inline
-: LVM_INSERTCOLUMNW LVM_FIRST 97 + ; inline
-: LVM_DELETECOLUMN LVM_FIRST 28 + ; inline
-: LVM_GETCOLUMNWIDTH LVM_FIRST 29 + ; inline
-: LVM_SETCOLUMNWIDTH LVM_FIRST 30 + ; inline
-: LVM_CREATEDRAGIMAGE LVM_FIRST 33 + ; inline
-: LVM_GETVIEWRECT LVM_FIRST 34 + ; inline
-: LVM_GETTEXTCOLOR LVM_FIRST 35 + ; inline
-: LVM_SETTEXTCOLOR LVM_FIRST 36 + ; inline
-: LVM_GETTEXTBKCOLOR LVM_FIRST 37 + ; inline
-: LVM_SETTEXTBKCOLOR LVM_FIRST 38 + ; inline
-: LVM_GETTOPINDEX LVM_FIRST 39 + ; inline
-: LVM_GETCOUNTPERPAGE LVM_FIRST 40 + ; inline
-: LVM_GETORIGIN LVM_FIRST 41 + ; inline
-: LVM_UPDATE LVM_FIRST 42 + ; inline
-: LVM_SETITEMSTATE LVM_FIRST 43 + ; inline
-: LVM_GETITEMSTATE LVM_FIRST 44 + ; inline
-: LVM_GETITEMTEXTA LVM_FIRST 45 + ; inline
-: LVM_GETITEMTEXTW LVM_FIRST 115 + ; inline
-: LVM_SETITEMTEXTA LVM_FIRST 46 + ; inline
-: LVM_SETITEMTEXTW LVM_FIRST 116 + ; inline
-: LVM_SETITEMCOUNT LVM_FIRST 47 + ; inline
-: LVM_SORTITEMS LVM_FIRST 48 + ; inline
-: LVM_SETITEMPOSITION32 LVM_FIRST 49 + ; inline
-: LVM_GETSELECTEDCOUNT LVM_FIRST 50 + ; inline
-: LVM_GETITEMSPACING LVM_FIRST 51 + ; inline
-: LVM_GETISEARCHSTRINGA LVM_FIRST 52 + ; inline
-: LVM_GETISEARCHSTRINGW LVM_FIRST 117 + ; inline
-: LVM_SETICONSPACING LVM_FIRST 53 + ; inline
-: LVM_SETEXTENDEDLISTVIEWSTYLE LVM_FIRST 54 + ; inline
-: LVM_GETEXTENDEDLISTVIEWSTYLE LVM_FIRST 55 + ; inline
-: LVM_GETSUBITEMRECT LVM_FIRST 56 + ; inline
-: LVM_SUBITEMHITTEST LVM_FIRST 57 + ; inline
-: LVM_SETCOLUMNORDERARRAY LVM_FIRST 58 + ; inline
-: LVM_GETCOLUMNORDERARRAY LVM_FIRST 59 + ; inline
-: LVM_SETHOTITEM LVM_FIRST 60 + ; inline
-: LVM_GETHOTITEM LVM_FIRST 61 + ; inline
-: LVM_SETHOTCURSOR LVM_FIRST 62 + ; inline
-: LVM_GETHOTCURSOR LVM_FIRST 63 + ; inline
-: LVM_APPROXIMATEVIEWRECT LVM_FIRST 64 + ; inline
-: LVM_SETWORKAREAS LVM_FIRST 65 + ; inline
-: LVM_GETWORKAREAS LVM_FIRST 70 + ; inline
-: LVM_GETNUMBEROFWORKAREAS LVM_FIRST 73 + ; inline
-: LVM_GETSELECTIONMARK LVM_FIRST 66 + ; inline
-: LVM_SETSELECTIONMARK LVM_FIRST 67 + ; inline
-: LVM_SETHOVERTIME LVM_FIRST 71 + ; inline
-: LVM_GETHOVERTIME LVM_FIRST 72 + ; inline
-: LVM_SETTOOLTIPS LVM_FIRST 74 + ; inline
-: LVM_GETTOOLTIPS LVM_FIRST 78 + ; inline
-: LVM_SORTITEMSEX LVM_FIRST 81 + ; inline
-: LVM_SETBKIMAGEA LVM_FIRST 68 + ; inline
-: LVM_SETBKIMAGEW LVM_FIRST 138 + ; inline
-: LVM_GETBKIMAGEA LVM_FIRST 69 + ; inline
-: LVM_GETBKIMAGEW LVM_FIRST 139 + ; inline
-: LVM_SETSELECTEDCOLUMN LVM_FIRST 140 + ; inline
-: LVM_SETTILEWIDTH LVM_FIRST 141 + ; inline
-: LVM_SETVIEW LVM_FIRST 142 + ; inline
-: LVM_GETVIEW LVM_FIRST 143 + ; inline
-: LVM_INSERTGROUP LVM_FIRST 145 + ; inline
-: LVM_SETGROUPINFO LVM_FIRST 147 + ; inline
-: LVM_GETGROUPINFO LVM_FIRST 149 + ; inline
-: LVM_REMOVEGROUP LVM_FIRST 150 + ; inline
-: LVM_MOVEGROUP LVM_FIRST 151 + ; inline
-: LVM_MOVEITEMTOGROUP LVM_FIRST 154 + ; inline
-: LVM_SETGROUPMETRICS LVM_FIRST 155 + ; inline
-: LVM_GETGROUPMETRICS LVM_FIRST 156 + ; inline
-: LVM_ENABLEGROUPVIEW LVM_FIRST 157 + ; inline
-: LVM_SORTGROUPS LVM_FIRST 158 + ; inline
-: LVM_INSERTGROUPSORTED LVM_FIRST 159 + ; inline
-: LVM_REMOVEALLGROUPS LVM_FIRST 160 + ; inline
-: LVM_HASGROUP LVM_FIRST 161 + ; inline
-: LVM_SETTILEVIEWINFO LVM_FIRST 162 + ; inline
-: LVM_GETTILEVIEWINFO LVM_FIRST 163 + ; inline
-: LVM_SETTILEINFO LVM_FIRST 164 + ; inline
-: LVM_GETTILEINFO LVM_FIRST 165 + ; inline
-: LVM_SETINSERTMARK LVM_FIRST 166 + ; inline
-: LVM_GETINSERTMARK LVM_FIRST 167 + ; inline
-: LVM_INSERTMARKHITTEST LVM_FIRST 168 + ; inline
-: LVM_GETINSERTMARKRECT LVM_FIRST 169 + ; inline
-: LVM_SETINSERTMARKCOLOR LVM_FIRST 170 + ; inline
-: LVM_GETINSERTMARKCOLOR LVM_FIRST 171 + ; inline
-: LVM_SETINFOTIP LVM_FIRST 173 + ; inline
-: LVM_GETSELECTEDCOLUMN LVM_FIRST 174 + ; inline
-: LVM_ISGROUPVIEWENABLED LVM_FIRST 175 + ; inline
-: LVM_GETOUTLINECOLOR LVM_FIRST 176 + ; inline
-: LVM_SETOUTLINECOLOR LVM_FIRST 177 + ; inline
-: LVM_CANCELEDITLABEL LVM_FIRST 179 + ; inline
-: LVM_MAPINDEXTOID LVM_FIRST 180 + ; inline
-: LVM_MAPIDTOINDEX LVM_FIRST 181 + ; inline
-: TVM_INSERTITEMA TV_FIRST 0 + ; inline
-: TVM_INSERTITEMW TV_FIRST 50 + ; inline
-: TVM_DELETEITEM TV_FIRST 1 + ; inline
-: TVM_EXPAND TV_FIRST 2 + ; inline
-: TVM_GETITEMRECT TV_FIRST 4 + ; inline
-: TVM_GETCOUNT TV_FIRST 5 + ; inline
-: TVM_GETINDENT TV_FIRST 6 + ; inline
-: TVM_SETINDENT TV_FIRST 7 + ; inline
-: TVM_GETIMAGELIST TV_FIRST 8 + ; inline
-: TVM_SETIMAGELIST TV_FIRST 9 + ; inline
-: TVM_GETNEXTITEM TV_FIRST 10 + ; inline
-: TVM_SELECTITEM TV_FIRST 11 + ; inline
-: TVM_GETITEMA TV_FIRST 12 + ; inline
-: TVM_GETITEMW TV_FIRST 62 + ; inline
-: TVM_SETITEMA TV_FIRST 13 + ; inline
-: TVM_SETITEMW TV_FIRST 63 + ; inline
-: TVM_EDITLABELA TV_FIRST 14 + ; inline
-: TVM_EDITLABELW TV_FIRST 65 + ; inline
-: TVM_GETEDITCONTROL TV_FIRST 15 + ; inline
-: TVM_GETVISIBLECOUNT TV_FIRST 16 + ; inline
-: TVM_HITTEST TV_FIRST 17 + ; inline
-: TVM_CREATEDRAGIMAGE TV_FIRST 18 + ; inline
-: TVM_SORTCHILDREN TV_FIRST 19 + ; inline
-: TVM_ENSUREVISIBLE TV_FIRST 20 + ; inline
-: TVM_SORTCHILDRENCB TV_FIRST 21 + ; inline
-: TVM_ENDEDITLABELNOW TV_FIRST 22 + ; inline
-: TVM_GETISEARCHSTRINGA TV_FIRST 23 + ; inline
-: TVM_GETISEARCHSTRINGW TV_FIRST 64 + ; inline
-: TVM_SETTOOLTIPS TV_FIRST 24 + ; inline
-: TVM_GETTOOLTIPS TV_FIRST 25 + ; inline
-: TVM_SETINSERTMARK TV_FIRST 26 + ; inline
-: TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline
-: TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline
-: TVM_SETITEMHEIGHT TV_FIRST 27 + ; inline
-: TVM_GETITEMHEIGHT TV_FIRST 28 + ; inline
-: TVM_SETBKCOLOR TV_FIRST 29 + ; inline
-: TVM_SETTEXTCOLOR TV_FIRST 30 + ; inline
-: TVM_GETBKCOLOR TV_FIRST 31 + ; inline
-: TVM_GETTEXTCOLOR TV_FIRST 32 + ; inline
-: TVM_SETSCROLLTIME TV_FIRST 33 + ; inline
-: TVM_GETSCROLLTIME TV_FIRST 34 + ; inline
-: TVM_SETINSERTMARKCOLOR TV_FIRST 37 + ; inline
-: TVM_GETINSERTMARKCOLOR TV_FIRST 38 + ; inline
-: TVM_GETITEMSTATE TV_FIRST 39 + ; inline
-: TVM_SETLINECOLOR TV_FIRST 40 + ; inline
-: TVM_GETLINECOLOR TV_FIRST 41 + ; inline
-: TVM_MAPACCIDTOHTREEITEM TV_FIRST 42 + ; inline
-: TVM_MAPHTREEITEMTOACCID TV_FIRST 43 + ; inline
-: CBEM_INSERTITEMA WM_USER 1 + ; inline
-: CBEM_SETIMAGELIST WM_USER 2 + ; inline
-: CBEM_GETIMAGELIST WM_USER 3 + ; inline
-: CBEM_GETITEMA WM_USER 4 + ; inline
-: CBEM_SETITEMA WM_USER 5 + ; inline
-: CBEM_DELETEITEM CB_DELETESTRING ; inline
-: CBEM_GETCOMBOCONTROL WM_USER 6 + ; inline
-: CBEM_GETEDITCONTROL WM_USER 7 + ; inline
-: CBEM_SETEXTENDEDSTYLE WM_USER 14 + ; inline
-: CBEM_GETEXTENDEDSTYLE WM_USER 9 + ; inline
-: CBEM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline
-: CBEM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline
-: CBEM_SETEXSTYLE WM_USER 8 + ; inline
-: CBEM_GETEXSTYLE WM_USER 9 + ; inline
-: CBEM_HASEDITCHANGED WM_USER 10 + ; inline
-: CBEM_INSERTITEMW WM_USER 11 + ; inline
-: CBEM_SETITEMW WM_USER 12 + ; inline
-: CBEM_GETITEMW WM_USER 13 + ; inline
-: TCM_GETIMAGELIST TCM_FIRST 2 + ; inline
-: TCM_SETIMAGELIST TCM_FIRST 3 + ; inline
-: TCM_GETITEMCOUNT TCM_FIRST 4 + ; inline
-: TCM_GETITEMA TCM_FIRST 5 + ; inline
-: TCM_GETITEMW TCM_FIRST 60 + ; inline
-: TCM_SETITEMA TCM_FIRST 6 + ; inline
-: TCM_SETITEMW TCM_FIRST 61 + ; inline
-: TCM_INSERTITEMA TCM_FIRST 7 + ; inline
-: TCM_INSERTITEMW TCM_FIRST 62 + ; inline
-: TCM_DELETEITEM TCM_FIRST 8 + ; inline
-: TCM_DELETEALLITEMS TCM_FIRST 9 + ; inline
-: TCM_GETITEMRECT TCM_FIRST 10 + ; inline
-: TCM_GETCURSEL TCM_FIRST 11 + ; inline
-: TCM_SETCURSEL TCM_FIRST 12 + ; inline
-: TCM_HITTEST TCM_FIRST 13 + ; inline
-: TCM_SETITEMEXTRA TCM_FIRST 14 + ; inline
-: TCM_ADJUSTRECT TCM_FIRST 40 + ; inline
-: TCM_SETITEMSIZE TCM_FIRST 41 + ; inline
-: TCM_REMOVEIMAGE TCM_FIRST 42 + ; inline
-: TCM_SETPADDING TCM_FIRST 43 + ; inline
-: TCM_GETROWCOUNT TCM_FIRST 44 + ; inline
-: TCM_GETTOOLTIPS TCM_FIRST 45 + ; inline
-: TCM_SETTOOLTIPS TCM_FIRST 46 + ; inline
-: TCM_GETCURFOCUS TCM_FIRST 47 + ; inline
-: TCM_SETCURFOCUS TCM_FIRST 48 + ; inline
-: TCM_SETMINTABWIDTH TCM_FIRST 49 + ; inline
-: TCM_DESELECTALL TCM_FIRST 50 + ; inline
-: TCM_HIGHLIGHTITEM TCM_FIRST 51 + ; inline
-: TCM_SETEXTENDEDSTYLE TCM_FIRST 52 + ; inline
-: TCM_GETEXTENDEDSTYLE TCM_FIRST 53 + ; inline
-: TCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline
-: TCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline
-: ACM_OPENA WM_USER 100 + ; inline
-: ACM_OPENW WM_USER 103 + ; inline
-: ACM_PLAY WM_USER 101 + ; inline
-: ACM_STOP WM_USER 102 + ; inline
-: MCM_FIRST HEX: 1000 ; inline
-: MCM_GETCURSEL MCM_FIRST 1 + ; inline
-: MCM_SETCURSEL MCM_FIRST 2 + ; inline
-: MCM_GETMAXSELCOUNT MCM_FIRST 3 + ; inline
-: MCM_SETMAXSELCOUNT MCM_FIRST 4 + ; inline
-: MCM_GETSELRANGE MCM_FIRST 5 + ; inline
-: MCM_SETSELRANGE MCM_FIRST 6 + ; inline
-: MCM_GETMONTHRANGE MCM_FIRST 7 + ; inline
-: MCM_SETDAYSTATE MCM_FIRST 8 + ; inline
-: MCM_GETMINREQRECT MCM_FIRST 9 + ; inline
-: MCM_SETCOLOR MCM_FIRST 10 + ; inline
-: MCM_GETCOLOR MCM_FIRST 11 + ; inline
-: MCM_SETTODAY MCM_FIRST 12 + ; inline
-: MCM_GETTODAY MCM_FIRST 13 + ; inline
-: MCM_HITTEST MCM_FIRST 14 + ; inline
-: MCM_SETFIRSTDAYOFWEEK MCM_FIRST 15 + ; inline
-: MCM_GETFIRSTDAYOFWEEK MCM_FIRST 16 + ; inline
-: MCM_GETRANGE MCM_FIRST 17 + ; inline
-: MCM_SETRANGE MCM_FIRST 18 + ; inline
-: MCM_GETMONTHDELTA MCM_FIRST 19 + ; inline
-: MCM_SETMONTHDELTA MCM_FIRST 20 + ; inline
-: MCM_GETMAXTODAYWIDTH MCM_FIRST 21 + ; inline
-: MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT ; inline
-: MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT ; inline
-: DTM_FIRST HEX: 1000 ; inline
-: DTM_GETSYSTEMTIME DTM_FIRST 1 + ; inline
-: DTM_SETSYSTEMTIME DTM_FIRST 2 + ; inline
-: DTM_GETRANGE DTM_FIRST 3 + ; inline
-: DTM_SETRANGE DTM_FIRST 4 + ; inline
-: DTM_SETFORMATA DTM_FIRST 5 + ; inline
-: DTM_SETFORMATW DTM_FIRST 50 + ; inline
-: DTM_SETMCCOLOR DTM_FIRST 6 + ; inline
-: DTM_GETMCCOLOR DTM_FIRST 7 + ; inline
-: DTM_GETMONTHCAL DTM_FIRST 8 + ; inline
-: DTM_SETMCFONT DTM_FIRST 9 + ; inline
-: DTM_GETMCFONT DTM_FIRST 10 + ; inline
-: PGM_SETCHILD PGM_FIRST 1 + ; inline
-: PGM_RECALCSIZE PGM_FIRST 2 + ; inline
-: PGM_FORWARDMOUSE PGM_FIRST 3 + ; inline
-: PGM_SETBKCOLOR PGM_FIRST 4 + ; inline
-: PGM_GETBKCOLOR PGM_FIRST 5 + ; inline
-: PGM_SETBORDER PGM_FIRST 6 + ; inline
-: PGM_GETBORDER PGM_FIRST 7 + ; inline
-: PGM_SETPOS PGM_FIRST 8 + ; inline
-: PGM_GETPOS PGM_FIRST 9 + ; inline
-: PGM_SETBUTTONSIZE PGM_FIRST 10 + ; inline
-: PGM_GETBUTTONSIZE PGM_FIRST 11 + ; inline
-: PGM_GETBUTTONSTATE PGM_FIRST 12 + ; inline
-: PGM_GETDROPTARGET CCM_GETDROPTARGET ; inline
-: BCM_GETIDEALSIZE BCM_FIRST 1 + ; inline
-: BCM_SETIMAGELIST BCM_FIRST 2 + ; inline
-: BCM_GETIMAGELIST BCM_FIRST 3 + ; inline
-: BCM_SETTEXTMARGIN BCM_FIRST 4 + ; inline
-: BCM_GETTEXTMARGIN BCM_FIRST 5 + ; inline
-: EM_SETCUEBANNER ECM_FIRST 1 + ; inline
-: EM_GETCUEBANNER ECM_FIRST 2 + ; inline
-: EM_SHOWBALLOONTIP ECM_FIRST 3 + ; inline
-: EM_HIDEBALLOONTIP ECM_FIRST 4 + ; inline
-: CB_SETMINVISIBLE CBM_FIRST 1 + ; inline
-: CB_GETMINVISIBLE CBM_FIRST 2 + ; inline
-: LM_HITTEST WM_USER HEX: 0300 + ; inline
-: LM_GETIDEALHEIGHT WM_USER HEX: 0301 + ; inline
-: LM_SETITEM WM_USER HEX: 0302 + ; inline
-: LM_GETITEM WM_USER HEX: 0303 + ; inline
+CONSTANT: WM_NULL HEX: 0000
+CONSTANT: WM_CREATE HEX: 0001
+CONSTANT: WM_DESTROY HEX: 0002
+CONSTANT: WM_MOVE HEX: 0003
+CONSTANT: WM_SIZE HEX: 0005
+CONSTANT: WM_ACTIVATE HEX: 0006
+CONSTANT: WM_SETFOCUS HEX: 0007
+CONSTANT: WM_KILLFOCUS HEX: 0008
+CONSTANT: WM_ENABLE HEX: 000A
+CONSTANT: WM_SETREDRAW HEX: 000B
+CONSTANT: WM_SETTEXT HEX: 000C
+CONSTANT: WM_GETTEXT HEX: 000D
+CONSTANT: WM_GETTEXTLENGTH HEX: 000E
+CONSTANT: WM_PAINT HEX: 000F
+CONSTANT: WM_CLOSE HEX: 0010
+CONSTANT: WM_QUERYENDSESSION HEX: 0011
+CONSTANT: WM_QUERYOPEN HEX: 0013
+CONSTANT: WM_ENDSESSION HEX: 0016
+CONSTANT: WM_QUIT HEX: 0012
+CONSTANT: WM_ERASEBKGND HEX: 0014
+CONSTANT: WM_SYSCOLORCHANGE HEX: 0015
+CONSTANT: WM_SHOWWINDOW HEX: 0018
+CONSTANT: WM_WININICHANGE HEX: 001A
+CONSTANT: WM_SETTINGCHANGE HEX: 001A
+CONSTANT: WM_DEVMODECHANGE HEX: 001B
+CONSTANT: WM_ACTIVATEAPP HEX: 001C
+CONSTANT: WM_FONTCHANGE HEX: 001D
+CONSTANT: WM_TIMECHANGE HEX: 001E
+CONSTANT: WM_CANCELMODE HEX: 001F
+CONSTANT: WM_SETCURSOR HEX: 0020
+CONSTANT: WM_MOUSEACTIVATE HEX: 0021
+CONSTANT: WM_CHILDACTIVATE HEX: 0022
+CONSTANT: WM_QUEUESYNC HEX: 0023
+CONSTANT: WM_GETMINMAXINFO HEX: 0024
+CONSTANT: WM_PAINTICON HEX: 0026
+CONSTANT: WM_ICONERASEBKGND HEX: 0027
+CONSTANT: WM_NEXTDLGCTL HEX: 0028
+CONSTANT: WM_SPOOLERSTATUS HEX: 002A
+CONSTANT: WM_DRAWITEM HEX: 002B
+CONSTANT: WM_MEASUREITEM HEX: 002C
+CONSTANT: WM_DELETEITEM HEX: 002D
+CONSTANT: WM_VKEYTOITEM HEX: 002E
+CONSTANT: WM_CHARTOITEM HEX: 002F
+CONSTANT: WM_SETFONT HEX: 0030
+CONSTANT: WM_GETFONT HEX: 0031
+CONSTANT: WM_SETHOTKEY HEX: 0032
+CONSTANT: WM_GETHOTKEY HEX: 0033
+CONSTANT: WM_QUERYDRAGICON HEX: 0037
+CONSTANT: WM_COMPAREITEM HEX: 0039
+CONSTANT: WM_GETOBJECT HEX: 003D
+CONSTANT: WM_COMPACTING HEX: 0041
+CONSTANT: WM_COMMNOTIFY HEX: 0044
+CONSTANT: WM_WINDOWPOSCHANGING HEX: 0046
+CONSTANT: WM_WINDOWPOSCHANGED HEX: 0047
+CONSTANT: WM_POWER HEX: 0048
+CONSTANT: WM_COPYDATA HEX: 004A
+CONSTANT: WM_CANCELJOURNAL HEX: 004B
+CONSTANT: WM_NOTIFY HEX: 004E
+CONSTANT: WM_INPUTLANGCHANGEREQUEST HEX: 0050
+CONSTANT: WM_INPUTLANGCHANGE HEX: 0051
+CONSTANT: WM_TCARD HEX: 0052
+CONSTANT: WM_HELP HEX: 0053
+CONSTANT: WM_USERCHANGED HEX: 0054
+CONSTANT: WM_NOTIFYFORMAT HEX: 0055
+CONSTANT: WM_CONTEXTMENU HEX: 007B
+CONSTANT: WM_STYLECHANGING HEX: 007C
+CONSTANT: WM_STYLECHANGED HEX: 007D
+CONSTANT: WM_DISPLAYCHANGE HEX: 007E
+CONSTANT: WM_GETICON HEX: 007F
+CONSTANT: WM_SETICON HEX: 0080
+CONSTANT: WM_NCCREATE HEX: 0081
+CONSTANT: WM_NCDESTROY HEX: 0082
+CONSTANT: WM_NCCALCSIZE HEX: 0083
+CONSTANT: WM_NCHITTEST HEX: 0084
+CONSTANT: WM_NCPAINT HEX: 0085
+CONSTANT: WM_NCACTIVATE HEX: 0086
+CONSTANT: WM_GETDLGCODE HEX: 0087
+CONSTANT: WM_SYNCPAINT HEX: 0088
+CONSTANT: WM_NCMOUSEMOVE HEX: 00A0
+CONSTANT: WM_NCLBUTTONDOWN HEX: 00A1
+CONSTANT: WM_NCLBUTTONUP HEX: 00A2
+CONSTANT: WM_NCLBUTTONDBLCLK HEX: 00A3
+CONSTANT: WM_NCRBUTTONDOWN HEX: 00A4
+CONSTANT: WM_NCRBUTTONUP HEX: 00A5
+CONSTANT: WM_NCRBUTTONDBLCLK HEX: 00A6
+CONSTANT: WM_NCMBUTTONDOWN HEX: 00A7
+CONSTANT: WM_NCMBUTTONUP HEX: 00A8
+CONSTANT: WM_NCMBUTTONDBLCLK HEX: 00A9
+CONSTANT: WM_NCXBUTTONDOWN HEX: 00AB
+CONSTANT: WM_NCXBUTTONUP HEX: 00AC
+CONSTANT: WM_NCXBUTTONDBLCLK HEX: 00AD
+CONSTANT: WM_NCUAHDRAWCAPTION HEX: 00AE ! undocumented
+CONSTANT: WM_NCUAHDRAWFRAME HEX: 00AF ! undocumented
+CONSTANT: WM_INPUT HEX: 00FF
+CONSTANT: WM_KEYFIRST HEX: 0100
+CONSTANT: WM_KEYDOWN HEX: 0100
+CONSTANT: WM_KEYUP HEX: 0101
+CONSTANT: WM_CHAR HEX: 0102
+CONSTANT: WM_DEADCHAR HEX: 0103
+CONSTANT: WM_SYSKEYDOWN HEX: 0104
+CONSTANT: WM_SYSKEYUP HEX: 0105
+CONSTANT: WM_SYSCHAR HEX: 0106
+CONSTANT: WM_SYSDEADCHAR HEX: 0107
+CONSTANT: WM_UNICHAR HEX: 0109
+CONSTANT: WM_KEYLAST_NT501 HEX: 0109
+CONSTANT: UNICODE_NOCHAR HEX: FFFF
+CONSTANT: WM_KEYLAST_PRE501 HEX: 0108
+CONSTANT: WM_IME_STARTCOMPOSITION HEX: 010D
+CONSTANT: WM_IME_ENDCOMPOSITION HEX: 010E
+CONSTANT: WM_IME_COMPOSITION HEX: 010F
+CONSTANT: WM_IME_KEYLAST HEX: 010F
+CONSTANT: WM_INITDIALOG HEX: 0110
+CONSTANT: WM_COMMAND HEX: 0111
+CONSTANT: WM_SYSCOMMAND HEX: 0112
+CONSTANT: WM_TIMER HEX: 0113
+CONSTANT: WM_HSCROLL HEX: 0114
+CONSTANT: WM_VSCROLL HEX: 0115
+CONSTANT: WM_INITMENU HEX: 0116
+CONSTANT: WM_INITMENUPOPUP HEX: 0117
+CONSTANT: WM_MENUSELECT HEX: 011F
+CONSTANT: WM_MENUCHAR HEX: 0120
+CONSTANT: WM_ENTERIDLE HEX: 0121
+CONSTANT: WM_MENURBUTTONUP HEX: 0122
+CONSTANT: WM_MENUDRAG HEX: 0123
+CONSTANT: WM_MENUGETOBJECT HEX: 0124
+CONSTANT: WM_UNINITMENUPOPUP HEX: 0125
+CONSTANT: WM_MENUCOMMAND HEX: 0126
+CONSTANT: WM_CHANGEUISTATE HEX: 0127
+CONSTANT: WM_UPDATEUISTATE HEX: 0128
+CONSTANT: WM_QUERYUISTATE HEX: 0129
+CONSTANT: WM_CTLCOLORMSGBOX HEX: 0132
+CONSTANT: WM_CTLCOLOREDIT HEX: 0133
+CONSTANT: WM_CTLCOLORLISTBOX HEX: 0134
+CONSTANT: WM_CTLCOLORBTN HEX: 0135
+CONSTANT: WM_CTLCOLORDLG HEX: 0136
+CONSTANT: WM_CTLCOLORSCROLLBAR HEX: 0137
+CONSTANT: WM_CTLCOLORSTATIC HEX: 0138
+CONSTANT: WM_MOUSEFIRST HEX: 0200
+CONSTANT: WM_MOUSEMOVE HEX: 0200
+CONSTANT: WM_LBUTTONDOWN HEX: 0201
+CONSTANT: WM_LBUTTONUP HEX: 0202
+CONSTANT: WM_LBUTTONDBLCLK HEX: 0203
+CONSTANT: WM_RBUTTONDOWN HEX: 0204
+CONSTANT: WM_RBUTTONUP HEX: 0205
+CONSTANT: WM_RBUTTONDBLCLK HEX: 0206
+CONSTANT: WM_MBUTTONDOWN HEX: 0207
+CONSTANT: WM_MBUTTONUP HEX: 0208
+CONSTANT: WM_MBUTTONDBLCLK HEX: 0209
+CONSTANT: WM_MOUSEWHEEL HEX: 020A
+CONSTANT: WM_XBUTTONDOWN HEX: 020B
+CONSTANT: WM_XBUTTONUP HEX: 020C
+CONSTANT: WM_XBUTTONDBLCLK HEX: 020D
+CONSTANT: WM_MOUSELAST_5 HEX: 020D
+CONSTANT: WM_MOUSELAST_4 HEX: 020A
+CONSTANT: WM_MOUSELAST_PRE_4 HEX: 0209
+CONSTANT: WM_PARENTNOTIFY HEX: 0210
+CONSTANT: WM_ENTERMENULOOP HEX: 0211
+CONSTANT: WM_EXITMENULOOP HEX: 0212
+CONSTANT: WM_NEXTMENU HEX: 0213
+CONSTANT: WM_SIZING HEX: 0214
+CONSTANT: WM_CAPTURECHANGED HEX: 0215
+CONSTANT: WM_MOVING HEX: 0216
+CONSTANT: WM_POWERBROADCAST HEX: 0218
+CONSTANT: WM_DEVICECHANGE HEX: 0219
+CONSTANT: WM_MDICREATE HEX: 0220
+CONSTANT: WM_MDIDESTROY HEX: 0221
+CONSTANT: WM_MDIACTIVATE HEX: 0222
+CONSTANT: WM_MDIRESTORE HEX: 0223
+CONSTANT: WM_MDINEXT HEX: 0224
+CONSTANT: WM_MDIMAXIMIZE HEX: 0225
+CONSTANT: WM_MDITILE HEX: 0226
+CONSTANT: WM_MDICASCADE HEX: 0227
+CONSTANT: WM_MDIICONARRANGE HEX: 0228
+CONSTANT: WM_MDIGETACTIVE HEX: 0229
+CONSTANT: WM_MDISETMENU HEX: 0230
+CONSTANT: WM_ENTERSIZEMOVE HEX: 0231
+CONSTANT: WM_EXITSIZEMOVE HEX: 0232
+CONSTANT: WM_DROPFILES HEX: 0233
+CONSTANT: WM_MDIREFRESHMENU HEX: 0234
+CONSTANT: WM_IME_SETCONTEXT HEX: 0281
+CONSTANT: WM_IME_NOTIFY HEX: 0282
+CONSTANT: WM_IME_CONTROL HEX: 0283
+CONSTANT: WM_IME_COMPOSITIONFULL HEX: 0284
+CONSTANT: WM_IME_SELECT HEX: 0285
+CONSTANT: WM_IME_CHAR HEX: 0286
+CONSTANT: WM_IME_REQUEST HEX: 0288
+CONSTANT: WM_IME_KEYDOWN HEX: 0290
+CONSTANT: WM_IME_KEYUP HEX: 0291
+CONSTANT: WM_MOUSEHOVER HEX: 02A1
+CONSTANT: WM_MOUSELEAVE HEX: 02A3
+CONSTANT: WM_NCMOUSEHOVER HEX: 02A0
+CONSTANT: WM_NCMOUSELEAVE HEX: 02A2
+CONSTANT: WM_WTSSESSION_CHANGE HEX: 02B1
+CONSTANT: WM_TABLET_FIRST HEX: 02c0
+CONSTANT: WM_TABLET_LAST HEX: 02df
+CONSTANT: WM_CUT HEX: 0300
+CONSTANT: WM_COPY HEX: 0301
+CONSTANT: WM_PASTE HEX: 0302
+CONSTANT: WM_CLEAR HEX: 0303
+CONSTANT: WM_UNDO HEX: 0304
+CONSTANT: WM_RENDERFORMAT HEX: 0305
+CONSTANT: WM_RENDERALLFORMATS HEX: 0306
+CONSTANT: WM_DESTROYCLIPBOARD HEX: 0307
+CONSTANT: WM_DRAWCLIPBOARD HEX: 0308
+CONSTANT: WM_PAINTCLIPBOARD HEX: 0309
+CONSTANT: WM_VSCROLLCLIPBOARD HEX: 030A
+CONSTANT: WM_SIZECLIPBOARD HEX: 030B
+CONSTANT: WM_ASKCBFORMATNAME HEX: 030C
+CONSTANT: WM_CHANGECBCHAIN HEX: 030D
+CONSTANT: WM_HSCROLLCLIPBOARD HEX: 030E
+CONSTANT: WM_QUERYNEWPALETTE HEX: 030F
+CONSTANT: WM_PALETTEISCHANGING HEX: 0310
+CONSTANT: WM_PALETTECHANGED HEX: 0311
+CONSTANT: WM_HOTKEY HEX: 0312
+CONSTANT: WM_PRINT HEX: 0317
+CONSTANT: WM_PRINTCLIENT HEX: 0318
+CONSTANT: WM_APPCOMMAND HEX: 0319
+CONSTANT: WM_THEMECHANGED HEX: 031A
+CONSTANT: WM_HANDHELDFIRST HEX: 0358
+CONSTANT: WM_HANDHELDLAST HEX: 035F
+CONSTANT: WM_AFXFIRST HEX: 0360
+CONSTANT: WM_AFXLAST HEX: 037F
+CONSTANT: WM_PENWINFIRST HEX: 0380
+CONSTANT: WM_PENWINLAST HEX: 038F
+CONSTANT: WM_APP HEX: 8000
+CONSTANT: WM_USER HEX: 0400
+CONSTANT: EM_GETSEL HEX: 00B0
+CONSTANT: EM_SETSEL HEX: 00B1
+CONSTANT: EM_GETRECT HEX: 00B2
+CONSTANT: EM_SETRECT HEX: 00B3
+CONSTANT: EM_SETRECTNP HEX: 00B4
+CONSTANT: EM_SCROLL HEX: 00B5
+CONSTANT: EM_LINESCROLL HEX: 00B6
+CONSTANT: EM_SCROLLCARET HEX: 00B7
+CONSTANT: EM_GETMODIFY HEX: 00B8
+CONSTANT: EM_SETMODIFY HEX: 00B9
+CONSTANT: EM_GETLINECOUNT HEX: 00BA
+CONSTANT: EM_LINEINDEX HEX: 00BB
+CONSTANT: EM_SETHANDLE HEX: 00BC
+CONSTANT: EM_GETHANDLE HEX: 00BD
+CONSTANT: EM_GETTHUMB HEX: 00BE
+CONSTANT: EM_LINELENGTH HEX: 00C1
+CONSTANT: EM_REPLACESEL HEX: 00C2
+CONSTANT: EM_GETLINE HEX: 00C4
+CONSTANT: EM_LIMITTEXT HEX: 00C5
+CONSTANT: EM_CANUNDO HEX: 00C6
+CONSTANT: EM_UNDO HEX: 00C7
+CONSTANT: EM_FMTLINES HEX: 00C8
+CONSTANT: EM_LINEFROMCHAR HEX: 00C9
+CONSTANT: EM_SETTABSTOPS HEX: 00CB
+CONSTANT: EM_SETPASSWORDCHAR HEX: 00CC
+CONSTANT: EM_EMPTYUNDOBUFFER HEX: 00CD
+CONSTANT: EM_GETFIRSTVISIBLELINE HEX: 00CE
+CONSTANT: EM_SETREADONLY HEX: 00CF
+CONSTANT: EM_SETWORDBREAKPROC HEX: 00D0
+CONSTANT: EM_GETWORDBREAKPROC HEX: 00D1
+CONSTANT: EM_GETPASSWORDCHAR HEX: 00D2
+CONSTANT: EM_SETMARGINS HEX: 00D3
+CONSTANT: EM_GETMARGINS HEX: 00D4
+ALIAS: EM_SETLIMITTEXT EM_LIMITTEXT
+CONSTANT: EM_GETLIMITTEXT HEX: 00D5
+CONSTANT: EM_POSFROMCHAR HEX: 00D6
+CONSTANT: EM_CHARFROMPOS HEX: 00D7
+CONSTANT: EM_SETIMESTATUS HEX: 00D8
+CONSTANT: EM_GETIMESTATUS HEX: 00D9
+CONSTANT: BM_GETCHECK HEX: 00F0
+CONSTANT: BM_SETCHECK HEX: 00F1
+CONSTANT: BM_GETSTATE HEX: 00F2
+CONSTANT: BM_SETSTATE HEX: 00F3
+CONSTANT: BM_SETSTYLE HEX: 00F4
+CONSTANT: BM_CLICK HEX: 00F5
+CONSTANT: BM_GETIMAGE HEX: 00F6
+CONSTANT: BM_SETIMAGE HEX: 00F7
+CONSTANT: STM_SETICON HEX: 0170
+CONSTANT: STM_GETICON HEX: 0171
+CONSTANT: STM_SETIMAGE HEX: 0172
+CONSTANT: STM_GETIMAGE HEX: 0173
+CONSTANT: STM_MSGMAX HEX: 0174
+CONSTANT: DM_GETDEFID WM_USER
+: DM_SETDEFID ( -- n ) ( -- n ) WM_USER 1 + ; inline
+: DM_REPOSITION ( -- n ) ( -- n ) WM_USER 2 + ; inline
+CONSTANT: LB_ADDSTRING HEX: 0180
+CONSTANT: LB_INSERTSTRING HEX: 0181
+CONSTANT: LB_DELETESTRING HEX: 0182
+CONSTANT: LB_SELITEMRANGEEX HEX: 0183
+CONSTANT: LB_RESETCONTENT HEX: 0184
+CONSTANT: LB_SETSEL HEX: 0185
+CONSTANT: LB_SETCURSEL HEX: 0186
+CONSTANT: LB_GETSEL HEX: 0187
+CONSTANT: LB_GETCURSEL HEX: 0188
+CONSTANT: LB_GETTEXT HEX: 0189
+CONSTANT: LB_GETTEXTLEN HEX: 018A
+CONSTANT: LB_GETCOUNT HEX: 018B
+CONSTANT: LB_SELECTSTRING HEX: 018C
+CONSTANT: LB_DIR HEX: 018D
+CONSTANT: LB_GETTOPINDEX HEX: 018E
+CONSTANT: LB_FINDSTRING HEX: 018F
+CONSTANT: LB_GETSELCOUNT HEX: 0190
+CONSTANT: LB_GETSELITEMS HEX: 0191
+CONSTANT: LB_SETTABSTOPS HEX: 0192
+CONSTANT: LB_GETHORIZONTALEXTENT HEX: 0193
+CONSTANT: LB_SETHORIZONTALEXTENT HEX: 0194
+CONSTANT: LB_SETCOLUMNWIDTH HEX: 0195
+CONSTANT: LB_ADDFILE HEX: 0196
+CONSTANT: LB_SETTOPINDEX HEX: 0197
+CONSTANT: LB_GETITEMRECT HEX: 0198
+CONSTANT: LB_GETITEMDATA HEX: 0199
+CONSTANT: LB_SETITEMDATA HEX: 019A
+CONSTANT: LB_SELITEMRANGE HEX: 019B
+CONSTANT: LB_SETANCHORINDEX HEX: 019C
+CONSTANT: LB_GETANCHORINDEX HEX: 019D
+CONSTANT: LB_SETCARETINDEX HEX: 019E
+CONSTANT: LB_GETCARETINDEX HEX: 019F
+CONSTANT: LB_SETITEMHEIGHT HEX: 01A0
+CONSTANT: LB_GETITEMHEIGHT HEX: 01A1
+CONSTANT: LB_FINDSTRINGEXACT HEX: 01A2
+CONSTANT: LB_SETLOCALE HEX: 01A5
+CONSTANT: LB_GETLOCALE HEX: 01A6
+CONSTANT: LB_SETCOUNT HEX: 01A7
+CONSTANT: LB_INITSTORAGE HEX: 01A8
+CONSTANT: LB_ITEMFROMPOINT HEX: 01A9
+CONSTANT: LB_MULTIPLEADDSTRING HEX: 01B1
+CONSTANT: LB_GETLISTBOXINFO HEX: 01B2
+CONSTANT: LB_MSGMAX_501 HEX: 01B3
+CONSTANT: LB_MSGMAX_WCE4 HEX: 01B1
+CONSTANT: LB_MSGMAX_4 HEX: 01B0
+CONSTANT: LB_MSGMAX_PRE4 HEX: 01A8
+CONSTANT: CB_GETEDITSEL HEX: 0140
+CONSTANT: CB_LIMITTEXT HEX: 0141
+CONSTANT: CB_SETEDITSEL HEX: 0142
+CONSTANT: CB_ADDSTRING HEX: 0143
+CONSTANT: CB_DELETESTRING HEX: 0144
+CONSTANT: CB_DIR HEX: 0145
+CONSTANT: CB_GETCOUNT HEX: 0146
+CONSTANT: CB_GETCURSEL HEX: 0147
+CONSTANT: CB_GETLBTEXT HEX: 0148
+CONSTANT: CB_GETLBTEXTLEN HEX: 0149
+CONSTANT: CB_INSERTSTRING HEX: 014A
+CONSTANT: CB_RESETCONTENT HEX: 014B
+CONSTANT: CB_FINDSTRING HEX: 014C
+CONSTANT: CB_SELECTSTRING HEX: 014D
+CONSTANT: CB_SETCURSEL HEX: 014E
+CONSTANT: CB_SHOWDROPDOWN HEX: 014F
+CONSTANT: CB_GETITEMDATA HEX: 0150
+CONSTANT: CB_SETITEMDATA HEX: 0151
+CONSTANT: CB_GETDROPPEDCONTROLRECT HEX: 0152
+CONSTANT: CB_SETITEMHEIGHT HEX: 0153
+CONSTANT: CB_GETITEMHEIGHT HEX: 0154
+CONSTANT: CB_SETEXTENDEDUI HEX: 0155
+CONSTANT: CB_GETEXTENDEDUI HEX: 0156
+CONSTANT: CB_GETDROPPEDSTATE HEX: 0157
+CONSTANT: CB_FINDSTRINGEXACT HEX: 0158
+CONSTANT: CB_SETLOCALE HEX: 0159
+CONSTANT: CB_GETLOCALE HEX: 015A
+CONSTANT: CB_GETTOPINDEX HEX: 015B
+CONSTANT: CB_SETTOPINDEX HEX: 015C
+CONSTANT: CB_GETHORIZONTALEXTENT HEX: 015d
+CONSTANT: CB_SETHORIZONTALEXTENT HEX: 015e
+CONSTANT: CB_GETDROPPEDWIDTH HEX: 015f
+CONSTANT: CB_SETDROPPEDWIDTH HEX: 0160
+CONSTANT: CB_INITSTORAGE HEX: 0161
+CONSTANT: CB_MULTIPLEADDSTRING HEX: 0163
+CONSTANT: CB_GETCOMBOBOXINFO HEX: 0164
+CONSTANT: CB_MSGMAX_501 HEX: 0165
+CONSTANT: CB_MSGMAX_WCE400 HEX: 0163
+CONSTANT: CB_MSGMAX_400 HEX: 0162
+CONSTANT: CB_MSGMAX_PRE400 HEX: 015B
+CONSTANT: SBM_SETPOS HEX: 00E0
+CONSTANT: SBM_GETPOS HEX: 00E1
+CONSTANT: SBM_SETRANGE HEX: 00E2
+CONSTANT: SBM_SETRANGEREDRAW HEX: 00E6
+CONSTANT: SBM_GETRANGE HEX: 00E3
+CONSTANT: SBM_ENABLE_ARROWS HEX: 00E4
+CONSTANT: SBM_SETSCROLLINFO HEX: 00E9
+CONSTANT: SBM_GETSCROLLINFO HEX: 00EA
+CONSTANT: SBM_GETSCROLLBARINFO HEX: 00EB
+CONSTANT: LVM_FIRST HEX: 1000 ! ListView messages
+CONSTANT: TV_FIRST HEX: 1100 ! TreeView messages
+CONSTANT: HDM_FIRST HEX: 1200 ! Header messages
+CONSTANT: TCM_FIRST HEX: 1300 ! Tab control messages
+CONSTANT: PGM_FIRST HEX: 1400 ! Pager control messages
+CONSTANT: ECM_FIRST HEX: 1500 ! Edit control messages
+CONSTANT: BCM_FIRST HEX: 1600 ! Button control messages
+CONSTANT: CBM_FIRST HEX: 1700 ! Combobox control messages
+CONSTANT: CCM_FIRST HEX: 2000 ! Common control shared messages
+: CCM_LAST ( -- n ) CCM_FIRST HEX: 0200 + ; inline
+: CCM_SETBKCOLOR ( -- n ) CCM_FIRST 1 + ; inline
+: CCM_SETCOLORSCHEME ( -- n ) CCM_FIRST 2 + ; inline
+: CCM_GETCOLORSCHEME ( -- n ) CCM_FIRST 3 + ; inline
+: CCM_GETDROPTARGET ( -- n ) CCM_FIRST 4 + ; inline
+: CCM_SETUNICODEFORMAT ( -- n ) CCM_FIRST 5 + ; inline
+: CCM_GETUNICODEFORMAT ( -- n ) CCM_FIRST 6 + ; inline
+: CCM_SETVERSION ( -- n ) CCM_FIRST 7 + ; inline
+: CCM_GETVERSION ( -- n ) CCM_FIRST 8 + ; inline
+: CCM_SETNOTIFYWINDOW ( -- n ) CCM_FIRST 9 + ; inline
+: CCM_SETWINDOWTHEME ( -- n ) CCM_FIRST HEX: b + ; inline
+: CCM_DPISCALE ( -- n ) CCM_FIRST HEX: c + ; inline
+: HDM_GETITEMCOUNT ( -- n ) HDM_FIRST 0 + ; inline
+: HDM_INSERTITEMA ( -- n ) HDM_FIRST 1 + ; inline
+: HDM_INSERTITEMW ( -- n ) HDM_FIRST 10 + ; inline
+: HDM_DELETEITEM ( -- n ) HDM_FIRST 2 + ; inline
+: HDM_GETITEMA ( -- n ) HDM_FIRST 3 + ; inline
+: HDM_GETITEMW ( -- n ) HDM_FIRST 11 + ; inline
+: HDM_SETITEMA ( -- n ) HDM_FIRST 4 + ; inline
+: HDM_SETITEMW ( -- n ) HDM_FIRST 12 + ; inline
+: HDM_LAYOUT ( -- n ) HDM_FIRST 5 + ; inline
+: HDM_HITTEST ( -- n ) HDM_FIRST 6 + ; inline
+: HDM_GETITEMRECT ( -- n ) HDM_FIRST 7 + ; inline
+: HDM_SETIMAGELIST ( -- n ) HDM_FIRST 8 + ; inline
+: HDM_GETIMAGELIST ( -- n ) HDM_FIRST 9 + ; inline
+: HDM_ORDERTOINDEX ( -- n ) HDM_FIRST 15 + ; inline
+: HDM_CREATEDRAGIMAGE ( -- n ) HDM_FIRST 16 + ; inline
+: HDM_GETORDERARRAY ( -- n ) HDM_FIRST 17 + ; inline
+: HDM_SETORDERARRAY ( -- n ) HDM_FIRST 18 + ; inline
+: HDM_SETHOTDIVIDER ( -- n ) HDM_FIRST 19 + ; inline
+: HDM_SETBITMAPMARGIN ( -- n ) HDM_FIRST 20 + ; inline
+: HDM_GETBITMAPMARGIN ( -- n ) HDM_FIRST 21 + ; inline
+CONSTANT: HDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+CONSTANT: HDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+: HDM_SETFILTERCHANGETIMEOUT ( -- n ) HDM_FIRST 22 + ; inline
+: HDM_EDITFILTER ( -- n ) HDM_FIRST 23 + ; inline
+: HDM_CLEARFILTER ( -- n ) HDM_FIRST 24 + ; inline
+: TB_ENABLEBUTTON ( -- n ) WM_USER 1 + ; inline
+: TB_CHECKBUTTON ( -- n ) WM_USER 2 + ; inline
+: TB_PRESSBUTTON ( -- n ) WM_USER 3 + ; inline
+: TB_HIDEBUTTON ( -- n ) WM_USER 4 + ; inline
+: TB_INDETERMINATE ( -- n ) WM_USER 5 + ; inline
+: TB_MARKBUTTON ( -- n ) WM_USER 6 + ; inline
+: TB_ISBUTTONENABLED ( -- n ) WM_USER 9 + ; inline
+: TB_ISBUTTONCHECKED ( -- n ) WM_USER 10 + ; inline
+: TB_ISBUTTONPRESSED ( -- n ) WM_USER 11 + ; inline
+: TB_ISBUTTONHIDDEN ( -- n ) WM_USER 12 + ; inline
+: TB_ISBUTTONINDETERMINATE ( -- n ) WM_USER 13 + ; inline
+: TB_ISBUTTONHIGHLIGHTED ( -- n ) WM_USER 14 + ; inline
+: TB_SETSTATE ( -- n ) WM_USER 17 + ; inline
+: TB_GETSTATE ( -- n ) WM_USER 18 + ; inline
+: TB_ADDBITMAP ( -- n ) WM_USER 19 + ; inline
+: TB_ADDBUTTONSA ( -- n ) WM_USER 20 + ; inline
+: TB_INSERTBUTTONA ( -- n ) WM_USER 21 + ; inline
+: TB_ADDBUTTONS ( -- n ) WM_USER 20 + ; inline
+: TB_INSERTBUTTON ( -- n ) WM_USER 21 + ; inline
+: TB_DELETEBUTTON ( -- n ) WM_USER 22 + ; inline
+: TB_GETBUTTON ( -- n ) WM_USER 23 + ; inline
+: TB_BUTTONCOUNT ( -- n ) WM_USER 24 + ; inline
+: TB_COMMANDTOINDEX ( -- n ) WM_USER 25 + ; inline
+: TB_SAVERESTOREA ( -- n ) WM_USER 26 + ; inline
+: TB_SAVERESTOREW ( -- n ) WM_USER 76 + ; inline
+: TB_CUSTOMIZE ( -- n ) WM_USER 27 + ; inline
+: TB_ADDSTRINGA ( -- n ) WM_USER 28 + ; inline
+: TB_ADDSTRINGW ( -- n ) WM_USER 77 + ; inline
+: TB_GETITEMRECT ( -- n ) WM_USER 29 + ; inline
+: TB_BUTTONSTRUCTSIZE ( -- n ) WM_USER 30 + ; inline
+: TB_SETBUTTONSIZE ( -- n ) WM_USER 31 + ; inline
+: TB_SETBITMAPSIZE ( -- n ) WM_USER 32 + ; inline
+: TB_AUTOSIZE ( -- n ) WM_USER 33 + ; inline
+: TB_GETTOOLTIPS ( -- n ) WM_USER 35 + ; inline
+: TB_SETTOOLTIPS ( -- n ) WM_USER 36 + ; inline
+: TB_SETPARENT ( -- n ) WM_USER 37 + ; inline
+: TB_SETROWS ( -- n ) WM_USER 39 + ; inline
+: TB_GETROWS ( -- n ) WM_USER 40 + ; inline
+: TB_SETCMDID ( -- n ) WM_USER 42 + ; inline
+: TB_CHANGEBITMAP ( -- n ) WM_USER 43 + ; inline
+: TB_GETBITMAP ( -- n ) WM_USER 44 + ; inline
+: TB_GETBUTTONTEXTA ( -- n ) WM_USER 45 + ; inline
+: TB_GETBUTTONTEXTW ( -- n ) WM_USER 75 + ; inline
+: TB_REPLACEBITMAP ( -- n ) WM_USER 46 + ; inline
+: TB_SETINDENT ( -- n ) WM_USER 47 + ; inline
+: TB_SETIMAGELIST ( -- n ) WM_USER 48 + ; inline
+: TB_GETIMAGELIST ( -- n ) WM_USER 49 + ; inline
+: TB_LOADIMAGES ( -- n ) WM_USER 50 + ; inline
+: TB_GETRECT ( -- n ) WM_USER 51 + ; inline
+: TB_SETHOTIMAGELIST ( -- n ) WM_USER 52 + ; inline
+: TB_GETHOTIMAGELIST ( -- n ) WM_USER 53 + ; inline
+: TB_SETDISABLEDIMAGELIST ( -- n ) WM_USER 54 + ; inline
+: TB_GETDISABLEDIMAGELIST ( -- n ) WM_USER 55 + ; inline
+: TB_SETSTYLE ( -- n ) WM_USER 56 + ; inline
+: TB_GETSTYLE ( -- n ) WM_USER 57 + ; inline
+: TB_GETBUTTONSIZE ( -- n ) WM_USER 58 + ; inline
+: TB_SETBUTTONWIDTH ( -- n ) WM_USER 59 + ; inline
+: TB_SETMAXTEXTROWS ( -- n ) WM_USER 60 + ; inline
+: TB_GETTEXTROWS ( -- n ) WM_USER 61 + ; inline
+: TB_GETOBJECT ( -- n ) WM_USER 62 + ; inline
+: TB_GETHOTITEM ( -- n ) WM_USER 71 + ; inline
+: TB_SETHOTITEM ( -- n ) WM_USER 72 + ; inline
+: TB_SETANCHORHIGHLIGHT ( -- n ) WM_USER 73 + ; inline
+: TB_GETANCHORHIGHLIGHT ( -- n ) WM_USER 74 + ; inline
+: TB_MAPACCELERATORA ( -- n ) WM_USER 78 + ; inline
+: TB_GETINSERTMARK ( -- n ) WM_USER 79 + ; inline
+: TB_SETINSERTMARK ( -- n ) WM_USER 80 + ; inline
+: TB_INSERTMARKHITTEST ( -- n ) WM_USER 81 + ; inline
+: TB_MOVEBUTTON ( -- n ) WM_USER 82 + ; inline
+: TB_GETMAXSIZE ( -- n ) WM_USER 83 + ; inline
+: TB_SETEXTENDEDSTYLE ( -- n ) WM_USER 84 + ; inline
+: TB_GETEXTENDEDSTYLE ( -- n ) WM_USER 85 + ; inline
+: TB_GETPADDING ( -- n ) WM_USER 86 + ; inline
+: TB_SETPADDING ( -- n ) WM_USER 87 + ; inline
+: TB_SETINSERTMARKCOLOR ( -- n ) WM_USER 88 + ; inline
+: TB_GETINSERTMARKCOLOR ( -- n ) WM_USER 89 + ; inline
+ALIAS: TB_SETCOLORSCHEME CCM_SETCOLORSCHEME
+ALIAS: TB_GETCOLORSCHEME CCM_GETCOLORSCHEME
+ALIAS: TB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+ALIAS: TB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+: TB_MAPACCELERATORW ( -- n ) WM_USER 90 + ; inline
+: TB_GETBITMAPFLAGS ( -- n ) WM_USER 41 + ; inline
+: TB_GETBUTTONINFOW ( -- n ) WM_USER 63 + ; inline
+: TB_SETBUTTONINFOW ( -- n ) WM_USER 64 + ; inline
+: TB_GETBUTTONINFOA ( -- n ) WM_USER 65 + ; inline
+: TB_SETBUTTONINFOA ( -- n ) WM_USER 66 + ; inline
+: TB_INSERTBUTTONW ( -- n ) WM_USER 67 + ; inline
+: TB_ADDBUTTONSW ( -- n ) WM_USER 68 + ; inline
+: TB_HITTEST ( -- n ) WM_USER 69 + ; inline
+: TB_SETDRAWTEXTFLAGS ( -- n ) WM_USER 70 + ; inline
+: TB_GETSTRINGW ( -- n ) WM_USER 91 + ; inline
+: TB_GETSTRINGA ( -- n ) WM_USER 92 + ; inline
+: TB_GETMETRICS ( -- n ) WM_USER 101 + ; inline
+: TB_SETMETRICS ( -- n ) WM_USER 102 + ; inline
+ALIAS: TB_SETWINDOWTHEME CCM_SETWINDOWTHEME
+: RB_INSERTBANDA ( -- n ) WM_USER 1 + ; inline
+: RB_DELETEBAND ( -- n ) WM_USER 2 + ; inline
+: RB_GETBARINFO ( -- n ) WM_USER 3 + ; inline
+: RB_SETBARINFO ( -- n ) WM_USER 4 + ; inline
+: RB_GETBANDINFO ( -- n ) WM_USER 5 + ; inline
+: RB_SETBANDINFOA ( -- n ) WM_USER 6 + ; inline
+: RB_SETPARENT ( -- n ) WM_USER 7 + ; inline
+: RB_HITTEST ( -- n ) WM_USER 8 + ; inline
+: RB_GETRECT ( -- n ) WM_USER 9 + ; inline
+: RB_INSERTBANDW ( -- n ) WM_USER 10 + ; inline
+: RB_SETBANDINFOW ( -- n ) WM_USER 11 + ; inline
+: RB_GETBANDCOUNT ( -- n ) WM_USER 12 + ; inline
+: RB_GETROWCOUNT ( -- n ) WM_USER 13 + ; inline
+: RB_GETROWHEIGHT ( -- n ) WM_USER 14 + ; inline
+: RB_IDTOINDEX ( -- n ) WM_USER 16 + ; inline
+: RB_GETTOOLTIPS ( -- n ) WM_USER 17 + ; inline
+: RB_SETTOOLTIPS ( -- n ) WM_USER 18 + ; inline
+: RB_SETBKCOLOR ( -- n ) WM_USER 19 + ; inline
+: RB_GETBKCOLOR ( -- n ) WM_USER 20 + ; inline
+: RB_SETTEXTCOLOR ( -- n ) WM_USER 21 + ; inline
+: RB_GETTEXTCOLOR ( -- n ) WM_USER 22 + ; inline
+: RB_SIZETORECT ( -- n ) WM_USER 23 + ; inline
+CONSTANT: RB_SETCOLORSCHEME CCM_SETCOLORSCHEME
+CONSTANT: RB_GETCOLORSCHEME CCM_GETCOLORSCHEME
+: RB_BEGINDRAG ( -- n ) WM_USER 24 + ; inline
+: RB_ENDDRAG ( -- n ) WM_USER 25 + ; inline
+: RB_DRAGMOVE ( -- n ) WM_USER 26 + ; inline
+: RB_GETBARHEIGHT ( -- n ) WM_USER 27 + ; inline
+: RB_GETBANDINFOW ( -- n ) WM_USER 28 + ; inline
+: RB_GETBANDINFOA ( -- n ) WM_USER 29 + ; inline
+: RB_MINIMIZEBAND ( -- n ) WM_USER 30 + ; inline
+: RB_MAXIMIZEBAND ( -- n ) WM_USER 31 + ; inline
+ALIAS: RB_GETDROPTARGET CCM_GETDROPTARGET
+: RB_GETBANDBORDERS ( -- n ) WM_USER 34 + ; inline
+: RB_SHOWBAND ( -- n ) WM_USER 35 + ; inline
+: RB_SETPALETTE ( -- n ) WM_USER 37 + ; inline
+: RB_GETPALETTE ( -- n ) WM_USER 38 + ; inline
+: RB_MOVEBAND ( -- n ) WM_USER 39 + ; inline
+CONSTANT: RB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+CONSTANT: RB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+: RB_GETBANDMARGINS ( -- n ) WM_USER 40 + ; inline
+ALIAS: RB_SETWINDOWTHEME CCM_SETWINDOWTHEME
+: RB_PUSHCHEVRON ( -- n ) WM_USER 43 + ; inline
+: TTM_ACTIVATE ( -- n ) WM_USER 1 + ; inline
+: TTM_SETDELAYTIME ( -- n ) WM_USER 3 + ; inline
+: TTM_ADDTOOLA ( -- n ) WM_USER 4 + ; inline
+: TTM_ADDTOOLW ( -- n ) WM_USER 50 + ; inline
+: TTM_DELTOOLA ( -- n ) WM_USER 5 + ; inline
+: TTM_DELTOOLW ( -- n ) WM_USER 51 + ; inline
+: TTM_NEWTOOLRECTA ( -- n ) WM_USER 6 + ; inline
+: TTM_NEWTOOLRECTW ( -- n ) WM_USER 52 + ; inline
+: TTM_RELAYEVENT ( -- n ) WM_USER 7 + ; inline
+: TTM_GETTOOLINFOA ( -- n ) WM_USER 8 + ; inline
+: TTM_GETTOOLINFOW ( -- n ) WM_USER 53 + ; inline
+: TTM_SETTOOLINFOA ( -- n ) WM_USER 9 + ; inline
+: TTM_SETTOOLINFOW ( -- n ) WM_USER 54 + ; inline
+: TTM_HITTESTA ( -- n ) WM_USER 10 + ; inline
+: TTM_HITTESTW ( -- n ) WM_USER 55 + ; inline
+: TTM_GETTEXTA ( -- n ) WM_USER 11 + ; inline
+: TTM_GETTEXTW ( -- n ) WM_USER 56 + ; inline
+: TTM_UPDATETIPTEXTA ( -- n ) WM_USER 12 + ; inline
+: TTM_UPDATETIPTEXTW ( -- n ) WM_USER 57 + ; inline
+: TTM_GETTOOLCOUNT ( -- n ) WM_USER 13 + ; inline
+: TTM_ENUMTOOLSA ( -- n ) WM_USER 14 + ; inline
+: TTM_ENUMTOOLSW ( -- n ) WM_USER 58 + ; inline
+: TTM_GETCURRENTTOOLA ( -- n ) WM_USER 15 + ; inline
+: TTM_GETCURRENTTOOLW ( -- n ) WM_USER 59 + ; inline
+: TTM_WINDOWFROMPOINT ( -- n ) WM_USER 16 + ; inline
+: TTM_TRACKACTIVATE ( -- n ) WM_USER 17 + ; inline
+: TTM_TRACKPOSITION ( -- n ) WM_USER 18 + ; inline
+: TTM_SETTIPBKCOLOR ( -- n ) WM_USER 19 + ; inline
+: TTM_SETTIPTEXTCOLOR ( -- n ) WM_USER 20 + ; inline
+: TTM_GETDELAYTIME ( -- n ) WM_USER 21 + ; inline
+: TTM_GETTIPBKCOLOR ( -- n ) WM_USER 22 + ; inline
+: TTM_GETTIPTEXTCOLOR ( -- n ) WM_USER 23 + ; inline
+: TTM_SETMAXTIPWIDTH ( -- n ) WM_USER 24 + ; inline
+: TTM_GETMAXTIPWIDTH ( -- n ) WM_USER 25 + ; inline
+: TTM_SETMARGIN ( -- n ) WM_USER 26 + ; inline
+: TTM_GETMARGIN ( -- n ) WM_USER 27 + ; inline
+: TTM_POP ( -- n ) WM_USER 28 + ; inline
+: TTM_UPDATE ( -- n ) WM_USER 29 + ; inline
+: TTM_GETBUBBLESIZE ( -- n ) WM_USER 30 + ; inline
+: TTM_ADJUSTRECT ( -- n ) WM_USER 31 + ; inline
+: TTM_SETTITLEA ( -- n ) WM_USER 32 + ; inline
+: TTM_SETTITLEW ( -- n ) WM_USER 33 + ; inline
+: TTM_POPUP ( -- n ) WM_USER 34 + ; inline
+: TTM_GETTITLE ( -- n ) WM_USER 35 + ; inline
+ALIAS: TTM_SETWINDOWTHEME CCM_SETWINDOWTHEME
+: SB_SETTEXTA ( -- n ) WM_USER 1 + ; inline
+: SB_SETTEXTW ( -- n ) WM_USER 11 + ; inline
+: SB_GETTEXTA ( -- n ) WM_USER 2 + ; inline
+: SB_GETTEXTW ( -- n ) WM_USER 13 + ; inline
+: SB_GETTEXTLENGTHA ( -- n ) WM_USER 3 + ; inline
+: SB_GETTEXTLENGTHW ( -- n ) WM_USER 12 + ; inline
+: SB_SETPARTS ( -- n ) WM_USER 4 + ; inline
+: SB_GETPARTS ( -- n ) WM_USER 6 + ; inline
+: SB_GETBORDERS ( -- n ) WM_USER 7 + ; inline
+: SB_SETMINHEIGHT ( -- n ) WM_USER 8 + ; inline
+: SB_SIMPLE ( -- n ) WM_USER 9 + ; inline
+: SB_GETRECT ( -- n ) WM_USER 10 + ; inline
+: SB_ISSIMPLE ( -- n ) WM_USER 14 + ; inline
+: SB_SETICON ( -- n ) WM_USER 15 + ; inline
+: SB_SETTIPTEXTA ( -- n ) WM_USER 16 + ; inline
+: SB_SETTIPTEXTW ( -- n ) WM_USER 17 + ; inline
+: SB_GETTIPTEXTA ( -- n ) WM_USER 18 + ; inline
+: SB_GETTIPTEXTW ( -- n ) WM_USER 19 + ; inline
+: SB_GETICON ( -- n ) WM_USER 20 + ; inline
+CONSTANT: SB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+CONSTANT: SB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+ALIAS: SB_SETBKCOLOR CCM_SETBKCOLOR
+CONSTANT: SB_SIMPLEID HEX: 00ff
+ALIAS: TBM_GETPOS WM_USER
+: TBM_GETRANGEMIN ( -- n ) WM_USER 1 + ; inline
+: TBM_GETRANGEMAX ( -- n ) WM_USER 2 + ; inline
+: TBM_GETTIC ( -- n ) WM_USER 3 + ; inline
+: TBM_SETTIC ( -- n ) WM_USER 4 + ; inline
+: TBM_SETPOS ( -- n ) WM_USER 5 + ; inline
+: TBM_SETRANGE ( -- n ) WM_USER 6 + ; inline
+: TBM_SETRANGEMIN ( -- n ) WM_USER 7 + ; inline
+: TBM_SETRANGEMAX ( -- n ) WM_USER 8 + ; inline
+: TBM_CLEARTICS ( -- n ) WM_USER 9 + ; inline
+: TBM_SETSEL ( -- n ) WM_USER 10 + ; inline
+: TBM_SETSELSTART ( -- n ) WM_USER 11 + ; inline
+: TBM_SETSELEND ( -- n ) WM_USER 12 + ; inline
+: TBM_GETPTICS ( -- n ) WM_USER 14 + ; inline
+: TBM_GETTICPOS ( -- n ) WM_USER 15 + ; inline
+: TBM_GETNUMTICS ( -- n ) WM_USER 16 + ; inline
+: TBM_GETSELSTART ( -- n ) WM_USER 17 + ; inline
+: TBM_GETSELEND ( -- n ) WM_USER 18 + ; inline
+: TBM_CLEARSEL ( -- n ) WM_USER 19 + ; inline
+: TBM_SETTICFREQ ( -- n ) WM_USER 20 + ; inline
+: TBM_SETPAGESIZE ( -- n ) WM_USER 21 + ; inline
+: TBM_GETPAGESIZE ( -- n ) WM_USER 22 + ; inline
+: TBM_SETLINESIZE ( -- n ) WM_USER 23 + ; inline
+: TBM_GETLINESIZE ( -- n ) WM_USER 24 + ; inline
+: TBM_GETTHUMBRECT ( -- n ) WM_USER 25 + ; inline
+: TBM_GETCHANNELRECT ( -- n ) WM_USER 26 + ; inline
+: TBM_SETTHUMBLENGTH ( -- n ) WM_USER 27 + ; inline
+: TBM_GETTHUMBLENGTH ( -- n ) WM_USER 28 + ; inline
+: TBM_SETTOOLTIPS ( -- n ) WM_USER 29 + ; inline
+: TBM_GETTOOLTIPS ( -- n ) WM_USER 30 + ; inline
+: TBM_SETTIPSIDE ( -- n ) WM_USER 31 + ; inline
+: TBM_SETBUDDY ( -- n ) WM_USER 32 + ; inline
+: TBM_GETBUDDY ( -- n ) WM_USER 33 + ; inline
+ALIAS: TBM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+ALIAS: TBM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+: DL_BEGINDRAG ( -- n ) WM_USER 133 + ; inline
+: DL_DRAGGING ( -- n ) WM_USER 134 + ; inline
+: DL_DROPPED ( -- n ) WM_USER 135 + ; inline
+: DL_CANCELDRAG ( -- n ) WM_USER 136 + ; inline
+: UDM_SETRANGE ( -- n ) WM_USER 101 + ; inline
+: UDM_GETRANGE ( -- n ) WM_USER 102 + ; inline
+: UDM_SETPOS ( -- n ) WM_USER 103 + ; inline
+: UDM_GETPOS ( -- n ) WM_USER 104 + ; inline
+: UDM_SETBUDDY ( -- n ) WM_USER 105 + ; inline
+: UDM_GETBUDDY ( -- n ) WM_USER 106 + ; inline
+: UDM_SETACCEL ( -- n ) WM_USER 107 + ; inline
+: UDM_GETACCEL ( -- n ) WM_USER 108 + ; inline
+: UDM_SETBASE ( -- n ) WM_USER 109 + ; inline
+: UDM_GETBASE ( -- n ) WM_USER 110 + ; inline
+: UDM_SETRANGE32 ( -- n ) WM_USER 111 + ; inline
+: UDM_GETRANGE32 ( -- n ) WM_USER 112 + ; inline
+ALIAS: UDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+ALIAS: UDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+: UDM_SETPOS32 ( -- n ) WM_USER 113 + ; inline
+: UDM_GETPOS32 ( -- n ) WM_USER 114 + ; inline
+: PBM_SETRANGE ( -- n ) WM_USER 1 + ; inline
+: PBM_SETPOS ( -- n ) WM_USER 2 + ; inline
+: PBM_DELTAPOS ( -- n ) WM_USER 3 + ; inline
+: PBM_SETSTEP ( -- n ) WM_USER 4 + ; inline
+: PBM_STEPIT ( -- n ) WM_USER 5 + ; inline
+: PBM_SETRANGE32 ( -- n ) WM_USER 6 + ; inline
+: PBM_GETRANGE ( -- n ) WM_USER 7 + ; inline
+: PBM_GETPOS ( -- n ) WM_USER 8 + ; inline
+: PBM_SETBARCOLOR ( -- n ) WM_USER 9 + ; inline
+ALIAS: PBM_SETBKCOLOR CCM_SETBKCOLOR
+: HKM_SETHOTKEY ( -- n ) WM_USER 1 + ; inline
+: HKM_GETHOTKEY ( -- n ) WM_USER 2 + ; inline
+: HKM_SETRULES ( -- n ) WM_USER 3 + ; inline
+ALIAS: LVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+ALIAS: LVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+: LVM_GETBKCOLOR ( -- n ) LVM_FIRST 0 + ; inline
+: LVM_SETBKCOLOR ( -- n ) LVM_FIRST 1 + ; inline
+: LVM_GETIMAGELIST ( -- n ) LVM_FIRST 2 + ; inline
+: LVM_SETIMAGELIST ( -- n ) LVM_FIRST 3 + ; inline
+: LVM_GETITEMCOUNT ( -- n ) LVM_FIRST 4 + ; inline
+: LVM_GETITEMA ( -- n ) LVM_FIRST 5 + ; inline
+: LVM_GETITEMW ( -- n ) LVM_FIRST 75 + ; inline
+: LVM_SETITEMA ( -- n ) LVM_FIRST 6 + ; inline
+: LVM_SETITEMW ( -- n ) LVM_FIRST 76 + ; inline
+: LVM_INSERTITEMA ( -- n ) LVM_FIRST 7 + ; inline
+: LVM_INSERTITEMW ( -- n ) LVM_FIRST 77 + ; inline
+: LVM_DELETEITEM ( -- n ) LVM_FIRST 8 + ; inline
+: LVM_DELETEALLITEMS ( -- n ) LVM_FIRST 9 + ; inline
+: LVM_GETCALLBACKMASK ( -- n ) LVM_FIRST 10 + ; inline
+: LVM_SETCALLBACKMASK ( -- n ) LVM_FIRST 11 + ; inline
+: LVM_FINDITEMA ( -- n ) LVM_FIRST 13 + ; inline
+: LVM_FINDITEMW ( -- n ) LVM_FIRST 83 + ; inline
+: LVM_GETITEMRECT ( -- n ) LVM_FIRST 14 + ; inline
+: LVM_SETITEMPOSITION ( -- n ) LVM_FIRST 15 + ; inline
+: LVM_GETITEMPOSITION ( -- n ) LVM_FIRST 16 + ; inline
+: LVM_GETSTRINGWIDTHA ( -- n ) LVM_FIRST 17 + ; inline
+: LVM_GETSTRINGWIDTHW ( -- n ) LVM_FIRST 87 + ; inline
+: LVM_HITTEST ( -- n ) LVM_FIRST 18 + ; inline
+: LVM_ENSUREVISIBLE ( -- n ) LVM_FIRST 19 + ; inline
+: LVM_SCROLL ( -- n ) LVM_FIRST 20 + ; inline
+: LVM_REDRAWITEMS ( -- n ) LVM_FIRST 21 + ; inline
+: LVM_ARRANGE ( -- n ) LVM_FIRST 22 + ; inline
+: LVM_EDITLABELA ( -- n ) LVM_FIRST 23 + ; inline
+: LVM_EDITLABELW ( -- n ) LVM_FIRST 118 + ; inline
+: LVM_GETEDITCONTROL ( -- n ) LVM_FIRST 24 + ; inline
+: LVM_GETCOLUMNA ( -- n ) LVM_FIRST 25 + ; inline
+: LVM_GETCOLUMNW ( -- n ) LVM_FIRST 95 + ; inline
+: LVM_SETCOLUMNA ( -- n ) LVM_FIRST 26 + ; inline
+: LVM_SETCOLUMNW ( -- n ) LVM_FIRST 96 + ; inline
+: LVM_INSERTCOLUMNA ( -- n ) LVM_FIRST 27 + ; inline
+: LVM_INSERTCOLUMNW ( -- n ) LVM_FIRST 97 + ; inline
+: LVM_DELETECOLUMN ( -- n ) LVM_FIRST 28 + ; inline
+: LVM_GETCOLUMNWIDTH ( -- n ) LVM_FIRST 29 + ; inline
+: LVM_SETCOLUMNWIDTH ( -- n ) LVM_FIRST 30 + ; inline
+: LVM_CREATEDRAGIMAGE ( -- n ) LVM_FIRST 33 + ; inline
+: LVM_GETVIEWRECT ( -- n ) LVM_FIRST 34 + ; inline
+: LVM_GETTEXTCOLOR ( -- n ) LVM_FIRST 35 + ; inline
+: LVM_SETTEXTCOLOR ( -- n ) LVM_FIRST 36 + ; inline
+: LVM_GETTEXTBKCOLOR ( -- n ) LVM_FIRST 37 + ; inline
+: LVM_SETTEXTBKCOLOR ( -- n ) LVM_FIRST 38 + ; inline
+: LVM_GETTOPINDEX ( -- n ) LVM_FIRST 39 + ; inline
+: LVM_GETCOUNTPERPAGE ( -- n ) LVM_FIRST 40 + ; inline
+: LVM_GETORIGIN ( -- n ) LVM_FIRST 41 + ; inline
+: LVM_UPDATE ( -- n ) LVM_FIRST 42 + ; inline
+: LVM_SETITEMSTATE ( -- n ) LVM_FIRST 43 + ; inline
+: LVM_GETITEMSTATE ( -- n ) LVM_FIRST 44 + ; inline
+: LVM_GETITEMTEXTA ( -- n ) LVM_FIRST 45 + ; inline
+: LVM_GETITEMTEXTW ( -- n ) LVM_FIRST 115 + ; inline
+: LVM_SETITEMTEXTA ( -- n ) LVM_FIRST 46 + ; inline
+: LVM_SETITEMTEXTW ( -- n ) LVM_FIRST 116 + ; inline
+: LVM_SETITEMCOUNT ( -- n ) LVM_FIRST 47 + ; inline
+: LVM_SORTITEMS ( -- n ) LVM_FIRST 48 + ; inline
+: LVM_SETITEMPOSITION32 ( -- n ) LVM_FIRST 49 + ; inline
+: LVM_GETSELECTEDCOUNT ( -- n ) LVM_FIRST 50 + ; inline
+: LVM_GETITEMSPACING ( -- n ) LVM_FIRST 51 + ; inline
+: LVM_GETISEARCHSTRINGA ( -- n ) LVM_FIRST 52 + ; inline
+: LVM_GETISEARCHSTRINGW ( -- n ) LVM_FIRST 117 + ; inline
+: LVM_SETICONSPACING ( -- n ) LVM_FIRST 53 + ; inline
+: LVM_SETEXTENDEDLISTVIEWSTYLE ( -- n ) LVM_FIRST 54 + ; inline
+: LVM_GETEXTENDEDLISTVIEWSTYLE ( -- n ) LVM_FIRST 55 + ; inline
+: LVM_GETSUBITEMRECT ( -- n ) LVM_FIRST 56 + ; inline
+: LVM_SUBITEMHITTEST ( -- n ) LVM_FIRST 57 + ; inline
+: LVM_SETCOLUMNORDERARRAY ( -- n ) LVM_FIRST 58 + ; inline
+: LVM_GETCOLUMNORDERARRAY ( -- n ) LVM_FIRST 59 + ; inline
+: LVM_SETHOTITEM ( -- n ) LVM_FIRST 60 + ; inline
+: LVM_GETHOTITEM ( -- n ) LVM_FIRST 61 + ; inline
+: LVM_SETHOTCURSOR ( -- n ) LVM_FIRST 62 + ; inline
+: LVM_GETHOTCURSOR ( -- n ) LVM_FIRST 63 + ; inline
+: LVM_APPROXIMATEVIEWRECT ( -- n ) LVM_FIRST 64 + ; inline
+: LVM_SETWORKAREAS ( -- n ) LVM_FIRST 65 + ; inline
+: LVM_GETWORKAREAS ( -- n ) LVM_FIRST 70 + ; inline
+: LVM_GETNUMBEROFWORKAREAS ( -- n ) LVM_FIRST 73 + ; inline
+: LVM_GETSELECTIONMARK ( -- n ) LVM_FIRST 66 + ; inline
+: LVM_SETSELECTIONMARK ( -- n ) LVM_FIRST 67 + ; inline
+: LVM_SETHOVERTIME ( -- n ) LVM_FIRST 71 + ; inline
+: LVM_GETHOVERTIME ( -- n ) LVM_FIRST 72 + ; inline
+: LVM_SETTOOLTIPS ( -- n ) LVM_FIRST 74 + ; inline
+: LVM_GETTOOLTIPS ( -- n ) LVM_FIRST 78 + ; inline
+: LVM_SORTITEMSEX ( -- n ) LVM_FIRST 81 + ; inline
+: LVM_SETBKIMAGEA ( -- n ) LVM_FIRST 68 + ; inline
+: LVM_SETBKIMAGEW ( -- n ) LVM_FIRST 138 + ; inline
+: LVM_GETBKIMAGEA ( -- n ) LVM_FIRST 69 + ; inline
+: LVM_GETBKIMAGEW ( -- n ) LVM_FIRST 139 + ; inline
+: LVM_SETSELECTEDCOLUMN ( -- n ) LVM_FIRST 140 + ; inline
+: LVM_SETTILEWIDTH ( -- n ) LVM_FIRST 141 + ; inline
+: LVM_SETVIEW ( -- n ) LVM_FIRST 142 + ; inline
+: LVM_GETVIEW ( -- n ) LVM_FIRST 143 + ; inline
+: LVM_INSERTGROUP ( -- n ) LVM_FIRST 145 + ; inline
+: LVM_SETGROUPINFO ( -- n ) LVM_FIRST 147 + ; inline
+: LVM_GETGROUPINFO ( -- n ) LVM_FIRST 149 + ; inline
+: LVM_REMOVEGROUP ( -- n ) LVM_FIRST 150 + ; inline
+: LVM_MOVEGROUP ( -- n ) LVM_FIRST 151 + ; inline
+: LVM_MOVEITEMTOGROUP ( -- n ) LVM_FIRST 154 + ; inline
+: LVM_SETGROUPMETRICS ( -- n ) LVM_FIRST 155 + ; inline
+: LVM_GETGROUPMETRICS ( -- n ) LVM_FIRST 156 + ; inline
+: LVM_ENABLEGROUPVIEW ( -- n ) LVM_FIRST 157 + ; inline
+: LVM_SORTGROUPS ( -- n ) LVM_FIRST 158 + ; inline
+: LVM_INSERTGROUPSORTED ( -- n ) LVM_FIRST 159 + ; inline
+: LVM_REMOVEALLGROUPS ( -- n ) LVM_FIRST 160 + ; inline
+: LVM_HASGROUP ( -- n ) LVM_FIRST 161 + ; inline
+: LVM_SETTILEVIEWINFO ( -- n ) LVM_FIRST 162 + ; inline
+: LVM_GETTILEVIEWINFO ( -- n ) LVM_FIRST 163 + ; inline
+: LVM_SETTILEINFO ( -- n ) LVM_FIRST 164 + ; inline
+: LVM_GETTILEINFO ( -- n ) LVM_FIRST 165 + ; inline
+: LVM_SETINSERTMARK ( -- n ) LVM_FIRST 166 + ; inline
+: LVM_GETINSERTMARK ( -- n ) LVM_FIRST 167 + ; inline
+: LVM_INSERTMARKHITTEST ( -- n ) LVM_FIRST 168 + ; inline
+: LVM_GETINSERTMARKRECT ( -- n ) LVM_FIRST 169 + ; inline
+: LVM_SETINSERTMARKCOLOR ( -- n ) LVM_FIRST 170 + ; inline
+: LVM_GETINSERTMARKCOLOR ( -- n ) LVM_FIRST 171 + ; inline
+: LVM_SETINFOTIP ( -- n ) LVM_FIRST 173 + ; inline
+: LVM_GETSELECTEDCOLUMN ( -- n ) LVM_FIRST 174 + ; inline
+: LVM_ISGROUPVIEWENABLED ( -- n ) LVM_FIRST 175 + ; inline
+: LVM_GETOUTLINECOLOR ( -- n ) LVM_FIRST 176 + ; inline
+: LVM_SETOUTLINECOLOR ( -- n ) LVM_FIRST 177 + ; inline
+: LVM_CANCELEDITLABEL ( -- n ) LVM_FIRST 179 + ; inline
+: LVM_MAPINDEXTOID ( -- n ) LVM_FIRST 180 + ; inline
+: LVM_MAPIDTOINDEX ( -- n ) LVM_FIRST 181 + ; inline
+: TVM_INSERTITEMA ( -- n ) TV_FIRST 0 + ; inline
+: TVM_INSERTITEMW ( -- n ) TV_FIRST 50 + ; inline
+: TVM_DELETEITEM ( -- n ) TV_FIRST 1 + ; inline
+: TVM_EXPAND ( -- n ) TV_FIRST 2 + ; inline
+: TVM_GETITEMRECT ( -- n ) TV_FIRST 4 + ; inline
+: TVM_GETCOUNT ( -- n ) TV_FIRST 5 + ; inline
+: TVM_GETINDENT ( -- n ) TV_FIRST 6 + ; inline
+: TVM_SETINDENT ( -- n ) TV_FIRST 7 + ; inline
+: TVM_GETIMAGELIST ( -- n ) TV_FIRST 8 + ; inline
+: TVM_SETIMAGELIST ( -- n ) TV_FIRST 9 + ; inline
+: TVM_GETNEXTITEM ( -- n ) TV_FIRST 10 + ; inline
+: TVM_SELECTITEM ( -- n ) TV_FIRST 11 + ; inline
+: TVM_GETITEMA ( -- n ) TV_FIRST 12 + ; inline
+: TVM_GETITEMW ( -- n ) TV_FIRST 62 + ; inline
+: TVM_SETITEMA ( -- n ) TV_FIRST 13 + ; inline
+: TVM_SETITEMW ( -- n ) TV_FIRST 63 + ; inline
+: TVM_EDITLABELA ( -- n ) TV_FIRST 14 + ; inline
+: TVM_EDITLABELW ( -- n ) TV_FIRST 65 + ; inline
+: TVM_GETEDITCONTROL ( -- n ) TV_FIRST 15 + ; inline
+: TVM_GETVISIBLECOUNT ( -- n ) TV_FIRST 16 + ; inline
+: TVM_HITTEST ( -- n ) TV_FIRST 17 + ; inline
+: TVM_CREATEDRAGIMAGE ( -- n ) TV_FIRST 18 + ; inline
+: TVM_SORTCHILDREN ( -- n ) TV_FIRST 19 + ; inline
+: TVM_ENSUREVISIBLE ( -- n ) TV_FIRST 20 + ; inline
+: TVM_SORTCHILDRENCB ( -- n ) TV_FIRST 21 + ; inline
+: TVM_ENDEDITLABELNOW ( -- n ) TV_FIRST 22 + ; inline
+: TVM_GETISEARCHSTRINGA ( -- n ) TV_FIRST 23 + ; inline
+: TVM_GETISEARCHSTRINGW ( -- n ) TV_FIRST 64 + ; inline
+: TVM_SETTOOLTIPS ( -- n ) TV_FIRST 24 + ; inline
+: TVM_GETTOOLTIPS ( -- n ) TV_FIRST 25 + ; inline
+: TVM_SETINSERTMARK ( -- n ) TV_FIRST 26 + ; inline
+ALIAS: TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+ALIAS: TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+: TVM_SETITEMHEIGHT ( -- n ) TV_FIRST 27 + ; inline
+: TVM_GETITEMHEIGHT ( -- n ) TV_FIRST 28 + ; inline
+: TVM_SETBKCOLOR ( -- n ) TV_FIRST 29 + ; inline
+: TVM_SETTEXTCOLOR ( -- n ) TV_FIRST 30 + ; inline
+: TVM_GETBKCOLOR ( -- n ) TV_FIRST 31 + ; inline
+: TVM_GETTEXTCOLOR ( -- n ) TV_FIRST 32 + ; inline
+: TVM_SETSCROLLTIME ( -- n ) TV_FIRST 33 + ; inline
+: TVM_GETSCROLLTIME ( -- n ) TV_FIRST 34 + ; inline
+: TVM_SETINSERTMARKCOLOR ( -- n ) TV_FIRST 37 + ; inline
+: TVM_GETINSERTMARKCOLOR ( -- n ) TV_FIRST 38 + ; inline
+: TVM_GETITEMSTATE ( -- n ) TV_FIRST 39 + ; inline
+: TVM_SETLINECOLOR ( -- n ) TV_FIRST 40 + ; inline
+: TVM_GETLINECOLOR ( -- n ) TV_FIRST 41 + ; inline
+: TVM_MAPACCIDTOHTREEITEM ( -- n ) TV_FIRST 42 + ; inline
+: TVM_MAPHTREEITEMTOACCID ( -- n ) TV_FIRST 43 + ; inline
+: CBEM_INSERTITEMA ( -- n ) WM_USER 1 + ; inline
+: CBEM_SETIMAGELIST ( -- n ) WM_USER 2 + ; inline
+: CBEM_GETIMAGELIST ( -- n ) WM_USER 3 + ; inline
+: CBEM_GETITEMA ( -- n ) WM_USER 4 + ; inline
+: CBEM_SETITEMA ( -- n ) WM_USER 5 + ; inline
+ALIAS: CBEM_DELETEITEM CB_DELETESTRING
+: CBEM_GETCOMBOCONTROL ( -- n ) WM_USER 6 + ; inline
+: CBEM_GETEDITCONTROL ( -- n ) WM_USER 7 + ; inline
+: CBEM_SETEXTENDEDSTYLE ( -- n ) WM_USER 14 + ; inline
+: CBEM_GETEXTENDEDSTYLE ( -- n ) WM_USER 9 + ; inline
+ALIAS: CBEM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+ALIAS: CBEM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+: CBEM_SETEXSTYLE ( -- n ) WM_USER 8 + ; inline
+: CBEM_GETEXSTYLE ( -- n ) WM_USER 9 + ; inline
+: CBEM_HASEDITCHANGED ( -- n ) WM_USER 10 + ; inline
+: CBEM_INSERTITEMW ( -- n ) WM_USER 11 + ; inline
+: CBEM_SETITEMW ( -- n ) WM_USER 12 + ; inline
+: CBEM_GETITEMW ( -- n ) WM_USER 13 + ; inline
+: TCM_GETIMAGELIST ( -- n ) TCM_FIRST 2 + ; inline
+: TCM_SETIMAGELIST ( -- n ) TCM_FIRST 3 + ; inline
+: TCM_GETITEMCOUNT ( -- n ) TCM_FIRST 4 + ; inline
+: TCM_GETITEMA ( -- n ) TCM_FIRST 5 + ; inline
+: TCM_GETITEMW ( -- n ) TCM_FIRST 60 + ; inline
+: TCM_SETITEMA ( -- n ) TCM_FIRST 6 + ; inline
+: TCM_SETITEMW ( -- n ) TCM_FIRST 61 + ; inline
+: TCM_INSERTITEMA ( -- n ) TCM_FIRST 7 + ; inline
+: TCM_INSERTITEMW ( -- n ) TCM_FIRST 62 + ; inline
+: TCM_DELETEITEM ( -- n ) TCM_FIRST 8 + ; inline
+: TCM_DELETEALLITEMS ( -- n ) TCM_FIRST 9 + ; inline
+: TCM_GETITEMRECT ( -- n ) TCM_FIRST 10 + ; inline
+: TCM_GETCURSEL ( -- n ) TCM_FIRST 11 + ; inline
+: TCM_SETCURSEL ( -- n ) TCM_FIRST 12 + ; inline
+: TCM_HITTEST ( -- n ) TCM_FIRST 13 + ; inline
+: TCM_SETITEMEXTRA ( -- n ) TCM_FIRST 14 + ; inline
+: TCM_ADJUSTRECT ( -- n ) TCM_FIRST 40 + ; inline
+: TCM_SETITEMSIZE ( -- n ) TCM_FIRST 41 + ; inline
+: TCM_REMOVEIMAGE ( -- n ) TCM_FIRST 42 + ; inline
+: TCM_SETPADDING ( -- n ) TCM_FIRST 43 + ; inline
+: TCM_GETROWCOUNT ( -- n ) TCM_FIRST 44 + ; inline
+: TCM_GETTOOLTIPS ( -- n ) TCM_FIRST 45 + ; inline
+: TCM_SETTOOLTIPS ( -- n ) TCM_FIRST 46 + ; inline
+: TCM_GETCURFOCUS ( -- n ) TCM_FIRST 47 + ; inline
+: TCM_SETCURFOCUS ( -- n ) TCM_FIRST 48 + ; inline
+: TCM_SETMINTABWIDTH ( -- n ) TCM_FIRST 49 + ; inline
+: TCM_DESELECTALL ( -- n ) TCM_FIRST 50 + ; inline
+: TCM_HIGHLIGHTITEM ( -- n ) TCM_FIRST 51 + ; inline
+: TCM_SETEXTENDEDSTYLE ( -- n ) TCM_FIRST 52 + ; inline
+: TCM_GETEXTENDEDSTYLE ( -- n ) TCM_FIRST 53 + ; inline
+ALIAS: TCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+ALIAS: TCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+: ACM_OPENA ( -- n ) WM_USER 100 + ; inline
+: ACM_OPENW ( -- n ) WM_USER 103 + ; inline
+: ACM_PLAY ( -- n ) WM_USER 101 + ; inline
+: ACM_STOP ( -- n ) WM_USER 102 + ; inline
+CONSTANT: MCM_FIRST HEX: 1000
+: MCM_GETCURSEL ( -- n ) MCM_FIRST 1 + ; inline
+: MCM_SETCURSEL ( -- n ) MCM_FIRST 2 + ; inline
+: MCM_GETMAXSELCOUNT ( -- n ) MCM_FIRST 3 + ; inline
+: MCM_SETMAXSELCOUNT ( -- n ) MCM_FIRST 4 + ; inline
+: MCM_GETSELRANGE ( -- n ) MCM_FIRST 5 + ; inline
+: MCM_SETSELRANGE ( -- n ) MCM_FIRST 6 + ; inline
+: MCM_GETMONTHRANGE ( -- n ) MCM_FIRST 7 + ; inline
+: MCM_SETDAYSTATE ( -- n ) MCM_FIRST 8 + ; inline
+: MCM_GETMINREQRECT ( -- n ) MCM_FIRST 9 + ; inline
+: MCM_SETCOLOR ( -- n ) MCM_FIRST 10 + ; inline
+: MCM_GETCOLOR ( -- n ) MCM_FIRST 11 + ; inline
+: MCM_SETTODAY ( -- n ) MCM_FIRST 12 + ; inline
+: MCM_GETTODAY ( -- n ) MCM_FIRST 13 + ; inline
+: MCM_HITTEST ( -- n ) MCM_FIRST 14 + ; inline
+: MCM_SETFIRSTDAYOFWEEK ( -- n ) MCM_FIRST 15 + ; inline
+: MCM_GETFIRSTDAYOFWEEK ( -- n ) MCM_FIRST 16 + ; inline
+: MCM_GETRANGE ( -- n ) MCM_FIRST 17 + ; inline
+: MCM_SETRANGE ( -- n ) MCM_FIRST 18 + ; inline
+: MCM_GETMONTHDELTA ( -- n ) MCM_FIRST 19 + ; inline
+: MCM_SETMONTHDELTA ( -- n ) MCM_FIRST 20 + ; inline
+: MCM_GETMAXTODAYWIDTH ( -- n ) MCM_FIRST 21 + ; inline
+ALIAS: MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+ALIAS: MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+CONSTANT: DTM_FIRST HEX: 1000
+: DTM_GETSYSTEMTIME ( -- n ) DTM_FIRST 1 + ; inline
+: DTM_SETSYSTEMTIME ( -- n ) DTM_FIRST 2 + ; inline
+: DTM_GETRANGE ( -- n ) DTM_FIRST 3 + ; inline
+: DTM_SETRANGE ( -- n ) DTM_FIRST 4 + ; inline
+: DTM_SETFORMATA ( -- n ) DTM_FIRST 5 + ; inline
+: DTM_SETFORMATW ( -- n ) DTM_FIRST 50 + ; inline
+: DTM_SETMCCOLOR ( -- n ) DTM_FIRST 6 + ; inline
+: DTM_GETMCCOLOR ( -- n ) DTM_FIRST 7 + ; inline
+: DTM_GETMONTHCAL ( -- n ) DTM_FIRST 8 + ; inline
+: DTM_SETMCFONT ( -- n ) DTM_FIRST 9 + ; inline
+: DTM_GETMCFONT ( -- n ) DTM_FIRST 10 + ; inline
+: PGM_SETCHILD ( -- n ) PGM_FIRST 1 + ; inline
+: PGM_RECALCSIZE ( -- n ) PGM_FIRST 2 + ; inline
+: PGM_FORWARDMOUSE ( -- n ) PGM_FIRST 3 + ; inline
+: PGM_SETBKCOLOR ( -- n ) PGM_FIRST 4 + ; inline
+: PGM_GETBKCOLOR ( -- n ) PGM_FIRST 5 + ; inline
+: PGM_SETBORDER ( -- n ) PGM_FIRST 6 + ; inline
+: PGM_GETBORDER ( -- n ) PGM_FIRST 7 + ; inline
+: PGM_SETPOS ( -- n ) PGM_FIRST 8 + ; inline
+: PGM_GETPOS ( -- n ) PGM_FIRST 9 + ; inline
+: PGM_SETBUTTONSIZE ( -- n ) PGM_FIRST 10 + ; inline
+: PGM_GETBUTTONSIZE ( -- n ) PGM_FIRST 11 + ; inline
+: PGM_GETBUTTONSTATE ( -- n ) PGM_FIRST 12 + ; inline
+CONSTANT: PGM_GETDROPTARGET CCM_GETDROPTARGET
+: BCM_GETIDEALSIZE ( -- n ) BCM_FIRST 1 + ; inline
+: BCM_SETIMAGELIST ( -- n ) BCM_FIRST 2 + ; inline
+: BCM_GETIMAGELIST ( -- n ) BCM_FIRST 3 + ; inline
+: BCM_SETTEXTMARGIN ( -- n ) BCM_FIRST 4 + ; inline
+: BCM_GETTEXTMARGIN ( -- n ) BCM_FIRST 5 + ; inline
+: EM_SETCUEBANNER ( -- n ) ECM_FIRST 1 + ; inline
+: EM_GETCUEBANNER ( -- n ) ECM_FIRST 2 + ; inline
+: EM_SHOWBALLOONTIP ( -- n ) ECM_FIRST 3 + ; inline
+: EM_HIDEBALLOONTIP ( -- n ) ECM_FIRST 4 + ; inline
+: CB_SETMINVISIBLE ( -- n ) CBM_FIRST 1 + ; inline
+: CB_GETMINVISIBLE ( -- n ) CBM_FIRST 2 + ; inline
+: LM_HITTEST ( -- n ) WM_USER HEX: 0300 + ; inline
+: LM_GETIDEALHEIGHT ( -- n ) WM_USER HEX: 0301 + ; inline
+: LM_SETITEM ( -- n ) WM_USER HEX: 0302 + ; inline
+: LM_GETITEM ( -- n ) WM_USER HEX: 0303 + ; inline
-: WA_INACTIVE 0 ; inline
-: WA_ACTIVE 1 ; inline
-: WA_CLICKACTIVE 2 ; inline
-: SC_SIZE HEX: f000 ; inline
-: SC_MOVE HEX: f010 ; inline
-: SC_MINIMIZE HEX: f020 ; inline
-: SC_MAXIMIZE HEX: f030 ; inline
-: SC_NEXTWINDOW HEX: f040 ; inline
-: SC_PREVWINDOW HEX: f050 ; inline
-: SC_CLOSE HEX: f060 ; inline
-: SC_VSCROLL HEX: f070 ; inline
-: SC_HSCROLL HEX: f080 ; inline
-: SC_MOUSEMENU HEX: f090 ; inline
-: SC_KEYMENU HEX: f100 ; inline
-: SC_ARRANGE HEX: f110 ; inline
-: SC_RESTORE HEX: f120 ; inline
-: SC_TASKLIST HEX: f130 ; inline
-: SC_SCREENSAVE HEX: f140 ; inline
-: SC_HOTKEY HEX: f150 ; inline
+CONSTANT: WA_INACTIVE 0
+CONSTANT: WA_ACTIVE 1
+CONSTANT: WA_CLICKACTIVE 2
+
+CONSTANT: SC_SIZE HEX: f000
+CONSTANT: SC_MOVE HEX: f010
+CONSTANT: SC_MINIMIZE HEX: f020
+CONSTANT: SC_MAXIMIZE HEX: f030
+CONSTANT: SC_NEXTWINDOW HEX: f040
+CONSTANT: SC_PREVWINDOW HEX: f050
+CONSTANT: SC_CLOSE HEX: f060
+CONSTANT: SC_VSCROLL HEX: f070
+CONSTANT: SC_HSCROLL HEX: f080
+CONSTANT: SC_MOUSEMENU HEX: f090
+CONSTANT: SC_KEYMENU HEX: f100
+CONSTANT: SC_ARRANGE HEX: f110
+CONSTANT: SC_RESTORE HEX: f120
+CONSTANT: SC_TASKLIST HEX: f130
+CONSTANT: SC_SCREENSAVE HEX: f140
+CONSTANT: SC_HOTKEY HEX: f150
: guid= ( a b -- ? )
[ 16 memory>byte-array ] bi@ = ;
-: GUID-STRING-LENGTH
+: GUID-STRING-LENGTH ( -- n )
"{01234567-89ab-cdef-0123-456789abcdef}" length ; inline
:: (guid-section>guid) ( string guid start end quot -- )
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
-
-
-: ERROR_FILE_NOT_FOUND 2 ; inline
-
-: SHGFP_TYPE_CURRENT 0 ; inline
-: SHGFP_TYPE_DEFAULT 1 ; 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
+
+
+CONSTANT: ERROR_FILE_NOT_FOUND 2
+
+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 ;
: application-data ( -- str )
CSIDL_APPDATA shell32-directory ;
-: windows ( -- str )
+: windows-directory ( -- str )
CSIDL_WINDOWS shell32-directory ;
: programs ( -- str )
: 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
FUNCTION: HRESULT SHGetDesktopFolder ( IShellFolder** ppshf ) ;
FUNCTION: UINT DragQueryFileW ( HDROP hDrop, UINT iFile, LPWSTR lpszFile, UINT cch ) ;
-: DragQueryFile DragQueryFileW ; inline
-
+ALIAS: DragQueryFile DragQueryFileW
! Copyright (C) 2005, 2006 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.syntax parser namespaces kernel math
-windows.types generalizations math.bitwise alias ;
+windows.types generalizations math.bitwise alias constants ;
IN: windows.user32
! HKL for ActivateKeyboardLayout
-: HKL_PREV 0 ; inline
-: HKL_NEXT 1 ; inline
-
-: CW_USEDEFAULT HEX: 80000000 ; inline
-
-: WS_OVERLAPPED HEX: 00000000 ; inline
-: WS_POPUP HEX: 80000000 ; inline
-: WS_CHILD HEX: 40000000 ; inline
-: WS_MINIMIZE HEX: 20000000 ; inline
-: WS_VISIBLE HEX: 10000000 ; inline
-: WS_DISABLED HEX: 08000000 ; inline
-: WS_CLIPSIBLINGS HEX: 04000000 ; inline
-: WS_CLIPCHILDREN HEX: 02000000 ; inline
-: WS_MAXIMIZE HEX: 01000000 ; inline
-: WS_CAPTION HEX: 00C00000 ; inline
-: WS_BORDER HEX: 00800000 ; inline
-: WS_DLGFRAME HEX: 00400000 ; inline
-: WS_VSCROLL HEX: 00200000 ; inline
-: WS_HSCROLL HEX: 00100000 ; inline
-: WS_SYSMENU HEX: 00080000 ; inline
-: WS_THICKFRAME HEX: 00040000 ; inline
-: WS_GROUP HEX: 00020000 ; inline
-: WS_TABSTOP HEX: 00010000 ; inline
-: WS_MINIMIZEBOX HEX: 00020000 ; inline
-: WS_MAXIMIZEBOX HEX: 00010000 ; inline
+CONSTANT: HKL_PREV 0
+CONSTANT: HKL_NEXT 1
+
+CONSTANT: CW_USEDEFAULT HEX: 80000000
+
+CONSTANT: WS_OVERLAPPED HEX: 00000000
+CONSTANT: WS_POPUP HEX: 80000000
+CONSTANT: WS_CHILD HEX: 40000000
+CONSTANT: WS_MINIMIZE HEX: 20000000
+CONSTANT: WS_VISIBLE HEX: 10000000
+CONSTANT: WS_DISABLED HEX: 08000000
+CONSTANT: WS_CLIPSIBLINGS HEX: 04000000
+CONSTANT: WS_CLIPCHILDREN HEX: 02000000
+CONSTANT: WS_MAXIMIZE HEX: 01000000
+CONSTANT: WS_CAPTION HEX: 00C00000
+CONSTANT: WS_BORDER HEX: 00800000
+CONSTANT: WS_DLGFRAME HEX: 00400000
+CONSTANT: WS_VSCROLL HEX: 00200000
+CONSTANT: WS_HSCROLL HEX: 00100000
+CONSTANT: WS_SYSMENU HEX: 00080000
+CONSTANT: WS_THICKFRAME HEX: 00040000
+CONSTANT: WS_GROUP HEX: 00020000
+CONSTANT: WS_TABSTOP HEX: 00010000
+CONSTANT: WS_MINIMIZEBOX HEX: 00020000
+CONSTANT: WS_MAXIMIZEBOX HEX: 00010000
! Common window styles
: WS_OVERLAPPEDWINDOW ( -- n )
: WS_POPUPWINDOW ( -- n )
{ WS_POPUP WS_BORDER WS_SYSMENU } flags ; foldable
-: WS_CHILDWINDOW WS_CHILD ; inline
+ALIAS: WS_CHILDWINDOW WS_CHILD
-: WS_TILED WS_OVERLAPPED ; inline
-: WS_ICONIC WS_MINIMIZE ; inline
-: WS_SIZEBOX WS_THICKFRAME ; inline
-: WS_TILEDWINDOW WS_OVERLAPPEDWINDOW ; inline
+ALIAS: WS_TILED WS_OVERLAPPED
+ALIAS: WS_ICONIC WS_MINIMIZE
+ALIAS: WS_SIZEBOX WS_THICKFRAME
+ALIAS: WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
! Extended window styles
-: WS_EX_DLGMODALFRAME HEX: 00000001 ; inline
-: WS_EX_NOPARENTNOTIFY HEX: 00000004 ; inline
-: WS_EX_TOPMOST HEX: 00000008 ; inline
-: WS_EX_ACCEPTFILES HEX: 00000010 ; inline
-: WS_EX_TRANSPARENT HEX: 00000020 ; inline
-: WS_EX_MDICHILD HEX: 00000040 ; inline
-: WS_EX_TOOLWINDOW HEX: 00000080 ; inline
-: WS_EX_WINDOWEDGE HEX: 00000100 ; inline
-: WS_EX_CLIENTEDGE HEX: 00000200 ; inline
-: WS_EX_CONTEXTHELP HEX: 00000400 ; inline
-
-: WS_EX_RIGHT HEX: 00001000 ; inline
-: WS_EX_LEFT HEX: 00000000 ; inline
-: WS_EX_RTLREADING HEX: 00002000 ; inline
-: WS_EX_LTRREADING HEX: 00000000 ; inline
-: WS_EX_LEFTSCROLLBAR HEX: 00004000 ; inline
-: WS_EX_RIGHTSCROLLBAR HEX: 00000000 ; inline
-: WS_EX_CONTROLPARENT HEX: 00010000 ; inline
-: WS_EX_STATICEDGE HEX: 00020000 ; inline
-: WS_EX_APPWINDOW HEX: 00040000 ; inline
+CONSTANT: WS_EX_DLGMODALFRAME HEX: 00000001
+CONSTANT: WS_EX_NOPARENTNOTIFY HEX: 00000004
+CONSTANT: WS_EX_TOPMOST HEX: 00000008
+CONSTANT: WS_EX_ACCEPTFILES HEX: 00000010
+CONSTANT: WS_EX_TRANSPARENT HEX: 00000020
+CONSTANT: WS_EX_MDICHILD HEX: 00000040
+CONSTANT: WS_EX_TOOLWINDOW HEX: 00000080
+CONSTANT: WS_EX_WINDOWEDGE HEX: 00000100
+CONSTANT: WS_EX_CLIENTEDGE HEX: 00000200
+CONSTANT: WS_EX_CONTEXTHELP HEX: 00000400
+
+CONSTANT: WS_EX_RIGHT HEX: 00001000
+CONSTANT: WS_EX_LEFT HEX: 00000000
+CONSTANT: WS_EX_RTLREADING HEX: 00002000
+CONSTANT: WS_EX_LTRREADING HEX: 00000000
+CONSTANT: WS_EX_LEFTSCROLLBAR HEX: 00004000
+CONSTANT: WS_EX_RIGHTSCROLLBAR HEX: 00000000
+CONSTANT: WS_EX_CONTROLPARENT HEX: 00010000
+CONSTANT: WS_EX_STATICEDGE HEX: 00020000
+CONSTANT: WS_EX_APPWINDOW HEX: 00040000
: WS_EX_OVERLAPPEDWINDOW ( -- n )
WS_EX_WINDOWEDGE WS_EX_CLIENTEDGE bitor ; foldable
: WS_EX_PALETTEWINDOW ( -- n )
{ WS_EX_WINDOWEDGE WS_EX_TOOLWINDOW WS_EX_TOPMOST } flags ; foldable
-: CS_VREDRAW HEX: 0001 ; inline
-: CS_HREDRAW HEX: 0002 ; inline
-: CS_DBLCLKS HEX: 0008 ; inline
-: CS_OWNDC HEX: 0020 ; inline
-: CS_CLASSDC HEX: 0040 ; inline
-: CS_PARENTDC HEX: 0080 ; inline
-: CS_NOCLOSE HEX: 0200 ; inline
-: CS_SAVEBITS HEX: 0800 ; inline
-: CS_BYTEALIGNCLIENT HEX: 1000 ; inline
-: CS_BYTEALIGNWINDOW HEX: 2000 ; inline
-: CS_GLOBALCLASS HEX: 4000 ; inline
-
-: COLOR_SCROLLBAR 0 ; inline
-: COLOR_BACKGROUND 1 ; inline
-: COLOR_ACTIVECAPTION 2 ; inline
-: COLOR_INACTIVECAPTION 3 ; inline
-: COLOR_MENU 4 ; inline
-: COLOR_WINDOW 5 ; inline
-: COLOR_WINDOWFRAME 6 ; inline
-: COLOR_MENUTEXT 7 ; inline
-: COLOR_WINDOWTEXT 8 ; inline
-: COLOR_CAPTIONTEXT 9 ; inline
-: COLOR_ACTIVEBORDER 10 ; inline
-: COLOR_INACTIVEBORDER 11 ; inline
-: COLOR_APPWORKSPACE 12 ; inline
-: COLOR_HIGHLIGHT 13 ; inline
-: COLOR_HIGHLIGHTTEXT 14 ; inline
-: COLOR_BTNFACE 15 ; inline
-: COLOR_BTNSHADOW 16 ; inline
-: COLOR_GRAYTEXT 17 ; inline
-: COLOR_BTNTEXT 18 ; inline
-: COLOR_INACTIVECAPTIONTEXT 19 ; inline
-: COLOR_BTNHIGHLIGHT 20 ; inline
-
-: IDI_APPLICATION 32512 ; inline
-: IDI_HAND 32513 ; inline
-: IDI_QUESTION 32514 ; inline
-: IDI_EXCLAMATION 32515 ; inline
-: IDI_ASTERISK 32516 ; inline
-: IDI_WINLOGO 32517 ; inline
+CONSTANT: CS_VREDRAW HEX: 0001
+CONSTANT: CS_HREDRAW HEX: 0002
+CONSTANT: CS_DBLCLKS HEX: 0008
+CONSTANT: CS_OWNDC HEX: 0020
+CONSTANT: CS_CLASSDC HEX: 0040
+CONSTANT: CS_PARENTDC HEX: 0080
+CONSTANT: CS_NOCLOSE HEX: 0200
+CONSTANT: CS_SAVEBITS HEX: 0800
+CONSTANT: CS_BYTEALIGNCLIENT HEX: 1000
+CONSTANT: CS_BYTEALIGNWINDOW HEX: 2000
+CONSTANT: CS_GLOBALCLASS HEX: 4000
+
+CONSTANT: COLOR_SCROLLBAR 0
+CONSTANT: COLOR_BACKGROUND 1
+CONSTANT: COLOR_ACTIVECAPTION 2
+CONSTANT: COLOR_INACTIVECAPTION 3
+CONSTANT: COLOR_MENU 4
+CONSTANT: COLOR_WINDOW 5
+CONSTANT: COLOR_WINDOWFRAME 6
+CONSTANT: COLOR_MENUTEXT 7
+CONSTANT: COLOR_WINDOWTEXT 8
+CONSTANT: COLOR_CAPTIONTEXT 9
+CONSTANT: COLOR_ACTIVEBORDER 10
+CONSTANT: COLOR_INACTIVEBORDER 11
+CONSTANT: COLOR_APPWORKSPACE 12
+CONSTANT: COLOR_HIGHLIGHT 13
+CONSTANT: COLOR_HIGHLIGHTTEXT 14
+CONSTANT: COLOR_BTNFACE 15
+CONSTANT: COLOR_BTNSHADOW 16
+CONSTANT: COLOR_GRAYTEXT 17
+CONSTANT: COLOR_BTNTEXT 18
+CONSTANT: COLOR_INACTIVECAPTIONTEXT 19
+CONSTANT: COLOR_BTNHIGHLIGHT 20
+
+CONSTANT: IDI_APPLICATION 32512
+CONSTANT: IDI_HAND 32513
+CONSTANT: IDI_QUESTION 32514
+CONSTANT: IDI_EXCLAMATION 32515
+CONSTANT: IDI_ASTERISK 32516
+CONSTANT: IDI_WINLOGO 32517
! ShowWindow() Commands
-: SW_HIDE 0 ; inline
-: SW_SHOWNORMAL 1 ; inline
-: SW_NORMAL 1 ; inline
-: SW_SHOWMINIMIZED 2 ; inline
-: SW_SHOWMAXIMIZED 3 ; inline
-: SW_MAXIMIZE 3 ; inline
-: SW_SHOWNOACTIVATE 4 ; inline
-: SW_SHOW 5 ; inline
-: SW_MINIMIZE 6 ; inline
-: SW_SHOWMINNOACTIVE 7 ; inline
-: SW_SHOWNA 8 ; inline
-: SW_RESTORE 9 ; inline
-: SW_SHOWDEFAULT 10 ; inline
-: SW_FORCEMINIMIZE 11 ; inline
-: SW_MAX 11 ; inline
+CONSTANT: SW_HIDE 0
+CONSTANT: SW_SHOWNORMAL 1
+CONSTANT: SW_NORMAL 1
+CONSTANT: SW_SHOWMINIMIZED 2
+CONSTANT: SW_SHOWMAXIMIZED 3
+CONSTANT: SW_MAXIMIZE 3
+CONSTANT: SW_SHOWNOACTIVATE 4
+CONSTANT: SW_SHOW 5
+CONSTANT: SW_MINIMIZE 6
+CONSTANT: SW_SHOWMINNOACTIVE 7
+CONSTANT: SW_SHOWNA 8
+CONSTANT: SW_RESTORE 9
+CONSTANT: SW_SHOWDEFAULT 10
+CONSTANT: SW_FORCEMINIMIZE 11
+CONSTANT: SW_MAX 11
! PeekMessage
-: PM_NOREMOVE 0 ; inline
-: PM_REMOVE 1 ; inline
-: PM_NOYIELD 2 ; inline
+CONSTANT: PM_NOREMOVE 0
+CONSTANT: PM_REMOVE 1
+CONSTANT: PM_NOYIELD 2
! : PM_QS_INPUT (QS_INPUT << 16) ;
! : PM_QS_POSTMESSAGE ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16) ;
! : PM_QS_PAINT (QS_PAINT << 16) ;
: MB_ICONQUESTION HEX: 00000020 ; inline
: MB_OK HEX: 00000000 ; inline
-: FVIRTKEY TRUE ; inline
+ALIAS: FVIRTKEY TRUE
: FNOINVERT 2 ; inline
: FSHIFT 4 ; inline
: FCONTROL 8 ; inline
ALIAS: CreateWindowEx CreateWindowExW
-: CreateWindow 0 12 -nrot CreateWindowEx ; inline
+: CreateWindow ( a b c d e f g h i j k -- hwnd ) 0 12 -nrot CreateWindowEx ; inline
! FUNCTION: CreateWindowStationA
! FUNCTION: SetKeyboardState
! type is ignored
FUNCTION: void SetLastErrorEx ( DWORD dwErrCode, DWORD dwType ) ;
-: SetLastError 0 SetLastErrorEx ; inline
+: SetLastError ( errcode -- ) 0 SetLastErrorEx ; inline
! FUNCTION: SetLayeredWindowAttributes
! FUNCTION: SetLogonNotifyWindow
! FUNCTION: SetMenu
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.strings alien.syntax arrays
byte-arrays kernel math sequences windows.types windows.kernel32
-windows.errors windows math.bitwise alias io.encodings.utf16n ;
+windows.errors windows math.bitwise alias io.encodings.utf16n
+alias constants ;
IN: windows.winsock
USE: libc
: SO_USELOOPBACK HEX: 40 ; inline
: SO_LINGER HEX: 80 ; inline
: SO_OOBINLINE HEX: 100 ; inline
-: SO_DONTLINGER SO_LINGER bitnot ; inline
+: SO_DONTLINGER ( -- n ) SO_LINGER bitnot ; inline
: SO_SNDBUF HEX: 1001 ; inline
: SO_RCVBUF HEX: 1002 ; inline
: AF_CHAOS 5 ; inline
: AF_NS 6 ; inline
: AF_ISO 7 ; inline
-: AF_OSI AF_ISO ; inline
+ALIAS: AF_OSI AF_ISO
: AF_ECMA 8 ; inline
: AF_DATAKIT 9 ; inline
: AF_CCITT 10 ; inline
: IPPROTO_UDP 17 ; inline
: IPPROTO_RM 113 ; inline
-: WSA_FLAG_OVERLAPPED 1 ; inline
-: WSA_WAIT_EVENT_0 WAIT_OBJECT_0 ; inline
-: WSA_MAXIMUM_WAIT_EVENTS MAXIMUM_WAIT_OBJECTS ; inline
-: WSA_INVALID_EVENT f ; inline
-: WSA_WAIT_FAILED -1 ; inline
-: WSA_WAIT_IO_COMPLETION WAIT_IO_COMPLETION ; inline
-: WSA_WAIT_TIMEOUT WAIT_TIMEOUT ; inline
-: WSA_INFINITE INFINITE ; inline
-: WSA_IO_PENDING ERROR_IO_PENDING ; inline
+CONSTANT: WSA_FLAG_OVERLAPPED 1
+ALIAS: WSA_WAIT_EVENT_0 WAIT_OBJECT_0
+ALIAS: WSA_MAXIMUM_WAIT_EVENTS MAXIMUM_WAIT_OBJECTS
+CONSTANT: WSA_INVALID_EVENT f
+CONSTANT: WSA_WAIT_FAILED -1
+ALIAS: WSA_WAIT_IO_COMPLETION WAIT_IO_COMPLETION
+ALIAS: WSA_WAIT_TIMEOUT WAIT_TIMEOUT
+ALIAS: WSA_INFINITE INFINITE
+ALIAS: WSA_IO_PENDING ERROR_IO_PENDING
: INADDR_ANY 0 ; inline
-: INVALID_SOCKET -1 <alien> ; inline
+: INVALID_SOCKET ( -- alien ) -1 <alien> ; inline
: SOCKET_ERROR -1 ; inline
: SD_RECV 0 ; inline
"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 ;
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 ;
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 ;
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? ;
} 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 ;
"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 -- )
{ 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>
- [ XVisualInfo-depth InputOutput ] keep
- [ XVisualInfo-visual create-window-mask ] keep
- window-attributes XCreateWindow
- dup r> auto-position ;
+ 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
+ ] dip auto-position ;
: glx-window ( loc dim -- window glx )
GLX_DOUBLEBUFFER 1array choose-visual
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
TYPEDEF: void* Window**
TYPEDEF: void* Atom**
-: <XID> <ulong> ; inline
-: <Window> <XID> ; inline
-: <Drawable> <XID> ; inline
-: <KeySym> <XID> ; inline
-: <Atom> <ulong> ; inline
-
-: *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>
+
+ALIAS: *XID *ulong
+ALIAS: *Window *XID
+ALIAS: *Drawable *XID
+ALIAS: *KeySym *XID
+ALIAS: *Atom *ulong
!
! 2 - Display Functions
!
! 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" }
! 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" }
! 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
! 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
: 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
-
-: 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
+: 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 ( -- 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" }
! !!! 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" ;
{ $see-also <base64> } ;
HELP: <rpc-method>
-{ $values { "name" "a string" } { "params" "a sequence" } }
+{ $values { "name" "a string" } { "params" "a sequence" } { "rpc-method" rpc-method } }
{ $description "creates a tuple reprsenting a method call which can be translated using send-rpc into an XML-RPC document" }
{ $see-also rpc-method <rpc-response> <rpc-fault> } ;
{ $see-also <rpc-method> rpc-response rpc-fault } ;
HELP: <rpc-response>
-{ $values { "params" "a sequence" } }
+{ $values { "params" "a sequence" } { "rpc-response" rpc-response } }
{ $description "creates a tuple representing a data response in XML-RPC" }
{ $see-also rpc-response <rpc-method> <rpc-fault> } ;
{ $see-also <rpc-response> rpc-method rpc-fault } ;
HELP: <rpc-fault>
-{ $values { "code" "an integer" } { "string" "a string" } }
+{ $values { "code" "an integer" } { "string" "a string" } { "rpc-fault" rpc-fault } }
{ $description "creates a tuple representing an exception in RPC, to be returned to the caller. The code is a number representing what type of error it is, and the string is a description" }
{ $see-also rpc-fault <rpc-method> <rpc-response> } ;
{ $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)" }\r
{ $see-also <name> tag } ;\r
\r
-HELP: <name> ( space tag url -- name )\r
-{ $values { "space" "a string" } { "tag" "a string" } { "url" "a string" }\r
+HELP: <name>\r
+{ $values { "space" "a string" } { "main" "a string" } { "url" "a string" }\r
{ "name" "an XML tag name" } }\r
{ $description "creates a name tuple with the name-space space and the tag-name tag and the tag-url url." }\r
{ $see-also name <tag> } ;\r
\r
HELP: <xml>\r
{ $values { "prolog" "an XML prolog" } { "before" "a sequence of XML elements" }\r
-{ "main" tag } { "after" "a sequence of XML elements" } { "xml" "an XML document" } }\r
+{ "body" tag } { "after" "a sequence of XML elements" } { "xml" "an XML document" } }\r
{ $description "creates an XML document, delegating to the main tag, with the specified prolog, before, and after" }\r
{ $see-also xml <tag> } ;\r
\r
{ $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)" }\r
{ $see-also <prolog> xml } ;\r
\r
-HELP: <prolog> ( version encoding standalone -- prolog )\r
+HELP: <prolog>\r
{ $values { "version" "a string, 1.0 or 1.1" }\r
{ "encoding" "a string" } { "standalone" "a boolean" } { "prolog" "an XML prolog" } }\r
{ $description "creates an XML prolog tuple" }\r
{ $class-description "represents a comment in XML. Has one slot, text, which contains the string of the comment" }\r
{ $see-also <comment> } ;\r
\r
-HELP: <comment> ( text -- comment )\r
+HELP: <comment>\r
{ $values { "text" "a string" } { "comment" "a comment" } }\r
{ $description "creates an XML comment tuple" }\r
{ $see-also comment } ;\r
{ $class-description "represents an XML instruction, such as <?xsl stylesheet='foo.xml'?>. Contains one slot, text, which contains the string between the question marks." }\r
{ $see-also <instruction> } ;\r
\r
-HELP: <instruction> ( text -- instruction )\r
+HELP: <instruction>\r
{ $values { "text" "a string" } { "instruction" "an XML instruction" } }\r
{ $description "creates an XML parsing instruction, such as <?xsl stylesheet='foo.xml'?>." }\r
{ $see-also instruction } ;\r
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 ;
] 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? ;
: 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* [
"((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
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
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 [
{ $values { "quot" "a quotation" } }
{ $description "Runs a quotation. Throws an error if the quotation attempts to take input values from the stack, or leave outputs on the stack." } ;
-HELP: <continuation>
-{ $description "Constructs a new continuation." }
-{ $notes "User code should call " { $link continuation } " instead." } ;
-
HELP: attempt-all
{ $values
{ "seq" sequence } { "quot" quotation }
] change-at ;
: flatten-method ( class method assoc -- )
- [ dup flatten-class keys swap ] 2dip [
+ [ [ flatten-class keys ] keep ] 2dip [
[ spin ] dip push-method
] 3curry each ;
[ 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
<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
{ $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
ABOUT: "io.streams.c"
-HELP: <c-reader> ( in -- stream )
-{ $values { "in" "a C FILE* handle" } { "stream" "a new stream" } }
+HELP: <c-reader>
+{ $values { "handle" "a C FILE* handle" } { "stream" "a new stream" } }
{ $description "Creates a stream which reads data by calling C standard library functions." }
{ $notes "Usually C streams are only used during bootstrap, and non-blocking OS-specific I/O routines are used during normal operation." } ;
-HELP: <c-writer> ( out -- stream )
-{ $values { "out" "a C FILE* handle" } { "stream" "a new stream" } }
+HELP: <c-writer>
+{ $values { "handle" "a C FILE* handle" } { "stream" "a new stream" } }
{ $description "Creates a stream which writes data by calling C standard library functions." }
{ $notes "Usually C streams are only used during bootstrap, and non-blocking OS-specific I/O routines are used during normal operation." } ;
: cell-bits ( -- n ) 8 cells ; inline
-: bootstrap-cell \ cell get cell or ; inline
+: bootstrap-cell ( -- n ) \ cell get cell or ; inline
-: bootstrap-cells bootstrap-cell * ; inline
+: bootstrap-cells ( m -- n ) bootstrap-cell * ; inline
-: bootstrap-cell-bits 8 bootstrap-cells ; inline
+: bootstrap-cell-bits ( -- n ) 8 bootstrap-cells ; inline
: first-bignum ( -- n )
cell-bits (first-bignum) ; inline
} ;
HELP: ?1+
+{ $values { "x" { $maybe number } } { "y" number } }
{ $description "If the input is not " { $link f } ", adds one. Otherwise, outputs a " { $snippet "0" } "." } ;
HELP: sq
: recip ( x -- y ) 1 swap / ; inline
: sgn ( x -- n ) dup 0 < [ drop -1 ] [ 0 > 1 0 ? ] if ; inline
-: ?1+ [ 1+ ] [ 0 ] if* ; inline
+: ?1+ ( x -- y ) [ 1+ ] [ 0 ] if* ; inline
: rem ( x y -- z ) abs tuck mod over + swap mod ; foldable
<PRIVATE
-: iterate-prep 0 -rot ; inline
+: iterate-prep ( n quot -- i n quot ) 0 -rot ; inline
-: if-iterate? [ 2over < ] 2dip if ; inline
+: if-iterate? ( i n true false -- ) [ 2over < ] 2dip if ; inline
: iterate-step ( i n quot -- i n quot )
#! Apply quot to i, keep i and quot, hide n.
swap [ 2dup 2slip ] dip swap ; inline
-: iterate-next [ 1+ ] 2dip ; inline
+: iterate-next ( i n quot -- i' n quot ) [ 1+ ] 2dip ; inline
PRIVATE>
<PRIVATE
-: uncurry dup 2 slot swap 3 slot ; inline
+: uncurry ( curry -- obj quot )
+ dup 2 slot swap 3 slot ; inline
-: uncompose dup 2 slot swap 3 slot ; inline
+: uncompose ( compose -- quot quot2 )
+ dup 2 slot swap 3 slot ; inline
PRIVATE>
{ $values { "m" "a non-negative integer" } { "n" "a non-negative integer" } { "seq" "a mutable sequence" } }
{ $description "Unsafe variant of " { $link exchange } " that does not perform bounds checks." } ;
+HELP: first-unsafe
+{ $values { "seq" sequence } { "first" "the first element" } }
+{ $contract "Unsafe variant of " { $link first } " that does not perform bounds checks." } ;
+
HELP: first2-unsafe
{ $values { "seq" sequence } { "first" "the first element" } { "second" "the second element" } }
{ $contract "Unsafe variant of " { $link first2 } " that does not perform bounds checks." } ;
{ reverse <reversed> reverse-here } related-words
-HELP: <reversed> ( seq -- reversed )
+HELP: <reversed>
{ $values { "seq" sequence } { "reversed" "a new sequence" } }
{ $description "Creates an instance of the " { $link reversed } " class." }
{ $see-also "virtual-sequences" } ;
HELP: repetition
{ $class-description "A virtual sequence consisting of " { $snippet "elt" } " repeated " { $snippet "len" } " times. Repetitions are created by calling " { $link <repetition> } "." } ;
-HELP: <repetition> ( len elt -- repetition )
+HELP: <repetition>
{ $values { "len" "a non-negative integer" } { "elt" object } { "repetition" repetition } }
{ $description "Creates a new " { $link repetition } "." }
{ $examples
INSTANCE: integer immutable-sequence
-: first-unsafe
+: first-unsafe ( seq -- first )
0 swap nth-unsafe ; inline
-: first2-unsafe
+: first2-unsafe ( seq -- first second )
[ first-unsafe ] [ 1 swap nth-unsafe ] bi ; inline
-: first3-unsafe
+: first3-unsafe ( seq -- first second third )
[ first2-unsafe ] [ 2 swap nth-unsafe ] bi ; inline
-: first4-unsafe
+: first4-unsafe ( seq -- first second third fourth )
[ first3-unsafe ] [ 3 swap nth-unsafe ] bi ; inline
: exchange-unsafe ( m n seq -- )
: (tail) ( seq n -- from to seq ) over length rot ; inline
-: from-end [ dup length ] dip - ; inline
+: from-end ( seq n -- seq n' ) [ dup length ] dip - ; inline
-: (2sequence)
+: (2sequence) ( obj1 obj2 seq -- seq )
tuck 1 swap set-nth-unsafe
tuck 0 swap set-nth-unsafe ; inline
-: (3sequence)
+: (3sequence) ( obj1 obj2 obj3 seq -- seq )
tuck 2 swap set-nth-unsafe
(2sequence) ; inline
-: (4sequence)
+: (4sequence) ( obj1 obj2 obj3 obj4 seq -- seq )
tuck 3 swap set-nth-unsafe
(3sequence) ; inline
<PRIVATE
: (each) ( seq quot -- n quot' )
- [ dup length swap [ nth-unsafe ] curry ] dip compose ; inline
+ [ [ length ] keep [ nth-unsafe ] curry ] dip compose ; inline
: (collect) ( quot into -- quot' )
[ [ keep ] dip set-nth-unsafe ] 2curry ; inline
over [ 2pusher [ each ] 2dip ] dip tuck [ like ] 2bi@ ; inline
: monotonic? ( seq quot -- ? )
- [ dup length 1- swap ] dip (monotonic) all? ; inline
+ [ [ length 1- ] keep ] dip (monotonic) all? ; inline
: interleave ( seq between quot -- )
- [ (interleave) ] 2curry [ dup length swap ] dip 2each ; inline
+ [ (interleave) ] 2curry [ [ length ] keep ] dip 2each ; inline
: accumulator ( quot -- quot' vec )
V{ } clone [ [ push ] curry compose ] keep ; inline
<PRIVATE
: joined-length ( seq glue -- n )
- [ dup sum-lengths swap length 1 [-] ] dip length * + ;
+ [ [ sum-lengths ] [ length 1 [-] ] bi ] dip length * + ;
PRIVATE>
[ drop define ]
3bi ;
-: create-accessor ( name effect -- word )
- [ "accessors" create dup ] dip
- "declared-effect" set-word-prop ;
-
: reader-quot ( slot-spec -- quot )
[
dup offset>> ,
] [ ] make ;
: reader-word ( name -- word )
- ">>" append (( object -- value )) create-accessor
+ ">>" append "accessors" create
+ dup (( object -- value )) "declared-effect" set-word-prop
dup t "reader" set-word-prop ;
: reader-props ( slot-spec -- assoc )
define-typecheck ;
: writer-word ( name -- word )
- "(>>" ")" surround (( value object -- )) create-accessor
+ "(>>" ")" surround "accessors" create
+ dup (( value object -- )) "declared-effect" set-word-prop
dup t "writer" set-word-prop ;
ERROR: bad-slot-value value class ;
define-typecheck ;
: setter-word ( name -- word )
- ">>" prepend (( object value -- object )) create-accessor ;
+ ">>" prepend "accessors" create ;
: define-setter ( name -- )
dup setter-word dup deferred? [
- [ \ over , swap writer-word , ] [ ] make define-inline
+ [ \ over , swap writer-word , ] [ ] make
+ (( object value -- object )) define-inline
] [ 2drop ] if ;
: changer-word ( name -- word )
- "change-" prepend (( object quot -- object )) create-accessor ;
+ "change-" prepend "accessors" create ;
: define-changer ( name -- )
dup changer-word dup deferred? [
over reader-word 1quotation
[ dip call ] curry [ dip swap ] curry %
swap setter-word ,
- ] [ ] make define-inline
+ ] [ ] make (( object quot -- object )) define-inline
] [ 2drop ] if ;
: define-slot-methods ( class slot-spec -- )
] if
] if ; inline
-: l-elt [ from1>> ] [ seq>> ] bi nth-unsafe ; inline
-: r-elt [ from2>> ] [ seq>> ] bi nth-unsafe ; inline
-: l-done? [ from1>> ] [ to1>> ] bi number= ; inline
-: r-done? [ from2>> ] [ to2>> ] bi number= ; inline
-: dump-l [ [ from1>> ] [ to1>> ] [ seq>> ] tri ] [ accum>> ] bi dump ; inline
-: dump-r [ [ from2>> ] [ to2>> ] [ seq>> ] tri ] [ accum>> ] bi dump ; inline
-: l-next [ [ l-elt ] [ [ 1+ ] change-from1 drop ] bi ] [ accum>> ] bi push ; inline
-: r-next [ [ r-elt ] [ [ 1+ ] change-from2 drop ] bi ] [ accum>> ] bi push ; inline
-: decide [ [ l-elt ] [ r-elt ] bi ] dip call +gt+ eq? ; inline
+: l-elt ( merge -- elt ) [ from1>> ] [ seq>> ] bi nth-unsafe ; inline
+
+: r-elt ( merge -- elt ) [ from2>> ] [ seq>> ] bi nth-unsafe ; inline
+
+: l-done? ( merge -- ? ) [ from1>> ] [ to1>> ] bi eq? ; inline
+
+: r-done? ( merge -- ? ) [ from2>> ] [ to2>> ] bi eq? ; inline
+
+: dump-l ( merge -- )
+ [ [ from1>> ] [ to1>> ] [ seq>> ] tri ] [ accum>> ] bi dump ; inline
+
+: dump-r ( merge -- )
+ [ [ from2>> ] [ to2>> ] [ seq>> ] tri ] [ accum>> ] bi dump ; inline
+
+: l-next ( merge -- )
+ [ [ l-elt ] [ [ 1+ ] change-from1 drop ] bi ] [ accum>> ] bi push ; inline
+
+: r-next ( merge -- )
+ [ [ r-elt ] [ [ 1+ ] change-from2 drop ] bi ] [ accum>> ] bi push ; inline
+
+: decide ( merge -- ? )
+ [ [ l-elt ] [ r-elt ] bi ] dip call +gt+ eq? ; inline
: (merge) ( merge quot: ( elt1 elt2 -- <=> ) -- )
over r-done? [ drop dump-l ] [
<PRIVATE
-: string-hashcode 3 slot ; inline
+: string-hashcode ( str -- n ) 3 slot ; inline
-: set-string-hashcode 3 set-slot ; inline
+: set-string-hashcode ( n str -- ) 3 set-slot ; inline
-: reset-string-hashcode f swap set-string-hashcode ; inline
+: reset-string-hashcode ( str -- )
+ f swap set-string-hashcode ; inline
: rehash-string ( str -- )
1 over sequence-hashcode swap set-string-hashcode ; inline
] define-syntax
"C:" [
- CREATE-WORD
- scan-word [ boa ] curry define-inline
+ CREATE-WORD scan-word define-boa-word
] define-syntax
"ERROR:" [
{ $side-effects "word" } ;
HELP: define-inline
-{ $values { "word" word } { "quot" quotation } }
+{ $values { "word" word } { "def" quotation } { "effect" effect } }
{ $description "Defines a word and makes it " { $link POSTPONE: inline } "." }
{ $side-effects "word" } ;
: make-foldable ( word -- )
dup make-flushable t "foldable" set-word-prop ;
-: define-inline ( word quot -- )
- dupd define make-inline ;
+: define-inline ( word def effect -- )
+ [ define-declared ] [ 2drop make-inline ] 3bi ;
: define-symbol ( word -- )
- dup [ ] curry define-inline ;
+ dup [ ] curry (( -- word )) define-inline ;
GENERIC: reset-word ( word -- )
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: help.markup help.syntax io.streams.string ;
+USING: help.markup help.syntax io.streams.string assocs
+heaps.private ;
IN: assoc-heaps
HELP: <assoc-heap>
+{ $values { "assoc" assoc } { "heap" heap } { "assoc-heap" assoc-heap } }
{ $description "Constructs a new " { $link assoc-heap } " from two existing data structures." } ;
HELP: <unique-max-heap>
-{ $values
-
- { "unique-heap" assoc-heap } }
+{ $values { "unique-heap" assoc-heap } }
{ $description "Creates a new " { $link assoc-heap } " where the assoc is a hashtable and the heap is a max-heap. Popping an element from the heap leaves this element in the hashtable to ensure that the element will not be processed again." } ;
HELP: <unique-min-heap>
-{ $values
- { "unique-heap" assoc-heap } }
+{ $values { "unique-heap" assoc-heap } }
{ $description "Creates a new " { $link assoc-heap } " where the assoc is a hashtable and the heap is a min-heap. Popping an element from the heap leaves this element in the hashtable to ensure that the element will not be processed again." } ;
{ <unique-max-heap> <unique-min-heap> } related-words
colors.hsv benchmark.mandel.params accessors colors ;
IN: benchmark.mandel.colors
-: scale 255 * >fixnum ; inline
+: scale ( x -- y ) 255 * >fixnum ; inline
: scale-rgb ( rgba -- n )
[ red>> scale ] [ green>> scale ] [ blue>> scale ] tri 3byte-array ;
benchmark.mandel.colors ;
IN: benchmark.mandel
-: x-inc width 200000 zoom-fact * / ; inline
-: y-inc height 150000 zoom-fact * / ; inline
+: x-inc ( -- x ) width 200000 zoom-fact * / ; inline
+: y-inc ( -- y ) height 150000 zoom-fact * / ; inline
: c ( i j -- c )
[ x-inc * center real-part x-inc width 2 / * - + >float ]
sequences hints arrays ;
IN: benchmark.nbody
-: solar-mass 4 pi sq * ; inline
+: solar-mass ( -- x ) 4 pi sq * ; inline
: days-per-year 365.24 ; inline
TUPLE: body
IN: bubble-chamber
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+! This is a Factor implementation of an art piece by Jared Tarbell:
+!
+! http://complexification.net/gallery/machines/bubblechamber/
+!
+! Jared's version is written in Processing (Java)
+
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! processing
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: big-bang ( bubble-chamber -- bubble-chamber )
dup particles>> [ collide ] each ;
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+: collide-one-of-each ( bubble-chamber -- bubble-chamber )
+ dup
+ particles>>
+ [ [ <muon>? ] filter random collide ]
+ [ [ <quark>? ] filter random collide ]
+ [ [ <hadron>? ] filter random collide ]
+ tri ;
+
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Some initial configurations
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-: original-big-bang ( -- )
- bubble-chamber
- { 1000 1000 } >>size
+: hadron-chamber ( -- )
+ bubble-chamber-window
+ 1000 [ hadron add-particle ] times
+ big-bang
+ drop ;
+
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+: quark-chamber ( -- )
+ bubble-chamber-window
+ 100 [ quark add-particle ] times
+ big-bang
+ drop ;
+
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+: small ( -- )
+ <bubble-chamber> new-gadget
+ { 200 200 } >>size
+ randomize-collision-theta
dup start-bubble-chamber-thread
dup "Bubble Chamber" open-window
- 1789 [ muon add-particle ] times
- 1300 [ quark add-particle ] times
- 1000 [ hadron add-particle ] times
- 111 [ axion add-particle ] times
+ 42 [ muon add-particle ] times
+ 30 [ quark add-particle ] times
+ 21 [ hadron add-particle ] times
+ 7 [ axion add-particle ] times
- big-bang
+ collide-one-of-each
drop ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-: hadron-chamber ( -- )
- bubble-chamber-window
- 1000 [ hadron add-particle ] times
- big-bang
+: medium ( -- )
+ <bubble-chamber> new-gadget
+ { 400 400 } >>size
+ randomize-collision-theta
+ dup start-bubble-chamber-thread
+ dup "Bubble Chamber" open-window
+
+ 100 [ muon add-particle ] times
+ 81 [ quark add-particle ] times
+ 60 [ hadron add-particle ] times
+ 9 [ axion add-particle ] times
+
+ collide-one-of-each
+
+ drop ;
+
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+: large ( -- )
+ <bubble-chamber> new-gadget
+ { 600 600 } >>size
+ randomize-collision-theta
+ dup start-bubble-chamber-thread
+ dup "Bubble Chamber" open-window
+
+ 550 [ muon add-particle ] times
+ 339 [ quark add-particle ] times
+ 100 [ hadron add-particle ] times
+ 11 [ axion add-particle ] times
+
+ collide-one-of-each
+
drop ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! Experimental
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: muon-chamber ( -- )
bubble-chamber-window
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+: original-big-bang ( -- )
+ bubble-chamber
+ { 1000 1000 } >>size
+ dup start-bubble-chamber-thread
+ dup "Bubble Chamber" open-window
+
+ 1789 [ muon add-particle ] times
+ 1300 [ quark add-particle ] times
+ 1000 [ hadron add-particle ] times
+ 111 [ axion add-particle ] times
+
+ big-bang
+
+ drop ;
+
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
: original-big-bang-variant ( -- )
bubble-chamber-window
1789 [ muon add-particle ] times
dup particles>> [ collide randomize-collision-theta ] each
drop ;
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
--- /dev/null
+
+USING: ui bubble-chamber ;
+
+IN: bubble-chamber.hadron-chamber
+
+: main ( -- ) [ hadron-chamber ] with-ui ;
+
+MAIN: main
\ No newline at end of file
--- /dev/null
+
+USING: ui bubble-chamber ;
+
+IN: bubble-chamber.large
+
+: main ( -- ) [ large ] with-ui ;
+
+MAIN: main
\ No newline at end of file
--- /dev/null
+
+USING: ui bubble-chamber ;
+
+IN: bubble-chamber.medium
+
+: main ( -- ) [ medium ] with-ui ;
+
+MAIN: main
\ No newline at end of file
--- /dev/null
+
+USING: ui bubble-chamber ;
+
+IN: bubble-chamber.original
+
+: main ( -- ) [ original ] with-ui ;
+
+MAIN: main
\ No newline at end of file
--- /dev/null
+
+USING: ui bubble-chamber ;
+
+IN: bubble-chamber.quark-chamber
+
+: main ( -- ) [ quark-chamber ] with-ui ;
+
+MAIN: main
\ No newline at end of file
--- /dev/null
+
+USING: ui bubble-chamber ;
+
+IN: bubble-chamber.small
+
+: main ( -- ) [ small ] with-ui ;
+
+MAIN: main
\ No newline at end of file
--- /dev/null
+
+USING: ui bubble-chamber ;
+
+IN: bubble-chamber.ten-hadrons
+
+: main ( -- ) [ ten-hadrons ] with-ui ;
+
+MAIN: main
\ No newline at end of file
}
}
{ $examples
- { $example
- "USING: calendar formatting ;"
- "now \"%c\" strftime"
+ { $unchecked-example
+ "USING: calendar formatting io ;"
+ "now \"%c\" strftime print"
"Mon Dec 15 14:40:43 2008" }
} ;
<PRIVATE
-: zero-pad 2 CHAR: 0 pad-left ; inline
+: zero-pad ( str -- str' ) 2 CHAR: 0 pad-left ; inline
: >time ( timestamp -- string )
[ hour>> ] [ minute>> ] [ second>> floor ] tri 3array
: fuel-get-edit-location ( defspec -- )
where [
first2 [ (normalize-path) ] dip 2array fuel-eval-set-result
- ] when* ;
+ ] when* ; inline
: fuel-get-vocab-location ( vocab -- )
- >vocab-link fuel-get-edit-location ;
+ >vocab-link fuel-get-edit-location ; inline
: (fuel-get-vocabs) ( -- seq )
all-vocabs-seq [ vocab-name ] map ; inline
: fuel-get-vocabs ( -- )
- (fuel-get-vocabs) fuel-eval-set-result ;
+ (fuel-get-vocabs) fuel-eval-set-result ; inline
MEMO: (fuel-vocab-words) ( name -- seq )
>vocab-link words [ name>> ] map ;
-: fuel-vocabs-words ( names/f -- seq )
- [ (fuel-get-vocabs) ] unless* prune
- [ (fuel-vocab-words) ] map concat natural-sort ;
+: fuel-current-words ( -- seq )
+ use get [ keys ] map concat ; inline
+
+: fuel-vocabs-words ( names -- seq )
+ prune [ (fuel-vocab-words) ] map concat ; inline
: (fuel-get-words) ( prefix names/f -- seq )
- fuel-vocabs-words swap [ drop-prefix nip length 0 = ] curry filter ;
+ [ fuel-vocabs-words ] [ fuel-current-words ] if* natural-sort
+ swap [ drop-prefix nip length 0 = ] curry filter ;
: fuel-get-words ( prefix names -- )
(fuel-get-words) fuel-eval-set-result ; inline
: fuel-run-file ( path -- ) run-file ; inline
-: fuel-startup ( -- ) "listener" run ; inline
+: fuel-startup ( -- ) "listener" run-file ; inline
MAIN: fuel-startup
+++ /dev/null
-USING: eval multiline system combinators ;
-IN: game-input.backend
-
-STRING: set-backend-for-macosx
-USING: namespaces parser game-input.backend.iokit ;
-<< "game-input" (use+) >>
-iokit-game-input-backend game-input-backend set-global
-;
-
-STRING: set-backend-for-windows
-USING: namespaces parser game-input.backend.dinput ;
-<< "game-input" (use+) >>
-dinput-game-input-backend game-input-backend set-global
-;
-
-{
- { [ os macosx? ] [ set-backend-for-macosx eval ] }
- { [ os windows? ] [ set-backend-for-windows eval ] }
- { [ t ] [ ] }
-} cond
-
+++ /dev/null
-USING: windows.dinput windows.dinput.constants parser symbols
-alien.c-types windows.ole32 namespaces assocs kernel arrays
-vectors windows.kernel32 windows.com windows.dinput shuffle
-windows.user32 windows.messages sequences combinators
-math.geometry.rect ui.windows accessors math windows alien
-alien.strings io.encodings.utf16 io.encodings.utf16n
-continuations byte-arrays locals
-game-input.backend.dinput.keys-array ;
-<< "game-input" (use+) >>
-IN: game-input.backend.dinput
-
-SINGLETON: dinput-game-input-backend
-
-SYMBOLS: +dinput+ +keyboard-device+ +keyboard-state+
- +controller-devices+ +controller-guids+
- +device-change-window+ +device-change-handle+ ;
-
-: create-dinput ( -- )
- f GetModuleHandle DIRECTINPUT_VERSION IDirectInput8W-iid
- f <void*> [ f DirectInput8Create ole32-error ] keep *void*
- +dinput+ set-global ;
-
-: delete-dinput ( -- )
- +dinput+ global [ com-release f ] change-at ;
-
-: device-for-guid ( guid -- device )
- +dinput+ get swap f <void*>
- [ f IDirectInput8W::CreateDevice ole32-error ] keep *void* ;
-
-: set-coop-level ( device -- )
- +device-change-window+ get DISCL_BACKGROUND DISCL_NONEXCLUSIVE bitor
- IDirectInputDevice8W::SetCooperativeLevel ole32-error ;
-
-: set-data-format ( device format-symbol -- )
- get IDirectInputDevice8W::SetDataFormat ole32-error ;
-
-: configure-keyboard ( keyboard -- )
- [ c_dfDIKeyboard_HID set-data-format ] [ set-coop-level ] bi ;
-: configure-controller ( controller -- )
- [ c_dfDIJoystick2 set-data-format ] [ set-coop-level ] bi ;
-
-: find-keyboard ( -- )
- GUID_SysKeyboard device-for-guid
- [ configure-keyboard ]
- [ +keyboard-device+ set-global ] bi
- 256 <byte-array> <keys-array> keyboard-state boa
- +keyboard-state+ set-global ;
-
-: device-info ( device -- DIDEVICEIMAGEINFOW )
- "DIDEVICEINSTANCEW" <c-object>
- "DIDEVICEINSTANCEW" heap-size over set-DIDEVICEINSTANCEW-dwSize
- [ IDirectInputDevice8W::GetDeviceInfo ole32-error ] keep ;
-: device-caps ( device -- DIDEVCAPS )
- "DIDEVCAPS" <c-object>
- "DIDEVCAPS" heap-size over set-DIDEVCAPS-dwSize
- [ IDirectInputDevice8W::GetCapabilities ole32-error ] keep ;
-
-: <guid> ( memory -- byte-array )
- "GUID" heap-size memory>byte-array ;
-
-: device-guid ( device -- guid )
- device-info DIDEVICEINSTANCEW-guidInstance <guid> ;
-
-: device-attached? ( device -- ? )
- +dinput+ get swap device-guid
- IDirectInput8W::GetDeviceStatus S_OK = ;
-
-: find-device-axes-callback ( -- alien )
- [ ! ( lpddoi pvRef -- BOOL )
- +controller-devices+ get at
- swap DIDEVICEOBJECTINSTANCEW-guidType <guid> {
- { [ dup GUID_XAxis = ] [ drop 0.0 >>x ] }
- { [ dup GUID_YAxis = ] [ drop 0.0 >>y ] }
- { [ dup GUID_ZAxis = ] [ drop 0.0 >>z ] }
- { [ dup GUID_RxAxis = ] [ drop 0.0 >>rx ] }
- { [ dup GUID_RyAxis = ] [ drop 0.0 >>ry ] }
- { [ dup GUID_RzAxis = ] [ drop 0.0 >>rz ] }
- { [ dup GUID_Slider = ] [ drop 0.0 >>slider ] }
- [ drop ]
- } cond drop
- DIENUM_CONTINUE
- ] LPDIENUMDEVICEOBJECTSCALLBACKW ;
-
-: find-device-axes ( device controller-state -- controller-state )
- swap [ +controller-devices+ get set-at ] 2keep
- find-device-axes-callback over DIDFT_AXIS
- IDirectInputDevice8W::EnumObjects ole32-error ;
-
-: controller-state-template ( device -- controller-state )
- controller-state new
- over device-caps
- [ DIDEVCAPS-dwButtons f <array> >>buttons ]
- [ DIDEVCAPS-dwPOVs zero? f pov-neutral ? >>pov ] bi
- find-device-axes ;
-
-: device-known? ( guid -- ? )
- +controller-guids+ get key? ; inline
-
-: (add-controller) ( guid -- )
- device-for-guid {
- [ configure-controller ]
- [ controller-state-template ]
- [ dup device-guid +controller-guids+ get set-at ]
- [ +controller-devices+ get set-at ]
- } cleave ;
-
-: add-controller ( guid -- )
- dup <guid> device-known? [ drop ] [ (add-controller) ] if ;
-
-: remove-controller ( device -- )
- [ +controller-devices+ get delete-at ]
- [ device-guid +controller-guids+ get delete-at ]
- [ com-release ] tri ;
-
-: find-controller-callback ( -- alien )
- [ ! ( lpddi pvRef -- BOOL )
- drop DIDEVICEINSTANCEW-guidInstance add-controller
- DIENUM_CONTINUE
- ] LPDIENUMDEVICESCALLBACKW ;
-
-: find-controllers ( -- )
- +dinput+ get DI8DEVCLASS_GAMECTRL find-controller-callback
- f DIEDFL_ATTACHEDONLY IDirectInput8W::EnumDevices ole32-error ;
-
-: set-up-controllers ( -- )
- 4 <vector> +controller-devices+ set-global
- 4 <vector> +controller-guids+ set-global
- find-controllers ;
-
-: find-and-remove-detached-devices ( -- )
- +controller-devices+ get keys
- [ device-attached? not ] filter
- [ remove-controller ] each ;
-
-: device-interface? ( dbt-broadcast-hdr -- ? )
- DEV_BROADCAST_HDR-dbch_devicetype DBT_DEVTYP_DEVICEINTERFACE = ;
-
-: device-arrived ( dbt-broadcast-hdr -- )
- device-interface? [ find-controllers ] when ;
-
-: device-removed ( dbt-broadcast-hdr -- )
- device-interface? [ find-and-remove-detached-devices ] when ;
-
-: handle-wm-devicechange ( hWnd uMsg wParam lParam -- )
- [ 2drop ] 2dip swap {
- { [ dup DBT_DEVICEARRIVAL = ] [ drop <alien> device-arrived ] }
- { [ dup DBT_DEVICEREMOVECOMPLETE = ] [ drop <alien> device-removed ] }
- [ 2drop ]
- } cond ;
-
-TUPLE: window-rect < rect window-loc ;
-: <zero-window-rect> ( -- window-rect )
- window-rect new
- { 0 0 } >>window-loc
- { 0 0 } >>loc
- { 0 0 } >>dim ;
-
-: (device-notification-filter) ( -- DEV_BROADCAST_DEVICEW )
- "DEV_BROADCAST_DEVICEW" <c-object>
- "DEV_BROADCAST_DEVICEW" heap-size over set-DEV_BROADCAST_DEVICEW-dbcc_size
- DBT_DEVTYP_DEVICEINTERFACE over set-DEV_BROADCAST_DEVICEW-dbcc_devicetype ;
-
-: create-device-change-window ( -- )
- <zero-window-rect> create-window
- [
- (device-notification-filter)
- DEVICE_NOTIFY_WINDOW_HANDLE DEVICE_NOTIFY_ALL_INTERFACE_CLASSES bitor
- RegisterDeviceNotification
- +device-change-handle+ set-global
- ]
- [ +device-change-window+ set-global ] bi ;
-
-: close-device-change-window ( -- )
- +device-change-handle+ global
- [ UnregisterDeviceNotification drop f ] change-at
- +device-change-window+ global
- [ DestroyWindow win32-error=0/f f ] change-at ;
-
-: add-wm-devicechange ( -- )
- [ 4dup handle-wm-devicechange DefWindowProc ]
- WM_DEVICECHANGE add-wm-handler ;
-
-: remove-wm-devicechange ( -- )
- WM_DEVICECHANGE wm-handlers get-global delete-at ;
-
-: release-controllers ( -- )
- +controller-devices+ global [
- [ drop com-release ] assoc-each f
- ] change-at
- f +controller-guids+ set-global ;
-
-: release-keyboard ( -- )
- +keyboard-device+ global
- [ com-release f ] change-at
- f +keyboard-state+ set-global ;
-
-M: dinput-game-input-backend (open-game-input)
- create-dinput
- create-device-change-window
- find-keyboard
- set-up-controllers
- add-wm-devicechange ;
-
-M: dinput-game-input-backend (close-game-input)
- remove-wm-devicechange
- release-controllers
- release-keyboard
- close-device-change-window
- delete-dinput ;
-
-M: dinput-game-input-backend (reset-game-input)
- {
- +dinput+ +keyboard-device+ +keyboard-state+
- +controller-devices+ +controller-guids+
- +device-change-window+ +device-change-handle+
- } [ f swap set-global ] each ;
-
-M: dinput-game-input-backend get-controllers
- +controller-devices+ get
- [ drop controller boa ] { } assoc>map ;
-
-M: dinput-game-input-backend product-string
- handle>> device-info DIDEVICEINSTANCEW-tszProductName
- utf16n alien>string ;
-
-M: dinput-game-input-backend product-id
- handle>> device-info DIDEVICEINSTANCEW-guidProduct <guid> ;
-M: dinput-game-input-backend instance-id
- handle>> device-guid ;
-
-:: with-acquisition ( device acquired-quot succeeded-quot failed-quot -- result/f )
- device IDirectInputDevice8W::Acquire succeeded? [
- device acquired-quot call
- succeeded-quot call
- ] failed-quot if ; inline
-
-: pov-values
- {
- pov-up pov-up-right pov-right pov-down-right
- pov-down pov-down-left pov-left pov-up-left
- } ; inline
-
-: >axis ( long -- float )
- 32767 - 32767.0 /f ;
-: >slider ( long -- float )
- 65535.0 /f ;
-: >pov ( long -- symbol )
- dup HEX: FFFF bitand HEX: FFFF =
- [ drop pov-neutral ]
- [ 2750 + 4500 /i pov-values nth ] if ;
-: >buttons ( alien length -- array )
- memory>byte-array <keys-array> ;
-
-: (fill-if) ( controller-state DIJOYSTATE2 ? quot -- )
- [ drop ] compose [ 2drop ] if ; inline
-
-: fill-controller-state ( controller-state DIJOYSTATE2 -- controller-state )
- {
- [ over x>> [ DIJOYSTATE2-lX >axis >>x ] (fill-if) ]
- [ over y>> [ DIJOYSTATE2-lY >axis >>y ] (fill-if) ]
- [ over z>> [ DIJOYSTATE2-lZ >axis >>z ] (fill-if) ]
- [ over rx>> [ DIJOYSTATE2-lRx >axis >>rx ] (fill-if) ]
- [ over ry>> [ DIJOYSTATE2-lRy >axis >>ry ] (fill-if) ]
- [ over rz>> [ DIJOYSTATE2-lRz >axis >>rz ] (fill-if) ]
- [ over slider>> [ DIJOYSTATE2-rglSlider *long >slider >>slider ] (fill-if) ]
- [ over pov>> [ DIJOYSTATE2-rgdwPOV *uint >pov >>pov ] (fill-if) ]
- [ DIJOYSTATE2-rgbButtons over buttons>> length >buttons >>buttons ]
- } 2cleave ;
-
-: get-device-state ( device byte-array -- )
- [ dup IDirectInputDevice8W::Poll ole32-error ] dip
- [ length ] keep
- IDirectInputDevice8W::GetDeviceState ole32-error ;
-
-: (read-controller) ( handle template -- state )
- swap [ "DIJOYSTATE2" heap-size <byte-array> [ get-device-state ] keep ]
- [ fill-controller-state ] [ drop f ] with-acquisition ;
-
-M: dinput-game-input-backend read-controller
- handle>> dup +controller-devices+ get at
- [ (read-controller) ] [ drop f ] if* ;
-
-M: dinput-game-input-backend calibrate-controller
- handle>> f 0 IDirectInputDevice8W::RunControlPanel ole32-error ;
-
-M: dinput-game-input-backend read-keyboard
- +keyboard-device+ get
- [ +keyboard-state+ get [ keys>> underlying>> get-device-state ] keep ]
- [ ] [ f ] with-acquisition ;
+++ /dev/null
-USING: sequences sequences.private math alien.c-types
-accessors ;
-IN: game-input.backend.dinput.keys-array
-
-TUPLE: keys-array underlying ;
-C: <keys-array> keys-array
-
-: >key ( byte -- ? )
- HEX: 80 bitand c-bool> ;
-
-M: keys-array length underlying>> length ;
-M: keys-array nth-unsafe underlying>> nth-unsafe >key ;
-
-INSTANCE: keys-array sequence
-
+++ /dev/null
-DirectInput backend for game-input
+++ /dev/null
-unportable
-games
+++ /dev/null
-USING: cocoa cocoa.plists core-foundation iokit iokit.hid
-kernel cocoa.enumeration destructors math.parser cocoa.application
-sequences locals combinators.short-circuit threads
-symbols namespaces assocs vectors arrays combinators
-core-foundation.run-loop accessors sequences.private
-alien.c-types math parser ;
-<< "game-input" (use+) >>
-IN: game-input.backend.iokit
-
-SINGLETON: iokit-game-input-backend
-
-: hid-manager-matching ( matching-seq -- alien )
- f 0 IOHIDManagerCreate
- [ swap >plist IOHIDManagerSetDeviceMatchingMultiple ]
- keep ;
-
-: devices-from-hid-manager ( manager -- vector )
- [
- IOHIDManagerCopyDevices
- [ &CFRelease NSFastEnumeration>vector ] [ f ] if*
- ] with-destructors ;
-
-: game-devices-matching-seq
- {
- H{ { "DeviceUsage" 4 } { "DeviceUsagePage" 1 } } ! joysticks
- H{ { "DeviceUsage" 5 } { "DeviceUsagePage" 1 } } ! gamepads
- H{ { "DeviceUsage" 6 } { "DeviceUsagePage" 1 } } ! keyboards
- } ; inline
-
-: buttons-matching-hash
- H{ { "UsagePage" 9 } { "Type" 2 } } ; inline
-: keys-matching-hash
- H{ { "UsagePage" 7 } { "Type" 2 } } ; inline
-: x-axis-matching-hash
- H{ { "UsagePage" 1 } { "Usage" HEX: 30 } { "Type" 1 } } ; inline
-: y-axis-matching-hash
- H{ { "UsagePage" 1 } { "Usage" HEX: 31 } { "Type" 1 } } ; inline
-: z-axis-matching-hash
- H{ { "UsagePage" 1 } { "Usage" HEX: 32 } { "Type" 1 } } ; inline
-: rx-axis-matching-hash
- H{ { "UsagePage" 1 } { "Usage" HEX: 33 } { "Type" 1 } } ; inline
-: ry-axis-matching-hash
- H{ { "UsagePage" 1 } { "Usage" HEX: 34 } { "Type" 1 } } ; inline
-: rz-axis-matching-hash
- H{ { "UsagePage" 1 } { "Usage" HEX: 35 } { "Type" 1 } } ; inline
-: slider-matching-hash
- H{ { "UsagePage" 1 } { "Usage" HEX: 36 } { "Type" 1 } } ; inline
-: hat-switch-matching-hash
- H{ { "UsagePage" 1 } { "Usage" HEX: 39 } { "Type" 1 } } ; inline
-
-: device-elements-matching ( device matching-hash -- vector )
- [
- >plist 0 IOHIDDeviceCopyMatchingElements
- [ &CFRelease NSFastEnumeration>vector ] [ f ] if*
- ] with-destructors ;
-
-: button-count ( device -- button-count )
- buttons-matching-hash device-elements-matching length ;
-
-: ?axis ( device hash -- axis/f )
- device-elements-matching [ f ] [ first ] if-empty ;
-
-: ?x-axis ( device -- ? )
- x-axis-matching-hash ?axis ;
-: ?y-axis ( device -- ? )
- y-axis-matching-hash ?axis ;
-: ?z-axis ( device -- ? )
- z-axis-matching-hash ?axis ;
-: ?rx-axis ( device -- ? )
- rx-axis-matching-hash ?axis ;
-: ?ry-axis ( device -- ? )
- ry-axis-matching-hash ?axis ;
-: ?rz-axis ( device -- ? )
- rz-axis-matching-hash ?axis ;
-: ?slider ( device -- ? )
- slider-matching-hash ?axis ;
-: ?hat-switch ( device -- ? )
- hat-switch-matching-hash ?axis ;
-
-: hid-manager-matching-game-devices ( -- alien )
- game-devices-matching-seq hid-manager-matching ;
-
-: device-property ( device key -- value )
- <NSString> IOHIDDeviceGetProperty plist> ;
-: element-property ( element key -- value )
- <NSString> IOHIDElementGetProperty plist> ;
-: set-element-property ( element key value -- )
- [ <NSString> ] [ >plist ] bi* IOHIDElementSetProperty drop ;
-: transfer-element-property ( element from-key to-key -- )
- [ dupd element-property ] dip swap set-element-property ;
-
-: controller-device? ( device -- ? )
- {
- [ 1 4 IOHIDDeviceConformsTo ]
- [ 1 5 IOHIDDeviceConformsTo ]
- } 1|| ;
-
-: element-usage ( element -- {usage-page,usage} )
- [ IOHIDElementGetUsagePage ] [ IOHIDElementGetUsage ] bi
- 2array ;
-
-: button? ( {usage-page,usage} -- ? )
- first 9 = ; inline
-: keyboard-key? ( {usage-page,usage} -- ? )
- first 7 = ; inline
-: x-axis? ( {usage-page,usage} -- ? )
- { 1 HEX: 30 } = ; inline
-: y-axis? ( {usage-page,usage} -- ? )
- { 1 HEX: 31 } = ; inline
-: z-axis? ( {usage-page,usage} -- ? )
- { 1 HEX: 32 } = ; inline
-: rx-axis? ( {usage-page,usage} -- ? )
- { 1 HEX: 33 } = ; inline
-: ry-axis? ( {usage-page,usage} -- ? )
- { 1 HEX: 34 } = ; inline
-: rz-axis? ( {usage-page,usage} -- ? )
- { 1 HEX: 35 } = ; inline
-: slider? ( {usage-page,usage} -- ? )
- { 1 HEX: 36 } = ; inline
-: hat-switch? ( {usage-page,usage} -- ? )
- { 1 HEX: 39 } = ; inline
-
-: pov-values
- {
- pov-up pov-up-right pov-right pov-down-right
- pov-down pov-down-left pov-left pov-up-left
- pov-neutral
- } ; inline
-
-: button-value ( value -- f/(0,1] )
- IOHIDValueGetIntegerValue dup zero? [ drop f ] when ;
-: axis-value ( value -- [-1,1] )
- kIOHIDValueScaleTypeCalibrated IOHIDValueGetScaledValue ;
-: pov-value ( value -- pov-direction )
- IOHIDValueGetIntegerValue pov-values ?nth [ pov-neutral ] unless* ;
-
-: record-controller ( controller-state value -- )
- dup IOHIDValueGetElement element-usage {
- { [ dup button? ] [ [ button-value ] [ second 1- ] bi* rot buttons>> set-nth ] }
- { [ dup x-axis? ] [ drop axis-value >>x drop ] }
- { [ dup y-axis? ] [ drop axis-value >>y drop ] }
- { [ dup z-axis? ] [ drop axis-value >>z drop ] }
- { [ dup rx-axis? ] [ drop axis-value >>rx drop ] }
- { [ dup ry-axis? ] [ drop axis-value >>ry drop ] }
- { [ dup rz-axis? ] [ drop axis-value >>rz drop ] }
- { [ dup slider? ] [ drop axis-value >>slider drop ] }
- { [ dup hat-switch? ] [ drop pov-value >>pov drop ] }
- [ 3drop ]
- } cond ;
-
-SYMBOLS: +hid-manager+ +keyboard-state+ +controller-states+ ;
-
-: ?set-nth ( value nth seq -- )
- 2dup bounds-check? [ set-nth-unsafe ] [ 3drop ] if ;
-
-: record-keyboard ( value -- )
- dup IOHIDValueGetElement element-usage keyboard-key? [
- [ IOHIDValueGetIntegerValue c-bool> ]
- [ IOHIDValueGetElement IOHIDElementGetUsage ] bi
- +keyboard-state+ get ?set-nth
- ] [ drop ] if ;
-
-: default-calibrate-saturation ( element -- )
- [ kIOHIDElementMinKey kIOHIDElementCalibrationSaturationMinKey transfer-element-property ]
- [ kIOHIDElementMaxKey kIOHIDElementCalibrationSaturationMaxKey transfer-element-property ]
- bi ;
-
-: default-calibrate-axis ( element -- )
- [ kIOHIDElementCalibrationMinKey -1.0 set-element-property ]
- [ kIOHIDElementCalibrationMaxKey 1.0 set-element-property ]
- [ default-calibrate-saturation ]
- tri ;
-
-: default-calibrate-slider ( element -- )
- [ kIOHIDElementCalibrationMinKey 0.0 set-element-property ]
- [ kIOHIDElementCalibrationMaxKey 1.0 set-element-property ]
- [ default-calibrate-saturation ]
- tri ;
-
-: (default) ( ? quot -- )
- [ f ] if* ; inline
-
-: <device-controller-state> ( device -- controller-state )
- {
- [ ?x-axis [ default-calibrate-axis 0.0 ] (default) ]
- [ ?y-axis [ default-calibrate-axis 0.0 ] (default) ]
- [ ?z-axis [ default-calibrate-axis 0.0 ] (default) ]
- [ ?rx-axis [ default-calibrate-axis 0.0 ] (default) ]
- [ ?ry-axis [ default-calibrate-axis 0.0 ] (default) ]
- [ ?rz-axis [ default-calibrate-axis 0.0 ] (default) ]
- [ ?slider [ default-calibrate-slider 0.0 ] (default) ]
- [ ?hat-switch pov-neutral and ]
- [ button-count f <array> ]
- } cleave controller-state boa ;
-
-: device-matched-callback ( -- alien )
- [| context result sender device |
- device controller-device? [
- device <device-controller-state>
- device +controller-states+ get set-at
- ] when
- ] IOHIDDeviceCallback ;
-
-: device-removed-callback ( -- alien )
- [| context result sender device |
- device +controller-states+ get delete-at
- ] IOHIDDeviceCallback ;
-
-: device-input-callback ( -- alien )
- [| context result sender value |
- sender controller-device?
- [ sender +controller-states+ get at value record-controller ]
- [ value record-keyboard ]
- if
- ] IOHIDValueCallback ;
-
-: initialize-variables ( manager -- )
- +hid-manager+ set-global
- 4 <vector> +controller-states+ set-global
- 256 f <array> +keyboard-state+ set-global ;
-
-M: iokit-game-input-backend (open-game-input)
- hid-manager-matching-game-devices {
- [ initialize-variables ]
- [ device-matched-callback f IOHIDManagerRegisterDeviceMatchingCallback ]
- [ device-removed-callback f IOHIDManagerRegisterDeviceRemovalCallback ]
- [ device-input-callback f IOHIDManagerRegisterInputValueCallback ]
- [ 0 IOHIDManagerOpen mach-error ]
- [
- CFRunLoopGetMain CFRunLoopDefaultMode
- IOHIDManagerScheduleWithRunLoop
- ]
- } cleave ;
-
-M: iokit-game-input-backend (reset-game-input)
- { +hid-manager+ +keyboard-state+ +controller-states+ }
- [ f swap set-global ] each ;
-
-M: iokit-game-input-backend (close-game-input)
- +hid-manager+ get-global [
- +hid-manager+ global [
- [
- CFRunLoopGetMain CFRunLoopDefaultMode
- IOHIDManagerUnscheduleFromRunLoop
- ]
- [ 0 IOHIDManagerClose drop ]
- [ CFRelease ] tri
- f
- ] change-at
- f +keyboard-state+ set-global
- f +controller-states+ set-global
- ] when ;
-
-M: iokit-game-input-backend get-controllers ( -- sequence )
- +controller-states+ get keys [ controller boa ] map ;
-
-: ?join ( pre post sep -- string )
- 2over start [ swap 2nip ] [ [ 2array ] dip join ] if ;
-
-M: iokit-game-input-backend product-string ( controller -- string )
- handle>>
- [ kIOHIDManufacturerKey device-property ]
- [ kIOHIDProductKey device-property ] bi " " ?join ;
-M: iokit-game-input-backend product-id ( controller -- integer )
- handle>>
- [ kIOHIDVendorIDKey device-property ]
- [ kIOHIDProductIDKey device-property ] bi 2array ;
-M: iokit-game-input-backend instance-id ( controller -- integer )
- handle>> kIOHIDLocationIDKey device-property ;
-
-M: iokit-game-input-backend read-controller ( controller -- controller-state )
- handle>> +controller-states+ get at clone ;
-
-M: iokit-game-input-backend read-keyboard ( -- keyboard-state )
- +keyboard-state+ get clone keyboard-state boa ;
-
-M: iokit-game-input-backend calibrate-controller ( controller -- )
- drop ;
+++ /dev/null
-IOKit HID Manager backend for game-input
+++ /dev/null
-unportable
-games
+++ /dev/null
-Platform-specific backends for game-input
--- /dev/null
+USING: windows.dinput windows.dinput.constants parser symbols
+alien.c-types windows.ole32 namespaces assocs kernel arrays
+vectors windows.kernel32 windows.com windows.dinput shuffle
+windows.user32 windows.messages sequences combinators locals
+math.geometry.rect ui.windows accessors math windows alien
+alien.strings io.encodings.utf16 io.encodings.utf16n
+continuations byte-arrays game-input.dinput.keys-array
+game-input ;
+IN: game-input.dinput
+
+SINGLETON: dinput-game-input-backend
+
+dinput-game-input-backend game-input-backend set-global
+
+SYMBOLS: +dinput+ +keyboard-device+ +keyboard-state+
+ +controller-devices+ +controller-guids+
+ +device-change-window+ +device-change-handle+ ;
+
+: create-dinput ( -- )
+ f GetModuleHandle DIRECTINPUT_VERSION IDirectInput8W-iid
+ f <void*> [ f DirectInput8Create ole32-error ] keep *void*
+ +dinput+ set-global ;
+
+: delete-dinput ( -- )
+ +dinput+ global [ com-release f ] change-at ;
+
+: device-for-guid ( guid -- device )
+ +dinput+ get swap f <void*>
+ [ f IDirectInput8W::CreateDevice ole32-error ] keep *void* ;
+
+: set-coop-level ( device -- )
+ +device-change-window+ get DISCL_BACKGROUND DISCL_NONEXCLUSIVE bitor
+ IDirectInputDevice8W::SetCooperativeLevel ole32-error ;
+
+: set-data-format ( device format-symbol -- )
+ get IDirectInputDevice8W::SetDataFormat ole32-error ;
+
+: configure-keyboard ( keyboard -- )
+ [ c_dfDIKeyboard_HID set-data-format ] [ set-coop-level ] bi ;
+: configure-controller ( controller -- )
+ [ c_dfDIJoystick2 set-data-format ] [ set-coop-level ] bi ;
+
+: find-keyboard ( -- )
+ GUID_SysKeyboard device-for-guid
+ [ configure-keyboard ]
+ [ +keyboard-device+ set-global ] bi
+ 256 <byte-array> <keys-array> keyboard-state boa
+ +keyboard-state+ set-global ;
+
+: device-info ( device -- DIDEVICEIMAGEINFOW )
+ "DIDEVICEINSTANCEW" <c-object>
+ "DIDEVICEINSTANCEW" heap-size over set-DIDEVICEINSTANCEW-dwSize
+ [ IDirectInputDevice8W::GetDeviceInfo ole32-error ] keep ;
+: device-caps ( device -- DIDEVCAPS )
+ "DIDEVCAPS" <c-object>
+ "DIDEVCAPS" heap-size over set-DIDEVCAPS-dwSize
+ [ IDirectInputDevice8W::GetCapabilities ole32-error ] keep ;
+
+: <guid> ( memory -- byte-array )
+ "GUID" heap-size memory>byte-array ;
+
+: device-guid ( device -- guid )
+ device-info DIDEVICEINSTANCEW-guidInstance <guid> ;
+
+: device-attached? ( device -- ? )
+ +dinput+ get swap device-guid
+ IDirectInput8W::GetDeviceStatus S_OK = ;
+
+: find-device-axes-callback ( -- alien )
+ [ ! ( lpddoi pvRef -- BOOL )
+ +controller-devices+ get at
+ swap DIDEVICEOBJECTINSTANCEW-guidType <guid> {
+ { [ dup GUID_XAxis = ] [ drop 0.0 >>x ] }
+ { [ dup GUID_YAxis = ] [ drop 0.0 >>y ] }
+ { [ dup GUID_ZAxis = ] [ drop 0.0 >>z ] }
+ { [ dup GUID_RxAxis = ] [ drop 0.0 >>rx ] }
+ { [ dup GUID_RyAxis = ] [ drop 0.0 >>ry ] }
+ { [ dup GUID_RzAxis = ] [ drop 0.0 >>rz ] }
+ { [ dup GUID_Slider = ] [ drop 0.0 >>slider ] }
+ [ drop ]
+ } cond drop
+ DIENUM_CONTINUE
+ ] LPDIENUMDEVICEOBJECTSCALLBACKW ;
+
+: find-device-axes ( device controller-state -- controller-state )
+ swap [ +controller-devices+ get set-at ] 2keep
+ find-device-axes-callback over DIDFT_AXIS
+ IDirectInputDevice8W::EnumObjects ole32-error ;
+
+: controller-state-template ( device -- controller-state )
+ controller-state new
+ over device-caps
+ [ DIDEVCAPS-dwButtons f <array> >>buttons ]
+ [ DIDEVCAPS-dwPOVs zero? f pov-neutral ? >>pov ] bi
+ find-device-axes ;
+
+: device-known? ( guid -- ? )
+ +controller-guids+ get key? ; inline
+
+: (add-controller) ( guid -- )
+ device-for-guid {
+ [ configure-controller ]
+ [ controller-state-template ]
+ [ dup device-guid +controller-guids+ get set-at ]
+ [ +controller-devices+ get set-at ]
+ } cleave ;
+
+: add-controller ( guid -- )
+ dup <guid> device-known? [ drop ] [ (add-controller) ] if ;
+
+: remove-controller ( device -- )
+ [ +controller-devices+ get delete-at ]
+ [ device-guid +controller-guids+ get delete-at ]
+ [ com-release ] tri ;
+
+: find-controller-callback ( -- alien )
+ [ ! ( lpddi pvRef -- BOOL )
+ drop DIDEVICEINSTANCEW-guidInstance add-controller
+ DIENUM_CONTINUE
+ ] LPDIENUMDEVICESCALLBACKW ;
+
+: find-controllers ( -- )
+ +dinput+ get DI8DEVCLASS_GAMECTRL find-controller-callback
+ f DIEDFL_ATTACHEDONLY IDirectInput8W::EnumDevices ole32-error ;
+
+: set-up-controllers ( -- )
+ 4 <vector> +controller-devices+ set-global
+ 4 <vector> +controller-guids+ set-global
+ find-controllers ;
+
+: find-and-remove-detached-devices ( -- )
+ +controller-devices+ get keys
+ [ device-attached? not ] filter
+ [ remove-controller ] each ;
+
+: device-interface? ( dbt-broadcast-hdr -- ? )
+ DEV_BROADCAST_HDR-dbch_devicetype DBT_DEVTYP_DEVICEINTERFACE = ;
+
+: device-arrived ( dbt-broadcast-hdr -- )
+ device-interface? [ find-controllers ] when ;
+
+: device-removed ( dbt-broadcast-hdr -- )
+ device-interface? [ find-and-remove-detached-devices ] when ;
+
+: handle-wm-devicechange ( hWnd uMsg wParam lParam -- )
+ [ 2drop ] 2dip swap {
+ { [ dup DBT_DEVICEARRIVAL = ] [ drop <alien> device-arrived ] }
+ { [ dup DBT_DEVICEREMOVECOMPLETE = ] [ drop <alien> device-removed ] }
+ [ 2drop ]
+ } cond ;
+
+TUPLE: window-rect < rect window-loc ;
+: <zero-window-rect> ( -- window-rect )
+ window-rect new
+ { 0 0 } >>window-loc
+ { 0 0 } >>loc
+ { 0 0 } >>dim ;
+
+: (device-notification-filter) ( -- DEV_BROADCAST_DEVICEW )
+ "DEV_BROADCAST_DEVICEW" <c-object>
+ "DEV_BROADCAST_DEVICEW" heap-size over set-DEV_BROADCAST_DEVICEW-dbcc_size
+ DBT_DEVTYP_DEVICEINTERFACE over set-DEV_BROADCAST_DEVICEW-dbcc_devicetype ;
+
+: create-device-change-window ( -- )
+ <zero-window-rect> create-window
+ [
+ (device-notification-filter)
+ DEVICE_NOTIFY_WINDOW_HANDLE DEVICE_NOTIFY_ALL_INTERFACE_CLASSES bitor
+ RegisterDeviceNotification
+ +device-change-handle+ set-global
+ ]
+ [ +device-change-window+ set-global ] bi ;
+
+: close-device-change-window ( -- )
+ +device-change-handle+ global
+ [ UnregisterDeviceNotification drop f ] change-at
+ +device-change-window+ global
+ [ DestroyWindow win32-error=0/f f ] change-at ;
+
+: add-wm-devicechange ( -- )
+ [ 4dup handle-wm-devicechange DefWindowProc ]
+ WM_DEVICECHANGE add-wm-handler ;
+
+: remove-wm-devicechange ( -- )
+ WM_DEVICECHANGE wm-handlers get-global delete-at ;
+
+: release-controllers ( -- )
+ +controller-devices+ global [
+ [ drop com-release ] assoc-each f
+ ] change-at
+ f +controller-guids+ set-global ;
+
+: release-keyboard ( -- )
+ +keyboard-device+ global
+ [ com-release f ] change-at
+ f +keyboard-state+ set-global ;
+
+M: dinput-game-input-backend (open-game-input)
+ create-dinput
+ create-device-change-window
+ find-keyboard
+ set-up-controllers
+ add-wm-devicechange ;
+
+M: dinput-game-input-backend (close-game-input)
+ remove-wm-devicechange
+ release-controllers
+ release-keyboard
+ close-device-change-window
+ delete-dinput ;
+
+M: dinput-game-input-backend (reset-game-input)
+ {
+ +dinput+ +keyboard-device+ +keyboard-state+
+ +controller-devices+ +controller-guids+
+ +device-change-window+ +device-change-handle+
+ } [ f swap set-global ] each ;
+
+M: dinput-game-input-backend get-controllers
+ +controller-devices+ get
+ [ drop controller boa ] { } assoc>map ;
+
+M: dinput-game-input-backend product-string
+ handle>> device-info DIDEVICEINSTANCEW-tszProductName
+ utf16n alien>string ;
+
+M: dinput-game-input-backend product-id
+ handle>> device-info DIDEVICEINSTANCEW-guidProduct <guid> ;
+M: dinput-game-input-backend instance-id
+ handle>> device-guid ;
+
+:: with-acquisition ( device acquired-quot succeeded-quot failed-quot -- result/f )
+ device IDirectInputDevice8W::Acquire succeeded? [
+ device acquired-quot call
+ succeeded-quot call
+ ] failed-quot if ; inline
+
+: pov-values
+ {
+ pov-up pov-up-right pov-right pov-down-right
+ pov-down pov-down-left pov-left pov-up-left
+ } ; inline
+
+: >axis ( long -- float )
+ 32767 - 32767.0 /f ;
+: >slider ( long -- float )
+ 65535.0 /f ;
+: >pov ( long -- symbol )
+ dup HEX: FFFF bitand HEX: FFFF =
+ [ drop pov-neutral ]
+ [ 2750 + 4500 /i pov-values nth ] if ;
+: >buttons ( alien length -- array )
+ memory>byte-array <keys-array> ;
+
+: (fill-if) ( controller-state DIJOYSTATE2 ? quot -- )
+ [ drop ] compose [ 2drop ] if ; inline
+
+: fill-controller-state ( controller-state DIJOYSTATE2 -- controller-state )
+ {
+ [ over x>> [ DIJOYSTATE2-lX >axis >>x ] (fill-if) ]
+ [ over y>> [ DIJOYSTATE2-lY >axis >>y ] (fill-if) ]
+ [ over z>> [ DIJOYSTATE2-lZ >axis >>z ] (fill-if) ]
+ [ over rx>> [ DIJOYSTATE2-lRx >axis >>rx ] (fill-if) ]
+ [ over ry>> [ DIJOYSTATE2-lRy >axis >>ry ] (fill-if) ]
+ [ over rz>> [ DIJOYSTATE2-lRz >axis >>rz ] (fill-if) ]
+ [ over slider>> [ DIJOYSTATE2-rglSlider *long >slider >>slider ] (fill-if) ]
+ [ over pov>> [ DIJOYSTATE2-rgdwPOV *uint >pov >>pov ] (fill-if) ]
+ [ DIJOYSTATE2-rgbButtons over buttons>> length >buttons >>buttons ]
+ } 2cleave ;
+
+: get-device-state ( device byte-array -- )
+ [ dup IDirectInputDevice8W::Poll ole32-error ] dip
+ [ length ] keep
+ IDirectInputDevice8W::GetDeviceState ole32-error ;
+
+: (read-controller) ( handle template -- state )
+ swap [ "DIJOYSTATE2" heap-size <byte-array> [ get-device-state ] keep ]
+ [ fill-controller-state ] [ drop f ] with-acquisition ;
+
+M: dinput-game-input-backend read-controller
+ handle>> dup +controller-devices+ get at
+ [ (read-controller) ] [ drop f ] if* ;
+
+M: dinput-game-input-backend calibrate-controller
+ handle>> f 0 IDirectInputDevice8W::RunControlPanel ole32-error ;
+
+M: dinput-game-input-backend read-keyboard
+ +keyboard-device+ get
+ [ +keyboard-state+ get [ keys>> underlying>> get-device-state ] keep ]
+ [ ] [ f ] with-acquisition ;
--- /dev/null
+USING: sequences sequences.private math alien.c-types
+accessors ;
+IN: game-input.dinput.keys-array
+
+TUPLE: keys-array underlying ;
+C: <keys-array> keys-array
+
+: >key ( byte -- ? )
+ HEX: 80 bitand c-bool> ;
+
+M: keys-array length underlying>> length ;
+M: keys-array nth-unsafe underlying>> nth-unsafe >key ;
+
+INSTANCE: keys-array sequence
+
--- /dev/null
+DirectInput backend for game-input
--- /dev/null
+unportable
+games
-USING: arrays accessors continuations kernel symbols
-combinators.lib sequences namespaces init vocabs ;
+USING: arrays accessors continuations kernel symbols system
+combinators.lib sequences namespaces init vocabs vocabs.loader
+combinators ;
IN: game-input
SYMBOLS: game-input-backend game-input-opened ;
game-input-opened off
(reset-game-input) ;
-: load-game-input-backend ( -- )
- game-input-backend get
- [ "game-input.backend" load-vocab drop ] unless ;
-
[ reset-game-input ] "game-input" add-init-hook
PRIVATE>
HOOK: read-keyboard game-input-backend ( -- keyboard-state )
-load-game-input-backend
-
+{
+ { [ os windows? ] [ "game-input.dinput" require ] }
+ { [ os macosx? ] [ "game-input.iokit" require ] }
+ { [ t ] [ ] }
+} cond
--- /dev/null
+USING: cocoa cocoa.plists core-foundation iokit iokit.hid
+kernel cocoa.enumeration destructors math.parser cocoa.application
+sequences locals combinators.short-circuit threads
+symbols namespaces assocs vectors arrays combinators
+core-foundation.run-loop accessors sequences.private
+alien.c-types math parser game-input ;
+IN: game-input.iokit
+
+SINGLETON: iokit-game-input-backend
+
+iokit-game-input-backend game-input-backend set-global
+
+: hid-manager-matching ( matching-seq -- alien )
+ f 0 IOHIDManagerCreate
+ [ swap >plist IOHIDManagerSetDeviceMatchingMultiple ]
+ keep ;
+
+: devices-from-hid-manager ( manager -- vector )
+ [
+ IOHIDManagerCopyDevices
+ [ &CFRelease NSFastEnumeration>vector ] [ f ] if*
+ ] with-destructors ;
+
+: game-devices-matching-seq
+ {
+ H{ { "DeviceUsage" 4 } { "DeviceUsagePage" 1 } } ! joysticks
+ H{ { "DeviceUsage" 5 } { "DeviceUsagePage" 1 } } ! gamepads
+ H{ { "DeviceUsage" 6 } { "DeviceUsagePage" 1 } } ! keyboards
+ } ; inline
+
+: buttons-matching-hash
+ H{ { "UsagePage" 9 } { "Type" 2 } } ; inline
+: keys-matching-hash
+ H{ { "UsagePage" 7 } { "Type" 2 } } ; inline
+: x-axis-matching-hash
+ H{ { "UsagePage" 1 } { "Usage" HEX: 30 } { "Type" 1 } } ; inline
+: y-axis-matching-hash
+ H{ { "UsagePage" 1 } { "Usage" HEX: 31 } { "Type" 1 } } ; inline
+: z-axis-matching-hash
+ H{ { "UsagePage" 1 } { "Usage" HEX: 32 } { "Type" 1 } } ; inline
+: rx-axis-matching-hash
+ H{ { "UsagePage" 1 } { "Usage" HEX: 33 } { "Type" 1 } } ; inline
+: ry-axis-matching-hash
+ H{ { "UsagePage" 1 } { "Usage" HEX: 34 } { "Type" 1 } } ; inline
+: rz-axis-matching-hash
+ H{ { "UsagePage" 1 } { "Usage" HEX: 35 } { "Type" 1 } } ; inline
+: slider-matching-hash
+ H{ { "UsagePage" 1 } { "Usage" HEX: 36 } { "Type" 1 } } ; inline
+: hat-switch-matching-hash
+ H{ { "UsagePage" 1 } { "Usage" HEX: 39 } { "Type" 1 } } ; inline
+
+: device-elements-matching ( device matching-hash -- vector )
+ [
+ >plist 0 IOHIDDeviceCopyMatchingElements
+ [ &CFRelease NSFastEnumeration>vector ] [ f ] if*
+ ] with-destructors ;
+
+: button-count ( device -- button-count )
+ buttons-matching-hash device-elements-matching length ;
+
+: ?axis ( device hash -- axis/f )
+ device-elements-matching [ f ] [ first ] if-empty ;
+
+: ?x-axis ( device -- ? )
+ x-axis-matching-hash ?axis ;
+: ?y-axis ( device -- ? )
+ y-axis-matching-hash ?axis ;
+: ?z-axis ( device -- ? )
+ z-axis-matching-hash ?axis ;
+: ?rx-axis ( device -- ? )
+ rx-axis-matching-hash ?axis ;
+: ?ry-axis ( device -- ? )
+ ry-axis-matching-hash ?axis ;
+: ?rz-axis ( device -- ? )
+ rz-axis-matching-hash ?axis ;
+: ?slider ( device -- ? )
+ slider-matching-hash ?axis ;
+: ?hat-switch ( device -- ? )
+ hat-switch-matching-hash ?axis ;
+
+: hid-manager-matching-game-devices ( -- alien )
+ game-devices-matching-seq hid-manager-matching ;
+
+: device-property ( device key -- value )
+ <NSString> IOHIDDeviceGetProperty plist> ;
+: element-property ( element key -- value )
+ <NSString> IOHIDElementGetProperty plist> ;
+: set-element-property ( element key value -- )
+ [ <NSString> ] [ >plist ] bi* IOHIDElementSetProperty drop ;
+: transfer-element-property ( element from-key to-key -- )
+ [ dupd element-property ] dip swap set-element-property ;
+
+: controller-device? ( device -- ? )
+ {
+ [ 1 4 IOHIDDeviceConformsTo ]
+ [ 1 5 IOHIDDeviceConformsTo ]
+ } 1|| ;
+
+: element-usage ( element -- {usage-page,usage} )
+ [ IOHIDElementGetUsagePage ] [ IOHIDElementGetUsage ] bi
+ 2array ;
+
+: button? ( {usage-page,usage} -- ? )
+ first 9 = ; inline
+: keyboard-key? ( {usage-page,usage} -- ? )
+ first 7 = ; inline
+: x-axis? ( {usage-page,usage} -- ? )
+ { 1 HEX: 30 } = ; inline
+: y-axis? ( {usage-page,usage} -- ? )
+ { 1 HEX: 31 } = ; inline
+: z-axis? ( {usage-page,usage} -- ? )
+ { 1 HEX: 32 } = ; inline
+: rx-axis? ( {usage-page,usage} -- ? )
+ { 1 HEX: 33 } = ; inline
+: ry-axis? ( {usage-page,usage} -- ? )
+ { 1 HEX: 34 } = ; inline
+: rz-axis? ( {usage-page,usage} -- ? )
+ { 1 HEX: 35 } = ; inline
+: slider? ( {usage-page,usage} -- ? )
+ { 1 HEX: 36 } = ; inline
+: hat-switch? ( {usage-page,usage} -- ? )
+ { 1 HEX: 39 } = ; inline
+
+: pov-values
+ {
+ pov-up pov-up-right pov-right pov-down-right
+ pov-down pov-down-left pov-left pov-up-left
+ pov-neutral
+ } ; inline
+
+: button-value ( value -- f/(0,1] )
+ IOHIDValueGetIntegerValue dup zero? [ drop f ] when ;
+: axis-value ( value -- [-1,1] )
+ kIOHIDValueScaleTypeCalibrated IOHIDValueGetScaledValue ;
+: pov-value ( value -- pov-direction )
+ IOHIDValueGetIntegerValue pov-values ?nth [ pov-neutral ] unless* ;
+
+: record-controller ( controller-state value -- )
+ dup IOHIDValueGetElement element-usage {
+ { [ dup button? ] [ [ button-value ] [ second 1- ] bi* rot buttons>> set-nth ] }
+ { [ dup x-axis? ] [ drop axis-value >>x drop ] }
+ { [ dup y-axis? ] [ drop axis-value >>y drop ] }
+ { [ dup z-axis? ] [ drop axis-value >>z drop ] }
+ { [ dup rx-axis? ] [ drop axis-value >>rx drop ] }
+ { [ dup ry-axis? ] [ drop axis-value >>ry drop ] }
+ { [ dup rz-axis? ] [ drop axis-value >>rz drop ] }
+ { [ dup slider? ] [ drop axis-value >>slider drop ] }
+ { [ dup hat-switch? ] [ drop pov-value >>pov drop ] }
+ [ 3drop ]
+ } cond ;
+
+SYMBOLS: +hid-manager+ +keyboard-state+ +controller-states+ ;
+
+: ?set-nth ( value nth seq -- )
+ 2dup bounds-check? [ set-nth-unsafe ] [ 3drop ] if ;
+
+: record-keyboard ( value -- )
+ dup IOHIDValueGetElement element-usage keyboard-key? [
+ [ IOHIDValueGetIntegerValue c-bool> ]
+ [ IOHIDValueGetElement IOHIDElementGetUsage ] bi
+ +keyboard-state+ get ?set-nth
+ ] [ drop ] if ;
+
+: default-calibrate-saturation ( element -- )
+ [ kIOHIDElementMinKey kIOHIDElementCalibrationSaturationMinKey transfer-element-property ]
+ [ kIOHIDElementMaxKey kIOHIDElementCalibrationSaturationMaxKey transfer-element-property ]
+ bi ;
+
+: default-calibrate-axis ( element -- )
+ [ kIOHIDElementCalibrationMinKey -1.0 set-element-property ]
+ [ kIOHIDElementCalibrationMaxKey 1.0 set-element-property ]
+ [ default-calibrate-saturation ]
+ tri ;
+
+: default-calibrate-slider ( element -- )
+ [ kIOHIDElementCalibrationMinKey 0.0 set-element-property ]
+ [ kIOHIDElementCalibrationMaxKey 1.0 set-element-property ]
+ [ default-calibrate-saturation ]
+ tri ;
+
+: (default) ( ? quot -- )
+ [ f ] if* ; inline
+
+: <device-controller-state> ( device -- controller-state )
+ {
+ [ ?x-axis [ default-calibrate-axis 0.0 ] (default) ]
+ [ ?y-axis [ default-calibrate-axis 0.0 ] (default) ]
+ [ ?z-axis [ default-calibrate-axis 0.0 ] (default) ]
+ [ ?rx-axis [ default-calibrate-axis 0.0 ] (default) ]
+ [ ?ry-axis [ default-calibrate-axis 0.0 ] (default) ]
+ [ ?rz-axis [ default-calibrate-axis 0.0 ] (default) ]
+ [ ?slider [ default-calibrate-slider 0.0 ] (default) ]
+ [ ?hat-switch pov-neutral and ]
+ [ button-count f <array> ]
+ } cleave controller-state boa ;
+
+: device-matched-callback ( -- alien )
+ [| context result sender device |
+ device controller-device? [
+ device <device-controller-state>
+ device +controller-states+ get set-at
+ ] when
+ ] IOHIDDeviceCallback ;
+
+: device-removed-callback ( -- alien )
+ [| context result sender device |
+ device +controller-states+ get delete-at
+ ] IOHIDDeviceCallback ;
+
+: device-input-callback ( -- alien )
+ [| context result sender value |
+ sender controller-device?
+ [ sender +controller-states+ get at value record-controller ]
+ [ value record-keyboard ]
+ if
+ ] IOHIDValueCallback ;
+
+: initialize-variables ( manager -- )
+ +hid-manager+ set-global
+ 4 <vector> +controller-states+ set-global
+ 256 f <array> +keyboard-state+ set-global ;
+
+M: iokit-game-input-backend (open-game-input)
+ hid-manager-matching-game-devices {
+ [ initialize-variables ]
+ [ device-matched-callback f IOHIDManagerRegisterDeviceMatchingCallback ]
+ [ device-removed-callback f IOHIDManagerRegisterDeviceRemovalCallback ]
+ [ device-input-callback f IOHIDManagerRegisterInputValueCallback ]
+ [ 0 IOHIDManagerOpen mach-error ]
+ [
+ CFRunLoopGetMain CFRunLoopDefaultMode
+ IOHIDManagerScheduleWithRunLoop
+ ]
+ } cleave ;
+
+M: iokit-game-input-backend (reset-game-input)
+ { +hid-manager+ +keyboard-state+ +controller-states+ }
+ [ f swap set-global ] each ;
+
+M: iokit-game-input-backend (close-game-input)
+ +hid-manager+ get-global [
+ +hid-manager+ global [
+ [
+ CFRunLoopGetMain CFRunLoopDefaultMode
+ IOHIDManagerUnscheduleFromRunLoop
+ ]
+ [ 0 IOHIDManagerClose drop ]
+ [ CFRelease ] tri
+ f
+ ] change-at
+ f +keyboard-state+ set-global
+ f +controller-states+ set-global
+ ] when ;
+
+M: iokit-game-input-backend get-controllers ( -- sequence )
+ +controller-states+ get keys [ controller boa ] map ;
+
+: ?join ( pre post sep -- string )
+ 2over start [ swap 2nip ] [ [ 2array ] dip join ] if ;
+
+M: iokit-game-input-backend product-string ( controller -- string )
+ handle>>
+ [ kIOHIDManufacturerKey device-property ]
+ [ kIOHIDProductKey device-property ] bi " " ?join ;
+M: iokit-game-input-backend product-id ( controller -- integer )
+ handle>>
+ [ kIOHIDVendorIDKey device-property ]
+ [ kIOHIDProductIDKey device-property ] bi 2array ;
+M: iokit-game-input-backend instance-id ( controller -- integer )
+ handle>> kIOHIDLocationIDKey device-property ;
+
+M: iokit-game-input-backend read-controller ( controller -- controller-state )
+ handle>> +controller-states+ get at clone ;
+
+M: iokit-game-input-backend read-keyboard ( -- keyboard-state )
+ +keyboard-state+ get clone keyboard-state boa ;
+
+M: iokit-game-input-backend calibrate-controller ( controller -- )
+ drop ;
--- /dev/null
+IOKit HID Manager backend for game-input
--- /dev/null
+unportable
+games
! Copyright (C) 2007 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien arrays byte-arrays combinators summary io.backend
+USING: alien arrays byte-arrays combinators summary
graphics.viewer io io.binary io.files kernel libc math
math.functions math.bitwise namespaces opengl opengl.gl
prettyprint sequences strings ui ui.gadgets.panes fry
dup color-index-length read >>color-index drop ;
: load-bitmap ( path -- bitmap )
- normalize-path binary [
+ binary [
bitmap new
dup parse-file-header
dup parse-bitmap-header
ERROR: invalid-baud baud ;
M: invalid-baud summary ( invalid-baud -- string )
- "Baud rate "
- swap baud>> number>string
- " not supported" 3append ;
+ baud>> number>string
+ "Baud rate " " not supported" surround ;
HOOK: lookup-baud os ( m -- n )
HOOK: open-serial os ( serial -- stream )
: kIOHIDElementDuplicateIndexKey "DuplicateIndex" ; inline
: kIOHIDElementParentCollectionKey "ParentCollection" ; inline
-: kIOHIDElementVendorSpecificKey
+: kIOHIDElementVendorSpecificKey ( -- str )
cpu ppc? "VendorSpecifc" "VendorSpecific" ? ; inline
: kIOHIDElementCookieMinKey "ElementCookieMin" ; inline
0 < "Negative " "" ? ;
: 3digit-groups ( n -- seq )
- number>string <reversed> 3 <groups>
- [ reverse string>number ] map ;
+ [ dup 0 > ] [ 1000 /mod ] [ ] produce nip ;
: hundreds-place ( n -- str )
- 100 /mod swap dup zero? [
+ 100 /mod over 0 = [
2drop ""
] [
- small-numbers " Hundred" append
- swap zero? [ " and " append ] unless
+ [ small-numbers " Hundred" append ] dip
+ 0 = [ " and " append ] unless
] if ;
: tens-place ( n -- str )
100 mod dup 20 >= [
10 /mod [ tens ] dip
- dup zero? [ drop ] [ "-" swap small-numbers 3append ] if
+ dup 0 = [ drop ] [ small-numbers "-" glue ] if
] [
- dup zero? [ drop "" ] [ small-numbers ] if
+ dup 0 = [ drop "" ] [ small-numbers ] if
] if ;
: 3digits>text ( n -- str )
[ " " glue ] unless-empty ;
: append-with-conjunction ( str1 str2 -- newstr )
- over length zero? [
+ over length 0 = [
nip
] [
- and-needed? get " and " ", " ? rot 3append
- and-needed? off
+ swap and-needed? get " and " ", " ?
+ glue and-needed? off
] if ;
: (recombine) ( str index seq -- newstr )
- 2dup nth zero? [
+ 2dup nth 0 = [
2drop
] [
text-with-scale append-with-conjunction
USING: math math.constants ;
IN: math.trig
-: deg>rad pi * 180 / ; inline
-: rad>deg 180 * pi / ; inline
+: deg>rad ( x -- y ) pi * 180 / ; inline
+: rad>deg ( x -- y ) 180 * pi / ; inline
ui.render accessors combinators ;
IN: opengl.demo-support
-: FOV 2.0 sqrt 1+ ; inline
+: FOV ( -- x ) 2.0 sqrt 1+ ; inline
: MOUSE-MOTION-SCALE 0.5 ; inline
: KEY-ROTATE-STEP 10.0 ; inline
C: <block> block
C: <end> end
-: <failure> 0 <end> ; inline
-: <success> 1 <end> ; inline
+: <failure> ( -- end ) 0 <end> ; inline
+: <success> ( -- end ) 1 <end> ; inline
: failure? ( t -- ? ) ways>> 0 = ; inline
[ <new-tetris> ] change-tetris ;
tetris-gadget H{
+ { T{ button-down f f 1 } [ request-focus ] }
{ T{ key-down f f "UP" } [ tetris>> rotate-right ] }
{ T{ key-down f f "d" } [ tetris>> rotate-left ] }
{ T{ key-down f f "f" } [ tetris>> rotate-right ] }
- C-cz : switch to listener
- C-co : cycle between code, tests and docs factor files
- - M-. : edit word at point in Emacs (also in listener)
+ - M-. : edit word at point in Emacs
- M-TAB : complete word at point
- C-cC-ev : edit vocabulary
- C-cr, C-cC-er : eval region
- C-M-r, C-cC-ee : eval region, extending it to definition boundaries
- C-M-x, C-cC-ex : eval definition around point
- - C-ck, C-cC-ek : compile file
+ - C-ck, C-cC-ek : run file
- C-cC-da : toggle autodoc mode
- C-cC-dd : help for word at point
- C-cC-ds : short help word at point
+* In the listener:
+
+ - TAB : complete word at point
+ - M-. : edit word at point in Emacs
+ - C-ca : toggle autodoc mode
+ - C-cv : edit vocabulary
+ - C-ch : help for word at point
+ - C-ck : run file
+
* In the debugger (it pops up upon eval/compilation errors):
- g : go to error
(fuel-eval--send/wait '(:fuel* (fuel-get-vocabs) "fuel" (:array)))))))
fuel-completion--vocabs)
-(defsubst fuel-completion--words (prefix vocabs)
- (fuel-eval--retort-result
- (fuel-eval--send/wait `(:fuel* (,prefix V{ ,@vocabs } fuel-get-words) t ,vocabs))))
+(defun fuel-completion--words (prefix vocabs)
+ (let ((vs (if vocabs (cons :array vocabs) 'f))
+ (us (or vocabs 't)))
+ (fuel-eval--retort-result
+ (fuel-eval--send/wait `(:fuel* (,prefix ,vs fuel-get-words) t ,us)))))
\f
;;; Completions window handling, heavily inspired in slime's:
(defun fuel-completion--display-comp-list (completions base)
(let ((savedp (fuel-completion--maybe-save-window-configuration)))
(with-output-to-temp-buffer fuel-completion--comp-buffer
- (display-completion-list completions)
+ (display-completion-list completions base)
(let ((offset (- (point) 1 (length base))))
(with-current-buffer standard-output
(setq completion-base-size offset)
\f
;;; Completion functionality:
-(defsubst fuel-completion--word-list (prefix)
- (let ((fuel-log--inhibit-p t))
- (fuel-completion--words
- prefix `("syntax" ,(fuel-syntax--current-vocab) ,@(fuel-syntax--usings)))))
+(defun fuel-completion--word-list (prefix)
+ (let* ((fuel-log--inhibit-p t)
+ (cv (fuel-syntax--current-vocab))
+ (vs (and cv `("syntax" ,cv ,@(fuel-syntax--usings)))))
+ (fuel-completion--words prefix vs)))
(defun fuel-completion--complete (prefix)
(let* ((words (fuel-completion--word-list prefix))
(require 'fuel-eval)
(require 'fuel-base)
+(require 'fuel-completion)
+(require 'fuel-syntax)
(require 'comint)
\f
(error "Could not run factor: image file %s not readable" image))
(message "Starting FUEL listener ...")
(comint-exec (fuel-listener--buffer) "factor"
- factor nil `("-run=fuel" ,(format "-i=%s" image)))
+ factor nil `("-run=listener" ,(format "-i=%s" image)))
(pop-to-buffer (fuel-listener--buffer))
(goto-char (point-max))
- (comint-send-string nil "USE: fuel \"\\nFUEL loaded\\n\" write\n")
+ (comint-send-string nil "USE: fuel \"FUEL loaded\\n\" write\n")
(fuel-listener--wait-for-prompt 30)
(message "FUEL listener up and running!")))
(goto-char (point-max))
(unless seen (error "No prompt found!")))))
+\f
+;;; Completion support
+
+(defsubst fuel-listener--current-vocab () nil)
+(defsubst fuel-listener--usings () nil)
+
+(defun fuel-listener--setup-completion ()
+ (setq fuel-syntax--current-vocab-function 'fuel-listener--current-vocab)
+ (setq fuel-syntax--usings-function 'fuel-listener--usings)
+ (set-syntax-table fuel-syntax--syntax-table))
+
\f
;;; Interface: starting fuel listener
\\{fuel-listener-mode-map}"
(set (make-local-variable 'comint-prompt-regexp) fuel-listener--prompt-regex)
(set (make-local-variable 'comint-prompt-read-only) t)
- (setq fuel-listener--compilation-begin nil))
+ (fuel-listener--setup-completion))
(define-key fuel-listener-mode-map "\C-cz" 'run-factor)
(define-key fuel-listener-mode-map "\C-c\C-z" 'run-factor)
+(define-key fuel-listener-mode-map "\C-ca" 'fuel-autodoc-mode)
(define-key fuel-listener-mode-map "\C-ch" 'fuel-help)
(define-key fuel-listener-mode-map "\M-." 'fuel-edit-word-at-point)
+(define-key fuel-listener-mode-map "\C-cv" 'fuel-edit-vocabulary)
+(define-key fuel-listener-mode-map "\C-c\C-v" 'fuel-edit-vocabulary)
(define-key fuel-listener-mode-map "\C-ck" 'fuel-run-file)
+(define-key fuel-listener-mode-map (kbd "TAB") 'fuel-completion--complete-symbol)
\f
(provide 'fuel-listener)
\f
;;; USING/IN:
-(defun fuel-syntax--current-vocab ()
+(make-variable-buffer-local
+ (defvar fuel-syntax--current-vocab-function 'fuel-syntax--find-in))
+
+(defsubst fuel-syntax--current-vocab ()
+ (funcall fuel-syntax--current-vocab-function))
+
+(defun fuel-syntax--find-in ()
(let* ((vocab)
(ip
(save-excursion
(setq vocab (format "%s.%s" vocab (downcase sub))))))))
vocab))
-(defun fuel-syntax--usings ()
+(make-variable-buffer-local
+ (defvar fuel-syntax--usings-function 'fuel-syntax--find-usings))
+
+(defsubst fuel-syntax--usings ()
+ (funcall fuel-syntax--usings-function))
+
+(defun fuel-syntax--find-usings ()
(save-excursion
(let ((usings)
(in (fuel-syntax--current-vocab)))
: HOLDBIT 4 ; inline
: S_RUN 0 ; inline
-: S_RUNPKT { PKTBIT } flags ; inline
-: S_WAIT { WAITBIT } flags ; inline
-: S_WAITPKT { WAITBIT PKTBIT } flags ; inline
-: S_HOLD { HOLDBIT } flags ; inline
-: S_HOLDPKT { HOLDBIT PKTBIT } flags ; inline
-: S_HOLDWAIT { HOLDBIT WAITBIT } flags ; inline
-: S_HOLDWAITPKT { HOLDBIT WAITBIT PKTBIT } flags ; inline
+: S_RUNPKT ( -- n ) { PKTBIT } flags ; inline
+: S_WAIT ( -- n ) { WAITBIT } flags ; inline
+: S_WAITPKT ( -- n ) { WAITBIT PKTBIT } flags ; inline
+: S_HOLD ( -- n ) { HOLDBIT } flags ; inline
+: S_HOLDPKT ( -- n ) { HOLDBIT PKTBIT } flags ; inline
+: S_HOLDWAIT ( -- n ) { HOLDBIT WAITBIT } flags ; inline
+: S_HOLDWAITPKT ( -- n ) { HOLDBIT WAITBIT PKTBIT } flags ; inline
: task-tab-size 10 ; inline
#define DS_REG r29
DEF(void,primitive_fixnum_add,(void)):
- lwz r3,0(DS_REG)
- lwz r4,-4(DS_REG)
- subi DS_REG,DS_REG,4
- li r0,0
- mtxer r0
- addo. r5,r3,r4
- bso add_overflow
- stw r5,0(DS_REG)
- blr
+ lwz r3,0(DS_REG)
+ lwz r4,-4(DS_REG)
+ subi DS_REG,DS_REG,4
+ li r0,0
+ mtxer r0
+ addo. r5,r3,r4
+ bso add_overflow
+ stw r5,0(DS_REG)
+ blr
add_overflow:
b MANGLE(overflow_fixnum_add)
DEF(void,primitive_fixnum_subtract,(void)):
- lwz r3,-4(DS_REG)
- lwz r4,0(DS_REG)
- subi DS_REG,DS_REG,4
- li r0,0
- mtxer r0
- subfo. r5,r4,r3
+ lwz r3,-4(DS_REG)
+ lwz r4,0(DS_REG)
+ subi DS_REG,DS_REG,4
+ li r0,0
+ mtxer r0
+ subfo. r5,r4,r3
bso sub_overflow
- stw r5,0(DS_REG)
- blr
+ stw r5,0(DS_REG)
+ blr
sub_overflow:
- b MANGLE(overflow_fixnum_subtract)
+ b MANGLE(overflow_fixnum_subtract)
DEF(void,primitive_fixnum_multiply,(void)):
- lwz r3,0(DS_REG)
- lwz r4,-4(DS_REG)
- subi DS_REG,DS_REG,4
- srawi r3,r3,3
- mullwo. r5,r3,r4
- bso multiply_overflow
- stw r5,0(DS_REG)
- blr
+ lwz r3,0(DS_REG)
+ lwz r4,-4(DS_REG)
+ subi DS_REG,DS_REG,4
+ srawi r3,r3,3
+ mullwo. r5,r3,r4
+ bso multiply_overflow
+ stw r5,0(DS_REG)
+ blr
multiply_overflow:
- srawi r4,r4,3
- b MANGLE(overflow_fixnum_multiply)
-
+ srawi r4,r4,3
+ b MANGLE(overflow_fixnum_multiply)
+
/* Note that the XT is passed to the quotation in r11 */
#define CALL_OR_JUMP_QUOT \
lwz r11,9(r3) /* load quotation-xt slot */ XX \
SAVE_INT(r26,13)
SAVE_INT(r27,14)
SAVE_INT(r28,15)
+ SAVE_INT(r31,16)
- SAVE_FP(f14,20) /* save FPRs */
+ SAVE_FP(f14,20) /* save FPRs */
SAVE_FP(f15,22)
SAVE_FP(f16,24)
SAVE_FP(f17,26)
mr r3,r1 /* pass call stack pointer as an argument */
bl MANGLE(save_callstack_bottom)
- RESTORE_INT(r3,19) /* restore quotation */
+ RESTORE_INT(r3,19) /* restore quotation */
CALL_QUOT
RESTORE_FP(f31,54)
RESTORE_FP(f17,26)
RESTORE_FP(f16,24)
RESTORE_FP(f15,22)
- RESTORE_FP(f14,20) /* save FPRs */
+ RESTORE_FP(f14,20) /* save FPRs */
- RESTORE_INT(r28,15) /* restore GPRs */
+ RESTORE_INT(r31,16) /* restore GPRs */
+ RESTORE_INT(r28,15)
RESTORE_INT(r27,14)
RESTORE_INT(r26,13)
RESTORE_INT(r25,12)
#define STRNCMP wcsncmp
#define STRDUP _wcsdup
-#define CELL_FORMAT "%lu"
#ifdef WIN64
+ #define CELL_FORMAT "%Iu"
#define CELL_HEX_FORMAT "%Ix"
#define CELL_HEX_PAD_FORMAT "%016Ix"
#define FIXNUM_FORMAT "%Id"
#else
+ #define CELL_FORMAT "%lu"
#define CELL_HEX_FORMAT "%lx"
#define CELL_HEX_PAD_FORMAT "%08lx"
#define FIXNUM_FORMAT "%ld"