ON_UnknownUserData Class Reference

#include <opennurbs_userdata.h>

Inheritance diagram for ON_UnknownUserData:
ON_UserData ON_Object

Public Member Functions

 ON_UnknownUserData ()
 
 ON_UnknownUserData (const ON_UnknownUserData &)
 
 ~ON_UnknownUserData ()
 
bool Archive () const override
 If Archive() returns true, m_application_uuid is not nil, and the virtual Read() and Write() are functions are overridden, then this user data will be written to and read from 3dm archives. More...
 
ON_UserDataConvert () const
 
void Dump (ON_TextLog &) const override
 Overrides virtual ON_Object::Dump(). Prints class name, description, and uuid. More...
 
bool GetDescription (ON_wString &) override
 
bool IsValid (class ON_TextLog *text_log=nullptr) const override
 ON_Object overrides. More...
 
ON_UnknownUserDataoperator= (const ON_UnknownUserData &)
 
bool Read (ON_BinaryArchive &) override
 Low level archive writing tool used by ON_BinaryArchive::ReadObject(). More...
 
unsigned int SizeOf () const override
 Overrides virtual ON_Object::SizeOf(). More...
 
bool Write (ON_BinaryArchive &) const override
 Low level archive writing tool used by ON_BinaryArchive::WriteObject(). More...
 
- Public Member Functions inherited from ON_UserData
 ON_UserData ()
 
 ON_UserData (const ON_UserData &)
 
 ~ON_UserData ()
 
virtual bool DeleteAfterRead (const class ON_BinaryArchive &archive, class ON_Object *parent_object) const
 DeleteAfterRead() is used when opennurbs is reading earlier versions of 3dm archives that used some type of user data that has since become obsolete. More...
 
virtual bool DeleteAfterWrite (const class ON_BinaryArchive &archive, const class ON_Object *parent_object) const
 DeleteAfterWrite() is used when opennurbs is writing earlier versions of 3dm archives that used some type of user data that has since become obsolete. More...
 
bool IsUnknownUserData () const
 
ON_UserDataNext () const
 
ON_UserDataoperator= (const ON_UserData &)
 
ON_ObjectOwner () const
 Returns object that owns the user data. More...
 
virtual bool Transform (const ON_Xform &)
 If Transform() return false, then the userdata is destroyed when its parent object is transformed. The default Transform() updates m_userdata_xform and returns true. Carefully read the comments above m_userdata_xform More...
 
ON_UUID UserDataClassUuid () const
 
virtual bool WriteToArchive (const class ON_BinaryArchive &archive, const class ON_Object *parent_object) const
 If WriteToArchive() returns true, m_application_uuid is not nil, and the virtual Read() and Write() are functions are overridden, then this user data will be written to and read from the identified archive. More...
 
- Public Member Functions inherited from ON_Object
 ON_Object () ON_NOEXCEPT
 
 ON_Object (const ON_Object &)
 
virtual ~ON_Object ()
 
virtual ON_AggregateComponentStatus AggregateComponentStatus () const
 Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid. More...
 
bool AttachUserData (class ON_UserData *pUserData)
 Attach user data to an object. More...
 
unsigned int ClearAllComponentStates () const
 Set all active level component states to ON_ComponentStatus::NoneSet. More...
 
virtual unsigned int ClearComponentStates (ON_ComponentStatus states_to_clear) const
 Clear the specified states on every component. More...
 
virtual unsigned int ClearComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_clear) const
 Clear states on an individual component. More...
 
unsigned int CopyUserData (const ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution)
 Expert user tool that copies user data items with positive values of ON_UserData.m_userdata_copycount from source_object to "this. More...
 
void CopyUserData (const ON_Object &source_object)
 Calls CopyUserData(source_object,ON_Object::UserDataConflictResolution::source_object). More...
 
virtual ON__UINT32 DataCRC (ON__UINT32 current_remainder) const
 Returns a CRC calculated from the information that defines the object. This CRC can be used as a quick way to see if two objects are not identical. More...
 
virtual bool DeleteComponents (const ON_COMPONENT_INDEX *ci_list, size_t ci_count)
 Delete the portions of the object identified in ci_list[]. More...
 
virtual void DestroyRuntimeCache (bool bDelete=true)
 Expert user function. If you are using openNURBS in its default configuration to read and write 3dm archives, you never need to call this function. Many objects employ lazy creation of (runtime) caches that save information to help speed geometric calculations. This function will destroy all runtime information. More...
 
bool DetachUserData (class ON_UserData *pUserData)
 Remove user data from an object. More...
 
void EmergencyDestroy ()
 Sets m_user_data_list = 0. More...
 
