public
Description: The Nu programming language.
Homepage: http://programming.nu
Clone URL: git://github.com/timburks/nu.git
Search Repo:
Improved support for CGRects.
timburks (author)
Wed May 21 17:16:19 -0700 2008
commit  2b9b4ee3d0c3fd0cc406454b700135e934c92bcf
tree    222034f50d07c1d672c1c22a9bb20a3fd2b26444
parent  ef3ddcd7102d425b27397db72732a07585e25b15
...
83
84
85
86
 
 
 
87
88
89
...
106
107
108
109
 
 
 
110
111
112
...
235
236
237
238
 
 
 
239
240
241
...
306
307
308
309
 
 
 
310
311
312
...
373
374
375
376
 
 
 
377
378
379
...
525
526
527
528
 
 
 
529
530
531
...
750
751
752
753
 
 
 
754
755
756
...
83
84
85
 
86
87
88
89
90
91
...
108
109
110
 
111
112
113
114
115
116
...
239
240
241
 
242
243
244
245
246
247
...
312
313
314
 
315
316
317
318
319
320
...
381
382
383
 
384
385
386
387
388
389
...
535
536
537
 
538
539
540
541
542
543
...
762
763
764
 
765
766
767
768
769
770
0
@@ -83,7 +83,9 @@ st_table *nu_block_table = NULL;
0
 #define NSRECT_SIGNATURE1 "{_NSRect=\"origin\"{_NSPoint=\"x\"d\"y\"d}\"size\"{_NSSize=\"width\"d\"height\"d}}"
0
 #define NSRECT_SIGNATURE2 "{_NSRect}"
0
 
0
-#define CGRECT_SIGNATURE "{CGRect={CGPoint=dd}{CGSize=dd}}"
0
+#define CGRECT_SIGNATURE0 "{CGRect={CGPoint=dd}{CGSize=dd}}"
0
+#define CGRECT_SIGNATURE1 "{CGRect=\"origin\"{CGPoint=\"x\"d\"y\"d}\"size\"{CGSize=\"width\"d\"height\"d}}"
0
+#define CGRECT_SIGNATURE2 "{CGRect}"
0
 
0
 #define NSRANGE_SIGNATURE "{_NSRange=QQ}"
0
 #define NSRANGE_SIGNATURE1 "{_NSRange}"
0
@@ -106,7 +108,9 @@ st_table *nu_block_table = NULL;
0
 #define NSRECT_SIGNATURE1 "{_NSRect=\"origin\"{_NSPoint=\"x\"f\"y\"f}\"size\"{_NSSize=\"width\"f\"height\"f}}"
0
 #define NSRECT_SIGNATURE2 "{_NSRect}"
0
 
0
-#define CGRECT_SIGNATURE "{CGRect={CGPoint=ff}{CGSize=ff}}"
0
+#define CGRECT_SIGNATURE0 "{CGRect={CGPoint=ff}{CGSize=ff}}"
0
+#define CGRECT_SIGNATURE1 "{CGRect=\"origin\"{CGPoint=\"x\"f\"y\"f}\"size\"{CGSize=\"width\"f\"height\"f}}"
0
+#define CGRECT_SIGNATURE2 "{CGRect}"
0
 
0
 #define NSRANGE_SIGNATURE "{_NSRange=II}"
0
 #define NSRANGE_SIGNATURE1 "{_NSRange}"
