• Liam Healy's avatar
    Define callbacks by returning the struct pointer, without setting specials · f0c7ecec
    Liam Healy authored
    Macro defcbstruct and all the macros built on it now simply return the
    C struct needed by GSL functions instead of binding a special whose
    name is then passed to the GSL functions.  Specials can still be used
    of course in the standard way like defparameter, but the results can
    also be bound locally with a let or passed in directly.  The name of a
    callback passed to defmcallback and to defcbstruct in all the macros
    that expand both is now gensymmed (since it is used only long enough
    to put in a slot of the cbstruct) instead of taken to be the name of
    the CL function, in order to make clear the different objects.
    Unfortunately, there is appears to be a bug in CFFI using defcallback
    with an uninterned symbol in CCL, so I have put a workaround in.
    However, there is still another error even with this workaround.
    Thus test results are:
    SBCL 64: TOTAL: 1248 assertions passed, 5 failed, 0 execution errors.
    CCL 64: TOTAL: 1229 assertions passed, 2 failed, 6 execution errors.
roots-multi.lisp 17.7 KB