]> gitweb.factorcode.org Git - factor.git/commitdiff
Better error checking for Cocoa bridge, update for NSRect -> CGRect renaming
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 22 Jan 2009 01:47:17 +0000 (19:47 -0600)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 22 Jan 2009 01:47:17 +0000 (19:47 -0600)
basis/cocoa/cocoa-tests.factor
basis/cocoa/messages/messages.factor
basis/cocoa/subclassing/subclassing.factor

index 79d2dcb4a36e4cd6af696c72611200cc18c42528..d77435a8ad21263353f34428b76b549d202dfc38 100644 (file)
@@ -52,7 +52,7 @@ CLASS: {
     { +name+ "Bar" }
 } {
     "bar"
-    "CGRect"
+    "NSRect"
     { "id" "SEL" }
     [ 2drop test-foo "x" get ]
 } {
index ebe98a2df1f26bb8c96976b2580620a3f1c94464..f7d1d2996ff75ed343ba61fcc80b707b569ab563 100644 (file)
@@ -1,4 +1,4 @@
-! Copyright (C) 2006, 2008 Slava Pestov.
+! Copyright (C) 2006, 2009 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors alien alien.c-types alien.strings arrays assocs
 continuations combinators compiler compiler.alien kernel math
@@ -167,13 +167,19 @@ assoc-union alien>objc-types set-global
         drop "void*"
     ] unless ;
 
+ERROR: no-objc-type name ;
+
+: decode-type ( ch -- ctype )
+    1string dup objc>alien-types get at
+    [ ] [ no-objc-type ] ?if ;
+
 : (parse-objc-type) ( i string -- ctype )
     [ [ 1+ ] dip ] [ nth ] 2bi {
         { [ dup "rnNoORV" member? ] [ drop (parse-objc-type) ] }
         { [ dup CHAR: ^ = ] [ 3drop "void*" ] }
         { [ dup CHAR: { = ] [ drop objc-struct-type ] }
         { [ dup CHAR: [ = ] [ 3drop "void*" ] }
-        [ 2nip 1string objc>alien-types get at ]
+        [ 2nip decode-type ]
     } cond ;
 
 : parse-objc-type ( string -- ctype ) 0 swap (parse-objc-type) ;
index be533641854870558189b44da174219ebd5b8b77..dfd6ff47b270f7157b7f02184e180ee26e2d4911 100644 (file)
@@ -32,10 +32,11 @@ IN: cocoa.subclassing
     [ add-protocols ] [ add-methods ] [ objc_registerClassPair ]
     tri ;
 
+: encode-type ( type -- encoded )
+    dup alien>objc-types get at [ ] [ no-objc-type ] ?if ;
+
 : encode-types ( return types -- encoding )
-    swap prefix [
-        alien>objc-types get at "0" append
-    ] map concat ;
+    swap prefix [ encode-type "0" append ] map concat ;
 
 : prepare-method ( ret types quot -- type imp )
     [ [ encode-types ] 2keep ] dip [