0
@@ -235,7 +239,9 @@ ffi_type *ffi_type_for_objc_type(const char *typeString)
0
             if (!strcmp(typeString, NSRECT_SIGNATURE0) ||
0
                 !strcmp(typeString, NSRECT_SIGNATURE1) ||
0
                 !strcmp(typeString, NSRECT_SIGNATURE2) ||
0
- !strcmp(typeString, CGRECT_SIGNATURE)
0
+ !strcmp(typeString, CGRECT_SIGNATURE0) ||
0
+ !strcmp(typeString, CGRECT_SIGNATURE1) ||
0
+ !strcmp(typeString, CGRECT_SIGNATURE2)
0
             ) {
0
                 if (!initialized_ffi_types) initialize_ffi_types();
0
                 return &ffi_type_nsrect;
0
@@ -306,7 +312,9 @@ size_t size_of_objc_type(const char *typeString)
0
             if (!strcmp(typeString, NSRECT_SIGNATURE0) ||
0
                 !strcmp(typeString, NSRECT_SIGNATURE1) ||
0
                 !strcmp(typeString, NSRECT_SIGNATURE2) ||
0
- !strcmp(typeString, CGRECT_SIGNATURE)
0
+ !strcmp(typeString, CGRECT_SIGNATURE0) ||
0
+ !strcmp(typeString, CGRECT_SIGNATURE1) ||
0
+ !strcmp(typeString, CGRECT_SIGNATURE2)
0
             ) {
0
                 return sizeof(NSRect);
0
             }
0
@@ -373,7 +381,9 @@ void *value_buffer_for_objc_type(const char *typeString)
0
             if (!strcmp(typeString, NSRECT_SIGNATURE0) ||
0
                 !strcmp(typeString, NSRECT_SIGNATURE1) ||
0
                 !strcmp(typeString, NSRECT_SIGNATURE2) ||
0
- !strcmp(typeString, CGRECT_SIGNATURE)
0
+ !strcmp(typeString, CGRECT_SIGNATURE0) ||
0
+ !strcmp(typeString, CGRECT_SIGNATURE1) ||
0
+ !strcmp(typeString, CGRECT_SIGNATURE2)
0
             ) {
0
                 return malloc(sizeof(NSRect));
0
             }
0
@@ -525,7 +535,9 @@ int set_objc_value_from_nu_value(void *objc_value, id nu_value, const char *type
0
                 !strcmp(typeString, NSRECT_SIGNATURE0) ||
0
                 !strcmp(typeString, NSRECT_SIGNATURE1) ||
0
                 !strcmp(typeString, NSRECT_SIGNATURE2) ||
0
- !strcmp(typeString, CGRECT_SIGNATURE)
0
+ !strcmp(typeString, CGRECT_SIGNATURE0) ||
0
+ !strcmp(typeString, CGRECT_SIGNATURE1) ||
0
+ !strcmp(typeString, CGRECT_SIGNATURE2)
0
             ) {
0
                 NSRect *rect = (NSRect *) objc_value;
0
                 id cursor = nu_value;
0
@@ -750,7 +762,9 @@ id get_nu_value_from_objc_value(void *objc_value, const char *typeString)
0
                 !strcmp(typeString, NSRECT_SIGNATURE0) ||
0
                 !strcmp(typeString, NSRECT_SIGNATURE1) ||
0
                 !strcmp(typeString, NSRECT_SIGNATURE2) ||
0
- !strcmp(typeString, CGRECT_SIGNATURE)
0
+ !strcmp(typeString, CGRECT_SIGNATURE0) ||
0
+ !strcmp(typeString, CGRECT_SIGNATURE1) ||
0
+ !strcmp(typeString, CGRECT_SIGNATURE2)
0
             ) {
0
                 NSRect *rect = (NSRect *)objc_value;
0
                 NuCell *list = [[[NuCell alloc] init] autorelease];
...
18
19
20
 
 
 
21
22
23
...
53
54
55
 
 
 
 
 
 
 
56
57
58
...
18
19
20
21
22
23
24
25
26
...
56
57
58
59
60
61
62
63
64
65
66
67
68
0
@@ -18,6 +18,9 @@ limitations under the License.
0
 
0
 #import "handler.h"
0
 #import "cell.h"
0
+#ifdef IPHONE
0
+#import <CoreGraphics/CoreGraphics.h>
0
+#endif
0
 
0
 static id collect_arguments(struct handler_description *description, va_list ap)
0
 {
0
@@ -53,6 +56,13 @@ static id collect_arguments(struct handler_description *description, va_list ap)
0
             //NSLog(@"argument is %lf", x);
0
             [cursor setCar:get_nu_value_from_objc_value(&x, type)];
0
         }
0
+ #ifdef IPHONE
0
+ else if (!strcmp(type, "{CGRect={CGPoint=ff}{CGSize=ff}}")
0
+ || (!strcmp(type, "{CGRect=\"origin\"{CGPoint=\"x\"f\"y\"f}\"size\"{CGSize=\"width\"f\"height\"f}}"))) {
0
+ CGRect x = va_arg(ap, CGRect);
0
+ [cursor setCar:get_nu_value_from_objc_value(&x, type)];
0
+ }
0
+ #endif
0
         else {
0
             NSLog(@"unsupported argument type %s, see objc/handler.m to add support for it", type);
0
         }
...
25
26
27
 
28
29
30
...
42
43
44
 
45
46
47
...
25
26
27
28
29
30
31
...
43
44
45
46
47
48
49
0
@@ -25,6 +25,7 @@ END)))
0
 
0
 (function generate-handlers (class-name handlers)
0
      (eval (NuTemplate codeForString:<<-END
0
+#ifdef IPHONE
0
 #import "handler.h"
0
 #import <CoreGraphics/CoreGraphics.h>
0
 
0
@@ -42,6 +43,7 @@ END)))
0
 <% )) %>
0
 }
0
 @end
0
+#endif
0
 END)))
0
 
0
 (set source

Comments

    No one has commented yet.