]> gitweb.factorcode.org Git - factor.git/blob - basis/cocoa/types/types.factor
Change a throw to rethrow so that we don't lose the original stack trace
[factor.git] / basis / cocoa / types / types.factor
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 ;
4 IN: cocoa.types
5
6 TYPEDEF: long NSInteger
7 TYPEDEF: ulong NSUInteger
8 << "ptrdiff_t" heap-size {
9     { 4 [ "float" ] }
10     { 8 [ "double" ] }
11 } case "CGFloat" typedef >>
12
13 C-STRUCT: NSPoint
14     { "CGFloat" "x" }
15     { "CGFloat" "y" } ;
16
17 TYPEDEF: NSPoint _NSPoint
18 TYPEDEF: NSPoint CGPoint
19
20 : <NSPoint> ( x y -- point )
21     "NSPoint" <c-object>
22     [ set-NSPoint-y ] keep
23     [ set-NSPoint-x ] keep ;
24
25 C-STRUCT: NSSize
26     { "CGFloat" "w" }
27     { "CGFloat" "h" } ;
28
29 TYPEDEF: NSSize _NSSize
30 TYPEDEF: NSSize CGSize
31
32 : <NSSize> ( w h -- size )
33     "NSSize" <c-object>
34     [ set-NSSize-h ] keep
35     [ set-NSSize-w ] keep ;
36
37 C-STRUCT: NSRect
38     { "NSPoint" "origin" }
39     { "NSSize"  "size"   } ;
40
41 TYPEDEF: NSRect _NSRect
42 TYPEDEF: NSRect CGRect
43
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
52
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
61
62 : <NSRect> ( x y w h -- rect )
63     "NSRect" <c-object>
64     [ set-NSRect-h ] keep
65     [ set-NSRect-w ] keep
66     [ set-NSRect-y ] keep
67     [ set-NSRect-x ] keep ;
68
69 : NSRect-x-y ( alien -- origin-x origin-y )
70     [ NSRect-x ] keep NSRect-y ;
71
72 C-STRUCT: NSRange
73     { "NSUInteger" "location" }
74     { "NSUInteger" "length" } ;
75
76 TYPEDEF: NSRange _NSRange
77
78 ! The "lL" type encodings refer to 32-bit values even in 64-bit mode
79 TYPEDEF: int long32
80 TYPEDEF: uint ulong32
81 TYPEDEF: void* unknown_type
82
83 : <NSRange> ( length location -- size )
84     "NSRange" <c-object>
85     [ set-NSRange-length ] keep
86     [ set-NSRange-location ] keep ;
87
88 C-STRUCT: CGAffineTransform
89     { "CGFloat" "a" }
90     { "CGFloat" "b" }
91     { "CGFloat" "c" }
92     { "CGFloat" "d" }
93     { "CGFloat" "tx" }
94     { "CGFloat" "ty" } ;
95
96 C-STRUCT: NSFastEnumerationState
97     { "ulong" "state" }
98     { "id*" "itemsPtr" }
99     { "ulong*" "mutationsPtr" }
100     { "ulong[5]" "extra" } ;