An operation object of the appropriate type is instantiated whenever the user wants to do something with a system like
Operations can be invoked directly, or examined to see what their effects would be without performing them. There are a bunch of methods specialised on operation and component type that actually do the grunt work.
The operation object contains whatever state is relevant for this purpose
(perhaps a list of visited nodes, for example)
but primarily is a nice thing to specialise operation methods on
and easier than having them all be EQL
methods.
Operations are invoked on systems via operate
.
operate
operation system &rest initargs &key force
force-not
verbose
&allow-other-keysoos
operation system &rest initargs &key &allow-other-keys
operate
invokes operation on system.oos
is a synonym foroperate
.operation is a symbol that is passed, along with the supplied initargs, to
make-instance
to create the operation object. system is a system designator.The initargs are passed to the
make-instance
call when creating the operation object. Note that dependencies may cause the operation to invoke other operations on the system or its components: the new operations will be created with the same initargs as the original one.If force is
:all
, then all systems are forced to be recompiled even if not modified since last compilation. If force ist
, then only the system being loaded is forced to be recompiled even if not modified since last compilation, but other systems are not affected. If force is a list, then it specifies a list of systems that are forced to be recompiled even if not modified since last compilation. If force-not is:all
, then all systems are forced not to be recompiled even if modified since last compilation. If force-not ist
, then only the system being loaded is forced not to be recompiled even if modified since last compilation, but other systems are not affected. If force-not is a list, then it specifies a list of systems that are forced not to be recompiled even if modified since last compilation. force takes precedences over force-not; both of them apply to systems that are dependencies and were already compiled.To see what
operate
would do, you can use:(asdf::traverse (make-instance operation-class initargs ...) (find-system system-name))