1 ! Copyright (C) 2006, 2007 Slava Pestov
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.syntax combinators kernel ;
6 TYPEDEF: long NSInteger
7 TYPEDEF: ulong NSUInteger
8 << "ptrdiff_t" heap-size {
11 } case "CGFloat" typedef >>
17 TYPEDEF: NSPoint _NSPoint
18 TYPEDEF: NSPoint CGPoint
20 : <NSPoint> ( x y -- point )
22 [ set-NSPoint-y ] keep
23 [ set-NSPoint-x ] keep ;
29 TYPEDEF: NSSize _NSSize
30 TYPEDEF: NSSize CGSize
32 : <NSSize> ( w h -- size )
35 [ set-NSSize-w ] keep ;
38 { "NSPoint" "origin" }
41 TYPEDEF: NSRect _NSRect
42 TYPEDEF: NSRect CGRect
44 : NSRect-x ( NSRect -- x )
45 NSRect-origin NSPoint-x ; inline
46 : NSRect-y ( NSRect -- y )
47 NSRect-origin NSPoint-y ; inline
48 : NSRect-w ( NSRect -- w )
49 NSRect-size NSSize-w ; inline
50 : NSRect-h ( NSRect -- h )
51 NSRect-size NSSize-h ; inline
53 : set-NSRect-x ( x NSRect -- )
54 NSRect-origin set-NSPoint-x ; inline
55 : set-NSRect-y ( y NSRect -- )
56 NSRect-origin set-NSPoint-y ; inline
57 : set-NSRect-w ( w NSRect -- )
58 NSRect-size set-NSSize-w ; inline
59 : set-NSRect-h ( h NSRect -- )
60 NSRect-size set-NSSize-h ; inline
62 : <NSRect> ( x y w h -- rect )
67 [ set-NSRect-x ] keep ;
69 : NSRect-x-y ( alien -- origin-x origin-y )
70 [ NSRect-x ] keep NSRect-y ;
73 { "NSUInteger" "location" }
74 { "NSUInteger" "length" } ;
76 TYPEDEF: NSRange _NSRange
78 ! The "lL" type encodings refer to 32-bit values even in 64-bit mode
81 TYPEDEF: void* unknown_type
83 : <NSRange> ( length location -- size )
85 [ set-NSRange-length ] keep
86 [ set-NSRange-location ] keep ;
88 C-STRUCT: CGAffineTransform
96 C-STRUCT: NSFastEnumerationState
99 { "ulong*" "mutationsPtr" }
100 { "ulong[5]" "extra" } ;