Conversion
The defined name of this module is convert.
The mechanism for the conversion of an instance of one class to an instance of
another is defined by a user-extensible framework which has some similarity to
the setter mechanism.
To the user, the interface to conversion is via the function
convert, which takes an object and some class to which the
object is to be converted. The target class is used to access an associated
converter function, in fact, a generic function, which is applied to
the source instance, dispatching on its class to select the method which
implements the appropriate conversion. Thus, having defined a new class to
which it may be desirable to convert instances of other classes, the
programmer defines a generic function:
(defgeneric (converter new-class) (instance))
Hereafter, new converter methods may be defined for new-class
using a similar extended syntax for defmethod:
(defmethod (converter new-class)
((instance other-class)))
The conversion is implemented by defining methods on the converter for
new-class which specialize on the source class. This is also how
methods are documented in this text: by an entry for a method on the
converter function for the target class. In general, the method for a given
source class is defined in the section about that class, for example, converters
from one kind of collection to another are defined in section ?? , converters
from string in section ?? , etc..
convert :
function
Arguments
- object
- An instance of some class to be converted to an
instance of class.
- class
- The class to which object is to be
converted.
Result
Returns an instance of class which is equivalent in
some class-specific sense to object, which may be an instance of
any type. Calls the converter function associated with class to
carry out the conversion operation. An error is signalled (condition:
no-converter) if there is no associated function. An error is
signalled (condition: no-applicable-method) if there is no
method to convert an instance of the class of object to an instance
of class.
<conversion-
condition> : <condition>
This is the general condition class for all conditions arising from conversion
operations.
Initialization options
- source : <object>
- The
object to be converted into an instance of target-class.
- target-class : <class>
- The
target class for the conversion operation.
Remarks
Should be signalled by convert or a
converter method.
converter :
function
Arguments
- target-class
- The class whose set of conversion methods
is required.
Result
The accessor returns the converter function for the class
target-class. The converter is a generic-function with methods
specialized on the class of the object to be converted.
(setter
converter) : setter function
Arguments
- target-class
- The class whose converter function is to be
replaced.
- generic-function
- The new converter function.
Result
The new converter function. The setter function replaces the
converter function for the class target-class by
generic-function. The new converter function must be an instance
of .
Remarks
Converter methods from one class to another are defined in
the section pertaining to the source class.
See also:
Converter methods are defined for collections (?? ), double
float (?? ), fixed precision integer (?? ), string (?? ), symbol (?? ), vector (?? ).