Any slot, regardless of its allocation, can be queried, referenced and set using the following four primitive procedures.
Return
#tif obj has a slot with name slot-name, otherwise#f.
Return
#tif the slot named slot-name in obj has a value, otherwise#f.
slot-bound?calls the generic functionslot-missingif obj does not have a slot called slot-name (see slot-missing).
Return the value of the slot named slot-name in obj.
slot-refcalls the generic functionslot-missingif obj does not have a slot called slot-name (see slot-missing).
slot-refcalls the generic functionslot-unboundif the named slot in obj does not have a value (see slot-unbound).
Set the value of the slot named slot-name in obj to value.
slot-set!calls the generic functionslot-missingif obj does not have a slot called slot-name (see slot-missing).
GOOPS stores information about slots in classes. Internally,
all of these procedures work by looking up the slot definition for the
slot named slot-name in the class (class-of
obj), and then using the slot definition's “getter” and
“setter” closures to get and set the slot value.
The next four procedures differ from the previous ones in that they take
the class as an explicit argument, rather than assuming
(class-of obj). Therefore they allow you to apply the
“getter” and “setter” closures of a slot definition in one class to
an instance of a different class.
Return
#tif class has a slot definition for a slot with name slot-name, otherwise#f.
Return
#tif applyingslot-ref-using-classto the same arguments would call the generic functionslot-unbound, otherwise#f.
slot-bound-using-class?calls the generic functionslot-missingif class does not have a slot definition for a slot called slot-name (see slot-missing).
Apply the “getter” closure for the slot named slot-name in class to obj, and return its result.
slot-ref-using-classcalls the generic functionslot-missingif class does not have a slot definition for a slot called slot-name (see slot-missing).
slot-ref-using-classcalls the generic functionslot-unboundif the application of the “getter” closure to obj returns an unbound value (see slot-unbound).
Apply the “setter” closure for the slot named slot-name in class to obj and value.
slot-set-using-class!calls the generic functionslot-missingif class does not have a slot definition for a slot called slot-name (see slot-missing).
Slots whose allocation is per-class rather than per-instance can be referenced and set without needing to specify any particular instance.
Return the value of the slot named slot-name in class class. The named slot must have
#:classor#:each-subclassallocation (see allocation).If there is no such slot with
#:classor#:each-subclassallocation,class-slot-refcalls theslot-missinggeneric function with arguments class and slot-name. Otherwise, if the slot value is unbound,class-slot-refcalls theslot-unboundgeneric function, with the same arguments.
Set the value of the slot named slot-name in class class to value. The named slot must have
#:classor#:each-subclassallocation (see allocation).If there is no such slot with
#:classor#:each-subclassallocation,class-slot-refcalls theslot-missinggeneric function with arguments class and slot-name.
When a slot-ref or slot-set! call specifies a non-existent
slot name, or tries to reference a slot whose value is unbound, GOOPS
calls one of the following generic functions.
When an application attempts to reference or set a class or instance slot by name, and the slot name is invalid for the specified class or object, GOOPS calls the
slot-missinggeneric function.The default methods all call
goops-errorwith an appropriate message.
When an application attempts to reference a class or instance slot, and the slot's value is unbound, GOOPS calls the
slot-unboundgeneric function.The default methods all call
goops-errorwith an appropriate message.