class ON_UserDataFirstUserData () const
 User data is stored as a linked list of ON_UserData classes. FirstUserData gets the first item in the linked list. This is the most recent item attached using AttachUserData(). Remark: To iterate through all the user data on an object, call FirstUserData() and then use ON_UserData::Next() to traverse the list. More...
 
virtual unsigned int GetComponentsWithSetStates (ON_ComponentStatus states_filter, bool bAllEqualStates, ON_SimpleArray< ON_COMPONENT_INDEX > &components) const
 
class ON_UserDataGetUserData (const ON_UUID &userdata_uuid) const
 Get a pointer to user data. More...
 
bool GetUserString (const wchar_t *key, ON_wString &string_value) const
 Get user string from the object. More...
 
int GetUserStringKeys (ON_ClassArray< ON_wString > &user_string_keys) const
 Get a list of all user string keys on the object. More...
 
int GetUserStrings (ON_ClassArray< ON_UserString > &user_strings) const
 Get a list of all user strings on the object. More...
 
bool IsKindOf (const ON_ClassId *pClassId) const
 Low level tool to test if an object is derived from a specified class. More...
 
virtual void MarkAggregateComponentStatusAsNotCurrent () const
 Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid. More...
 
virtual void MemoryRelocate ()
 The MemoryRelocate() function is called when an object's location in memory is changed. For example, if an object resides in a chunk of memory that is grown by calling a realloc that has to allocate a new chunk and copy the contents of the old chunk to the new chunk, then the location of the object's memory changes. In practice this happens when classes derived from ON_Object are stored in dynamic arrays, like the default implementation of ON_ObjectArray<>'s that use realloc to grow the dynamic array. More...
 
virtual ON_UUID ModelObjectId () const
 All objects in an opennurbs model have an id ( ON_Layer.m_layer_id, ON_Font.m_font_id, ON_Material.m_material_id, ON_3dmObjectAttributes.m_uuid ). More...
 
unsigned int MoveUserData (ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution, bool bDeleteAllSourceItems)
 Expert user tool that moves user data items from source_object to "this. More...
 
void MoveUserData (ON_Object &source_object)
 Calls MoveUserData(source_object,ON_Object::UserDataConflictResolution::source_object,true). More...
 
virtual ON::object_type ObjectType () const
 Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on. More...
 
ON_Objectoperator= (const ON_Object &)
 
void PurgeUserData ()
 PurgeUserData() removes all user data from object. More...
 
virtual unsigned int SetComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_set) const
 Set states on an individual component. More...
 
virtual unsigned int SetComponentStatus (ON_COMPONENT_INDEX component_index, ON_ComponentStatus status_to_copy) const
 Copy status settings to an individual component. More...
 
bool SetUserString (const wchar_t *key, const wchar_t *string_value)
 Attach a user string to the object. This information will perisist through copy construction, operator=, and file IO. More...
 
int SetUserStrings (int count, const ON_UserString *user_strings, bool bReplace)
 Append entries to the user string list More...
 
void TransformUserData (const class ON_Xform &xform)
 Objects derived from ON_Geometry must call TransformUserData() in their Transform() member function. More...
 
virtual bool UpdateReferencedComponents (const class ON_ComponentManifest &source_manifest, const class ON_ComponentManifest &destination_manifest, const class ON_ManifestMap &manifest_map)
 Uses the destination_manifest to update references to other components. This is typically done when a component's references came from a "source" context and are being updated to the "destination" context. For example, inserting one model into another when index, id, and name conflicts need to be resolved at the time of insertion. More...
 
int UserStringCount () const
 

Public Attributes

unsigned int m_3dm_opennurbs_version_number
 
int m_3dm_version
 
void * m_buffer
 
int m_sizeof_buffer
 
ON_UUID m_unknownclass_uuid
 This is the uuid of the missing class. This uuid is the 3rd parameter to the ON_OBJECT_IMPLEMENT() macro of the missing class. More...
 
- Public Attributes inherited from ON_UserData
ON_UUID m_application_uuid
 This uuid is used to identify the application that created this piece of user data. In the case of Rhino, this is the id of the plug-in that created the user data. User data with a nil application id will not be saved in 3dm archives. More...
 
unsigned int m_userdata_copycount
 
ON_UUID m_userdata_uuid
 This uuid is the value that must be passed to ON_Object::GetUserData() to retrieve this piece of user data. More...
 
ON_Xform m_userdata_xform
 

Additional Inherited Members

