Hi,
I just uploaded on my darcs repository (http://www.innerloop.it/~matley/cl-objc-soc) a patch with the initial support of a CLOS interface to ObjC. Basically it associates to every objc class a clos class (of a custom metaclass), and to every method a clos method and a related generic function (of a custom metaclass), such that the user can code:
(objc:int-value (objc:init-with-int? (make-instance 'objc:ns-number) 10))
This feature is not enabled by default, because the import process of classes and (mainly) methods is really time-consuming for either the Foundation or Cocoa frameworks. It can be enabled using #'objc-clos:update-clos-definitions or setting objc-clos:*automatic-clos-definition-update* before using define-objc-framework.
At the moment the code is sbcl specific, but i used only the protocol defined in the AMOP. So using the library closer-to-mop the code can be portable among the most common cl implementations.
I tried also a lazy approach, defining just generic functions and defining the methods when needed, specializing on sb-mop:compute-applicable-methods and sb-mop:compute-applicable-methods-using-classes but this approach doesn't work as expected. Sometimes these functions are not called, due to caching mechanism present in the dispatch of generic functions (i tried with the last sbcl).
I think i have to put more effort on this problem. Other features to implement on my TODO list are:
* class methods in the clos interface (what is a class method and an ObjC metaclass in the CLOS perspective?)
* Exceptions management (i have to study what the functions in /usr/include/objc/objc-exception.h do)
* Protocols management
Refactoring, documentation and profiling (i don't understand why compiling a cl-objc example is so slow)
Best regards