anchor.diff:  
   (defctype slp-server-type-callback :pointer)
   
  +;; ---- callback defining macros -------------
  +
   (defmacro define-server-type-callback
       (name (handle server-types error-code cookie) &body body)
     `(defcallback ,name slp-bool
          ((,handle slp-handle)
   		(,server-types :string)
  -		(,error-code slp-error)
  +		(,error-code slp-error-type)
   		(,cookie :pointer))
        (declare (ignorable ,handle ,server-types ,error-code ,cookie))
        ,@body))
  
positive.code: 		  (prog1
  			  (mem-ref scopes :string)
  			(slp-free (mem-ref scopes :pointer)))
  		  (slp-error error-code)))))
  
  ;; get property
  
  
negative.code: 
  (defparameter *slp-handle* nil)
  
  (defcfun ("SLPOpen" %slp-open) slp-error-type
    (lang :string)
    (is-async slp-bool)
    (handle (:pointer slp-handle)))
  
  (defun slp-open (&key (locale "en") is-async)
    "Initialise access to the OpenSLP library"
    (unless *slp-handle*
      (let ((handle (foreign-alloc 'slp-handle)))
        (with-foreign-string (lang locale)
  		(let ((ret-code (%slp-open lang is-async handle)))
  		  (setf *slp-handle* handle)
  		  (slp-raise-error ret-code))))))
  
  ;; close
  
  