- Public Types inherited from ON_Object
enum  UserDataConflictResolution : unsigned char {
  UserDataConflictResolution::destination_object = 0, UserDataConflictResolution::source_object = 1, UserDataConflictResolution::source_copycount_gt = 2, UserDataConflictResolution::source_copycount_ge = 3,
  UserDataConflictResolution::destination_copycount_gt = 4, UserDataConflictResolution::destination_copycount_ge = 5, UserDataConflictResolution::delete_item = 6
}
 When a userdata item is copied or moved from a source object to a destination object, the ON_Object::UserDataConflictResolution enum values specify how conficts are resolved. Remark: A userdata item "conflict" occurs when both the destination and source object have a user data item with the same value of ON_UserData::m_userdata_uuid. More...
 

Constructor & Destructor Documentation

◆ ON_UnknownUserData() [1/2]

ON_UnknownUserData::ON_UnknownUserData ( )

◆ ON_UnknownUserData() [2/2]

ON_UnknownUserData::ON_UnknownUserData ( const ON_UnknownUserData )

◆ ~ON_UnknownUserData()

ON_UnknownUserData::~ON_UnknownUserData ( )

Member Function Documentation

◆ Archive()

bool ON_UnknownUserData::Archive ( ) const
overridevirtual

If Archive() returns true, m_application_uuid is not nil, and the virtual Read() and Write() are functions are overridden, then this user data will be written to and read from 3dm archives.

Returns

true if user data should be saved in binary archives. false if the user data should not be saved in binary archives.

The default implementation returns false. If you override ON_UserData::Archive so that it returns true, then your constructor must set m_application_uuid, you must override the virtual ON_Object::Read and ON_Object::Write functions and you must CAREFULLY TEST your code.

ON_UserData requires expert programming and testing skills.

If you need to know more details about the archive or parent object to determine if the userdata should be saved, then override WriteToArchive().

YOU SHOULD READ AND UNDERSTAND EVERY COMMENT IN THIS HEADER FILE IN BEFORE ATTEMPTING TO USE ON_UserData.

Reimplemented from ON_UserData.

◆ Convert()

ON_UserData* ON_UnknownUserData::Convert ( ) const

◆ Dump()

void ON_UnknownUserData::Dump ( ON_TextLog text_log) const
overridevirtual

Overrides virtual ON_Object::Dump(). Prints class name, description, and uuid.

Parameters
text_log[in] Information is sent to this text log.

Reimplemented from ON_UserData.

◆ GetDescription()

bool ON_UnknownUserData::GetDescription ( ON_wString description)
overridevirtual
Parameters
description[out] description of user data shown in object properties dump.
Returns
True if user data class is ready.

Reimplemented from ON_UserData.

◆ IsValid()

bool ON_UnknownUserData::IsValid ( class ON_TextLog text_log = nullptr) const
overridevirtual

ON_Object overrides.

Reimplemented from ON_UserData.

◆ operator=()

ON_UnknownUserData& ON_UnknownUserData::operator= ( const ON_UnknownUserData )

◆ Read()

bool ON_UnknownUserData::Read ( ON_BinaryArchive binary_archive)
overridevirtual

Low level archive writing tool used by ON_BinaryArchive::ReadObject().

Parameters
binary_archivearchive to read from
Returns
Returns true if the read is successful.

Use ON_BinaryArchive::ReadObject() to read objects. This Read() function should read the objects definition back into its data members.

The default implementation of this virtual function returns false and does nothing.

Reimplemented from ON_Object.

◆ SizeOf()

unsigned int ON_UnknownUserData::SizeOf ( ) const
overridevirtual

Overrides virtual ON_Object::SizeOf().

Returns
Approximate number of bytes this class uses.

Reimplemented from ON_UserData.

◆ Write()

bool ON_UnknownUserData::Write ( ON_BinaryArchive binary_archive) const
overridevirtual

Low level archive writing tool used by ON_BinaryArchive::WriteObject().

Parameters
binary_archivearchive to write to
Returns
Returns true if the write is successful.

Use ON_BinaryArchive::WriteObject() to write objects. This Write() function should just write the specific definition of this object. It should not write and any chunk typecode or length information.

The default implementation of this virtual function returns false and does nothing.

Reimplemented from ON_Object.

Member Data Documentation

◆ m_3dm_opennurbs_version_number

unsigned int ON_UnknownUserData::m_3dm_opennurbs_version_number

◆ m_3dm_version

int ON_UnknownUserData::m_3dm_version

◆ m_buffer

void* ON_UnknownUserData::m_buffer

◆ m_sizeof_buffer

int ON_UnknownUserData::m_sizeof_buffer

◆ m_unknownclass_uuid

ON_UUID ON_UnknownUserData::m_unknownclass_uuid

This is the uuid of the missing class. This uuid is the 3rd parameter to the ON_OBJECT_IMPLEMENT() macro of the missing class.