User Tools

====== Accessor FIND-CLASS ====== ====Syntax==== * **find-class** //symbol** ''&optional'' errorp environment// → //class// * (**setf** (**find-class //symbol** ''&optional'' errorp environment//) //new-class//) ====Arguments and Values==== * //symbol// - a //[[CL:Glossary:symbol]]//. * //errorp// - a //[[CL:Glossary:generalized boolean]]//. The default is //[[CL:Glossary:true]]//. * //environment// -- same as the **''&environment''** argument to macro expansion functions and is used to distinguish between compile-time and run-time environments. The **''&environment''** argument has //[[CL:Glossary:dynamic extent]]//; the consequences are undefined if the **''&environment''** argument is referred to outside the //[[CL:Glossary:dynamic extent]]// of the macro expansion function. * //class// - a //[[CL:Glossary:class]]// //[[CL:Glossary:object]]//, or **[[CL:Constant Variables:nil]]**. ====Description==== Returns the //[[CL:Glossary:class]]// //[[CL:Glossary:object]]// named by the //symbol// in the //environment//. If there is no such //[[CL:Glossary:class]]//, **[[CL:Constant Variables:nil]]** is returned if //errorp// is //[[CL:Glossary:false]]//; otherwise, if //errorp// is //[[CL:Glossary:true]]//, an error is signaled. The //[[CL:Glossary:class]]// associated with a particular //[[CL:Glossary:symbol]]// can be changed by using **[[CL:Macros:setf]]** with **find-class**; or, if the new //[[CL:Glossary:class]]// given to **[[CL:Macros:setf]]** is **[[CL:Constant Variables:nil]]**, the //[[CL:Glossary:class]]// association is removed (but the //[[CL:Glossary:class]]// //[[CL:Glossary:object]]// itself is not affected). The results are undefined if the user attempts to change or remove the //[[CL:Glossary:class]]// associated with a //[[CL:Glossary:symbol]]// that is defined as a //[[CL:Glossary:type specifier]]// in this standard. see section {\secref\IntegratingTypesAndClasses}. When using ''([[CL:Macros:setf]] find-class)'', any //[[CL:Glossary:errorp]]// argument is //[[CL:Glossary:evaluate|evaluated]]// for effect, but any //[[CL:Glossary:values]]// it returns are ignored; the //errorp// //[[CL:Glossary:parameter]]// is permitted primarily so that the //environment// //[[CL:Glossary:parameter]]// can be used. The //environment// might be used to distinguish between a compile-time and a run-time environment. ====Examples==== None. ====Affected By==== None. ====Exceptional Situations==== If there is no such //[[CL:Glossary:class]]// and //errorp// is //[[CL:Glossary:true]]//, **find-class** signals an error of type **[[CL:Types:error]]**. ====See Also==== * **[[CL:Macros:defmacro|Macro DEFMACRO]]** * {\secref\IntegratingTypesAndClasses} ====Notes==== None. \issue{MACRO-ENVIRONMENT-EXTENT:DYNAMIC} \issue{SETF-FIND-CLASS:ALLOW-NIL} \issue{SETF-FIND-CLASS:ALLOW-NIL}