From: Yaroslav K. <kav...@je...> - 2005-04-06 06:23:44
|
Sam Steingold: >>[3]> (with-c-var (pointer 'c-pointer intr) >> (cast pointer '(c-ptr Tcl-Interp))) >>#S(TCL-FFI:Tcl-Interp :RESULT "" :|FREEpROC| NIL :|ERRORlINE| 0) > > > (with-c-var (pointer '(c-ptr Tcl-Interp) intr) > pointer) clisp from CVS head, mingw [1]> (load "G:\\Work\\Lisp\\cltk\\tcl-ffi") ;; Loading file G:\Work\Lisp\cltk\tcl-ffi.lisp ... ;; Loaded file G:\Work\Lisp\cltk\tcl-ffi.lisp T [2]> (setq intr (tcl-ffi:Tcl-CreateInterp)) #<FOREIGN-ADDRESS #x014ECFE8> [3]> (ffi:with-c-var (pointer '(ffi:c-ptr tcl-ffi:Tcl-Interp) intr) pointer) *** - #<FOREIGN-ADDRESS #x014ECFE8> cannot be converted to the foreign type #(FFI:C-STRUCT TCL-FFI:Tcl-Interp NIL #(TCL-FFI::result TCL-FFI::freeProc TCL-FFI::errorLine) #<COMPILED-FUNCTION :LAMBDA> FFI:C-STRING #(FFI:C-PTR #(FFI:C-FUNCTION NIL #(FFI:C-STRING 1) 1024)) FFI:INT) The following restarts are available: ABORT :R1 ABORT Break 1 [4]> [5]> (ffi:with-c-var (pointer 'ffi:c-pointer intr) (ffi:cast pointer '(ffi:c-ptr tcl-ffi:Tcl-Interp) )) #S(TCL-FFI:Tcl-Interp :RESULT "" :|FREEpROC| NIL :|ERRORlINE| 0) > > >>How to write? > > > (with-c-var (pointer '(c-ptr Tcl-Interp) intr) > (setf (slot (foreign-value pointer) 'result) "foo")) [8]> (ffi:with-c-var (pointer '(ffi:c-ptr tcl-ffi:Tcl-Interp) intr) (setf (ffi:slot (ffi:foreign-value pointer) 'result) "foo")) *** - #<FOREIGN-ADDRESS #x014ECFE8> cannot be converted to the foreign type #(FFI:C-STRUCT TCL-FFI:Tcl-Interp NIL #(TCL-FFI::result TCL-FFI::freeProc TCL-FFI::errorLine) #<COMPILED-FUNCTION :LAMBDA> FFI:C-STRING #(FFI:C-PTR #(FFI:C-FUNCTION NIL #(FFI:C-STRING 1) 1024)) FFI:INT) The following restarts are available: ABORT :R1 ABORT Break 1 [9]> Thanks. -- WBR, Yaroslav Kavenchuk. |