2014-04-27 3 views
-1

У меня есть этот скаляр функции, который является оболочкой двух описаний функций, над которыми он был прокомментирован. My? как я MEM-Ареф выход (scalar 1 2 3 4), который #<CV-SCALAR {10044559D3}> Я думаю #<CV-SCALAR {10044559D3}> называется Meta-ObjectКак сделать mem-isf результатом метаобъекта в CFFI

;; Scalar* cv_create_Scalar(double val0, (double val1, double val2, double val3) 
    (defcfun ("cv_create_Scalar" %scalar) scalar 
     (val0 :double) 
     (val1 :double) 
     (val2 :double) 
     (val3 :double)) 


    (define-foreign-type scalar() 
     ((garbage-collect :reader garbage-collect :initform nil :initarg 
         :garbage-collect)) 
     (:actual-type :pointer) 
     (:simple-parser scalar)) 


    (defclass cv-scalar() 
     ((c-pointer :reader c-pointer :initarg :c-pointer))) 


    (defmethod translate-to-foreign ((lisp-value cv-scalar) (c-type scalar)) 
     (c-pointer lisp-value)) 


    (defmethod translate-from-foreign (c-pointer (c-type scalar)) 
     (let ((scalar (make-instance 'cv-scalar :c-pointer c-pointer))) 
     (when (garbage-collect c-type) 
      (tg:finalize scalar (lambda() (del-scalar c-pointer)))) 
     scalar)) 

ответ

0

Если вы DEFCLASS и defmethods определены выше запуска (mem-aref (c-pointer a) :int 1) для MEM-Ареф возвращение -значение

 Смежные вопросы

  • Нет связанных вопросов^_^