(cffi:defcstruct (cv-size :classcv-size-type)(width :int)(height 
:int))(defmethod cffi:translate-from-foreign (p (type cv-size-type))(let((plist 
(call-next-method)))(make-size :width (getf plist 'width) :height (getf plist 
'height))))
and my opencv wrappers for CvGetSize and cvCreateImage, get-size and 
create-image, are defined like this
;;CvSizecvGetSize(constCvArr*arr)(cffi:defcfun 
("cvGetSize"get-size)(:structcv-size)(arr 
cv-arr));;IplImage*cvCreateImage(CvSizesize,intdepth,intchannels)(cffi:defcfun 
("cvCreateImage"%create-image)ipl-image (size :int64)(depth :int)(channels 
:int))(defun create-image (size depth channels)"Create an image with dimensions 
given by SIZE, DEPTH bits per channel, and CHANNELS number of 
channels."(let((nsize (size->int64 size)))(%create-image nsize depth channels)))
here is the definition of size->int64
(DEFUN SIZE->INT64 (S)(+(SIZE-WIDTH S)(ASH (SIZE-HEIGHT S)32)))it converts 
get-size output which isa structure here:#S(SIZE :WIDTH 640 :HEIGHT 
480)into64-bit integer,which CFFI can handle 
but i love the idea of the translate-foreign defmethod's
so i was wondering if you can show my how to make the 
translate-into-foreign version of the below from method this would 
really make my library awesome
(defmethod cffi:translate-from-foreign (p (type cv-size-type))(let((plist 
(call-next-method)))(make-size :width (getf plist 'width) :height (getf plist 
'height))))
I was going to try stuff and add it but for the get-size output 
structure, it isnt a  plist so not really sure what to put there for the
(let((plist (call-next-method)))
part,  for the 
(make-size :width (getf plist 'width) :height (getf plist 'height))))

Reply via email to