anchor.diff:  ;; License along with this library; if not, write to the Free Software
   ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   
  -;; $Id: ffi.lisp,v 1.3 2004-11-07 01:23:38 espen Exp $
  +;; $Id: ffi.lisp,v 1.4 2004-11-09 10:04:35 espen Exp $
   
   (in-package "GLIB")
   
  
positive.code: 		  (unwind-protect 
  		      ,(from-alien-form alien-funcall return-type)
  		    ,@(cleanup-forms))
  		  ,@(alien-values))
  	      `(progn
  		(unwind-protect 
  		     ,alien-funcall
  		  ,@(cleanup-forms))
  		(values ,@(alien-values)))))))))
  
  
  ;;; Creates bindings at runtime
  
negative.code: 	    (push doc/arg docs)
  	  (progn
  	    (destructuring-bind (expr type &optional (style :in)) doc/arg
  	      (unless (member style '(:in :out :in-out :return))
  		(error "Bogus argument style ~S in ~S." style doc/arg))
  	      (when (and
  		     (not supplied-lambda-list)
  		     (namep expr) (member style '(:in :in-out :return)))
  		(push expr lambda-list))
  	      (push
  	       (list (if (namep expr) 
  