From 9de9695c0cdfae3effd46563b9898d34514305aa Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Sat, 9 Jan 2016 08:39:27 -0500 Subject: [PATCH] Use instead of . This makes usage of and primitive-unwrap-c-pointer consistent and reduces the number of problems with LLVM builds. --- objective-c/class.dylan | 138 +++++++++++++++++++------------------ objective-c/instance.dylan | 58 ++++++++-------- objective-c/method.dylan | 19 +++-- objective-c/protocol.dylan | 41 +++++------ objective-c/selector.dylan | 26 ++++--- 5 files changed, 138 insertions(+), 144 deletions(-) diff --git a/objective-c/class.dylan b/objective-c/class.dylan index 2c126da..24827c3 100644 --- a/objective-c/class.dylan +++ b/objective-c/class.dylan @@ -9,10 +9,6 @@ define constant $class-registry :: = make(
); define C-subtype () end; -define inline function as-raw-class (objc-class :: ) - primitive-unwrap-c-pointer(objc-class) -end; - define sealed method \= (class1 :: , class2 :: ) => (equal? :: ) @@ -68,11 +64,12 @@ define function objc/get-class (name :: ) => (objc-class :: false-or()) let raw-objc-class = primitive-wrap-machine-word - (%call-c-function ("objc_getClass") - (name :: ) - => (object :: ) - (primitive-string-as-raw(name)) - end); + (primitive-cast-pointer-as-raw + (%call-c-function ("objc_getClass") + (name :: ) + => (object :: ) + (primitive-string-as-raw(name)) + end)); if (raw-objc-class ~= 0) make(, address: raw-objc-class) else @@ -84,11 +81,12 @@ define inline function objc/super-class (objc-class :: ) => (objc-class :: false-or()) let raw-objc-class = primitive-wrap-machine-word - (%call-c-function ("class_getSuperclass") - (objc-class :: ) - => (objc-class :: ) - (objc-class.as-raw-class) - end); + (primitive-cast-pointer-as-raw + (%call-c-function ("class_getSuperclass") + (objc-class :: ) + => (objc-class :: ) + (primitive-unwrap-c-pointer(objc-class)) + end)); if (raw-objc-class ~= 0) make(, address: raw-objc-class) else @@ -96,23 +94,24 @@ define inline function objc/super-class (objc-class :: ) end if end; -define inline function objc/raw-super-class (objc-class :: ) +define inline function objc/raw-super-class (raw-objc-class :: ) => (raw-objc-class :: ) primitive-wrap-machine-word - (%call-c-function ("class_getSuperclass") - (objc-class :: ) - => (objc-class :: ) - (primitive-unwrap-machine-word(objc-class)) - end) + (primitive-cast-pointer-as-raw + (%call-c-function ("class_getSuperclass") + (objc-class :: ) + => (objc-class :: ) + (primitive-cast-raw-as-pointer(primitive-unwrap-machine-word(raw-objc-class))) + end)) end; define inline method objc/class-name (objc-class :: ) => (objc-class-name :: ) primitive-raw-as-string (%call-c-function ("class_getName") - (objc-class :: ) + (objc-class :: ) => (name :: ) - (objc-class.as-raw-class) + (primitive-unwrap-c-pointer(objc-class)) end) end; @@ -120,9 +119,9 @@ define inline method objc/class-name (raw-objc-class :: ) => (objc-class-name :: ) primitive-raw-as-string (%call-c-function ("class_getName") - (objc-class :: ) + (objc-class :: ) => (name :: ) - (primitive-unwrap-machine-word(raw-objc-class)) + (primitive-cast-raw-as-pointer(primitive-unwrap-machine-word(raw-objc-class))) end) end; @@ -131,11 +130,11 @@ define inline function objc/class-responds-to-selector? => (well? :: ) primitive-raw-as-boolean (%call-c-function ("class_respondsToSelector") - (objc-class :: , - selector :: ) + (objc-class :: , + selector :: ) => (well? :: ) - (objc-class.as-raw-class, - selector.as-raw-selector) + (primitive-unwrap-c-pointer(objc-class), + primitive-unwrap-c-pointer(selector)) end); end; @@ -143,9 +142,9 @@ define inline function objc/instance-size (objc-class :: ) => (objc-instance-size :: ) raw-as-integer (%call-c-function ("class_getInstanceSize") - (objc-class :: ) + (objc-class :: ) => (size :: ) - (objc-class.as-raw-class) + (primitive-unwrap-c-pointer(objc-class)) end) end; @@ -154,13 +153,14 @@ define inline function objc/get-class-method => (method? :: false-or()) let raw-method = primitive-wrap-machine-word - (%call-c-function ("class_getClassMethod") - (objc-class :: , - selector :: ) - => (method? :: ) - (objc-class.as-raw-class, - selector.as-raw-selector) - end); + (primitive-cast-pointer-as-raw + (%call-c-function ("class_getClassMethod") + (objc-class :: , + selector :: ) + => (method? :: ) + (primitive-unwrap-c-pointer(objc-class), + primitive-unwrap-c-pointer(selector)) + end)); if (raw-method ~= 0) make(, address: raw-method) else @@ -173,13 +173,14 @@ define inline function objc/get-instance-method => (method? :: false-or()) let raw-method = primitive-wrap-machine-word - (%call-c-function ("class_getInstanceMethod") - (objc-class :: , - selector :: ) - => (method? :: ) - (objc-class.as-raw-class, - selector.as-raw-selector) - end); + (primitive-cast-pointer-as-raw + (%call-c-function ("class_getInstanceMethod") + (objc-class :: , + selector :: ) + => (method? :: ) + (primitive-unwrap-c-pointer(objc-class), + primitive-unwrap-c-pointer(selector)) + end)); if (raw-method ~= 0) make(, address: raw-method) else @@ -194,15 +195,16 @@ define inline function objc/allocate-class-pair let super-class = objc/class-for-shadow(super-class); let raw-class = primitive-wrap-machine-word - (%call-c-function ("objc_allocateClassPair") - (super-class :: , - class-name :: , - extra-bytes :: ) - => (objc-class :: ) - (super-class.as-raw-class, - primitive-string-as-raw(class-name), - integer-as-raw(0)) - end); + (primitive-cast-pointer-as-raw + (%call-c-function ("objc_allocateClassPair") + (super-class :: , + class-name :: , + extra-bytes :: ) + => (objc-class :: ) + (primitive-unwrap-c-pointer(super-class), + primitive-string-as-raw(class-name), + integer-as-raw(0)) + end)); make(, address: raw-class) end; @@ -210,9 +212,9 @@ define inline function objc/register-class-pair (objc-class :: ) => () %call-c-function ("objc_registerClassPair") - (objc-class :: ) + (objc-class :: ) => (nothing :: ) - (objc-class.as-raw-class) + (primitive-unwrap-c-pointer(objc-class)) end; end; @@ -224,13 +226,13 @@ define inline function objc/add-method => (added? :: ) primitive-raw-as-boolean (%call-c-function ("class_addMethod") - (objc-class :: , - selector :: , - implementation :: , + (objc-class :: , + selector :: , + implementation :: , types :: ) => (added? :: ) - (objc-class.as-raw-class, - selector.as-raw-selector, + (primitive-unwrap-c-pointer(objc-class), + primitive-unwrap-c-pointer(selector), primitive-unwrap-c-pointer(implementation), primitive-string-as-raw(types)) end) @@ -242,11 +244,11 @@ define inline method objc/conforms-to-protocol? => (conforms? :: ) primitive-raw-as-boolean (%call-c-function ("class_conformsToProtocol") - (objc-class :: , - protocol :: ) + (objc-class :: , + protocol :: ) => (conforms? :: ) - (objc-class.as-raw-class, - protocol.as-raw-protocol) + (primitive-unwrap-c-pointer(objc-class), + primitive-unwrap-c-pointer(protocol)) end) end; @@ -256,10 +258,10 @@ define inline method objc/add-protocol => (added? :: ) primitive-raw-as-boolean (%call-c-function ("class_addProtocol") - (objc-class :: , - protocol :: ) + (objc-class :: , + protocol :: ) => (added? :: ) - (objc-class.as-raw-class, - protocol.as-raw-protocol) + (primitive-unwrap-c-pointer(objc-class), + primitive-unwrap-c-pointer(protocol)) end) end; diff --git a/objective-c/instance.dylan b/objective-c/instance.dylan index bdc8e2c..a0b4798 100644 --- a/objective-c/instance.dylan +++ b/objective-c/instance.dylan @@ -11,10 +11,6 @@ define C-mapped-subtype () end; end; -define inline function as-raw-instance (objc-instance :: ) - primitive-unwrap-c-pointer(objc-instance) -end; - define sealed method \= (instance1 :: , instance2 :: ) => (equal? :: ) @@ -33,31 +29,33 @@ define function objc/instance-class (objc-instance :: ) => (objc-class :: ) let raw-objc-class = primitive-wrap-machine-word - (%call-c-function ("object_getClass") - (objc-instance :: ) - => (objc-class :: ) - (objc-instance.as-raw-instance) - end); + (primitive-cast-pointer-as-raw + (%call-c-function ("object_getClass") + (objc-instance :: ) + => (objc-class :: ) + (primitive-unwrap-c-pointer(objc-instance)) + end)); make(, address: raw-objc-class) end; define inline function objc/raw-instance-class (objc-instance :: ) => (raw-objc-class :: ) primitive-wrap-machine-word - (%call-c-function ("object_getClass") - (objc-instance :: ) - => (objc-class :: ) - (primitive-unwrap-machine-word(objc-instance)) - end) + (primitive-cast-pointer-as-raw + (%call-c-function ("object_getClass") + (objc-instance :: ) + => (objc-class :: ) + (primitive-unwrap-machine-word(objc-instance)) + end)) end; define function objc/instance-class-name (objc-instance :: ) => (objc-class-name :: ) primitive-raw-as-string (%call-c-function ("object_getClassName") - (objc-instance :: ) + (objc-instance :: ) => (name :: ) - (objc-instance.as-raw-instance) + (primitive-unwrap-c-pointer(objc-instance)) end) end; @@ -83,13 +81,14 @@ define inline function objc/associated-object-inner => (objc-instance :: ) let raw-associated-object = primitive-wrap-machine-word - (%call-c-function ("objc_getAssociatedObject") - (objc-instance :: , - key :: ) - => (associated-object :: ) - (objc-instance.as-raw-instance, - primitive-unwrap-machine-word(key)) - end); + (primitive-cast-pointer-as-raw + (%call-c-function ("objc_getAssociatedObject") + (objc-instance :: , + key :: ) + => (associated-object :: ) + (primitive-unwrap-c-pointer(objc-instance), + primitive-unwrap-machine-word(key)) + end)); if (raw-associated-object ~= 0) objc/make-instance(raw-associated-object); else @@ -130,13 +129,14 @@ define inline function objc/set-associated-object-inner value :: , association-policy :: ) => () %call-c-function ("objc_setAssociatedObject") - (objc-instance :: , - key :: , value :: , + (objc-instance :: , + key :: , + value :: , association-policy :: ) => (nothing :: ) - (objc-instance.as-raw-instance, + (primitive-unwrap-c-pointer(objc-instance), primitive-unwrap-machine-word(key), - value.as-raw-instance, + primitive-unwrap-c-pointer(value), integer-as-raw(association-policy)) end; end; @@ -145,8 +145,8 @@ define function objc/remove-associated-objects (objc-instance :: ) => () %call-c-function ("objc_removeAssociatedObjects") - (objc-instance :: ) + (objc-instance :: ) => (nothing :: ) - (objc-instance.as-raw-instance) + (primitive-unwrap-c-pointer(objc-instance)) end; end; diff --git a/objective-c/method.dylan b/objective-c/method.dylan index 1bc0adb..2c1a8c7 100644 --- a/objective-c/method.dylan +++ b/objective-c/method.dylan @@ -6,10 +6,6 @@ copyright: See LICENSE file in this distribution. define C-subtype () end; -define inline function as-raw-method (objc-method :: ) - primitive-unwrap-c-pointer(objc-method) -end; - define sealed method \= (method1 :: , method2 :: ) => (equal? :: ) @@ -20,17 +16,18 @@ define function objc/method-name (objc-method :: ) => (objc-method-selector :: ) let raw-objc-selector = primitive-wrap-machine-word - (%call-c-function ("method_getName") - (raw-method :: ) - => (name :: ) - (objc-method.as-raw-method) - end); + (primitive-cast-pointer-as-raw + (%call-c-function ("method_getName") + (raw-method :: ) + => (name :: ) + (primitive-unwrap-c-pointer(objc-method)) + end)); let type-encoding = primitive-raw-as-string (%call-c-function ("method_getTypeEncoding") - (raw-method :: ) + (raw-method :: ) => (encoding :: ) - (objc-method.as-raw-method) + (primitive-unwrap-c-pointer(objc-method)) end); make(, address: raw-objc-selector, diff --git a/objective-c/protocol.dylan b/objective-c/protocol.dylan index f541d51..8cf6bd5 100644 --- a/objective-c/protocol.dylan +++ b/objective-c/protocol.dylan @@ -6,10 +6,6 @@ copyright: See LICENSE file in this distribution. define C-subtype () end; -define inline function as-raw-protocol (objc-protocol :: ) - primitive-unwrap-c-pointer(objc-protocol) -end; - define sideways method print-object (s :: , stream :: ) => () @@ -20,11 +16,12 @@ define function objc/get-protocol (name :: ) => (objc-protocol? :: false-or()) let raw-objc-protocol = primitive-wrap-machine-word - (%call-c-function ("objc_getProtocol") - (name :: ) - => (object :: ) - (primitive-string-as-raw(name)) - end); + (primitive-cast-pointer-as-raw + (%call-c-function ("objc_getProtocol") + (name :: ) + => (object :: ) + (primitive-string-as-raw(name)) + end)); if (raw-objc-protocol ~= 0) make(, address: raw-objc-protocol) else @@ -36,9 +33,9 @@ define function objc/protocol-name (objc-protocol :: ) => (protocol-name :: ) primitive-raw-as-string (%call-c-function ("protocol_getName") - (objc-protocol :: ) + (objc-protocol :: ) => (name :: ) - (objc-protocol.as-raw-protocol) + (primitive-unwrap-c-pointer(objc-protocol)) end) end; @@ -47,10 +44,10 @@ define sealed method \= => (equal? :: ) primitive-raw-as-boolean (%call-c-function ("protocol_isEqual") - (prtcl1 :: , - prtcl2 :: ) + (prtcl1 :: , + prtcl2 :: ) => (equal? :: ) - (prtcl1.as-raw-protocol, prtcl2.as-raw-protocol) + (primitive-unwrap-c-pointer(prtcl1), primitive-unwrap-c-pointer(prtcl2)) end) end; @@ -60,11 +57,11 @@ define method objc/conforms-to-protocol? => (conforms? :: ) primitive-raw-as-boolean (%call-c-function ("protocol_conformsToProtocol") - (objc-protocol :: , - protocol :: ) + (objc-protocol :: , + protocol :: ) => (conforms? :: ) - (objc-protocol.as-raw-protocol, - protocol.as-raw-protocol) + (primitive-unwrap-c-pointer(objc-protocol), + primitive-unwrap-c-pointer(protocol)) end) end; @@ -74,10 +71,10 @@ define method objc/add-protocol => (added? :: ) primitive-raw-as-boolean (%call-c-function ("protocol_addProtocol") - (objc-protocol :: , - protocol :: ) + (objc-protocol :: , + protocol :: ) => (added? :: ) - (objc-protocol.as-raw-protocol, - protocol.as-raw-protocol) + (primitive-unwrap-c-pointer(objc-protocol), + primitive-unwrap-c-pointer(protocol)) end) end; diff --git a/objective-c/selector.dylan b/objective-c/selector.dylan index df1b49b..9be5d38 100644 --- a/objective-c/selector.dylan +++ b/objective-c/selector.dylan @@ -8,10 +8,6 @@ define C-subtype () init-keyword: encoding:; end; -define inline function as-raw-selector (objc-selector :: ) - primitive-unwrap-c-pointer(objc-selector) -end; - define sideways method print-object (s :: , stream :: ) => () @@ -23,11 +19,12 @@ define function objc/register-selector => (objc-selector :: ) let raw-objc-selector = primitive-wrap-machine-word - (%call-c-function ("sel_registerName") - (name :: ) - => (object :: ) - (primitive-string-as-raw(name)) - end); + (primitive-cast-pointer-as-raw + (%call-c-function ("sel_registerName") + (name :: ) + => (object :: ) + (primitive-string-as-raw(name)) + end)); make(, encoding: encoding, address: raw-objc-selector) end; @@ -35,9 +32,9 @@ define function objc/selector-name (objc-selector :: ) => (selector-name :: ) primitive-raw-as-string (%call-c-function ("sel_getName") - (objc-selector :: ) + (objc-selector :: ) => (name :: ) - (objc-selector.as-raw-selector) + (primitive-unwrap-c-pointer(objc-selector)) end) end; @@ -46,9 +43,10 @@ define sealed method \= => (equal? :: ) primitive-raw-as-boolean (%call-c-function ("sel_isEqual") - (sel1 :: , - sel2 :: ) + (sel1 :: , + sel2 :: ) => (equal? :: ) - (sel1.as-raw-selector, sel2.as-raw-selector) + (primitive-unwrap-c-pointer(sel1), + primitive-unwrap-c-pointer(sel2)) end) end;