Changeset 17867 in project


Ignore:
Timestamp:
04/20/10 06:05:53 (11 years ago)
Author:
Jim Ursetto
Message:

objc: compiles now

Location:
release/4/objc/trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • release/4/objc/trunk/convert.scm

    r14899 r17867  
    2727
    2828(define-syntax define-result-conversion
    29   (er-macro-transformer
    30    (lambda (expr rename compare)
    31      (let ((name (cadr expr))
    32            (from (caddr expr))
    33            (to (cadddr expr)))
    34        `(,(rename 'define) ,name
    35          (,(rename 'foreign-lambda*) ,to
    36           (((pointer ,from) obj)) "return(*obj);"))))))
     29  (lambda (e r c)
     30    (let ((name (cadr e))
     31          (to (caddr e))
     32          (from (cadddr e)))
     33      `(,(r 'define) ,name
     34        (,(r 'foreign-lambda*) ,to
     35         (((pointer ,from) obj)) "return(*obj);")))))
    3736
    3837(define-result-conversion ref->float  float   "float")
     
    207206(define-syntax define-arg-conversion
    208207  (er-macro-transformer
    209    (lambda (expr rename compare)
    210      (let ((name (cadr expr))
    211            (from (caddr expr))
    212            (to (cadddr expr)))
    213        `(define ,name
    214           (foreign-lambda* c-pointer ((,from val) ((pointer ,to) buf))
     208   (lambda (e r c)
     209     (let ((name (cadr e))
     210           (from (caddr e))
     211           (to (cadddr e)))
     212       `(,(r 'define) ,name
     213          (,(r 'foreign-lambda*) c-pointer ((,from val) ((pointer ,to) buf))
    215214            "*buf = val; return(buf);"))))))
    216215
  • release/4/objc/trunk/objc-base.scm

    r14899 r17867  
    33;(objc:import-classes-at-toplevel!)
    44
    5 (require-library lolevel foreigners easyffi srfi-13 srfi-69)
    6 
    75(module objc-base
    8   (define-objc-class
     6  (
     7   ;define-objc-class
    98   define-objc-classes
    109   objc:define-method
     
    273272   void->ref
    274273   with-autorelease-pool
    275    cocoa:run
    276    ns:application-main
    277    ns:beep
    278    ns:log
    279    ns:point->locative
    280    ns:range->locative
    281    ns:rect->locative
    282    ns:rect-fill
    283    ns:size->locative)
    284 
    285 (import scheme chicken extras lolevel data-structures foreigners easyffi)
    286 (import srfi-13 srfi-69)
     274
     275   macro:type->encoding       ;; for objc (define-objc-class)
     276   )
     277
     278(import scheme chicken)
     279(require-extension extras lolevel data-structures foreigners easyffi srfi-13 srfi-69)
     280(import foreign)
    287281(include "objc-support.scm")
    288282
     
    296290
    297291(define-syntax objc:send
    298   (er-macro-transformer
    299    (lambda (e r c) (%objc r #f (cadr e) (caddr e) (cdddr e)))))
     292  (lambda (e r c) (%objc r #f (cadr e) (caddr e) (cdddr e))))
    300293(define-syntax objc:send/safe
    301   (er-macro-transformer
    302    (lambda (e r c) (%objc r #t (cadr e) (caddr e) (cdddr e)))))
     294  (lambda (e r c) (%objc r #t (cadr e) (caddr e) (cdddr e))))
    303295(define-syntax objc:send/maybe-safe
    304   (er-macro-transformer
    305    (lambda (e r c) (%objc r 'maybe (cadr e) (caddr e) (cdddr e)))))
     296  (lambda (e r c) (%objc r 'maybe (cadr e) (caddr e) (cdddr e))))
    306297(define-syntax (@ . args)
    307298  (syntax-rules ()
     
    315306;;   `(objc:send/safe ,@args))
    316307
    317 (define (%objc r safe? target arg args)
     308(define-for-syntax (%objc r safe? target arg args)
    318309  ;; Convert a scheme-type selector string to Objective C syntax.
    319310  ;; This simply entails uppercasing any character after a hyphen.
     
    371362;; shorter than (set! (ivar-ref ...)) anyway, and the (set! @foo 'bar) syntax still works.
    372363(define-syntax ivar-ref
    373   (er-macro-transformer
    374    (lambda (e r c)
    375      `(,(r 'objc:ivar-ref) ,(cadr e) ,(symbol->string (caddr e))))))
     364  (lambda (e r c)
     365    `(,(r 'objc:ivar-ref) ,(cadr e) ,(symbol->string (caddr e)))))
    376366(define-syntax ivar-set!
    377   (er-macro-transformer
    378    (lambda (e r c)
    379      `(,(r 'objc:ivar-set!)
    380        ,(cadr e)
    381        ,(symbol->string (caddr e))
    382        ,(cadddr e)))))
     367  (lambda (e r c)
     368    `(,(r 'objc:ivar-set!)
     369      ,(cadr e)
     370      ,(symbol->string (caddr e))
     371      ,(cadddr e))))
    383372
    384373;;; Class definitions
     
    413402
    414403;; The superclass will be looked up for you; it does not need to be imported.
     404;; DISABLED IN FAVOR OF CLASS PROXIES
     405#;
    415406(define-syntax define-objc-class
    416   (er-macro-transformer
    417    (lambda (e r c)
    418      (let ((class (cadr e))
    419            (super (caddr e))
    420            (ivars (cadddr e))
    421            (methods (cddddr e)))
    422        `(begin
    423           ;; register class
    424           (if (string-to-class ,(symbol->string class))
    425               ((if (objc:allow-class-redefinition)
    426                    warning error)
    427                ,(string-append "(define-objc-class): class already registered: "
    428                                (symbol->string class)))
    429               (objc:register-class ,(symbol->string class)
    430                                    (objc:string->class ,(symbol->string super))))
    431           ;; import class
    432           (define-objc-classes ,class)
    433           ;; set instance variables
    434           (objc:set-ivars! ,class
    435                            (list ,@(map (lambda (ivar)
    436                                           (let ((type (car ivar))
    437                                                 (name (cadr ivar)))
    438                                             `(make-objc:raw-ivar ,(symbol->string name)
    439                                                                  ,(macro:type->encoding type)
    440                                                                  0)))
    441                                         ivars)))
    442           ;; add methods
    443           ,@(map (lambda (method)
    444                    (let ((definer (case (car method)
    445                                     ((define-method -) 'objc:define-method)
    446                                     ((define-class-method +) 'objc:define-class-method)
    447                                     (else (error "invalid method definition keyword" (car method))))))
    448                      `(,definer ,class ,@(cdr method))))
    449                  methods))))))
     407  (lambda (e r c)
     408    (let ((class (cadr e))
     409          (super (caddr e))
     410          (ivars (cadddr e))
     411          (methods (cddddr e)))
     412      `(begin
     413         ;; register class
     414         (if (string-to-class ,(symbol->string class))
     415             ((if (objc:allow-class-redefinition)
     416                  warning error)
     417              ,(string-append "(define-objc-class): class already registered: "
     418                              (symbol->string class)))
     419             (objc:register-class ,(symbol->string class)
     420                                  (objc:string->class ,(symbol->string super))))
     421         ;; import class
     422         (define-objc-classes ,class)
     423         ;; set instance variables
     424         (objc:set-ivars! ,class
     425                          (list ,@(map (lambda (ivar)
     426                                         (let ((type (car ivar))
     427                                               (name (cadr ivar)))
     428                                           `(make-objc:raw-ivar ,(symbol->string name)
     429                                                                ,(macro:type->encoding type)
     430                                                                0)))
     431                                       ivars)))
     432         ;; add methods
     433         ,@(map (lambda (method)
     434                  (let ((definer (case (car method)
     435                                   ((define-method -) 'objc:define-method)
     436                                   ((define-class-method +) 'objc:define-class-method)
     437                                   (else (error "invalid method definition keyword" (car method))))))
     438                    `(,definer ,class ,@(cdr method))))
     439                methods)))))
    450440 
    451441;;;; define-method
     
    458448;;                                       (lambda (self sel i d) (print i) (+ i d)))
    459449(define-syntax objc:define-method
    460   (er-macro-transformer
    461    (lambda (e r c)
    462      (%define-method #f (cadr e) (caddr e) (cadddr e) (cddddr e)))))
     450  (lambda (e r c)
     451    (%define-method #f (cadr e) (caddr e) (cadddr e) (cddddr e))))
    463452(define-syntax objc:define-class-method
    464   (er-macro-transformer
    465    (lambda (e r c)
    466      (%define-method #t (cadr e) (caddr e) (cadddr e) (cddddr e)))))
     453  (lambda (e r c)
     454    (%define-method #t (cadr e) (caddr e) (cadddr e) (cddddr e))))
    467455
    468456(define (macro:type->encoding x)   ;; internal
     
    513501
    514502(define-syntax define-objc-classes
    515   (er-macro-transformer
    516    (lambda (e r c)
    517      `(begin
    518         ,@(map
    519            (lambda (name)
    520              (cond
    521               ((symbol? name)
    522                `(define ,name (objc:string->class ,(->string name))))
    523               ((and (list? name) (= (length name) 2) (symbol? (car name)))
    524                `(define ,(car name)
    525                   (objc:string->class ,(->string (cadr name)))))
    526               (else
    527                (syntax-error 'define-objc-classes "invalid class name" name))))
    528            (cdr e))))))
     503  (lambda (e r c)
     504    `(begin
     505       ,@(map
     506          (lambda (name)
     507            (cond
     508             ((symbol? name)
     509              `(define ,name (objc:string->class ,(->string name))))
     510             ((and (list? name) (= (length name) 2) (symbol? (car name)))
     511              `(define ,(car name)
     512                 (objc:string->class ,(->string (cadr name)))))
     513             (else
     514              (syntax-error 'define-objc-classes "invalid class name" name))))
     515          (cdr e)))))
    529516
    530517;;; Read syntax
  • release/4/objc/trunk/objc-cocoa.scm

    r14900 r17867  
    99
    1010(import scheme chicken)
    11 (require-extension lolevel objc-base)
     11(import foreign)
     12(require-extension extras lolevel objc-base)
    1213(import-for-syntax (only srfi-13 string-upcase))
    1314
     
    5051(define-objc-classes (cocoa:NSApplication NSApplication))
    5152(define (cocoa:run)
    52     @[ @[cocoa:NSApplication sharedApplication] run])
     53    @[ @[ cocoa:NSApplication sharedApplication] run])
    5354
    5455
     
    6566;; (define ns:rect->locative
    6667;;   (let ((size (objc:sizeof-type objc:NSRECT)))
    67 ;;     (lambda (r)
    68 ;;       (ns:rect->ref r (make-locative (make-byte-vector size))))))
     68;;     (lambda (rect)
     69;;       (ns:rect->ref rect (make-locative (make-blob size))))))
    6970
    7071(define-syntax define-ns:struct->locative
    71   (er-macro-transformer
    72    (lambda (expr rename compare)
    73      (define (symbol-conc . symbols)
    74        (string->symbol (apply conc symbols)))
    75      (let* ((type (cadr expr))
    76             (struct-name (conc "ns:" type))
    77             (type-name   (conc "objc:NS"
    78                                (string-upcase (->string type)))))
    79        `(,(rename 'define) ,(symbol-conc struct-name '->locative)
    80          (,(rename 'let) ((,(rename 'size)
    81                            (,(rename 'objc:sizeof-type)
    82                             ,(string->symbol type-name))))
    83           (,(rename 'lambda) (,(rename 'r))
    84            (,(symbol-conc struct-name '->ref)
    85             ,(rename 'r)
    86             (,(rename 'make-locative)
    87              (,(rename 'make-byte-vector) (,rename 'size)))))))))))
     72  (lambda (e r c)
     73    (define (symbol-conc . symbols)
     74      (string->symbol (apply conc symbols)))
     75    (let* ((type (cadr e))
     76           (struct-name (conc "ns:" type))
     77           (type-name   (conc "objc:NS"
     78                              (string-upcase (->string type))))
     79           (size (r 'size))
     80           (rect (r 'rect)))
     81      `(,(r 'define) ,(symbol-conc struct-name '->locative)
     82        (,(r 'let) ((,size
     83                          (,(r 'objc:sizeof-type)
     84                           ,(string->symbol type-name))))
     85         (,(r 'lambda) (,rect)
     86          (,(symbol-conc struct-name '->ref)
     87           ,rect
     88           (,(r 'make-locative)
     89            (,(r 'make-blob) ,size)))))))))
    8890
    8991;;;; The ns:struct->locative conversions
  • release/4/objc/trunk/objc-support.scm

    r14899 r17867  
    33(include "array.scm")
    44(include "convert.scm")
     5(include "objc-class-proxies.scm")
     6(include "objc-class-proxies-bin.scm")
    57
    68#>
     
    8486;; Class is a struct objc_class*.
    8587
    86 (define-foreign-record (Class "struct objc_class")
    87   (c-pointer isa)
    88   (c-pointer super_class)
    89   (c-string name)
    90   (long version)
    91   (long info)
    92   (long instance_size)
    93   (c-pointer ivars)
    94   ((struct objc_method_list) methodLists)   ;; xxx actually a double pointer, but should access via
    95                                             ;; class_nextMethodList anyway.
    96   ((struct objc_cache) cache)
    97   ((struct objc_protocol_list) protocols))
     88(define-foreign-record-type (Class "struct objc_class")
     89  (c-pointer isa Class-isa Class-isa-set!)
     90  (c-pointer super_class Class-super_class Class-super_class-set!)
     91  (c-string name Class-name Class-name-set!)
     92  (long version Class-version Class-version-set!)
     93  (long info Class-info Class-info-set!)
     94  (long instance_size Class-instance_size Class-instance_size-set!)
     95  (c-pointer ivars Class-ivars Class-ivars-set!)
     96  ;; xxx actually a double pointer, but should access via
     97  ;; class_nextMethodList anyway.  Don't need accessors here
     98  ((struct objc_method_list) methodLists Class-methodLists)
     99  ((struct objc_cache) cache Class-cache)
     100  ((struct objc_protocol_list) protocols Class-protocols))
    98101
    99102;;; #<objc:class> records
    100103
    101 (define-record-type objc:class
    102   (make-objc:class ptr)
    103   objc:class?
    104   (ptr objc:class-ptr objc:class-ptr-set!))
    105 
    106 (define (objc:class-ivars x) '())  ;; Dummy implementations; defined in the class proxies.
    107 (define (objc:class-objc? x) #f)
     104;; (define-record-type objc:class              ;; CLASS PROXY
     105;;   (make-objc:class ptr)
     106;;   objc:class?
     107;;   (ptr objc:class-ptr objc:class-ptr-set!))
     108
     109;; (define (objc:class-ivars x) '())  ;; Dummy implementations; defined in the class proxies.
     110;; (define (objc:class-objc? x) #f)
    108111
    109112;; We can't use objc-description right now, since we risk encountering a class
     
    143146  (objc:pointer->class (or (string-to-class s)
    144147                           (error 'objc:string->class "failed class lookup" s))))
    145 (define objc:pointer->class make-objc:class)
     148;; (define objc:pointer->class make-objc:class)    ;; CLASS PROXY
    146149(define objc:class->pointer objc:class-ptr)
    147150
     
    220223(define-foreign-record-type (Ivar-list "struct objc_ivar_list")
    221224  (int ivar_count Ivar-list-ivar_count Ivar-list-ivar_count-set!)
    222   ((const c-pointer) ivar_list  Ivar-list-ivar_list Ivar-list-ivar_list-set!))
     225  ((const c-pointer) ivar_list  Ivar-list-ivar_list)) ; type void* illegal for setter
    223226
    224227(define-foreign-record-type (Ivar "struct objc_ivar")
     
    251254;;;; ivar-ref
    252255
    253 (define (objc:ivar-ref obj name)
    254   (let* ((ptr  (objc:instance-ptr obj))
    255          (ivar (find-ivar ptr name)))
    256     (if ivar
    257         (objc:ref->scheme-object (pointer-offset ptr (Ivar-ivar_offset ivar))
    258                                  (Ivar-ivar_type ivar))
    259         (error 'ivar-ref "no such instance variable" name))))
     256;; REMOVED IN FAVOR OF CLASS PROXY
     257
     258;; (define (objc:ivar-ref obj name)
     259;;   (let* ((ptr  (objc:instance-ptr obj))
     260;;          (ivar (find-ivar ptr name)))
     261;;     (if ivar
     262;;         (objc:ref->scheme-object (pointer-offset ptr (Ivar-ivar_offset ivar))
     263;;                                  (Ivar-ivar_type ivar))
     264;;         (error 'ivar-ref "no such instance variable" name))))
    260265
    261266;;;; ivar-set!
     
    263268;; Note: if type == ID, we may need to (optionally?) retain this object and autorelease the
    264269;; old one.  Now that memory management is automatic this needs to be revisited.
    265 (define (objc:ivar-set! obj name val)
    266   (let* ((ptr (objc:instance-ptr obj))
    267          (ivar (find-ivar ptr name)))
    268     (if ivar
    269         (begin (objc:scheme-object->ref val
    270                                         (Ivar-ivar_type ivar)
    271                                         (pointer-offset ptr (Ivar-ivar_offset ivar)))
    272                (void))
    273         (error 'ivar-set! "no such instance variable" name))))
     270;; (define (objc:ivar-set! obj name val)
     271;;   (let* ((ptr (objc:instance-ptr obj))
     272;;          (ivar (find-ivar ptr name)))
     273;;     (if ivar
     274;;         (begin (objc:scheme-object->ref val
     275;;                                         (Ivar-ivar_type ivar)
     276;;                                         (pointer-offset ptr (Ivar-ivar_offset ivar)))
     277;;                (void))
     278;;         (error 'ivar-set! "no such instance variable" name))))
    274279
    275280;; Comply with SRFI-17.  With @ read syntax, this allows (set! @hi 3) to be an
    276281;; alias for (objc:ivar-set! self "hi" 3).
    277 (define objc:ivar-ref (getter-with-setter objc:ivar-ref objc:ivar-set!))
     282;; (define objc:ivar-ref (getter-with-setter objc:ivar-ref objc:ivar-set!))
    278283
    279284;;; Classes
     
    474479
    475480          (let* ((type (method-argument-type sig i))
    476                  (buf  (make-byte-vector (sizeof-result-type type))))
     481                 (buf  (make-blob (sizeof-result-type type))))
    477482            (set-method-argument inv i
    478483                                 (objc:scheme-object->ref (car args) type
     
    486491      (let ((result (if (zero? len)
    487492                        (void)    ;; void return would throw an exception in get-return-value!.
    488                         (let ((buf (make-byte-vector len)))
     493                        (let ((buf (make-blob len)))
    489494                          (get-return-value! inv buf)
    490495                          (objc:ref->scheme-object (make-locative buf)
  • release/4/objc/trunk/objc.scm

    r14899 r17867  
    11;;; Chicken ObjC bridge -- basic proxies
    22
    3 (require-library srfi-69 foreigners)
     3(module objc
     4    (define-objc-class)
    45
    5 (module objc
    6 
    7     (*class-proxies*
    8      dealloc-scheme
    9      lookup-class-proxy
    10      make-class-proxy
    11      make-objc:class
    12      make-objc:ivar
    13      objc:add-convenience-method!
    14      objc:class-all-ivars
    15      objc:class-ivar-lookup
    16      objc:class-ivars
    17      objc:class-ivars-set!
    18      objc:class-objc?
    19      objc:class-objc?-set!
    20      objc:class-ptr
    21      objc:class-ptr-set!
    22      objc:class?
    23      objc:ivar->raw
    24      objc:ivar-function
    25      objc:ivar-function-set!
    26      objc:ivar-name
    27      objc:ivar-name-set!
    28      objc:ivar-offset
    29      objc:ivar-offset-set!
    30      objc:ivar-ref
    31      objc:ivar-set!
    32      objc:ivar-type
    33      objc:ivar-type-set!
    34      objc:ivar?
    35      objc:pointer->class
    36      objc:scheme-object->ref/cnt
    37      register-class-proxy
    38      dealloc_scheme
    39      gc-root-delete!
    40      gc-root-ref
    41      gc-root-set!
    42      objc:unwrap
    43      objc:wrap
    44      objc_method_dealloc
    45      scheme-object-wrapper-delete!
    46      scheme-object-wrapper-ref
    47      scheme-object-wrapper-set!)
    48 
    49 (import scheme chicken srfi-69 foreigners)
     6(import scheme chicken)
    507(require-extension objc-base)
    51 (include "objc-class-proxies.scm")
    52 (include "objc-class-proxies-bin.scm")
    538
    549;;; Class definition macro
     
    8035;; The superclass will be looked up for you; it does not need to be imported.
    8136(define-syntax define-objc-class
    82   (er-macro-transformer
    83    (lambda (e r c)
    84      (let ((class (cadr e))
    85            (super (caddr e))
    86            (ivars (cadddr e))
    87            (methods (cddddr e))
    88            (instance-variables (gensym)))
    89        `(begin
    90           ;; register class
    91           (if (string-to-class ,(symbol->string class))
    92               ((if (objc:allow-class-redefinition)
    93                    warning error)
    94                ,(string-append "(define-objc-class): class already registered: "
    95                                (symbol->string class)))
    96               (objc:register-class ,(symbol->string class)
    97                                    (objc:string->class ,(symbol->string super))))
    98           ;; import class
    99           (define-objc-classes ,class)
    100           (objc:class-objc?-set! ,class #f) ;; This class is not pure ObjC.
     37  (lambda (e r c)
     38    (let ((class (cadr e))
     39          (super (caddr e))
     40          (ivars (cadddr e))
     41          (methods (cddddr e))
     42          (instance-variables (gensym)))
     43      `(begin
     44         ;; register class
     45         (if (string-to-class ,(symbol->string class))
     46             ((if (objc:allow-class-redefinition)
     47                  warning error)
     48              ,(string-append "(define-objc-class): class already registered: "
     49                              (symbol->string class)))
     50             (objc:register-class ,(symbol->string class)
     51                                  (objc:string->class ,(symbol->string super))))
     52         ;; import class
     53         (define-objc-classes ,class)
     54         (objc:class-objc?-set! ,class #f) ;; This class is not pure ObjC.
    10155
    102           ;; set instance variables
    103           (let ((,instance-variables
    104                  (list ,@(map (lambda (ivar)
    105                                 (let ((qualified-ID? (memq (car ivar)
    106                                                            '(slot: wrapper: outlet:))))
    107                                   (let ((name        (cadr ivar))
    108                                         (type        (if qualified-ID? 'ID (car ivar)))
    109                                         (function    (if qualified-ID? (car ivar) ivar:)))
    110                                     `(make-objc:ivar ,(symbol->string name)
    111                                                      ,(macro:type->encoding type)
    112                                                      0
    113                                                      ,function))))
    114                               ivars))))
    115             ;; Set instance vars on the Objective C side...
    116             (objc:set-ivars! ,class (map objc:ivar->raw ,instance-variables))
    117             ;; ... and in the Scheme class proxy.
    118             (objc:class-ivars-set! ,class
    119                                    (map (lambda (x)
    120                                           (cons (objc:ivar-name x) x))
    121                                         ,instance-variables))
     56         ;; set instance variables
     57         (let ((,instance-variables
     58                (list ,@(map (lambda (ivar)
     59                               (let ((qualified-ID? (memq (car ivar)
     60                                                          '(slot: wrapper: outlet:))))
     61                                 (let ((name        (cadr ivar))
     62                                       (type        (if qualified-ID? 'ID (car ivar)))
     63                                       (function    (if qualified-ID? (car ivar) ivar:)))
     64                                   `(make-objc:ivar ,(symbol->string name)
     65                                                    ,(macro:type->encoding type)
     66                                                    0
     67                                                    ,function))))
     68                             ivars))))
     69           ;; Set instance vars on the Objective C side...
     70           (objc:set-ivars! ,class (map objc:ivar->raw ,instance-variables))
     71           ;; ... and in the Scheme class proxy.
     72           (objc:class-ivars-set! ,class
     73                                  (map (lambda (x)
     74                                         (cons (objc:ivar-name x) x))
     75                                       ,instance-variables))
    12276
    123             ;; add user methods
    124             ,@(map (lambda (method)
    125                      (let ((definer (case (car method)
    126                                       ((define-method -) 'objc:define-method)
    127                                       ((define-class-method +) 'objc:define-class-method)
    128                                       (else (error "invalid method definition keyword" (car method))))))
    129                        `(,definer ,class ,@(cdr method))))
    130                    methods)
     77           ;; add user methods
     78           ,@(map (lambda (method)
     79                    (let ((definer (case (car method)
     80                                     ((define-method -) 'objc:define-method)
     81                                     ((define-class-method +) 'objc:define-class-method)
     82                                     (else (error "invalid method definition keyword" (car method))))))
     83                      `(,definer ,class ,@(cdr method))))
     84                  methods)
    13185
    132             ;; Add convenience methods.  The dealloc-scheme comments explain why it gets
    133             ;; added to every class, not just the first Scheme generation.
    134             (objc:add-convenience-method! ,class
    135                                           "dealloc"
    136                                           "v@:"
    137                                           objc_method_dealloc)))))))
     86           ;; Add convenience methods.  The dealloc-scheme comments explain why it gets
     87           ;; added to every class, not just the first Scheme generation.
     88           (objc:add-convenience-method! ,class
     89                                         "dealloc"
     90                                         "v@:"
     91                                         objc_method_dealloc))))))
    13892
    13993)
  • release/4/objc/trunk/objc.setup

    r14899 r17867  
    1313
    1414(make (("objc.so"
    15         ("objc.scm" "scheme-object.m" "scheme-object.h" "objc-base.so")
     15        ("objc.scm" "objc-base.so")
    1616        (compile -objc -framework Foundation -s -O2 -d1
    1717                 ,@(if easyffi? '(-extend easyffi) '())
    18                  objc.scm scheme-object.m))
     18                 objc.scm -j objc)
     19        (compile objc.import.scm -s -O2 -d0))
    1920       ("objc-base.so"
    2021        ("objc-support.scm" "classes.scm" "alignment.scm"
    21          "array.scm" "convert.scm" "objc-base.scm" "objc-runtime.h")
    22         (compile objc-base.scm -s -objc -O2 -d1 -j objc-base
     22         "array.scm" "convert.scm" "objc-base.scm" "objc-runtime.h"
     23         "scheme-object.m" "scheme-object.h")
     24        (compile objc-base.scm scheme-object.m -s -objc -O2 -d1 -j objc-base
    2325                 ,@(if easyffi? '(-extend easyffi) '())
    24                  -lffi -framework Foundation ,dbg)
     26                 -lffi -I/usr/include/ffi -framework Foundation ,dbg)
    2527        (compile objc-base.import.scm -s -O2 -d0))
    2628       ("objc-cocoa.so" ("objc-cocoa.scm" "objc-base.so")
  • release/4/objc/trunk/tests/Makefile

    r84 r17867  
    22
    33typetest.so: typetest.scm type-test.m type-test.h
    4         csc -s -O2 -X objc -objc -framework Foundation typetest.scm type-test.m
     4        csc -s -O2 -objc -framework Foundation typetest.scm type-test.m
    55
    66TemperatureConverter:
  • release/4/objc/trunk/tests/objc-proxy-test.scm

    r143 r17867  
    1 (use objc typetest)
     1(use objc objc-base)
     2(require-library typetest)
    23(define-objc-classes TypeTest)
    34
  • release/4/objc/trunk/tests/typetest.scm

    r55 r17867  
     1(use objc-base)
    12(define-objc-classes TypeTest)
Note: See TracChangeset for help on using the changeset viewer.