User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cl:functions:find-class [2019/07/14 17:00]
cl:functions:find-class [2019/07/18 14:00] (current)
Line 1: Line 1:
 +====== 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}