Merge branch 'master' of git://github.com/erikcharlebois/factor

release
Slava Pestov 2010-04-10 18:01:19 -07:00
commit 2b4a55b53a
69 changed files with 75693 additions and 268 deletions

View File

@ -4,7 +4,7 @@ USING: accessors alien alien.c-types alien.libraries arrays
assocs classes combinators combinators.short-circuit
compiler.units effects grouping kernel parser sequences
splitting words fry locals lexer namespaces summary math
vocabs.parser ;
vocabs.parser words.constant ;
IN: alien.parser
: parse-c-type-name ( name -- word )
@ -51,14 +51,17 @@ ERROR: *-in-c-type-name name ;
dup "*" tail?
[ *-in-c-type-name ] when ;
: CREATE-C-TYPE ( -- word )
scan validate-c-type-name current-vocab create {
: (CREATE-C-TYPE) ( word -- word )
validate-c-type-name current-vocab create {
[ fake-definition ]
[ set-word ]
[ reset-c-type ]
[ ]
} cleave ;
: CREATE-C-TYPE ( -- word )
scan (CREATE-C-TYPE) ;
<PRIVATE
GENERIC: return-type-name ( type -- name )
@ -72,6 +75,18 @@ M: pointer return-type-name to>> return-type-name CHAR: * suffix ;
PRIVATE>
: define-enum-member ( word-string value -- next-value )
[ create-in ] dip [ define-constant ] keep 1 + ;
: parse-enum-member ( word-string value -- next-value )
over "{" =
[ 2drop scan scan-object define-enum-member "}" expect ]
[ define-enum-member ] if ;
: parse-enum-members ( counter -- )
scan dup ";" = not
[ swap parse-enum-member parse-enum-members ] [ 2drop ] if ;
: scan-function-name ( -- return function )
scan-c-type scan parse-pointers ;

View File

@ -58,15 +58,15 @@ HELP: TYPEDEF:
{ $notes "This word differs from " { $link typedef } " in that it runs at parse time, to ensure correct ordering of operations when loading source files. Words defined in source files are compiled before top-level forms are run, so if a source file defines C binding words and uses " { $link typedef } ", the type alias won't be available at compile time." } ;
HELP: C-ENUM:
{ $syntax "C-ENUM: words... ;" }
{ $values { "words" "a sequence of word names" } }
{ $description "Creates a sequence of word definitions in the current vocabulary. Each word pushes an integer according to its index in the enumeration definition. The first word pushes 0." }
{ $syntax "C-ENUM: type/f words... ;" }
{ $values { "type" "a name to typedef to int or f" } { "words" "a sequence of word names" } }
{ $description "Creates a sequence of word definitions in the current vocabulary. Each word pushes an integer according to the rules of C enums." }
{ $notes "This word emulates a C-style " { $snippet "enum" } " in Factor. While this feature can be used for any purpose, using integer constants is discouraged unless it is for interfacing with C libraries. Factor code should use " { $link "words.symbol" } " or " { $link "singletons" } " instead." }
{ $examples
"Here is an example enumeration definition:"
{ $code "C-ENUM: red green blue ;" }
{ $code "C-ENUM: color_t red { green 3 } blue ;" }
"It is equivalent to the following series of definitions:"
{ $code "CONSTANT: red 0" "CONSTANT: green 1" "CONSTANT: blue 2" }
{ $code "CONSTANT: red 0" "CONSTANT: green 3" "CONSTANT: blue 4" }
} ;
HELP: C-TYPE:

View File

@ -25,8 +25,10 @@ SYNTAX: TYPEDEF:
scan-c-type CREATE-C-TYPE dup save-location typedef ;
SYNTAX: C-ENUM:
";" parse-tokens
[ [ create-in ] dip define-constant ] each-index ;
scan dup "f" =
[ drop ]
[ (CREATE-C-TYPE) dup save-location int swap typedef ] if
0 parse-enum-members ;
SYNTAX: C-TYPE:
void CREATE-C-TYPE typedef ;

View File

@ -1,6 +1,8 @@
! Copyright (c) 2007 Sampo Vuori
! Copyright (c) 2008 Matthew Willis
!
! Adapted from cairo.h, version 1.5.14
! License: http://factorcode.org/license.txt
@ -44,8 +46,7 @@ TYPEDEF: void* cairo_destroy_func_t
STRUCT: cairo_user_data_key_t
{ unused int } ;
TYPEDEF: int cairo_status_t
C-ENUM:
C-ENUM: cairo_status_t
CAIRO_STATUS_SUCCESS
CAIRO_STATUS_NO_MEMORY
CAIRO_STATUS_INVALID_RESTORE
@ -125,8 +126,7 @@ FUNCTION: void
cairo_pop_group_to_source ( cairo_t* cr ) ;
! Modify state
TYPEDEF: int cairo_operator_t
C-ENUM:
C-ENUM: cairo_operator_t
CAIRO_OPERATOR_CLEAR
CAIRO_OPERATOR_SOURCE
@ -163,8 +163,7 @@ cairo_set_source_surface ( cairo_t* cr, cairo_surface_t* surface, double x, doub
FUNCTION: void
cairo_set_tolerance ( cairo_t* cr, double tolerance ) ;
TYPEDEF: int cairo_antialias_t
C-ENUM:
C-ENUM: cairo_antialias_t
CAIRO_ANTIALIAS_DEFAULT
CAIRO_ANTIALIAS_NONE
CAIRO_ANTIALIAS_GRAY
@ -173,8 +172,7 @@ C-ENUM:
FUNCTION: void
cairo_set_antialias ( cairo_t* cr, cairo_antialias_t antialias ) ;
TYPEDEF: int cairo_fill_rule_t
C-ENUM:
C-ENUM: cairo_fill_rule_t
CAIRO_FILL_RULE_WINDING
CAIRO_FILL_RULE_EVEN_ODD ;
@ -184,8 +182,7 @@ cairo_set_fill_rule ( cairo_t* cr, cairo_fill_rule_t fill_rule ) ;
FUNCTION: void
cairo_set_line_width ( cairo_t* cr, double width ) ;
TYPEDEF: int cairo_line_cap_t
C-ENUM:
C-ENUM: cairo_line_cap_t
CAIRO_LINE_CAP_BUTT
CAIRO_LINE_CAP_ROUND
CAIRO_LINE_CAP_SQUARE ;
@ -193,8 +190,7 @@ C-ENUM:
FUNCTION: void
cairo_set_line_cap ( cairo_t* cr, cairo_line_cap_t line_cap ) ;
TYPEDEF: int cairo_line_join_t
C-ENUM:
C-ENUM: cairo_line_join_t
CAIRO_LINE_JOIN_MITER
CAIRO_LINE_JOIN_ROUND
CAIRO_LINE_JOIN_BEVEL ;
@ -379,35 +375,30 @@ STRUCT: cairo_font_extents_t
{ max_x_advance double }
{ max_y_advance double } ;
TYPEDEF: int cairo_font_slant_t
C-ENUM:
C-ENUM: cairo_font_slant_t
CAIRO_FONT_SLANT_NORMAL
CAIRO_FONT_SLANT_ITALIC
CAIRO_FONT_SLANT_OBLIQUE ;
TYPEDEF: int cairo_font_weight_t
C-ENUM:
C-ENUM: cairo_font_weight_t
CAIRO_FONT_WEIGHT_NORMAL
CAIRO_FONT_WEIGHT_BOLD ;
TYPEDEF: int cairo_subpixel_order_t
C-ENUM:
C-ENUM: cairo_subpixel_order_t
CAIRO_SUBPIXEL_ORDER_DEFAULT
CAIRO_SUBPIXEL_ORDER_RGB
CAIRO_SUBPIXEL_ORDER_BGR
CAIRO_SUBPIXEL_ORDER_VRGB
CAIRO_SUBPIXEL_ORDER_VBGR ;
TYPEDEF: int cairo_hint_style_t
C-ENUM:
C-ENUM: cairo_hint_style_t
CAIRO_HINT_STYLE_DEFAULT
CAIRO_HINT_STYLE_NONE
CAIRO_HINT_STYLE_SLIGHT
CAIRO_HINT_STYLE_MEDIUM
CAIRO_HINT_STYLE_FULL ;
TYPEDEF: int cairo_hint_metrics_t
C-ENUM:
C-ENUM: cairo_hint_metrics_t
CAIRO_HINT_METRICS_DEFAULT
CAIRO_HINT_METRICS_OFF
CAIRO_HINT_METRICS_ON ;
@ -527,8 +518,7 @@ cairo_font_face_get_reference_count ( cairo_font_face_t* font_face ) ;
FUNCTION: cairo_status_t
cairo_font_face_status ( cairo_font_face_t* font_face ) ;
TYPEDEF: int cairo_font_type_t
C-ENUM:
C-ENUM: cairo_font_type_t
CAIRO_FONT_TYPE_TOY
CAIRO_FONT_TYPE_FT
CAIRO_FONT_TYPE_WIN32
@ -640,8 +630,7 @@ cairo_get_target ( cairo_t* cr ) ;
FUNCTION: cairo_surface_t*
cairo_get_group_target ( cairo_t* cr ) ;
TYPEDEF: int cairo_path_data_type_t
C-ENUM:
C-ENUM: cairo_path_data_type_t
CAIRO_PATH_MOVE_TO
CAIRO_PATH_LINE_TO
CAIRO_PATH_CURVE_TO
@ -707,8 +696,7 @@ cairo_surface_get_reference_count ( cairo_surface_t* surface ) ;
FUNCTION: cairo_status_t
cairo_surface_status ( cairo_surface_t* surface ) ;
TYPEDEF: int cairo_surface_type_t
C-ENUM:
C-ENUM: cairo_surface_type_t
CAIRO_SURFACE_TYPE_IMAGE
CAIRO_SURFACE_TYPE_PDF
CAIRO_SURFACE_TYPE_PS
@ -771,8 +759,7 @@ cairo_surface_show_page ( cairo_surface_t* surface ) ;
! Image-surface functions
TYPEDEF: int cairo_format_t
C-ENUM:
C-ENUM: cairo_format_t
CAIRO_FORMAT_ARGB32
CAIRO_FORMAT_RGB24
CAIRO_FORMAT_A8
@ -844,8 +831,7 @@ cairo_pattern_get_user_data ( cairo_pattern_t* pattern, cairo_user_data_key_t* k
FUNCTION: cairo_status_t
cairo_pattern_set_user_data ( cairo_pattern_t* pattern, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ;
TYPEDEF: int cairo_pattern_type_t
C-ENUM:
C-ENUM: cairo_pattern_type_t
CAIRO_PATTERN_TYPE_SOLID
CAIRO_PATTERN_TYPE_SURFACE
CAIRO_PATTERN_TYPE_LINEAR
@ -866,8 +852,7 @@ cairo_pattern_set_matrix ( cairo_pattern_t* pattern, cairo_matrix_t* matrix ) ;
FUNCTION: void
cairo_pattern_get_matrix ( cairo_pattern_t* pattern, cairo_matrix_t* matrix ) ;
TYPEDEF: int cairo_extend_t
C-ENUM:
C-ENUM: cairo_extend_t
CAIRO_EXTEND_NONE
CAIRO_EXTEND_REPEAT
CAIRO_EXTEND_REFLECT
@ -879,8 +864,7 @@ cairo_pattern_set_extend ( cairo_pattern_t* pattern, cairo_extend_t extend ) ;
FUNCTION: cairo_extend_t
cairo_pattern_get_extend ( cairo_pattern_t* pattern ) ;
TYPEDEF: int cairo_filter_t
C-ENUM:
C-ENUM: cairo_filter_t
CAIRO_FILTER_FAST
CAIRO_FILTER_GOOD
CAIRO_FILTER_BEST

View File

@ -8,7 +8,7 @@ IN: cocoa.application
: <NSString> ( str -- alien ) <CFString> -> autorelease ;
C-ENUM:
C-ENUM: f
NSApplicationDelegateReplySuccess
NSApplicationDelegateReplyCancel
NSApplicationDelegateReplyFailure ;

View File

@ -6,8 +6,7 @@ images images.memory core-graphics.types core-foundation.utilities
opengl.gl literals ;
IN: core-graphics
! CGImageAlphaInfo
C-ENUM:
C-ENUM: CGImageAlphaInfo
kCGImageAlphaNone
kCGImageAlphaPremultipliedLast
kCGImageAlphaPremultipliedFirst

View File

@ -0,0 +1 @@
Erik Charlebois

View File

@ -0,0 +1,7 @@
! Copyright (C) 2010 Erik Charlebois.
! See http://factorcode.org/license.txt for BSD license.
USING: images.testing ;
IN: images.pgm.tests
"vocab:images/testing/pgm/radial.binary.pgm" decode-test
"vocab:images/testing/pgm/radial.ascii.pgm" decode-test

View File

@ -0,0 +1,62 @@
! Copyright (C) 2010 Erik Charlebois.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien.c-types ascii combinators images images.loader
io io.encodings.ascii io.encodings.string kernel locals make math
math.parser sequences specialized-arrays ;
SPECIALIZED-ARRAY: ushort
IN: images.pgm
SINGLETON: pgm-image
"pgm" pgm-image register-image-class
: read-token ( -- token )
[ read1 dup blank?
[ t ]
[ dup CHAR: # =
[ "\n" read-until 2drop t ]
[ f ] if
] if
] [ drop ] while
" \n\r\t" read-until drop swap
prefix ascii decode ;
: read-number ( -- number )
read-token string>number ;
:: read-numbers ( n lim -- )
n lim = [
read-number ,
n 1 + lim read-numbers
] unless ;
:: read-pgm ( -- image )
read-token :> type
read-number :> width
read-number :> height
read-number :> max
width height * :> npixels
max 256 >= :> wide
type {
{ "P2" [ [ 0 npixels read-numbers ] wide [ ushort-array{ } ] [ B{ } ] if make ] }
{ "P5" [ wide [ 2 ] [ 1 ] if npixels * read ] }
} case :> data
image new
L >>component-order
{ width height } >>dim
f >>upside-down?
data >>bitmap
wide [ ushort-components ] [ ubyte-components ] if >>component-type ;
M: pgm-image stream>image
drop [ read-pgm ] with-input-stream ;
M: pgm-image image>stream
drop {
[ drop "P5\n" ascii encode write ]
[ dim>> first number>string " " append ascii encode write ]
[ dim>> second number>string "\n" append ascii encode write ]
[ component-type>> ubyte-components = [ "255\n" ] [ "65535\n" ] if ascii encode write ]
[ bitmap>> write ]
} cleave ;

View File

@ -0,0 +1 @@
Image loading for PGM image files.

View File

@ -0,0 +1 @@
Erik Charlebois

View File

@ -0,0 +1,7 @@
! Copyright (C) 2010 Erik Charlebois.
! See http://factorcode.org/license.txt for BSD license.
USING: images.testing ;
IN: images.ppm.tests
"vocab:images/testing/ppm/binary.ppm" decode-test
"vocab:images/testing/ppm/ascii.ppm" decode-test

View File

@ -0,0 +1,59 @@
! Copyright (C) 2010 Erik Charlebois.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors ascii combinators images images.loader io
io.encodings.ascii io.encodings.string kernel locals make math
math.parser prettyprint sequences ;
IN: images.ppm
SINGLETON: ppm-image
"ppm" ppm-image register-image-class
: read-token ( -- token )
[ read1 dup blank?
[ t ]
[ dup CHAR: # =
[ "\n" read-until 2drop t ]
[ f ] if
] if
] [ drop ] while
" \n\r\t" read-until drop swap
prefix ascii decode ;
: read-number ( -- number )
read-token string>number ;
:: read-numbers ( n lim -- )
n lim = [
read-number ,
n 1 + lim read-numbers
] unless ;
:: read-ppm ( -- image )
read-token :> type
read-number :> width
read-number :> height
read-number :> max
width height 3 * * :> npixels
type {
{ "P3" [ [ 0 npixels read-numbers ] B{ } make ] }
{ "P6" [ npixels read ] }
} case :> data
image new
RGB >>component-order
{ width height } >>dim
f >>upside-down?
data >>bitmap
ubyte-components >>component-type ;
M: ppm-image stream>image
drop [ read-ppm ] with-input-stream ;
M: ppm-image image>stream
drop {
[ drop "P6\n" ascii encode write ]
[ dim>> first number>string " " append ascii encode write ]
[ dim>> second number>string "\n" append ascii encode write ]
[ drop "255\n" ascii encode write ]
[ bitmap>> write ]
} cleave ;

View File

@ -0,0 +1 @@
Image loading for PPM image files.

View File

@ -8,8 +8,7 @@ IN: pango.fonts
LIBRARY: pango
TYPEDEF: int PangoStyle
C-ENUM:
C-ENUM: PangoStyle
PANGO_STYLE_NORMAL
PANGO_STYLE_OBLIQUE
PANGO_STYLE_ITALIC ;

View File

@ -12,7 +12,7 @@ IN: unicode.breaks
<PRIVATE
! Grapheme breaks
C-ENUM: Any L V T LV LVT Extend Control CR LF
C-ENUM: f Any L V T LV LVT Extend Control CR LF
SpacingMark Prepend graphemes ;
: jamo-class ( ch -- class )
@ -131,7 +131,7 @@ VALUE: word-break-table
"vocab:unicode/data/WordBreakProperty.txt" load-interval-file
to: word-break-table
C-ENUM: wOther wCR wLF wNewline wExtend wFormat wKatakana wALetter wMidLetter
C-ENUM: f wOther wCR wLF wNewline wExtend wFormat wKatakana wALetter wMidLetter
wMidNum wMidNumLet wNumeric wExtendNumLet words ;
: word-break-classes ( -- table ) ! Is there a way to avoid this?

View File

@ -34,7 +34,7 @@ STRUCT: vm
: vm-field-offset ( field -- offset ) vm offset-of ; inline
C-ENUM:
C-ENUM: f
collect-nursery-op
collect-aging-op
collect-to-tenured-op

View File

@ -146,8 +146,7 @@ CONSTANT: TokenSessionReference 14
CONSTANT: TokenSandBoxInert 15
! } TOKEN_INFORMATION_CLASS;
TYPEDEF: DWORD ACCESS_MODE
C-ENUM:
C-ENUM: ACCESS_MODE
NOT_USED_ACCESS
GRANT_ACCESS
SET_ACCESS
@ -156,21 +155,18 @@ C-ENUM:
SET_AUDIT_SUCCESS
SET_AUDIT_FAILURE ;
TYPEDEF: DWORD MULTIPLE_TRUSTEE_OPERATION
C-ENUM:
C-ENUM: MULTIPLE_TRUSTEE_OPERATION
NO_MULTIPLE_TRUSTEE
TRUSTEE_IS_IMPERSONATE ;
TYPEDEF: DWORD TRUSTEE_FORM
C-ENUM:
C-ENUM: TRUSTEE_FORM
TRUSTEE_IS_SID
TRUSTEE_IS_NAME
TRUSTEE_BAD_FORM
TRUSTEE_IS_OBJECTS_AND_SID
TRUSTEE_IS_OBJECTS_AND_NAME ;
TYPEDEF: DWORD TRUSTEE_TYPE
C-ENUM:
C-ENUM: TRUSTEE_TYPE
TRUSTEE_IS_UNKNOWN
TRUSTEE_IS_USER
TRUSTEE_IS_GROUP
@ -181,8 +177,7 @@ C-ENUM:
TRUSTEE_IS_INVALID
TRUSTEE_IS_COMPUTER ;
TYPEDEF: DWORD SE_OBJECT_TYPE
C-ENUM:
C-ENUM: SE_OBJECT_TYPE
SE_UNKNOWN_OBJECT_TYPE
SE_FILE_OBJECT
SE_SERVICE

View File

@ -206,11 +206,10 @@ CONSTANT: HID_USAGE_DIGITIZER_BARREL_SWITCH HEX: 44
CONSTANT: HIDP_LINK_COLLECTION_ROOT -1
CONSTANT: HIDP_LINK_COLLECTION_UNSPECIFIED 0
C-ENUM:
C-ENUM: HIDP_REPORT_TYPE
HidP_Input
HidP_Output
HidP_Feature ;
TYPEDEF: int HIDP_REPORT_TYPE
STRUCT: USAGE_AND_PAGE
{ Usage USAGE }
@ -608,10 +607,9 @@ HidP_UsageAndPageListDifference (
ULONG UsageListLength
) ;
C-ENUM:
C-ENUM: HIDP_KEYBOARD_DIRECTION
HidP_Keyboard_Break
HidP_Keyboard_Make ;
TYPEDEF: int HIDP_KEYBOARD_DIRECTION
STRUCT: HIDP_KEYBOARD_MODIFIER_STATE
{ ul ULONG } ;

View File

@ -1515,14 +1515,13 @@ FUNCTION: BOOL SetupRemoveFileLogEntryA ( HSPFILELOG FileLogHandle, PCSTR LogSec
FUNCTION: BOOL SetupRemoveFileLogEntryW ( HSPFILELOG FileLogHandle, PCWSTR LogSectionName, PCWSTR TargetFilename ) ;
ALIAS: SetupRemoveFileLogEntry SetupRemoveFileLogEntryW
C-ENUM:
C-ENUM: SetupFileLogInfo
SetupFileLogSourceFilename
SetupFileLogChecksum
SetupFileLogDiskTagfile
SetupFileLogDiskDescription
SetupFileLogOtherInfo
SetupFileLogMax ;
TYPEDEF: int SetupFileLogInfo
FUNCTION: BOOL SetupQueryFileLogA ( HSPFILELOG FileLogHandle, PCSTR LogSectionName, PCSTR TargetFilename, SetupFileLogInfo DesiredInfo, PSTR DataOut, DWORD ReturnBufferSize, PDWORD RequiredSize ) ;
FUNCTION: BOOL SetupQueryFileLogW ( HSPFILELOG FileLogHandle, PCWSTR LogSectionName, PCWSTR TargetFilename, SetupFileLogInfo DesiredInfo, PWSTR DataOut, DWORD ReturnBufferSize, PDWORD RequiredSize ) ;

View File

@ -22,12 +22,11 @@ STRUCT: USB_INTERFACE_DESCRIPTOR
{ iInterface UCHAR } ;
TYPEDEF: USB_INTERFACE_DESCRIPTOR* PUSB_INTERFACE_DESCRIPTOR
C-ENUM:
C-ENUM: USBD_PIPE_TYPE
UsbdPipeTypeControl
UsbdPipeTypeIsochronous
UsbdPipeTypeBulk
UsbdPipeTypeInterrupt ;
TYPEDEF: int USBD_PIPE_TYPE
STRUCT: WINUSB_PIPE_INFORMATION
{ PipeType USBD_PIPE_TYPE }

View File

@ -24,11 +24,11 @@ CONSTANT: D3D11_RETURN_TYPE_DOUBLE 7
CONSTANT: D3D11_RETURN_TYPE_CONTINUED 8
TYPEDEF: int D3D11_RESOURCE_RETURN_TYPE
C-ENUM: D3D11_CT_CBUFFER
D3D11_CT_TBUFFER
D3D11_CT_INTERFACE_POINTERS
D3D11_CT_RESOURCE_BIND_INFO ;
TYPEDEF: int D3D11_CBUFFER_TYPE
C-ENUM: D3D11_CBUFFER_TYPE
D3D11_CT_CBUFFER
D3D11_CT_TBUFFER
D3D11_CT_INTERFACE_POINTERS
D3D11_CT_RESOURCE_BIND_INFO ;
TYPEDEF: D3D11_CBUFFER_TYPE* LPD3D11_CBUFFER_TYPE
STRUCT: D3D11_SIGNATURE_PARAMETER_DESC

View File

@ -502,8 +502,7 @@ CONSTANT: MAXD3DDECLUSAGE 13
CONSTANT: MAXD3DDECLUSAGEINDEX 15
CONSTANT: MAXD3DDECLLENGTH 64
TYPEDEF: int D3DDECLMETHOD
C-ENUM:
C-ENUM: D3DDECLMETHOD
D3DDECLMETHOD_DEFAULT
D3DDECLMETHOD_PARTIALU
D3DDECLMETHOD_PARTIALV

View File

@ -48,10 +48,9 @@ COM-INTERFACE: ID3DX11FFT IUnknown {b3f7a938-4c93-4310-a675-b30d6de50553}
HRESULT ForwardTransform ( ID3D11UnorderedAccessView* pInputBuffer, ID3D11UnorderedAccessView** ppOutputBuffer )
HRESULT InverseTransform ( ID3D11UnorderedAccessView* pInputBuffer, ID3D11UnorderedAccessView** ppOutputBuffer ) ;
C-ENUM:
C-ENUM: D3DX11_FFT_DATA_TYPE
D3DX11_FFT_DATA_TYPE_REAL
D3DX11_FFT_DATA_TYPE_COMPLEX ;
TYPEDEF: int D3DX11_FFT_DATA_TYPE
CONSTANT: D3DX11_FFT_DIM_MASK_1D 1
CONSTANT: D3DX11_FFT_DIM_MASK_2D 3

View File

@ -41,25 +41,23 @@ STRUCT: D3DXSEMANTIC
{ UsageIndex UINT } ;
TYPEDEF: D3DXSEMANTIC* LPD3DXSEMANTIC
C-ENUM:
C-ENUM: D3DXREGISTER_SET
D3DXRS_BOOL
D3DXRS_INT4
D3DXRS_FLOAT4
D3DXRS_SAMPLER ;
TYPEDEF: int D3DXREGISTER_SET
TYPEDEF: D3DXREGISTER_SET* LPD3DXREGISTER_SET
C-ENUM:
C-ENUM: D3DXPARAMETER_CLASS
D3DXPC_SCALAR
D3DXPC_VECTOR
D3DXPC_MATRIX_ROWS
D3DXPC_MATRIX_COLUMNS
D3DXPC_OBJECT
D3DXPC_STRUCT ;
TYPEDEF: int D3DXPARAMETER_CLASS
TYPEDEF: D3DXPARAMETER_CLASS* LPD3DXPARAMETER_CLASS
C-ENUM:
C-ENUM: D3DXPARAMETER_TYPE
D3DXPT_VOID
D3DXPT_BOOL
D3DXPT_INT
@ -80,7 +78,6 @@ C-ENUM:
D3DXPT_PIXELFRAGMENT
D3DXPT_VERTEXFRAGMENT
D3DXPT_UNSUPPORTED ;
TYPEDEF: int D3DXPARAMETER_TYPE
TYPEDEF: D3DXPARAMETER_TYPE* LPD3DXPARAMETER_TYPE
STRUCT: D3DXCONSTANTTABLE_DESC
@ -161,10 +158,9 @@ COM-INTERFACE: ID3DXTextureShader IUnknown {3E3D67F8-AA7A-405d-A857-BA01D4758426
HRESULT SetMatrixTransposeArray ( D3DXHANDLE hConstant, D3DXMATRIX* pMatrix, UINT Count )
HRESULT SetMatrixTransposePointerArray ( D3DXHANDLE hConstant, D3DXMATRIX** ppMatrix, UINT Count ) ;
C-ENUM:
C-ENUM: D3DXINCLUDE_TYPE
D3DXINC_LOCAL
D3DXINC_SYSTEM ;
TYPEDEF: int D3DXINCLUDE_TYPE
TYPEDEF: D3DXINCLUDE_TYPE* LPD3DXINCLUDE_TYPE
C-TYPE: ID3DXInclude

View File

@ -1,7 +1,7 @@
USING: alien.c-types alien.syntax ;
IN: windows.directx.dcommon
C-ENUM: DWRITE_MEASURING_MODE_NATURAL
DWRITE_MEASURING_MODE_GDI_CLASSIC
DWRITE_MEASURING_MODE_GDI_NATURAL ;
TYPEDEF: int DWRITE_MEASURING_MODE
C-ENUM: DWRITE_MEASURING_MODE
DWRITE_MEASURING_MODE_NATURAL
DWRITE_MEASURING_MODE_GDI_CLASSIC
DWRITE_MEASURING_MODE_GDI_NATURAL ;

View File

@ -5,7 +5,7 @@ IN: windows.directx.dwrite
LIBRARY: dwrite
C-ENUM:
C-ENUM: DWRITE_FONT_FILE_TYPE
DWRITE_FONT_FILE_TYPE_UNKNOWN
DWRITE_FONT_FILE_TYPE_CFF
DWRITE_FONT_FILE_TYPE_TRUETYPE
@ -14,9 +14,8 @@ C-ENUM:
DWRITE_FONT_FILE_TYPE_TYPE1_PFB
DWRITE_FONT_FILE_TYPE_VECTOR
DWRITE_FONT_FILE_TYPE_BITMAP ;
TYPEDEF: int DWRITE_FONT_FILE_TYPE
C-ENUM:
C-ENUM: DWRITE_FONT_FACE_TYPE
DWRITE_FONT_FACE_TYPE_CFF
DWRITE_FONT_FACE_TYPE_TRUETYPE
DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION
@ -24,51 +23,49 @@ C-ENUM:
DWRITE_FONT_FACE_TYPE_VECTOR
DWRITE_FONT_FACE_TYPE_BITMAP
DWRITE_FONT_FACE_TYPE_UNKNOWN ;
TYPEDEF: int DWRITE_FONT_FACE_TYPE
CONSTANT: DWRITE_FONT_SIMULATIONS_NONE 0
CONSTANT: DWRITE_FONT_SIMULATIONS_BOLD 1
CONSTANT: DWRITE_FONT_SIMULATIONS_OBLIQUE 2
TYPEDEF: int DWRITE_FONT_SIMULATIONS
C-ENUM: DWRITE_FONT_SIMULATIONS
DWRITE_FONT_SIMULATIONS_NONE
DWRITE_FONT_SIMULATIONS_BOLD
DWRITE_FONT_SIMULATIONS_OBLIQUE ;
CONSTANT: DWRITE_FONT_WEIGHT_THIN 100
CONSTANT: DWRITE_FONT_WEIGHT_EXTRA_LIGHT 200
CONSTANT: DWRITE_FONT_WEIGHT_ULTRA_LIGHT 200
CONSTANT: DWRITE_FONT_WEIGHT_LIGHT 300
CONSTANT: DWRITE_FONT_WEIGHT_NORMAL 400
CONSTANT: DWRITE_FONT_WEIGHT_REGULAR 400
CONSTANT: DWRITE_FONT_WEIGHT_MEDIUM 500
CONSTANT: DWRITE_FONT_WEIGHT_DEMI_BOLD 600
CONSTANT: DWRITE_FONT_WEIGHT_SEMI_BOLD 600
CONSTANT: DWRITE_FONT_WEIGHT_BOLD 700
CONSTANT: DWRITE_FONT_WEIGHT_EXTRA_BOLD 800
CONSTANT: DWRITE_FONT_WEIGHT_ULTRA_BOLD 800
CONSTANT: DWRITE_FONT_WEIGHT_BLACK 900
CONSTANT: DWRITE_FONT_WEIGHT_HEAVY 900
CONSTANT: DWRITE_FONT_WEIGHT_EXTRA_BLACK 950
CONSTANT: DWRITE_FONT_WEIGHT_ULTRA_BLACK 950
TYPEDEF: int DWRITE_FONT_WEIGHT
C-ENUM: DWRITE_FONT_WEIGHT
{ DWRITE_FONT_WEIGHT_THIN 100 }
{ DWRITE_FONT_WEIGHT_EXTRA_LIGHT 200 }
{ DWRITE_FONT_WEIGHT_ULTRA_LIGHT 200 }
{ DWRITE_FONT_WEIGHT_LIGHT 300 }
{ DWRITE_FONT_WEIGHT_NORMAL 400 }
{ DWRITE_FONT_WEIGHT_REGULAR 400 }
{ DWRITE_FONT_WEIGHT_MEDIUM 500 }
{ DWRITE_FONT_WEIGHT_DEMI_BOLD 600 }
{ DWRITE_FONT_WEIGHT_SEMI_BOLD 600 }
{ DWRITE_FONT_WEIGHT_BOLD 700 }
{ DWRITE_FONT_WEIGHT_EXTRA_BOLD 800 }
{ DWRITE_FONT_WEIGHT_ULTRA_BOLD 800 }
{ DWRITE_FONT_WEIGHT_BLACK 900 }
{ DWRITE_FONT_WEIGHT_HEAVY 900 }
{ DWRITE_FONT_WEIGHT_EXTRA_BLACK 950 }
{ DWRITE_FONT_WEIGHT_ULTRA_BLACK 950 } ;
CONSTANT: DWRITE_FONT_STRETCH_UNDEFINED 0
CONSTANT: DWRITE_FONT_STRETCH_ULTRA_CONDENSED 1
CONSTANT: DWRITE_FONT_STRETCH_EXTRA_CONDENSED 2
CONSTANT: DWRITE_FONT_STRETCH_CONDENSED 3
CONSTANT: DWRITE_FONT_STRETCH_SEMI_CONDENSED 4
CONSTANT: DWRITE_FONT_STRETCH_NORMAL 5
CONSTANT: DWRITE_FONT_STRETCH_MEDIUM 5
CONSTANT: DWRITE_FONT_STRETCH_SEMI_EXPANDED 6
CONSTANT: DWRITE_FONT_STRETCH_EXPANDED 7
CONSTANT: DWRITE_FONT_STRETCH_EXTRA_EXPANDED 8
CONSTANT: DWRITE_FONT_STRETCH_ULTRA_EXPANDED 9
TYPEDEF: int DWRITE_FONT_STRETCH
C-ENUM: DWRITE_FONT_STRETCH
{ DWRITE_FONT_STRETCH_UNDEFINED 0 }
{ DWRITE_FONT_STRETCH_ULTRA_CONDENSED 1 }
{ DWRITE_FONT_STRETCH_EXTRA_CONDENSED 2 }
{ DWRITE_FONT_STRETCH_CONDENSED 3 }
{ DWRITE_FONT_STRETCH_SEMI_CONDENSED 4 }
{ DWRITE_FONT_STRETCH_NORMAL 5 }
{ DWRITE_FONT_STRETCH_MEDIUM 5 }
{ DWRITE_FONT_STRETCH_SEMI_EXPANDED 6 }
{ DWRITE_FONT_STRETCH_EXPANDED 7 }
{ DWRITE_FONT_STRETCH_EXTRA_EXPANDED 8 }
{ DWRITE_FONT_STRETCH_ULTRA_EXPANDED 9 } ;
C-ENUM:
C-ENUM: DWRITE_FONT_STYLE
DWRITE_FONT_STYLE_NORMAL
DWRITE_FONT_STYLE_OBLIQUE
DWRITE_FONT_STYLE_ITALIC ;
TYPEDEF: int DWRITE_FONT_STYLE
C-ENUM:
C-ENUM: DWRITE_INFORMATIONAL_STRING_ID
DWRITE_INFORMATIONAL_STRING_NONE
DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE
DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS
@ -85,7 +82,6 @@ C-ENUM:
DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES
DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES
DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT ;
TYPEDEF: int DWRITE_INFORMATIONAL_STRING_ID
STRUCT: DWRITE_FONT_METRICS
{ designUnitsPerEm USHORT }
@ -112,10 +108,9 @@ STRUCT: DWRITE_GLYPH_OFFSET
{ advanceOffset FLOAT }
{ ascenderOffset FLOAT } ;
C-ENUM:
C-ENUM: DWRITE_FACTORY_TYPE
DWRITE_FACTORY_TYPE_SHARED
DWRITE_FACTORY_TYPE_ISOLATED ;
TYPEDEF: int DWRITE_FACTORY_TYPE
C-TYPE: IDWriteFontFileStream
@ -138,14 +133,12 @@ COM-INTERFACE: IDWriteFontFile IUnknown {739d886a-cef5-47dc-8769-1a8b41bebbb0}
HRESULT GetLoader ( IDWriteFontFileLoader** fontFileLoader )
HRESULT Analyze ( BOOL* isSupportedFontType, DWRITE_FONT_FILE_TYPE* fontFileType, DWRITE_FONT_FACE_TYPE* fontFaceType, UINT32* numberOfFaces ) ;
TYPEDEF: int DWRITE_PIXEL_GEOMETRY
C-ENUM:
C-ENUM: DWRITE_PIXEL_GEOMETRY
DWRITE_PIXEL_GEOMETRY_FLAT
DWRITE_PIXEL_GEOMETRY_RGB
DWRITE_PIXEL_GEOMETRY_BGR ;
TYPEDEF: int DWRITE_RENDERING_MODE
C-ENUM:
C-ENUM: DWRITE_RENDERING_MODE
DWRITE_RENDERING_MODE_DEFAULT
DWRITE_RENDERING_MODE_ALIASED
DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC
@ -240,39 +233,32 @@ COM-INTERFACE: IDWriteFont IUnknown {acd16696-8c14-4f5d-877e-fe3fc1d32737}
HRESULT HasCharacter ( UINT32 unicodeValue, BOOL* exists )
HRESULT CreateFontFace ( IDWriteFontFace** fontFace ) ;
TYPEDEF: int DWRITE_READING_DIRECTION
C-ENUM:
C-ENUM: DWRITE_READING_DRECTION
DWRITE_READING_DIRECTION_LEFT_TO_RIGHT
DWRITE_READING_DIRECTION_RIGHT_TO_LEFT ;
TYPEDEF: int DWRITE_FLOW_DIRECTION
C-ENUM:
C-ENUM: DWRITE_FLOW_DIRECTION
DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM ;
TYPEDEF: int DWRITE_TEXT_ALIGNMENT
C-ENUM:
C-ENUM: DWRITE_TEXT_ALIGNMENT
DWRITE_TEXT_ALIGNMENT_LEADING
DWRITE_TEXT_ALIGNMENT_TRAILING
DWRITE_TEXT_ALIGNMENT_CENTER ;
TYPEDEF: int DWRITE_PARAGRAPH_ALIGNMENT
C-ENUM:
C-ENUM: DWRITE_PARAGRAPH_ALIGNMENT
DWRITE_PARAGRAPH_ALIGNMENT_NEAR
DWRITE_PARAGRAPH_ALIGNMENT_FAR
DWRITE_PARAGRAPH_ALIGNMENT_CENTER ;
TYPEDEF: int DWRITE_WORD_WRAPPING
C-ENUM:
C-ENUM: DWRITE_WORD_WRAPPING
DWRITE_WORD_WRAPPING_WRAP
DWRITE_WORD_WRAPPING_NO_WRAP ;
TYPEDEF: int DWRITE_LINE_SPACING_METHOD
C-ENUM:
C-ENUM: DWRITE_LINE_SPACING_METHOD
DWRITE_LINE_SPACING_METHOD_DEFAULT
DWRITE_LINE_SPACING_METHOD_UNIFORM ;
TYPEDEF: int DWRITE_TRIMMING_GRANULARITY
C-ENUM:
C-ENUM: DWRITE_TRIMMING_GRANULARITY
DWRITE_TRIMMING_GRANULARITY_NONE
DWRITE_TRIMMING_GRANULARITY_CHARACTER
DWRITE_TRIMMING_GRANULARITY_WORD ;
@ -410,31 +396,29 @@ COM-INTERFACE: IDWriteTypography IUnknown {55f1112b-1dc2-4b3c-9541-f46894ed85b6}
UINT32 GetFontFeatureCount ( )
HRESULT GetFontFeature ( UINT32 fontFeatureIndex, DWRITE_FONT_FEATURE* fontFeature ) ;
CONSTANT: DWRITE_SCRIPT_SHAPES_DEFAULT 0
CONSTANT: DWRITE_SCRIPT_SHAPES_NO_VISUAL 1
TYPEDEF: int DWRITE_SCRIPT_SHAPES
C-ENUM: DWRITE_SCRIPT_SHAPES
DWRITE_SCRIPT_SHAPES_DEFAULT
DWRITE_SCRIPT_SHAPES_NO_VISUAL ;
STRUCT: DWRITE_SCRIPT_ANALYSIS
{ script USHORT }
{ shapes DWRITE_SCRIPT_SHAPES } ;
C-ENUM:
C-ENUM: DWRITE_BREAK_CONDITION
DWRITE_BREAK_CONDITION_NEUTRAL
DWRITE_BREAK_CONDITION_CAN_BREAK
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
DWRITE_BREAK_CONDITION_MUST_BREAK ;
TYPEDEF: int DWRITE_BREAK_CONDITION
STRUCT: DWRITE_LINE_BREAKPOINT
{ data BYTE } ;
C-ENUM:
C-ENUM: DWRITE_NUMBER_SUBSTITUTION_METHOD
DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE
DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL
DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE
DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL
DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL ;
TYPEDEF: int DWRITE_NUMBER_SUBSTITUTION_METHOD
COM-INTERFACE: IDWriteNumberSubstitution IUnknown {14885CC9-BAB0-4f90-B6ED-5C366A2CD03D} ;
@ -628,9 +612,9 @@ COM-INTERFACE: IDWriteGdiInterop IUnknown {1edd9491-9853-4299-898f-6432983b6f3a}
HRESULT CreateFontFaceFromHdc ( HDC hdc, IDWriteFontFace** fontFace )
HRESULT CreateBitmapRenderTarget ( HDC hdc, UINT32 width, UINT32 height, IDWriteBitmapRenderTarget** renderTarget ) ;
C-ENUM: DWRITE_TEXTURE_ALIASED_1x1
DWRITE_TEXTURE_CLEARTYPE_3x1 ;
TYPEDEF: int DWRITE_TEXTURE_TYPE
C-ENUM: DWRITE_TEXTURE_TYPE
DWRITE_TEXTURE_ALIASED_1x1
DWRITE_TEXTURE_CLEARTYPE_3x1 ;
CONSTANT: DWRITE_ALPHA_MAX 255

View File

@ -47,23 +47,23 @@ STRUCT: DXGI_RATIONAL
{ Numerator UINT }
{ Denominator UINT } ;
C-ENUM: DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED
DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE
DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST
DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST ;
TYPEDEF: int DXGI_MODE_SCANLINE_ORDER
C-ENUM: DXGI_MODE_SCANLINE_ORDER
DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED
DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE
DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST
DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST ;
C-ENUM: DXGI_MODE_SCALING_UNSPECIFIED
DXGI_MODE_SCALING_CENTERED
DXGI_MODE_SCALING_STRETCHED ;
TYPEDEF: int DXGI_MODE_SCALING
C-ENUM: DXGI_MODE_SCALING
DXGI_MODE_SCALING_UNSPECIFIED
DXGI_MODE_SCALING_CENTERED
DXGI_MODE_SCALING_STRETCHED ;
C-ENUM: DXGI_MODE_ROTATION_UNSPECIFIED
DXGI_MODE_ROTATION_IDENTITY
DXGI_MODE_ROTATION_ROTATE90
DXGI_MODE_ROTATION_ROTATE180
DXGI_MODE_ROTATION_ROTATE270 ;
TYPEDEF: int DXGI_MODE_ROTATION
C-ENUM: DXGI_MODE_ROTATION
DXGI_MODE_ROTATION_UNSPECIFIED
DXGI_MODE_ROTATION_IDENTITY
DXGI_MODE_ROTATION_ROTATE90
DXGI_MODE_ROTATION_ROTATE180
DXGI_MODE_ROTATION_ROTATE270 ;
STRUCT: DXGI_MODE_DESC
{ Width UINT }

View File

@ -39,10 +39,9 @@ STRUCT: XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS
{ pFormat WAVEFORMATEX* }
{ MaxFrameCount UINT32 } ;
C-ENUM:
XAPO_BUFFER_SILENT
XAPO_BUFFER_VALID ;
TYPEDEF: int XAPO_BUFFER_FLAGS
C-ENUM: XAPO_BUFFER_FLAGS
XAPO_BUFFER_SILENT
XAPO_BUFFER_VALID ;
STRUCT: XAPO_PROCESS_BUFFER_PARAMETERS
{ pBuffer void* }

View File

@ -133,12 +133,11 @@ STRUCT: XAUDIO2_EFFECT_CHAIN
{ EffectCount UINT32 }
{ pEffectDescriptors XAUDIO2_EFFECT_DESCRIPTOR* } ;
C-ENUM:
C-ENUM: XAUDIO2_FILTER_TYPE
LowPassFilter
BandPassFilter
HighPassFilter
NotchFilter ;
TYPEDEF: int XAUDIO2_FILTER_TYPE
STRUCT: XAUDIO2_FILTER_PARAMETERS
{ Type XAUDIO2_FILTER_TYPE }

View File

@ -199,7 +199,7 @@ CONSTANT: THREAD_PRIORITY_LOWEST -2
CONSTANT: THREAD_PRIORITY_NORMAL 0
CONSTANT: THREAD_PRIORITY_TIME_CRITICAL 15
C-ENUM:
C-ENUM: COMPUTER_NAME_FORMAT
ComputerNameNetBIOS
ComputerNameDnsHostname
ComputerNameDnsDomain
@ -210,8 +210,6 @@ C-ENUM:
ComputerNamePhysicalDnsFullyQualified
ComputerNameMax ;
TYPEDEF: uint COMPUTER_NAME_FORMAT
STRUCT: OVERLAPPED
{ internal UINT_PTR }
{ internal-high UINT_PTR }

View File

@ -37,22 +37,23 @@ FUNCTION: HRESULT ScriptLayout (
int* piLogicalToVisual
) ;
C-ENUM: SCRIPT_JUSTIFY_NONE
SCRIPT_JUSTIFY_ARABIC_BLANK
SCRIPT_JUSTIFY_CHARACTER
SCRIPT_JUSTIFY_RESERVED1
SCRIPT_JUSTIFY_BLANK
SCRIPT_JUSTIFY_RESERVED2
SCRIPT_JUSTIFY_RESERVED3
SCRIPT_JUSTIFY_ARABIC_NORMAL
SCRIPT_JUSTIFY_ARABIC_KASHIDA
SCRIPT_JUSTIFY_ALEF
SCRIPT_JUSTIFY_HA
SCRIPT_JUSTIFY_RA
SCRIPT_JUSTIFY_BA
SCRIPT_JUSTIFY_BARA
SCRIPT_JUSTIFY_SEEN
SCRIPT_JUSTIFFY_RESERVED4 ;
C-ENUM: f
SCRIPT_JUSTIFY_NONE
SCRIPT_JUSTIFY_ARABIC_BLANK
SCRIPT_JUSTIFY_CHARACTER
SCRIPT_JUSTIFY_RESERVED1
SCRIPT_JUSTIFY_BLANK
SCRIPT_JUSTIFY_RESERVED2
SCRIPT_JUSTIFY_RESERVED3
SCRIPT_JUSTIFY_ARABIC_NORMAL
SCRIPT_JUSTIFY_ARABIC_KASHIDA
SCRIPT_JUSTIFY_ALEF
SCRIPT_JUSTIFY_HA
SCRIPT_JUSTIFY_RA
SCRIPT_JUSTIFY_BA
SCRIPT_JUSTIFY_BARA
SCRIPT_JUSTIFY_SEEN
SCRIPT_JUSTIFFY_RESERVED4 ;
STRUCT: SCRIPT_VISATTR
{ flags WORD } ;

View File

@ -406,4 +406,4 @@ CONSTANT: MSBFirst 1
! * EXTENDED WINDOW MANAGER HINTS
! *****************************************************************
C-ENUM: _NET_WM_STATE_REMOVE _NET_WM_STATE_ADD _NET_WM_STATE_TOGGLE ;
C-ENUM: f _NET_WM_STATE_REMOVE _NET_WM_STATE_ADD _NET_WM_STATE_TOGGLE ;

View File

@ -349,12 +349,11 @@ STRUCT: cpSegmentQueryInfo
{ t cpFloat }
{ n cpVect } ;
C-ENUM:
C-ENUM: cpShapeType
CP_CIRCLE_SHAPE
CP_SEGMENT_SHAPE
CP_POLY_SHAPE
CP_NUM_SHAPES ;
TYPEDEF: int cpShapeType
CALLBACK: cpBB cacheData_cb ( cpShape* shape, cpVect p, cpVect rot ) ;
CALLBACK: void destroy_cb ( cpShape* shape ) ;
@ -483,11 +482,10 @@ STRUCT: cpContact
FUNCTION: cpContact* cpContactInit ( cpContact* con, cpVect p, cpVect n, cpFloat dist, cpHashValue hash ) ;
C-ENUM:
C-ENUM: cpArbiterState
cpArbiterStateNormal
cpArbiterStateFirstColl
cpArbiterStateIgnore ;
TYPEDEF: int cpArbiterState
STRUCT: cpArbiter
{ numContacts int }

View File

@ -1,8 +1,11 @@
! Copyright (C) 2010 Erik Charlebois.
! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types alien.syntax classes.struct ;
USING: accessors alien alien.c-types alien.strings alien.syntax arrays
classes.struct io.encodings.ascii kernel locals math math.intervals
sequences specialized-arrays strings typed ;
IN: elf
! FFI data
CONSTANT: EI_NIDENT 16
CONSTANT: EI_MAG0 0
CONSTANT: EI_MAG1 1
@ -456,3 +459,154 @@ STRUCT: Elf32_Dyn
STRUCT: Elf64_Dyn
{ d_tag Elf64_Sxword }
{ d_val Elf64_Xword } ;
! Low-level interface
SPECIALIZED-ARRAYS: Elf32_Shdr Elf64_Shdr Elf32_Sym Elf64_Sym Elf32_Phdr Elf64_Phdr uchar ;
UNION: Elf32/64_Ehdr Elf32_Ehdr Elf64_Ehdr ;
UNION: Elf32/64_Shdr Elf32_Shdr Elf64_Shdr ;
UNION: Elf32/64_Shdr-array Elf32_Shdr-array Elf64_Shdr-array ;
UNION: Elf32/64_Sym Elf32_Sym Elf64_Sym ;
UNION: Elf32/64_Sym-array Elf32_Sym-array Elf64_Sym-array ;
UNION: Elf32/64_Phdr Elf32_Phdr Elf64_Phdr ;
UNION: Elf32/64_Phdr-array Elf32_Phdr-array Elf64_Phdr-array ;
TYPED: 64-bit? ( elf: Elf32/64_Ehdr -- ? )
e_ident>> EI_CLASS swap nth ELFCLASS64 = ;
TYPED: elf-header ( c-ptr -- elf: Elf32/64_Ehdr )
[ Elf64_Ehdr memory>struct 64-bit? ] keep swap
[ Elf64_Ehdr memory>struct ]
[ Elf32_Ehdr memory>struct ] if ;
TYPED:: elf-section-headers ( elf: Elf32/64_Ehdr -- headers: Elf32/64_Shdr-array )
elf [ e_shoff>> ] [ e_shnum>> ] bi :> ( off num )
off elf >c-ptr <displaced-alien> num
elf 64-bit?
[ <direct-Elf64_Shdr-array> ]
[ <direct-Elf32_Shdr-array> ] if ;
TYPED:: elf-program-headers ( elf: Elf32/64_Ehdr -- headers: Elf32/64_Phdr-array )
elf [ e_phoff>> ] [ e_phnum>> ] bi :> ( off num )
off elf >c-ptr <displaced-alien> num
elf 64-bit?
[ <direct-Elf64_Phdr-array> ]
[ <direct-Elf32_Phdr-array> ] if ;
TYPED: elf-loadable-segments ( headers: Elf32/64_Phdr-array -- headers: Elf32/64_Phdr-array )
[ p_type>> PT_LOAD = ] filter ;
TYPED:: elf-segment-sections ( segment: Elf32/64_Phdr sections: Elf32/64_Shdr-array -- sections )
segment [ p_offset>> dup ] [ p_filesz>> + ] bi [a,b) :> segment-interval
sections [ dup [ sh_offset>> dup ] [ sh_size>> + ] bi [a,b) 2array ] { } map-as :> section-intervals
section-intervals [ second segment-interval interval-intersect empty-interval = not ]
filter [ first ] map ;
TYPED:: virtual-address-segment ( elf: Elf32/64_Ehdr address -- program-header/f )
elf elf-program-headers elf-loadable-segments [
[ p_vaddr>> dup ] [ p_memsz>> + ] bi [a,b)
address swap interval-contains?
] filter [ f ] [ first ] if-empty ;
TYPED:: virtual-address-section ( elf: Elf32/64_Ehdr address -- section-header/f )
elf address virtual-address-segment :> segment
segment elf elf-section-headers elf-segment-sections :> sections
address segment p_vaddr>> - segment p_offset>> + :> faddress
sections [
[ sh_offset>> dup ] [ sh_size>> + ] bi [a,b)
faddress swap interval-contains?
] filter [ f ] [ first ] if-empty ;
TYPED:: elf-segment-data ( elf: Elf32/64_Ehdr header: Elf32/64_Phdr -- uchar-array/f )
header [ p_offset>> elf >c-ptr <displaced-alien> ] [ p_filesz>> ] bi <direct-uchar-array> ;
TYPED:: elf-section-data ( elf: Elf32/64_Ehdr header: Elf32/64_Shdr -- uchar-array/f )
header [ sh_offset>> elf >c-ptr <displaced-alien> ] [ sh_size>> ] bi <direct-uchar-array> ;
TYPED:: elf-section-data-by-index ( elf: Elf32/64_Ehdr index -- header/f uchar-array/f )
elf elf-section-headers :> sections
index sections nth :> header
elf header elf-section-data :> data
header data ;
TYPED:: elf-section-name ( elf: Elf32/64_Ehdr header: Elf32/64_Shdr -- name: string )
elf elf e_shstrndx>> elf-section-data-by-index nip >c-ptr :> section-names
header sh_name>> section-names <displaced-alien> ascii alien>string ;
TYPED:: elf-section-data-by-name ( elf: Elf32/64_Ehdr name: string -- header/f uchar-array/f )
elf elf-section-headers :> sections
elf e_shstrndx>> :> ndx
elf ndx sections nth elf-section-data >c-ptr :> section-names
sections 1 tail [
sh_name>> section-names <displaced-alien> ascii alien>string name =
] find nip
[ dup elf swap elf-section-data ]
[ f f ] if* ;
TYPED:: elf-sections ( elf: Elf32/64_Ehdr -- sections )
elf elf-section-headers :> sections
elf elf e_shstrndx>> elf-section-data-by-index nip >c-ptr :> section-names
sections [
[ sh_name>> section-names <displaced-alien>
ascii alien>string ] keep 2array
] { } map-as ;
TYPED:: elf-symbols ( elf: Elf32/64_Ehdr section-data: uchar-array -- symbols )
elf ".strtab" elf-section-data-by-name nip >c-ptr :> strings
section-data [ >c-ptr ] [ length ] bi
elf 64-bit?
[ Elf64_Sym heap-size / <direct-Elf64_Sym-array> ]
[ Elf32_Sym heap-size / <direct-Elf32_Sym-array> ] if
[ [ st_name>> strings <displaced-alien> ascii alien>string ] keep 2array ] { } map-as ;
! High level interface
TUPLE: elf elf-header ;
TUPLE: section name elf-header section-header data ;
TUPLE: segment elf-header program-header data ;
TUPLE: symbol name elf-header sym data ;
GENERIC: sections ( obj -- sections )
: <elf> ( c-ptr -- elf )
elf-header elf boa ;
M:: elf sections ( elf -- sections )
elf elf-header>> elf-sections
[
first2 :> ( name header )
elf elf-header>> header elf-section-data :> data
name elf elf-header>> header data section boa
] { } map-as ;
:: segments ( elf -- segments )
elf elf-header>> elf-program-headers
[| header |
elf elf-header>> header elf-segment-data :> data
elf elf-header>> header data segment boa
] { } map-as ;
M:: segment sections ( segment -- sections )
segment program-header>>
segment elf-header>> elf-section-headers
elf-segment-sections
[| header |
segment elf-header>> header elf-section-name :> name
segment elf-header>> header elf-section-data :> data
name segment elf-header>> header data section boa
] { } map-as ;
:: symbols ( section -- symbols )
section elf-header>>
section data>>
elf-symbols
[
first2 :> ( name sym )
name section elf-header>> sym f symbol boa
] { } map-as ;
:: symbol-data ( symbol -- data )
symbol [ elf-header>> ] [ sym>> st_value>> ] bi virtual-address-segment :> segment
symbol sym>> st_value>> segment p_vaddr>> - segment p_offset>> + :> faddress
faddress symbol elf-header>> >c-ptr <displaced-alien>
symbol sym>> st_size>> <direct-uchar-array> ;

1
extra/fluids/authors.txt Normal file
View File

@ -0,0 +1 @@
Erik Charlebois

BIN
extra/fluids/colors.ppm Normal file

Binary file not shown.

142
extra/fluids/fluids.factor Normal file
View File

@ -0,0 +1,142 @@
! Copyright (C) 2010 Erik Charlebois.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays classes.struct destructors game.loop
game.worlds gpu gpu.buffers gpu.effects.blur gpu.framebuffers
gpu.render gpu.shaders gpu.state gpu.textures gpu.util images
images.loader kernel literals locals make math math.rectangles
math.vectors namespaces opengl.gl sequences specialized-arrays
ui.gadgets.worlds ui.gestures ui.pixel-formats gpu.effects.step
images.pgm images.ppm ;
FROM: alien.c-types => float ;
SPECIALIZED-ARRAY: float
IN: fluids
STRUCT: float2_t
{ x float }
{ y float } ;
: f2+ ( lhs rhs -- res )
[ [ x>> ] bi@ + ]
[ [ y>> ] bi@ + ]
2bi float2_t <struct-boa> ; inline
: f2- ( lhs rhs -- res )
[ [ x>> ] bi@ - ]
[ [ y>> ] bi@ - ]
2bi float2_t <struct-boa> ; inline
: f2*n ( lhs rhs -- res )
[ [ x>> ] dip * ]
[ [ y>> ] dip * ]
2bi float2_t <struct-boa> ; inline
STRUCT: particle_t
{ p float2_t }
{ p' float2_t }
{ m float } ;
SPECIALIZED-ARRAY: particle_t
CONSTANT: gravity S{ float2_t f 0.0 -0.1 }
:: verlet-integrate-particle ( p dt -- p' )
p p>> 2.0 f2*n :> v1
p p'>> :> v2
gravity dt dt * 1.0 p m>> 2.0 * / * f2*n :> v3
v1 v2 f2- v3 f2+
p p m>> particle_t <struct-boa> ; inline
CONSTANT: initial-particles
particle_t-array{
S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.499 0.599 } 1.0 }
S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.501 0.599 } 3.0 }
S{ particle_t f S{ float2_t f 0.5 0.5 } S{ float2_t f 0.5 0.5 } 2.0 }
S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.5 0.599 } 1.0 }
S{ particle_t f S{ float2_t f 0.6 0.5 } S{ float2_t f 0.6 0.5 } 3.0 }
S{ particle_t f S{ float2_t f 0.7 0.5 } S{ float2_t f 0.7 0.5 } 1.0 }
S{ particle_t f S{ float2_t f 0.1 0.5 } S{ float2_t f 0.1 0.5 } 5.0 }
S{ particle_t f S{ float2_t f 0.2 0.5 } S{ float2_t f 0.2 0.5 } 1.0 }
S{ particle_t f S{ float2_t f 0.3 0.3 } S{ float2_t f 0.3 0.3 } 4.0 }
S{ particle_t f S{ float2_t f 0.5 0.15 } S{ float2_t f 0.5 0.15 } 1.0 }
S{ particle_t f S{ float2_t f 0.5 0.1 } S{ float2_t f 0.5 0.1 } 9.0 }
}
: integrate-particles! ( particles dt -- particles )
[ verlet-integrate-particle ] curry map! ;
TUPLE: fluids-world < game-world
particles texture ramp { paused boolean initial: f } ;
: make-texture ( pathname -- texture )
load-image
[
[ component-order>> ]
[ component-type>> ] bi
T{ texture-parameters
{ wrap clamp-texcoord-to-edge }
{ min-filter filter-nearest }
{ mag-filter filter-nearest }
{ min-mipmap-filter f } }
<texture-2d>
]
[
0 swap [ allocate-texture-image ] 3keep 2drop
] bi ;
SYMBOL: fluid
: integrate ( world -- )
particles>> $[ 60 fps 1000000 /f ] integrate-particles! drop ;
: pause ( -- )
fluid get [ not ] change-paused drop ;
: step ( -- )
fluid get paused>> [ fluid get integrate ] when ;
M: fluids-world begin-game-world
dup fluid set
init-gpu
initial-particles clone >>particles
"resource:extra/fluids/particle2.pgm" make-texture >>texture
"resource:extra/fluids/colors.ppm" make-texture >>ramp
drop ;
M: fluids-world end-game-world
drop ;
M: fluids-world tick-game-world
dup paused>> [ drop ] [ integrate ] if ;
M:: fluids-world draw-world* ( world -- )
world particles>> [
[ p>> [ x>> , ] [ y>> , ] bi ] each
] curry float-array{ } make :> verts
[
verts world texture>> 50.0 { 320 240 } blended-point-sprite-batch &dispose
blend-state new set-gpu-state
gaussian-blur &dispose world ramp>> { 1024 768 } step-texture &dispose
{ 1024 768 } draw-texture
] with-destructors
;
GAME: fluids {
{ world-class fluids-world }
{ title "Fluids Test" }
{ pixel-format-attributes {
windowed double-buffered T{ depth-bits { value 24 } } } }
{ pref-dim { 1024 768 } }
{ tick-interval-micros $[ 60 fps ] }
} ;
MAIN: fluids
fluids-world H{
{ T{ button-down } [ [
hand-loc get { 1024 768 } v/ 2 v*n 1 v-n { 1 -1 } v* first2 float2_t <struct-boa>
dup 2.0 particle_t <struct-boa> suffix
] change-particles drop ] }
} set-gestures

BIN
extra/fluids/particle2.pgm Normal file

Binary file not shown.

View File

@ -176,14 +176,14 @@ FUNCTION: FT_Error FT_Set_Char_Size ( face* face, FT_F26Dot6 char_width, FT_F26D
FUNCTION: FT_Error FT_Load_Char ( face* face, FT_ULong charcode, FT_Int32 load_flags ) ;
C-ENUM:
C-ENUM: f
FT_RENDER_MODE_NORMAL
FT_RENDER_MODE_LIGHT
FT_RENDER_MODE_MONO
FT_RENDER_MODE_LCD
FT_RENDER_MODE_LCD_V ;
C-ENUM:
C-ENUM: f
FT_PIXEL_MODE_NONE
FT_PIXEL_MODE_MONO
FT_PIXEL_MODE_GRAY

View File

@ -0,0 +1 @@
Erik Charlebois

View File

@ -0,0 +1,82 @@
! Copyright (C) 2010 Erik Charlebois.
! See http://factorcode.org/license.txt for BSD license.
USING: arrays destructors fry gpu.framebuffers gpu.render gpu.shaders
gpu.state gpu.textures gpu.util images kernel locals math
math.rectangles sequences ;
IN: gpu.effects.blur
GLSL-SHADER: blur-fragment-shader fragment-shader
uniform sampler2D texture;
uniform bool horizontal;
uniform float blurSize;
varying vec2 texcoord;
void main()
{
vec4 col = 0.16 * texture2D(texture, texcoord);
if (horizontal)
{
vec2 blurX1 = vec2(blurSize, 0.0);
vec2 blurX2 = vec2(blurSize * 2.0, 0.0);
vec2 blurX3 = vec2(blurSize * 3.0, 0.0);
vec2 blurX4 = vec2(blurSize * 4.0, 0.0);
col += 0.15 * ( texture2D(texture, texcoord - blurX1)
+ texture2D(texture, texcoord + blurX1));
col += 0.12 * ( texture2D(texture, texcoord - blurX2)
+ texture2D(texture, texcoord + blurX2));
col += 0.09 * ( texture2D(texture, texcoord - blurX3)
+ texture2D(texture, texcoord + blurX3));
col += 0.05 * ( texture2D(texture, texcoord - blurX4)
+ texture2D(texture, texcoord + blurX4));
}
else
{
vec2 blurY1 = vec2(0.0, blurSize);
vec2 blurY2 = vec2(0.0, blurSize * 2.0);
vec2 blurY3 = vec2(0.0, blurSize * 3.0);
vec2 blurY4 = vec2(0.0, blurSize * 4.0);
col += 0.15 * ( texture2D(texture, texcoord - blurY1)
+ texture2D(texture, texcoord + blurY1));
col += 0.12 * ( texture2D(texture, texcoord - blurY2)
+ texture2D(texture, texcoord + blurY2));
col += 0.09 * ( texture2D(texture, texcoord - blurY3)
+ texture2D(texture, texcoord + blurY3));
col += 0.05 * ( texture2D(texture, texcoord - blurY4)
+ texture2D(texture, texcoord + blurY4));
}
gl_FragColor = col;
}
;
UNIFORM-TUPLE: blur-uniforms
{ "texture" texture-uniform f }
{ "horizontal" bool-uniform f }
{ "blurSize" float-uniform f } ;
GLSL-PROGRAM: blur-program window-vertex-shader blur-fragment-shader window-vertex-format ;
:: (blur) ( texture horizontal? framebuffer dim -- )
{ 0 0 } dim <rect> <viewport-state> set-gpu-state
texture horizontal? 1.0 dim horizontal? [ first ] [ second ] if / blur-uniforms boa framebuffer {
{ "primitive-mode" [ 2drop triangle-strip-mode ] }
{ "uniforms" [ drop ] }
{ "vertex-array" [ 2drop blur-program <program-instance> <window-vertex-array> &dispose ] }
{ "indexes" [ 2drop T{ index-range f 0 4 } ] }
{ "framebuffer" [ nip ] }
} 2<render-set> render ;
:: blur ( texture horizontal? -- texture )
texture 0 texture-dim :> dim
dim RGB float-components <2d-render-texture> :> ( target-framebuffer target-texture )
texture horizontal? target-framebuffer dim (blur)
target-framebuffer dispose
target-texture ;
: horizontal-blur ( texture -- texture ) t blur ; inline
: vertical-blur ( texture -- texture ) f blur ; inline
: discompose ( quot1 quot2 -- compose )
'[ @ &dispose @ ] with-destructors ; inline
: gaussian-blur ( texture -- texture )
[ horizontal-blur ] [ vertical-blur ] discompose ;

View File

@ -0,0 +1 @@
Blur effects for textures.

View File

@ -0,0 +1 @@
Erik Charlebois

View File

@ -0,0 +1,40 @@
! Copyright (C) 2010 Erik Charlebois.
! See http://factorcode.org/license.txt for BSD license.
USING: destructors gpu.render gpu.shaders gpu.state gpu.textures
gpu.util images kernel locals math.rectangles ;
IN: gpu.effects.step
GLSL-SHADER: step-fragment-shader fragment-shader
const vec4 luminance = vec4(0.3, 0.59, 0.11, 0.0);
uniform sampler2D texture;
uniform sampler2D ramp;
varying vec2 texcoord;
void main()
{
vec4 col = texture2D(texture, texcoord);
float l = dot(col, luminance);
gl_FragColor = texture2D(ramp, vec2(l, 0.0));
}
;
UNIFORM-TUPLE: step-uniforms
{ "texture" texture-uniform f }
{ "ramp" texture-uniform f } ;
GLSL-PROGRAM: step-program window-vertex-shader step-fragment-shader window-vertex-format ;
: (step-texture) ( texture ramp texture dim -- )
{ 0 0 } swap <rect> <viewport-state> set-gpu-state
[ step-uniforms boa ] dip {
{ "primitive-mode" [ 2drop triangle-strip-mode ] }
{ "uniforms" [ drop ] }
{ "vertex-array" [ 2drop <window-vertex-buffer> step-program <program-instance> <vertex-array> ] }
{ "indexes" [ 2drop T{ index-range f 0 4 } ] }
{ "framebuffer" [ nip ] }
} 2<render-set> render ;
:: step-texture ( texture ramp dim -- texture )
dim RGB float-components <2d-render-texture> :> ( target-framebuffer target-texture )
texture ramp target-framebuffer dim (step-texture)
target-framebuffer dispose
target-texture ;

View File

@ -0,0 +1 @@
Render a quad with a step texture.

View File

@ -1,6 +1,7 @@
! (c)2009 Joe Groff bsd license
USING: gpu.buffers gpu.render gpu.shaders gpu.textures images kernel
specialized-arrays ;
USING: arrays destructors gpu.buffers gpu.framebuffers gpu.render
gpu.shaders gpu.state gpu.textures images kernel locals math
math.rectangles opengl.gl sequences specialized-arrays ;
FROM: alien.c-types => float ;
SPECIALIZED-ARRAY: float
IN: gpu.util
@ -44,10 +45,59 @@ CONSTANT: environment-cube-map-mv-matrices
{ 0.0 0.0 0.0 1.0 }
} }
}
GLSL-SHADER: window-vertex-shader vertex-shader
attribute vec2 vertex;
varying vec2 texcoord;
void main()
{
texcoord = vertex * vec2(0.5) + vec2(0.5);
gl_Position = vec4(vertex, 0.0, 1.0);
}
;
VERTEX-FORMAT: window-vertex
GLSL-SHADER: window-fragment-shader fragment-shader
uniform sampler2D texture;
varying vec2 texcoord;
void main()
{
gl_FragColor = texture2D(texture, texcoord);
}
;
VERTEX-FORMAT: window-vertex-format
{ "vertex" float-components 2 f } ;
UNIFORM-TUPLE: window-uniforms
{ "texture" texture-uniform f } ;
GLSL-PROGRAM: window-program window-vertex-shader window-fragment-shader window-vertex-format ;
GLSL-SHADER: window-point-vertex-shader vertex-shader
uniform float point_size;
attribute vec2 vertex;
void main()
{
gl_Position = vec4(vertex, 0.0, 1.0);
gl_PointSize = point_size;
}
;
GLSL-SHADER: window-point-fragment-shader fragment-shader
#version 120
uniform sampler2D texture;
void main()
{
gl_FragColor = texture2D(texture, gl_PointCoord);
}
;
UNIFORM-TUPLE: window-point-uniforms
{ "texture" texture-uniform f }
{ "point_size" float-uniform f } ;
GLSL-PROGRAM: window-point-program window-point-vertex-shader window-point-fragment-shader window-vertex-format ;
CONSTANT: window-vertexes
float-array{
-1.0 -1.0
@ -62,4 +112,47 @@ CONSTANT: window-vertexes
byte-array>buffer ; inline
: <window-vertex-array> ( program-instance -- vertex-array )
[ <window-vertex-buffer> ] dip window-vertex <vertex-array*> ; inline
[ <window-vertex-buffer> ] dip window-vertex-format <vertex-array*> ; inline
:: <2d-render-texture> ( dim order type -- renderbuffer texture )
order type
T{ texture-parameters
{ wrap clamp-texcoord-to-edge }
{ min-filter filter-linear }
{ min-mipmap-filter f } }
<texture-2d> [
0 <texture-2d-attachment> 1array f f dim <framebuffer>
dup { { default-attachment { 0 0 0 } } } clear-framebuffer
] keep ;
: draw-texture ( texture dim -- )
{ 0 0 } swap <rect> <viewport-state> set-gpu-state
{
{ "primitive-mode" [ drop triangle-strip-mode ] }
{ "uniforms" [ window-uniforms boa ] }
{ "vertex-array" [ drop window-program <program-instance> <window-vertex-array> &dispose ] }
{ "indexes" [ drop T{ index-range f 0 4 } ] }
} <render-set> render ;
:: <streamed-vertex-array> ( verts program-instance -- vertex-array )
verts stream-upload draw-usage vertex-buffer byte-array>buffer &dispose
program-instance <vertex-array> &dispose ;
: (blended-point-sprite-batch) ( verts framebuffer texture point-size dim -- )
f eq-add func-one func-one <blend-mode> dup <blend-state> set-gpu-state
f origin-upper-left 1.0 <point-state> set-gpu-state
GL_POINT_SPRITE glEnable
{ 0 0 } swap <rect> <viewport-state> set-gpu-state
window-point-uniforms boa {
{ "primitive-mode" [ 3drop points-mode ] }
{ "uniforms" [ 2nip ] }
{ "vertex-array" [ 2drop window-point-program <program-instance> <streamed-vertex-array> ] }
{ "indexes" [ 2drop length 2 / 0 swap <index-range> ] }
{ "framebuffer" [ drop nip ] }
} 3<render-set> render ;
:: blended-point-sprite-batch ( verts texture point-size dim -- texture )
dim RGB float-components <2d-render-texture> :> ( target-framebuffer target-texture )
verts target-framebuffer texture point-size dim (blended-point-sprite-batch)
target-framebuffer dispose
target-texture ;

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -191,7 +191,7 @@ CONSTANT: LIBUSB_ERROR_NOT_SUPPORTED -12
CONSTANT: LIBUSB_ERROR_OTHER -99
TYPEDEF: int libusb_error
C-ENUM:
C-ENUM: libusb_transfer_status
LIBUSB_TRANSFER_COMPLETED
LIBUSB_TRANSFER_ERROR
LIBUSB_TRANSFER_TIMED_OUT
@ -199,7 +199,6 @@ C-ENUM:
LIBUSB_TRANSFER_STALL
LIBUSB_TRANSFER_NO_DEVICE
LIBUSB_TRANSFER_OVERFLOW ;
TYPEDEF: int libusb_transfer_status
CONSTANT: LIBUSB_TRANSFER_SHORT_NOT_OK 1
CONSTANT: LIBUSB_TRANSFER_FREE_BUFFER 2

View File

@ -1,6 +1,6 @@
! Copyright (C) 2009 Matthew Willis.
! See http://factorcode.org/license.txt for BSD license.
USING: alien.libraries alien.syntax system sequences combinators kernel ;
USING: alien.libraries alien.syntax system sequences combinators kernel alien.c-types ;
IN: llvm.core
@ -28,20 +28,20 @@ LIBRARY: LLVMCore
TYPEDEF: uint unsigned
TYPEDEF: unsigned enum
CONSTANT: LLVMZExtAttribute BIN: 1
CONSTANT: LLVMSExtAttribute BIN: 10
CONSTANT: LLVMNoReturnAttribute BIN: 100
CONSTANT: LLVMInRegAttribute BIN: 1000
CONSTANT: LLVMStructRetAttribute BIN: 10000
CONSTANT: LLVMNoUnwindAttribute BIN: 100000
CONSTANT: LLVMNoAliasAttribute BIN: 1000000
CONSTANT: LLVMByValAttribute BIN: 10000000
CONSTANT: LLVMNestAttribute BIN: 100000000
CONSTANT: LLVMReadNoneAttribute BIN: 1000000000
CONSTANT: LLVMReadOnlyAttribute BIN: 10000000000
TYPEDEF: enum LLVMAttribute;
C-ENUM: LLVMAttribute
{ LLVMZExtAttribute BIN: 1 }
{ LLVMSExtAttribute BIN: 10 }
{ LLVMNoReturnAttribute BIN: 100 }
{ LLVMInRegAttribute BIN: 1000 }
{ LLVMStructRetAttribute BIN: 10000 }
{ LLVMNoUnwindAttribute BIN: 100000 }
{ LLVMNoAliasAttribute BIN: 1000000 }
{ LLVMByValAttribute BIN: 10000000 }
{ LLVMNestAttribute BIN: 100000000 }
{ LLVMReadNoneAttribute BIN: 1000000000 }
{ LLVMReadOnlyAttribute BIN: 10000000000 } ;
C-ENUM:
C-ENUM: LLVMTypeKind
LLVMVoidTypeKind
LLVMFloatTypeKind
LLVMDoubleTypeKind
@ -57,9 +57,8 @@ C-ENUM:
LLVMPointerTypeKind
LLVMOpaqueTypeKind
LLVMVectorTypeKind ;
TYPEDEF: enum LLVMTypeKind
C-ENUM:
C-ENUM: LLVMLinkage
LLVMExternalLinkage
LLVMLinkOnceLinkage
LLVMWeakLinkage
@ -69,34 +68,32 @@ C-ENUM:
LLVMDLLExportLinkage
LLVMExternalWeakLinkage
LLVMGhostLinkage ;
TYPEDEF: enum LLVMLinkage
C-ENUM:
C-ENUM: LLVMVisibility
LLVMDefaultVisibility
LLVMHiddenVisibility
LLVMProtectedVisibility ;
TYPEDEF: enum LLVMVisibility
CONSTANT: LLVMCCallConv 0
CONSTANT: LLVMFastCallConv 8
CONSTANT: LLVMColdCallConv 9
CONSTANT: LLVMX86StdcallCallConv 64
CONSTANT: LLVMX86FastcallCallConv 65
TYPEDEF: enum LLVMCallConv
C-ENUM: LLVMCallConv
{ LLVMCCallConv 0 }
{ LLVMFastCallConv 8 }
{ LLVMColdCallConv 9 }
{ LLVMX86StdcallCallConv 64 }
{ LLVMX86FastcallCallConv 65 } ;
CONSTANT: LLVMIntEQ 32
CONSTANT: LLVMIntNE 33
CONSTANT: LLVMIntUGT 34
CONSTANT: LLVMIntUGE 35
CONSTANT: LLVMIntULT 36
CONSTANT: LLVMIntULE 37
CONSTANT: LLVMIntSGT 38
CONSTANT: LLVMIntSGE 39
CONSTANT: LLVMIntSLT 40
CONSTANT: LLVMIntSLE 41
TYPEDEF: enum LLVMIntPredicate
C-ENUM: LLVMIntPredicate
{ LLVMIntEQ 32 }
{ LLVMIntNE 33 }
{ LLVMIntUGT 34 }
{ LLVMIntUGE 35 }
{ LLVMIntULT 36 }
{ LLVMIntULE 37 }
{ LLVMIntSGT 38 }
{ LLVMIntSGE 39 }
{ LLVMIntSLT 40 }
{ LLVMIntSLE 41 } ;
C-ENUM:
C-ENUM: LLVMRealPredicate
LLVMRealPredicateFalse
LLVMRealOEQ
LLVMRealOGT
@ -113,7 +110,6 @@ C-ENUM:
LLVMRealULE
LLVMRealUNE
LLVMRealPredicateTrue ;
TYPEDEF: enum LLVMRealPredicate
! Opaque Types

1
extra/macho/authors.txt Normal file
View File

@ -0,0 +1 @@
Erik Charlebois

807
extra/macho/macho.factor Normal file
View File

@ -0,0 +1,807 @@
! Copyright (C) 2010 Erik Charlebois.
! See http:// factorcode.org/license.txt for BSD license.
USING: alien.c-types alien.syntax classes.struct kernel literals math
unix.types ;
IN: macho
TYPEDEF: int integer_t
TYPEDEF: int vm_prot_t
TYPEDEF: integer_t cpu_type_t
TYPEDEF: integer_t cpu_subtype_t
TYPEDEF: integer_t cpu_threadtype_t
CONSTANT: VM_PROT_NONE HEX: 00
CONSTANT: VM_PROT_READ HEX: 01
CONSTANT: VM_PROT_WRITE HEX: 02
CONSTANT: VM_PROT_EXECUTE HEX: 04
CONSTANT: VM_PROT_DEFAULT HEX: 03
CONSTANT: VM_PROT_ALL HEX: 07
CONSTANT: VM_PROT_NO_CHANGE HEX: 08
CONSTANT: VM_PROT_COPY HEX: 10
CONSTANT: VM_PROT_WANTS_COPY HEX: 10
! loader.h
STRUCT: mach_header
{ magic uint32_t }
{ cputype cpu_type_t }
{ cpusubtype cpu_subtype_t }
{ filetype uint32_t }
{ ncmds uint32_t }
{ sizeofcmds uint32_t }
{ flags uint32_t } ;
CONSTANT: MH_MAGIC HEX: feedface
CONSTANT: MH_CIGAM HEX: cefaedfe
STRUCT: mach_header_64
{ magic uint32_t }
{ cputype cpu_type_t }
{ cpusubtype cpu_subtype_t }
{ filetype uint32_t }
{ ncmds uint32_t }
{ sizeofcmds uint32_t }
{ flags uint32_t }
{ reserved uint32_t } ;
CONSTANT: MH_MAGIC_64 HEX: feedfacf
CONSTANT: MH_CIGAM_64 HEX: cffaedfe
CONSTANT: MH_OBJECT HEX: 1
CONSTANT: MH_EXECUTE HEX: 2
CONSTANT: MH_FVMLIB HEX: 3
CONSTANT: MH_CORE HEX: 4
CONSTANT: MH_PRELOAD HEX: 5
CONSTANT: MH_DYLIB HEX: 6
CONSTANT: MH_DYLINKER HEX: 7
CONSTANT: MH_BUNDLE HEX: 8
CONSTANT: MH_DYLIB_STUB HEX: 9
CONSTANT: MH_DSYM HEX: a
CONSTANT: MH_KEXT_BUNDLE HEX: b
CONSTANT: MH_NOUNDEFS HEX: 1
CONSTANT: MH_INCRLINK HEX: 2
CONSTANT: MH_DYLDLINK HEX: 4
CONSTANT: MH_BINDATLOAD HEX: 8
CONSTANT: MH_PREBOUND HEX: 10
CONSTANT: MH_SPLIT_SEGS HEX: 20
CONSTANT: MH_LAZY_INIT HEX: 40
CONSTANT: MH_TWOLEVEL HEX: 80
CONSTANT: MH_FORCE_FLAT HEX: 100
CONSTANT: MH_NOMULTIDEFS HEX: 200
CONSTANT: MH_NOFIXPREBINDING HEX: 400
CONSTANT: MH_PREBINDABLE HEX: 800
CONSTANT: MH_ALLMODSBOUND HEX: 1000
CONSTANT: MH_SUBSECTIONS_VIA_SYMBOLS HEX: 2000
CONSTANT: MH_CANONICAL HEX: 4000
CONSTANT: MH_WEAK_DEFINES HEX: 8000
CONSTANT: MH_BINDS_TO_WEAK HEX: 10000
CONSTANT: MH_ALLOW_STACK_EXECUTION HEX: 20000
CONSTANT: MH_DEAD_STRIPPABLE_DYLIB HEX: 400000
CONSTANT: MH_ROOT_SAFE HEX: 40000
CONSTANT: MH_SETUID_SAFE HEX: 80000
CONSTANT: MH_NO_REEXPORTED_DYLIBS HEX: 100000
CONSTANT: MH_PIE HEX: 200000
STRUCT: load_command
{ cmd uint32_t }
{ cmdsize uint32_t } ;
CONSTANT: LC_REQ_DYLD HEX: 80000000
CONSTANT: LC_SEGMENT HEX: 1
CONSTANT: LC_SYMTAB HEX: 2
CONSTANT: LC_SYMSEG HEX: 3
CONSTANT: LC_THREAD HEX: 4
CONSTANT: LC_UNIXTHREAD HEX: 5
CONSTANT: LC_LOADFVMLIB HEX: 6
CONSTANT: LC_IDFVMLIB HEX: 7
CONSTANT: LC_IDENT HEX: 8
CONSTANT: LC_FVMFILE HEX: 9
CONSTANT: LC_PREPAGE HEX: a
CONSTANT: LC_DYSYMTAB HEX: b
CONSTANT: LC_LOAD_DYLIB HEX: c
CONSTANT: LC_ID_DYLIB HEX: d
CONSTANT: LC_LOAD_DYLINKER HEX: e
CONSTANT: LC_ID_DYLINKER HEX: f
CONSTANT: LC_PREBOUND_DYLIB HEX: 10
CONSTANT: LC_ROUTINES HEX: 11
CONSTANT: LC_SUB_FRAMEWORK HEX: 12
CONSTANT: LC_SUB_UMBRELLA HEX: 13
CONSTANT: LC_SUB_CLIENT HEX: 14
CONSTANT: LC_SUB_LIBRARY HEX: 15
CONSTANT: LC_TWOLEVEL_HINTS HEX: 16
CONSTANT: LC_PREBIND_CKSUM HEX: 17
CONSTANT: LC_LOAD_WEAK_DYLIB HEX: 80000018
CONSTANT: LC_SEGMENT_64 HEX: 19
CONSTANT: LC_ROUTINES_64 HEX: 1a
CONSTANT: LC_UUID HEX: 1b
CONSTANT: LC_RPATH HEX: 8000001c
CONSTANT: LC_CODE_SIGNATURE HEX: 1d
CONSTANT: LC_SEGMENT_SPLIT_INFO HEX: 1e
CONSTANT: LC_REEXPORT_DYLIB HEX: 8000001f
CONSTANT: LC_LAZY_LOAD_DYLIB HEX: 20
CONSTANT: LC_ENCRYPTION_INFO HEX: 21
CONSTANT: LC_DYLD_INFO HEX: 22
CONSTANT: LC_DYLD_INFO_ONLY HEX: 80000022
UNION-STRUCT: lc_str
{ offset uint32_t }
{ ptr char* } ;
STRUCT: segment_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ segname char[16] }
{ vmaddr uint32_t }
{ vmsize uint32_t }
{ fileoff uint32_t }
{ filesize uint32_t }
{ maxprot vm_prot_t }
{ initprot vm_prot_t }
{ nsects uint32_t }
{ flags uint32_t } ;
STRUCT: segment_command_64
{ cmd uint32_t }
{ cmdsize uint32_t }
{ segname char[16] }
{ vmaddr uint64_t }
{ vmsize uint64_t }
{ fileoff uint64_t }
{ filesize uint64_t }
{ maxprot vm_prot_t }
{ initprot vm_prot_t }
{ nsects uint32_t }
{ flags uint32_t } ;
CONSTANT: SG_HIGHVM HEX: 1
CONSTANT: SG_FVMLIB HEX: 2
CONSTANT: SG_NORELOC HEX: 4
CONSTANT: SG_PROTECTED_VERSION_1 HEX: 8
STRUCT: section
{ sectname char[16] }
{ segname char[16] }
{ addr uint32_t }
{ size uint32_t }
{ offset uint32_t }
{ align uint32_t }
{ reloff uint32_t }
{ nreloc uint32_t }
{ flags uint32_t }
{ reserved1 uint32_t }
{ reserved2 uint32_t } ;
STRUCT: section_64
{ sectname char[16] }
{ segname char[16] }
{ addr uint64_t }
{ size uint64_t }
{ offset uint32_t }
{ align uint32_t }
{ reloff uint32_t }
{ nreloc uint32_t }
{ flags uint32_t }
{ reserved1 uint32_t }
{ reserved2 uint32_t }
{ reserved3 uint32_t } ;
CONSTANT: SECTION_TYPE HEX: 000000ff
CONSTANT: SECTION_ATTRIBUTES HEX: ffffff00
CONSTANT: S_REGULAR HEX: 0
CONSTANT: S_ZEROFILL HEX: 1
CONSTANT: S_CSTRING_LITERALS HEX: 2
CONSTANT: S_4BYTE_LITERALS HEX: 3
CONSTANT: S_8BYTE_LITERALS HEX: 4
CONSTANT: S_LITERAL_POINTERS HEX: 5
CONSTANT: S_NON_LAZY_SYMBOL_POINTERS HEX: 6
CONSTANT: S_LAZY_SYMBOL_POINTERS HEX: 7
CONSTANT: S_SYMBOL_STUBS HEX: 8
CONSTANT: S_MOD_INIT_FUNC_POINTERS HEX: 9
CONSTANT: S_MOD_TERM_FUNC_POINTERS HEX: a
CONSTANT: S_COALESCED HEX: b
CONSTANT: S_GB_ZEROFILL HEX: c
CONSTANT: S_INTERPOSING HEX: d
CONSTANT: S_16BYTE_LITERALS HEX: e
CONSTANT: S_DTRACE_DOF HEX: f
CONSTANT: S_LAZY_DYLIB_SYMBOL_POINTERS HEX: 10
CONSTANT: SECTION_ATTRIBUTES_USR HEX: ff000000
CONSTANT: S_ATTR_PURE_INSTRUCTIONS HEX: 80000000
CONSTANT: S_ATTR_NO_TOC HEX: 40000000
CONSTANT: S_ATTR_STRIP_STATIC_SYMS HEX: 20000000
CONSTANT: S_ATTR_NO_DEAD_STRIP HEX: 10000000
CONSTANT: S_ATTR_LIVE_SUPPORT HEX: 08000000
CONSTANT: S_ATTR_SELF_MODIFYING_CODE HEX: 04000000
CONSTANT: S_ATTR_DEBUG HEX: 02000000
CONSTANT: SECTION_ATTRIBUTES_SYS HEX: 00ffff00
CONSTANT: S_ATTR_SOME_INSTRUCTIONS HEX: 00000400
CONSTANT: S_ATTR_EXT_RELOC HEX: 00000200
CONSTANT: S_ATTR_LOC_RELOC HEX: 00000100
CONSTANT: SEG_PAGEZERO "__PAGEZERO"
CONSTANT: SEG_TEXT "__TEXT"
CONSTANT: SECT_TEXT "__text"
CONSTANT: SECT_FVMLIB_INIT0 "__fvmlib_init0"
CONSTANT: SECT_FVMLIB_INIT1 "__fvmlib_init1"
CONSTANT: SEG_DATA "__DATA"
CONSTANT: SECT_DATA "__data"
CONSTANT: SECT_BSS "__bss"
CONSTANT: SECT_COMMON "__common"
CONSTANT: SEG_OBJC "__OBJC"
CONSTANT: SECT_OBJC_SYMBOLS "__symbol_table"
CONSTANT: SECT_OBJC_MODULES "__module_info"
CONSTANT: SECT_OBJC_STRINGS "__selector_strs"
CONSTANT: SECT_OBJC_REFS "__selector_refs"
CONSTANT: SEG_ICON "__ICON"
CONSTANT: SECT_ICON_HEADER "__header"
CONSTANT: SECT_ICON_TIFF "__tiff"
CONSTANT: SEG_LINKEDIT "__LINKEDIT"
CONSTANT: SEG_UNIXSTACK "__UNIXSTACK"
CONSTANT: SEG_IMPORT "__IMPORT"
STRUCT: fvmlib
{ name lc_str }
{ minor_version uint32_t }
{ header_addr uint32_t } ;
STRUCT: fvmlib_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ fvmlib fvmlib } ;
STRUCT: dylib
{ name lc_str }
{ timestamp uint32_t }
{ current_version uint32_t }
{ compatibility_version uint32_t } ;
STRUCT: dylib_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ dylib dylib } ;
STRUCT: sub_framework_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ umbrella lc_str } ;
STRUCT: sub_client_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ client lc_str } ;
STRUCT: sub_umbrella_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ sub_umbrella lc_str } ;
STRUCT: sub_library_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ sub_library lc_str } ;
STRUCT: prebound_dylib_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ name lc_str }
{ nmodules uint32_t }
{ linked_modules lc_str } ;
STRUCT: dylinker_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ name lc_str } ;
STRUCT: thread_command
{ cmd uint32_t }
{ cmdsize uint32_t } ;
STRUCT: routines_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ init_address uint32_t }
{ init_module uint32_t }
{ reserved1 uint32_t }
{ reserved2 uint32_t }
{ reserved3 uint32_t }
{ reserved4 uint32_t }
{ reserved5 uint32_t }
{ reserved6 uint32_t } ;
STRUCT: routines_command_64
{ cmd uint32_t }
{ cmdsize uint32_t }
{ init_address uint64_t }
{ init_module uint64_t }
{ reserved1 uint64_t }
{ reserved2 uint64_t }
{ reserved3 uint64_t }
{ reserved4 uint64_t }
{ reserved5 uint64_t }
{ reserved6 uint64_t } ;
STRUCT: symtab_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ symoff uint32_t }
{ nsyms uint32_t }
{ stroff uint32_t }
{ strsize uint32_t } ;
STRUCT: dysymtab_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ ilocalsym uint32_t }
{ nlocalsym uint32_t }
{ iextdefsym uint32_t }
{ nextdefsym uint32_t }
{ iundefsym uint32_t }
{ nundefsym uint32_t }
{ tocoff uint32_t }
{ ntoc uint32_t }
{ modtaboff uint32_t }
{ nmodtab uint32_t }
{ extrefsymoff uint32_t }
{ nextrefsyms uint32_t }
{ indirectsymoff uint32_t }
{ nindirectsyms uint32_t }
{ extreloff uint32_t }
{ nextrel uint32_t }
{ locreloff uint32_t }
{ nlocrel uint32_t } ;
CONSTANT: INDIRECT_SYMBOL_LOCAL HEX: 80000000
CONSTANT: INDIRECT_SYMBOL_ABS HEX: 40000000
STRUCT: dylib_table_of_contents
{ symbol_index uint32_t }
{ module_index uint32_t } ;
STRUCT: dylib_module
{ module_name uint32_t }
{ iextdefsym uint32_t }
{ nextdefsym uint32_t }
{ irefsym uint32_t }
{ nrefsym uint32_t }
{ ilocalsym uint32_t }
{ nlocalsym uint32_t }
{ iextrel uint32_t }
{ nextrel uint32_t }
{ iinit_iterm uint32_t }
{ ninit_nterm uint32_t }
{ objc_module_info_addr uint32_t }
{ objc_module_info_size uint32_t } ;
STRUCT: dylib_module_64
{ module_name uint32_t }
{ iextdefsym uint32_t }
{ nextdefsym uint32_t }
{ irefsym uint32_t }
{ nrefsym uint32_t }
{ ilocalsym uint32_t }
{ nlocalsym uint32_t }
{ iextrel uint32_t }
{ nextrel uint32_t }
{ iinit_iterm uint32_t }
{ ninit_nterm uint32_t }
{ objc_module_info_size uint32_t }
{ objc_module_info_addr uint64_t } ;
STRUCT: dylib_reference
{ isym_flags uint32_t } ;
STRUCT: twolevel_hints_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ offset uint32_t }
{ nhints uint32_t } ;
STRUCT: twolevel_hint
{ isub_image_itoc uint32_t } ;
STRUCT: prebind_cksum_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ cksum uint32_t } ;
STRUCT: uuid_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ uuid uint8_t[16] } ;
STRUCT: rpath_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ path lc_str } ;
STRUCT: linkedit_data_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ dataoff uint32_t }
{ datasize uint32_t } ;
STRUCT: encryption_info_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ cryptoff uint32_t }
{ cryptsize uint32_t }
{ cryptid uint32_t } ;
STRUCT: dyld_info_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ rebase_off uint32_t }
{ rebase_size uint32_t }
{ bind_off uint32_t }
{ bind_size uint32_t }
{ weak_bind_off uint32_t }
{ weak_bind_size uint32_t }
{ lazy_bind_off uint32_t }
{ lazy_bind_size uint32_t }
{ export_off uint32_t }
{ export_size uint32_t } ;
CONSTANT: REBASE_TYPE_POINTER 1
CONSTANT: REBASE_TYPE_TEXT_ABSOLUTE32 2
CONSTANT: REBASE_TYPE_TEXT_PCREL32 3
CONSTANT: REBASE_OPCODE_MASK HEX: F0
CONSTANT: REBASE_IMMEDIATE_MASK HEX: 0F
CONSTANT: REBASE_OPCODE_DONE HEX: 00
CONSTANT: REBASE_OPCODE_SET_TYPE_IMM HEX: 10
CONSTANT: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB HEX: 20
CONSTANT: REBASE_OPCODE_ADD_ADDR_ULEB HEX: 30
CONSTANT: REBASE_OPCODE_ADD_ADDR_IMM_SCALED HEX: 40
CONSTANT: REBASE_OPCODE_DO_REBASE_IMM_TIMES HEX: 50
CONSTANT: REBASE_OPCODE_DO_REBASE_ULEB_TIMES HEX: 60
CONSTANT: REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB HEX: 70
CONSTANT: REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB HEX: 80
CONSTANT: BIND_TYPE_POINTER 1
CONSTANT: BIND_TYPE_TEXT_ABSOLUTE32 2
CONSTANT: BIND_TYPE_TEXT_PCREL32 3
CONSTANT: BIND_SPECIAL_DYLIB_SELF 0
CONSTANT: BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE -1
CONSTANT: BIND_SPECIAL_DYLIB_FLAT_LOOKUP -2
CONSTANT: BIND_SYMBOL_FLAGS_WEAK_IMPORT HEX: 1
CONSTANT: BIND_SYMBOL_FLAGS_NON_WEAK_DEFINITION HEX: 8
CONSTANT: BIND_OPCODE_MASK HEX: F0
CONSTANT: BIND_IMMEDIATE_MASK HEX: 0F
CONSTANT: BIND_OPCODE_DONE HEX: 00
CONSTANT: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM HEX: 10
CONSTANT: BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB HEX: 20
CONSTANT: BIND_OPCODE_SET_DYLIB_SPECIAL_IMM HEX: 30
CONSTANT: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM HEX: 40
CONSTANT: BIND_OPCODE_SET_TYPE_IMM HEX: 50
CONSTANT: BIND_OPCODE_SET_ADDEND_SLEB HEX: 60
CONSTANT: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB HEX: 70
CONSTANT: BIND_OPCODE_ADD_ADDR_ULEB HEX: 80
CONSTANT: BIND_OPCODE_DO_BIND HEX: 90
CONSTANT: BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB HEX: A0
CONSTANT: BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED HEX: B0
CONSTANT: BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB HEX: C0
CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_MASK HEX: 03
CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_REGULAR HEX: 00
CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL HEX: 01
CONSTANT: EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION HEX: 04
CONSTANT: EXPORT_SYMBOL_FLAGS_INDIRECT_DEFINITION HEX: 08
CONSTANT: EXPORT_SYMBOL_FLAGS_HAS_SPECIALIZATIONS HEX: 10
STRUCT: symseg_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ offset uint32_t }
{ size uint32_t } ;
STRUCT: ident_command
{ cmd uint32_t }
{ cmdsize uint32_t } ;
STRUCT: fvmfile_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ name lc_str }
{ header_addr uint32_t } ;
! machine.h
CONSTANT: CPU_STATE_MAX 4
CONSTANT: CPU_STATE_USER 0
CONSTANT: CPU_STATE_SYSTEM 1
CONSTANT: CPU_STATE_IDLE 2
CONSTANT: CPU_STATE_NICE 3
CONSTANT: CPU_ARCH_MASK HEX: ff000000
CONSTANT: CPU_ARCH_ABI64 HEX: 01000000
CONSTANT: CPU_TYPE_ANY -1
CONSTANT: CPU_TYPE_VAX 1
CONSTANT: CPU_TYPE_MC680x0 6
CONSTANT: CPU_TYPE_X86 7
CONSTANT: CPU_TYPE_I386 $ CPU_TYPE_X86
CONSTANT: CPU_TYPE_X86_64 $[ CPU_TYPE_X86 CPU_ARCH_ABI64 bitor ]
CONSTANT: CPU_TYPE_MC98000 10
CONSTANT: CPU_TYPE_HPPA 11
CONSTANT: CPU_TYPE_ARM 12
CONSTANT: CPU_TYPE_MC88000 13
CONSTANT: CPU_TYPE_SPARC 14
CONSTANT: CPU_TYPE_I860 15
CONSTANT: CPU_TYPE_POWERPC 18
CONSTANT: CPU_TYPE_POWERPC64 $[ $ CPU_TYPE_POWERPC CPU_ARCH_ABI64 bitor ]
CONSTANT: CPU_SUBTYPE_MASK HEX: ff000000
CONSTANT: CPU_SUBTYPE_LIB64 HEX: 80000000
CONSTANT: CPU_SUBTYPE_MULTIPLE -1
CONSTANT: CPU_SUBTYPE_LITTLE_ENDIAN 0
CONSTANT: CPU_SUBTYPE_BIG_ENDIAN 1
CONSTANT: CPU_THREADTYPE_NONE 0
CONSTANT: CPU_SUBTYPE_VAX_ALL 0
CONSTANT: CPU_SUBTYPE_VAX780 1
CONSTANT: CPU_SUBTYPE_VAX785 2
CONSTANT: CPU_SUBTYPE_VAX750 3
CONSTANT: CPU_SUBTYPE_VAX730 4
CONSTANT: CPU_SUBTYPE_UVAXI 5
CONSTANT: CPU_SUBTYPE_UVAXII 6
CONSTANT: CPU_SUBTYPE_VAX8200 7
CONSTANT: CPU_SUBTYPE_VAX8500 8
CONSTANT: CPU_SUBTYPE_VAX8600 9
CONSTANT: CPU_SUBTYPE_VAX8650 10
CONSTANT: CPU_SUBTYPE_VAX8800 11
CONSTANT: CPU_SUBTYPE_UVAXIII 12
CONSTANT: CPU_SUBTYPE_MC680x0_ALL 1
CONSTANT: CPU_SUBTYPE_MC68030 1
CONSTANT: CPU_SUBTYPE_MC68040 2
CONSTANT: CPU_SUBTYPE_MC68030_ONLY 3
: CPU_SUBTYPE_INTEL ( f m -- subtype ) 4 shift + ; inline
CONSTANT: CPU_SUBTYPE_I386_ALL 3
CONSTANT: CPU_SUBTYPE_386 3
CONSTANT: CPU_SUBTYPE_486 4
CONSTANT: CPU_SUBTYPE_486SX 132
CONSTANT: CPU_SUBTYPE_586 5
CONSTANT: CPU_SUBTYPE_PENT 5
CONSTANT: CPU_SUBTYPE_PENTPRO 22
CONSTANT: CPU_SUBTYPE_PENTII_M3 54
CONSTANT: CPU_SUBTYPE_PENTII_M5 86
CONSTANT: CPU_SUBTYPE_CELERON 103
CONSTANT: CPU_SUBTYPE_CELERON_MOBILE 119
CONSTANT: CPU_SUBTYPE_PENTIUM_3 8
CONSTANT: CPU_SUBTYPE_PENTIUM_3_M 24
CONSTANT: CPU_SUBTYPE_PENTIUM_3_XEON 40
CONSTANT: CPU_SUBTYPE_PENTIUM_M 9
CONSTANT: CPU_SUBTYPE_PENTIUM_4 10
CONSTANT: CPU_SUBTYPE_PENTIUM_4_M 26
CONSTANT: CPU_SUBTYPE_ITANIUM 11
CONSTANT: CPU_SUBTYPE_ITANIUM_2 27
CONSTANT: CPU_SUBTYPE_XEON 12
CONSTANT: CPU_SUBTYPE_XEON_MP 28
: CPU_SUBTYPE_INTEL_FAMILY ( x -- family ) 15 bitand ; inline
CONSTANT: CPU_SUBTYPE_INTEL_FAMILY_MAX 15
: CPU_SUBTYPE_INTEL_MODEL ( x -- model ) -4 shift ; inline
CONSTANT: CPU_SUBTYPE_INTEL_MODEL_ALL 0
CONSTANT: CPU_SUBTYPE_X86_ALL 3
CONSTANT: CPU_SUBTYPE_X86_64_ALL 3
CONSTANT: CPU_SUBTYPE_X86_ARCH1 4
CONSTANT: CPU_THREADTYPE_INTEL_HTT 1
CONSTANT: CPU_SUBTYPE_MIPS_ALL 0
CONSTANT: CPU_SUBTYPE_MIPS_R2300 1
CONSTANT: CPU_SUBTYPE_MIPS_R2600 2
CONSTANT: CPU_SUBTYPE_MIPS_R2800 3
CONSTANT: CPU_SUBTYPE_MIPS_R2000a 4
CONSTANT: CPU_SUBTYPE_MIPS_R2000 5
CONSTANT: CPU_SUBTYPE_MIPS_R3000a 6
CONSTANT: CPU_SUBTYPE_MIPS_R3000 7
CONSTANT: CPU_SUBTYPE_MC98000_ALL 0
CONSTANT: CPU_SUBTYPE_MC98601 1
CONSTANT: CPU_SUBTYPE_HPPA_ALL 0
CONSTANT: CPU_SUBTYPE_HPPA_7100 0
CONSTANT: CPU_SUBTYPE_HPPA_7100LC 1
CONSTANT: CPU_SUBTYPE_MC88000_ALL 0
CONSTANT: CPU_SUBTYPE_MC88100 1
CONSTANT: CPU_SUBTYPE_MC88110 2
CONSTANT: CPU_SUBTYPE_SPARC_ALL 0
CONSTANT: CPU_SUBTYPE_I860_ALL 0
CONSTANT: CPU_SUBTYPE_I860_860 1
CONSTANT: CPU_SUBTYPE_POWERPC_ALL 0
CONSTANT: CPU_SUBTYPE_POWERPC_601 1
CONSTANT: CPU_SUBTYPE_POWERPC_602 2
CONSTANT: CPU_SUBTYPE_POWERPC_603 3
CONSTANT: CPU_SUBTYPE_POWERPC_603e 4
CONSTANT: CPU_SUBTYPE_POWERPC_603ev 5
CONSTANT: CPU_SUBTYPE_POWERPC_604 6
CONSTANT: CPU_SUBTYPE_POWERPC_604e 7
CONSTANT: CPU_SUBTYPE_POWERPC_620 8
CONSTANT: CPU_SUBTYPE_POWERPC_750 9
CONSTANT: CPU_SUBTYPE_POWERPC_7400 10
CONSTANT: CPU_SUBTYPE_POWERPC_7450 11
CONSTANT: CPU_SUBTYPE_POWERPC_970 100
CONSTANT: CPU_SUBTYPE_ARM_ALL 0
CONSTANT: CPU_SUBTYPE_ARM_V4T 5
CONSTANT: CPU_SUBTYPE_ARM_V6 6
CONSTANT: CPU_SUBTYPE_ARM_V5TEJ 7
CONSTANT: CPU_SUBTYPE_ARM_XSCALE 8
CONSTANT: CPU_SUBTYPE_ARM_V7 9
CONSTANT: CPUFAMILY_UNKNOWN 0
CONSTANT: CPUFAMILY_POWERPC_G3 HEX: cee41549
CONSTANT: CPUFAMILY_POWERPC_G4 HEX: 77c184ae
CONSTANT: CPUFAMILY_POWERPC_G5 HEX: ed76d8aa
CONSTANT: CPUFAMILY_INTEL_6_13 HEX: aa33392b
CONSTANT: CPUFAMILY_INTEL_6_14 HEX: 73d67300
CONSTANT: CPUFAMILY_INTEL_6_15 HEX: 426f69ef
CONSTANT: CPUFAMILY_INTEL_6_23 HEX: 78ea4fbc
CONSTANT: CPUFAMILY_INTEL_6_26 HEX: 6b5a4cd2
CONSTANT: CPUFAMILY_ARM_9 HEX: e73283ae
CONSTANT: CPUFAMILY_ARM_11 HEX: 8ff620d8
CONSTANT: CPUFAMILY_ARM_XSCALE HEX: 53b005f5
CONSTANT: CPUFAMILY_ARM_13 HEX: 0cc90e64
CONSTANT: CPUFAMILY_INTEL_YONAH $ CPUFAMILY_INTEL_6_14
CONSTANT: CPUFAMILY_INTEL_MEROM $ CPUFAMILY_INTEL_6_15
CONSTANT: CPUFAMILY_INTEL_PENRYN $ CPUFAMILY_INTEL_6_23
CONSTANT: CPUFAMILY_INTEL_NEHALEM $ CPUFAMILY_INTEL_6_26
CONSTANT: CPUFAMILY_INTEL_CORE $ CPUFAMILY_INTEL_6_14
CONSTANT: CPUFAMILY_INTEL_CORE2 $ CPUFAMILY_INTEL_6_15
! fat.h
CONSTANT: FAT_MAGIC HEX: cafebabe
CONSTANT: FAT_CIGAM HEX: bebafeca
STRUCT: fat_header
{ magic uint32_t }
{ nfat_arch uint32_t } ;
STRUCT: fat_arch
{ cputype cpu_type_t }
{ cpusubtype cpu_subtype_t }
{ offset uint32_t }
{ size uint32_t }
{ align uint32_t } ;
! nlist.h
STRUCT: nlist
{ n_strx int32_t }
{ n_type uint8_t }
{ n_sect uint8_t }
{ n_desc int16_t }
{ n_value uint32_t } ;
STRUCT: nlist_64
{ n_strx uint32_t }
{ n_type uint8_t }
{ n_sect uint8_t }
{ n_desc uint16_t }
{ n_value uint64_t } ;
CONSTANT: N_STAB HEX: e0
CONSTANT: N_PEXT HEX: 10
CONSTANT: N_TYPE HEX: 0e
CONSTANT: N_EXT HEX: 01
CONSTANT: N_UNDF HEX: 0
CONSTANT: N_ABS HEX: 2
CONSTANT: N_SECT HEX: e
CONSTANT: N_PBUD HEX: c
CONSTANT: N_INDR HEX: a
CONSTANT: NO_SECT 0
CONSTANT: MAX_SECT 255
: GET_COMM_ALIGN ( n_desc -- align )
-8 shift HEX: 0f bitand ; inline
: SET_COMM_ALIGN ( n_desc align -- n_desc )
[ HEX: f0ff bitand ]
[ HEX: 000f bitand 8 shift ] bi* bitor ; inline
CONSTANT: REFERENCE_TYPE 7
CONSTANT: REFERENCE_FLAG_UNDEFINED_NON_LAZY 0
CONSTANT: REFERENCE_FLAG_UNDEFINED_LAZY 1
CONSTANT: REFERENCE_FLAG_DEFINED 2
CONSTANT: REFERENCE_FLAG_PRIVATE_DEFINED 3
CONSTANT: REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY 4
CONSTANT: REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY 5
CONSTANT: REFERENCED_DYNAMICALLY HEX: 0010
: GET_LIBRARY_ORDINAL ( n_desc -- ordinal )
-8 shift HEX: ff bitand ; inline
: SET_LIBRARY_ORDINAL ( n_desc ordinal -- n_desc )
[ HEX: 00ff bitand ]
[ HEX: 00ff bitand 8 shift ] bi* bitor ; inline
CONSTANT: SELF_LIBRARY_ORDINAL HEX: 0
CONSTANT: MAX_LIBRARY_ORDINAL HEX: fd
CONSTANT: DYNAMIC_LOOKUP_ORDINAL HEX: fe
CONSTANT: EXECUTABLE_ORDINAL HEX: ff
CONSTANT: N_NO_DEAD_STRIP HEX: 0020
CONSTANT: N_DESC_DISCARDED HEX: 0020
CONSTANT: N_WEAK_REF HEX: 0040
CONSTANT: N_WEAK_DEF HEX: 0080
CONSTANT: N_REF_TO_WEAK HEX: 0080
CONSTANT: N_ARM_THUMB_DEF HEX: 0008
! ranlib.h
CONSTANT: SYMDEF "__.SYMDEF"
CONSTANT: SYMDEF_SORTED "__.SYMDEF SORTED"
STRUCT: ranlib
{ ran_strx uint32_t }
{ ran_off uint32_t } ;
! reloc.h
STRUCT: relocation_info
{ r_address int32_t }
{ r_symbolnum_pcrel_length_extern_type uint32_t } ;
CONSTANT: R_ABS 0
CONSTANT: R_SCATTERED HEX: 80000000
STRUCT: scattered_relocation_info_big_endian
{ r_scattered_pcrel_length_type_address uint32_t }
{ r_value int32_t } ;
STRUCT: scattered_relocation_info_little_endian
{ r_address_type_length_pcrel_scattered uint32_t }
{ r_value int32_t } ;
C-ENUM: reloc_type_generic
GENERIC_RELOC_VANILLA
GENERIC_RELOC_PAIR
GENERIC_RELOC_SECTDIFF
GENERIC_RELOC_PB_LA_PTR
GENERIC_RELOC_LOCAL_SECTDIFF ;
C-ENUM: reloc_type_x86_64
X86_64_RELOC_UNSIGNED
X86_64_RELOC_SIGNED
X86_64_RELOC_BRANCH
X86_64_RELOC_GOT_LOAD
X86_64_RELOC_GOT
X86_64_RELOC_SUBTRACTOR
X86_64_RELOC_SIGNED_1
X86_64_RELOC_SIGNED_2
X86_64_RELOC_SIGNED_4 ;
C-ENUM: reloc_type_ppc
PPC_RELOC_VANILLA
PPC_RELOC_PAIR
PPC_RELOC_BR14
PPC_RELOC_BR24
PPC_RELOC_HI16
PPC_RELOC_LO16
PPC_RELOC_HA16
PPC_RELOC_LO14
PPC_RELOC_SECTDIFF
PPC_RELOC_PB_LA_PTR
PPC_RELOC_HI16_SECTDIFF
PPC_RELOC_LO16_SECTDIFF
PPC_RELOC_HA16_SECTDIFF
PPC_RELOC_JBSR
PPC_RELOC_LO14_SECTDIFF
PPC_RELOC_LOCAL_SECTDIFF ;

