Skip to content
  • Liam Healy's avatar
    Redefine #'copy · 419e70d4
    Liam Healy authored
    Redefine #'copy so that it has one required argument (source) and one
    optional argument (destination).  For marrays, create a destination
    using make-marray, if one was not given, and then use the memcpy
    functions to fill the values.  For all other mobjects, copy will copy
    objects by calling one of two generic functions, #'copy-to-destination
    and #'copy-making-destination, depending on whether a destination was
    supplied.  The former is defined if a GSL _memcpy function exists.
    The latter will look for a GSL _clone function, then make a CL
    instance with the pointer returned as mpointer.  If there is no clone
    function, it will attempt to make a new object using make-load-form,
    so will fail if that method has not been defined.
    
    Added a check to defmfun that signals an error if a variable is used
    in the C arguments other than top-level that is not used in the CL
    arglist.  This should not happen and is usually an indication of a
    typo.
    419e70d4