Rhino C++ API  7.18
Public Member Functions | Static Public Member Functions | List of all members
ON_ClassId Class Reference

used for runtime class identification More...

#include <opennurbs_object.h>

Public Member Functions

 ON_ClassId (const char *sClassName, const char *sBaseClassName, class ON_Object *(*create)(), const char *sUUID)
 
 ~ON_ClassId ()
 
const ON_ClassIdBaseClass () const
 
const char * BaseClassName () const
 
unsigned int ClassIdVersion () const
 
const char * ClassName () const
 
ON_ObjectCreate () const
 
bool IsDerivedFrom (const ON_ClassId *potential_parent) const
 
int Mark () const
 
ON_UUID Uuid () const
 

Static Public Member Functions

static const ON_ClassIdClassId (const char *sClassName)
 
static const ON_ClassIdClassId (ON_UUID class_uuid)
 
static int CurrentMark ()
 
static void Dump (ON_TextLog &dump)
 
static int IncrementMark ()
 
static const ON_ClassIdLastClassId ()
 
static int Purge (int mark)
 
static bool PurgeAfter (const ON_ClassId *pClassId)
 

Detailed Description

used for runtime class identification

Description: OpenNURBS classes derived from ON_Object use ON_ClassId to store run-time type information

The ON_OBJECT_DECLARE and ON_OBJECT_IMPLEMENT macros generate the code that creates and initializes the ON_ClassId for each class.

The ON_Object::IsKindOf() and ON_Object::Cast() functions use this run-time type information.

Constructor & Destructor Documentation

◆ ON_ClassId()

ON_ClassId::ON_ClassId ( const char *  sClassName,
const char *  sBaseClassName,
class ON_Object *(*)()  create,
const char *  sUUID 
)

Description: This constructor is called to initialize each class id. The call is generated by the ON_OBJECT_IMPLEMENT macro.

Parameters: sClassName - [in] name of the class (like ON_Geometry) sBaseClassName - [in] name of baseclass (like ON_Object) create - [in] function to create a new object(like CreateNewON_Geometry()) sUUID - [in] UUID in registry format from Windows guidgen.exe

◆ ~ON_ClassId()

ON_ClassId::~ON_ClassId ( )

Member Function Documentation

◆ BaseClass()

const ON_ClassId* ON_ClassId::BaseClass ( ) const

Returns: base class id

◆ BaseClassName()

const char* ON_ClassId::BaseClassName ( ) const

Returns: base class name

◆ ClassId() [1/2]

static const ON_ClassId* ON_ClassId::ClassId ( const char *  sClassName)
static

Description: Gets a class's ON_ClassId from the class's name. Parameters: sClassName - [in] name of class Returns: Pointer to the class's ON_ClassId. Example: const ON_ClassId* brep_id = ON_CLassId::ClassId("ON_Brep");

◆ ClassId() [2/2]

static const ON_ClassId* ON_ClassId::ClassId ( ON_UUID  class_uuid)
static

Description: Gets a class's ON_ClassId from the class's uuid. Parameters: class_uuid - [in] uuid for the class Returns: Pointer to the class's ON_ClassId. Example: ON_UUID brep_uuid = ON_UuidFromString("60B5DBC5-E660-11d3-BFE4-0010830122F0"); const ON_ClassId* brep_id = ON_ClassId::ClassId(brep_uuid);

◆ ClassIdVersion()

unsigned int ON_ClassId::ClassIdVersion ( ) const

◆ ClassName()

const char* ON_ClassId::ClassName ( ) const

Returns: class name

◆ Create()

ON_Object* ON_ClassId::Create ( ) const

Descrption: Use the default constructor to create an instance of the class on the heap. Returns: Null or a pointer to an instance of the class created using new and the class's default constructor.

◆ CurrentMark()

static int ON_ClassId::CurrentMark ( )
static

◆ Dump()

static void ON_ClassId::Dump ( ON_TextLog dump)
static

Description: Dumps the ON_ClassId list Parameters: dump - [in] destination for the text dump.

◆ IncrementMark()

static int ON_ClassId::IncrementMark ( )
static

Description: Each class derived from ON_Object has a corresponding ON_ClassId stored in a linked list and the class is marked with an integer value. ON_ClassId::IncrementMark() increments the value used to mark new classes and returns the new marking value. Returns: Value that will be used to mark all future ON_ClassIds.

◆ IsDerivedFrom()

bool ON_ClassId::IsDerivedFrom ( const ON_ClassId potential_parent) const

Description: Determine if the class associated with this ON_ClassId is derived from another class. Parameters: potential_parent - [in] Class to test as parent. Returns: true if this is derived from potential_parent.

◆ LastClassId()

static const ON_ClassId* ON_ClassId::LastClassId ( )
static

◆ Mark()

int ON_ClassId::Mark ( ) const

Description: Opennurbs classes have a mark value of 0. Core Rhino classes have a mark value of 1. Rhino plug-in classes have a mark value of > 1. Returns: Class mark value

◆ Purge()

static int ON_ClassId::Purge ( int  mark)
static

Description: Each class derived from ON_Object has a corresponding ON_ClassId stored in a linked list. If a class definition is going to disappear (which happens when the derived object definition is in a DLL that uses openNURBS as a DLL and the DLL containing the derived object's definition is unloaded), then the class's ON_ClassId needs to be removed from the class list. ON_ClassId::Purge( mark ) removes all ON_ClassIds with a a prescribed mark and returns the number of classes that were purged.
Parameters: mark - [in] All ON_ClassIds with this mark will be purged. Returns: Number of classes that were purged. Example: ///< Call ON_ClassId::IncrementMark() BEFORE loading MY.DLL. int my_dll_classid_mark = ON_ClassId::IncrementMark(); load MY.DLL with classes derived from ON_Object ... ///< Call ON_ClassId::Purge() BEFORE unloading MY.DLL. ON_ClassId::Purge( my_dll_classid_mark ); unload MY.DLL

◆ PurgeAfter()

static bool ON_ClassId::PurgeAfter ( const ON_ClassId pClassId)
static

◆ Uuid()

ON_UUID ON_ClassId::Uuid ( ) const

Returns: class uuid