1
extra/macho/summary.txt Normal file
View File

@ -0,0 +1 @@
Constants and structs related to the Mach object format.

View File

@ -9,7 +9,7 @@ LIBRARY: tokyocabinet
TYPEDEF: void* TCADB
C-ENUM:
C-ENUM: f
ADBOVOID
ADBOMDB
ADBONDB

View File

@ -27,7 +27,7 @@ CONSTANT: BDBOTSYNC 64
TYPEDEF: void* BDBCUR
C-ENUM:
C-ENUM: f
BDBCPCURRENT
BDBCPBEFORE
BDBCPAFTER ;

View File

@ -25,7 +25,7 @@ C-TYPE: TCRDB
! { timeout double }
! { opts int } ;
C-ENUM:
C-ENUM: f
TTESUCCESS
TTEINVALID
TTENOHOST

View File

@ -27,7 +27,7 @@ CONSTANT: TDBONOLCK 16
CONSTANT: TDBOLCKNB 32
CONSTANT: TDBOTSYNC 64
C-ENUM:
C-ENUM: f
TDBITLEXICAL
TDBITDECIMAL ;
@ -38,7 +38,7 @@ CONSTANT: TDBITKEEP 16777216
C-TYPE: TDBCOND
C-TYPE: TDBQRY
C-ENUM:
C-ENUM: f
TDBQCSTREQ
TDBQCSTRINC
TDBQCSTRBW
@ -58,7 +58,7 @@ C-ENUM:
CONSTANT: TDBQCNEGATE 16777216
CONSTANT: TDBQCNOIDX 33554432
C-ENUM:
C-ENUM: f
TDBQOSTRASC
TDBQOSTRDESC
TDBQONUMASC

