Hello.
On Tue, Nov 25, 2008 at 3:16 AM, gusti ggh.develop@gmail.com wrote:
I'm trying to use the cl-opengl packages in my linux with clisp but I found that the file cl-opengl/gl/types.lisp doesn't define the new class that must do.
Works for me on Linux with CLISP 2.46, latest CFFI and latest cl-opengl. What version are you using?
For example, see the command line below: [118]> (cffi:define-foreign-type ensure-integer () () (:actual-type :int) (:simple-parser ensure-integer)) ENSURE-INTEGER
instead of define a class as for example: [119]> (defclass mi-clase () () ) #<STANDARD-CLASS MI-CLASE>
If you have a look at the macroexpansion you'll see that DEFINE-FOREIGN-TYPE doesn't indeed define a new class.
[4]> (macroexpand '(cffi:define-foreign-type ensure-integer () () (:actual-type :int) (:simple-parser ensure-integer))) (EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE) (DEFCLASS ENSURE-INTEGER (CFFI::ENHANCED-FOREIGN-TYPE) NIL (:DEFAULT-INITARGS :ACTUAL-TYPE '(:INT))) (CFFI:DEFINE-PARSE-METHOD ENSURE-INTEGER (&REST CFFI::ARGS) (APPLY #'MAKE-INSTANCE 'ENSURE-INTEGER CFFI::ARGS)) 'ENSURE-INTEGER) ; T
You can also confirm that through FIND-CLASS:
[7]> (cffi:define-foreign-type ensure-integer () () (:actual-type :int) (:simple-parser ensure-integer)) ENSURE-INTEGER [8]> (find-class 'ensure-integer) #<STANDARD-CLASS ENSURE-INTEGER>
So after that, obviously, the 'defmethod translate-to-foreign' fail, see below: [120]> (defmethod translate-to-foreign (value (type ensure-integer)) (truncate value))
*** - FIND-CLASS: ENSURE-INTEGER does not name a class The following restarts are available: ABORT :R1 ABORT Break 1 [121]>
[9]> (defmethod cffi:translate-to-foreign (value (type ensure-integer)) (truncate value)) #<STANDARD-METHOD (#<BUILT-IN-CLASS T> #<STANDARD-CLASS ENSURE-INTEGER>)>
Do you know what is the problem? Can you help me please?
My guess is that you're using a *very* old version of CFFI. Latest is 0.10.3.
HTH.