View File

@ -12,7 +12,7 @@ IN: tokyo.alien.tcutil
LIBRARY: tokyocabinet
C-ENUM:
C-ENUM: f
TCDBTHASH
TCDBTBTREE
TCDBTFIXED

View File

@ -126,6 +126,10 @@
(,fuel-syntax--type-definition-regex 2 'factor-font-lock-type-name)
(,fuel-syntax--method-definition-regex (1 'factor-font-lock-type-name)
(2 'factor-font-lock-word))
(,fuel-syntax--before-definition-regex (1 'factor-font-lock-type-name)
(2 'factor-font-lock-word))
(,fuel-syntax--after-definition-regex (1 'factor-font-lock-type-name)
(2 'factor-font-lock-word))
(,fuel-syntax--tuple-decl-regex 2 'factor-font-lock-type-name)
(,fuel-syntax--constructor-regex . 'factor-font-lock-constructor)
(,fuel-syntax--setter-regex . 'factor-font-lock-setter-word)

View File

@ -44,8 +44,8 @@
(defconst fuel-syntax--parsing-words
'(":" "::" ";" "&:" "<<" "<PRIVATE" ">>"
"ABOUT:" "ALIAS:" "ALIEN:" "ARTICLE:"
"B" "BIN:"
"ABOUT:" "AFTER:" "ALIAS:" "ALIEN:" "ARTICLE:"
"B" "BEFORE:" "BIN:"
"C:" "CALLBACK:" "C-ENUM:" "C-STRUCT:" "C-TYPE:" "C-UNION:" "CHAR:" "COM-INTERFACE:" "CONSTANT:" "call-next-method"
"DEFER:"
"EBNF:" ";EBNF" "ERROR:" "EXCLUDE:"
@ -88,6 +88,12 @@
(defconst fuel-syntax--method-definition-regex
"^M::? +\\([^ ]+\\) +\\([^ ]+\\)")
(defconst fuel-syntax--before-definition-regex
"^BEFORE: +\\([^ ]+\\) +\\([^ ]+\\)")
(defconst fuel-syntax--after-definition-regex
"^AFTER: +\\([^ ]+\\) +\\([^ ]+\\)")
(defconst fuel-syntax--integer-regex
"\\_<-?[0-9]+\\_>")
@ -112,7 +118,7 @@
(format "\\_<\\(%s\\)?: +\\_<\\(\\w+\\)\\_>"
(regexp-opt
'(":" "GENERIC" "DEFER" "HOOK" "MAIN" "MATH" "POSTPONE"
"SYMBOL" "SYNTAX" "TYPED" "RENAME"))))
"SYMBOL" "SYNTAX" "TYPED" "TYPED:" "RENAME"))))
(defconst fuel-syntax--alias-definition-regex
"^ALIAS: +\\(\\_<.+?\\_>\\) +\\(\\_<.+?\\_>\\)")
@ -157,6 +163,7 @@
"\\_<CALLBACK: \\(\\w+\\) \\(\\w+\\)")
(defconst fuel-syntax--indent-def-starts '("" ":"
"AFTER" "BEFORE"
"C-ENUM" "C-STRUCT" "C-UNION" "COM-INTERFACE"
"FROM" "FUNCTION:"
"INTERSECTION:"

View File

@ -878,7 +878,7 @@ TYPEDEF: int CRYPT_KEYID_TYPE
! Internal keyset options
! (As _NONE but open for exclusive access, _CRYPT_DEFINED
! Last possible key option type, _CRYPT_DEFINED Last external keyset option)
C-ENUM:
C-ENUM: f
CRYPT_KEYOPT_NONE
CRYPT_KEYOPT_READONLY
CRYPT_KEYOPT_CREATE

View File

@ -24,7 +24,7 @@ IN: pdf.libhpdf
: HPDF_COMP_MASK HEX: FF ; inline
! page mode
C-ENUM:
C-ENUM: f
HPDF_PAGE_MODE_USE_NONE
HPDF_PAGE_MODE_USE_OUTLINE
HPDF_PAGE_MODE_USE_THUMBS