ON_UserDataHolder Class Reference

#include <opennurbs_userdata.h>

Inheritance diagram for ON_UserDataHolder:
ON_Object

Public Member Functions

unsigned int CopyUserDataFrom (const ON_Object &source_object, ON_UUID user_data_item_id)
 Copies the data from source_object with copy_count > 0 to "this" ON_UserDataHolder. More...
 
bool IsValid (class ON_TextLog *text_log=nullptr) const override
 Tests an object to see if its data members are correctly initialized. More...
 
unsigned int MoveUserDataFrom (const ON_Object &source_object)
 Transfers the user data from source_object to "this". When MoveUserDataFrom() returns source_object will not have any user data. If "this" had user data when MoveUserDataFrom() was called, then that user data is destroyed. More...
 
unsigned int MoveUserDataTo (const ON_Object &destination_object, bool bAppend)
 Moves the user data on "this" ON_UserDataHolder to destination_object. When MoveUserDataTo() returns "this" ON_UserDataHolder will not have any user data. More...
 
unsigned int MoveUserDataTo (const ON_Object &destination_object, ON_UUID user_data_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution)
 Moves the user data on "this" ON_UserDataHolder to destination_object. When MoveUserDataTo() returns "this" ON_UserDataHolder will not have any user data. 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...
 
virtual void Dump (ON_TextLog &) const
 Creates a text dump of the 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 bool Read (ON_BinaryArchive &binary_archive)
 Low level archive writing tool used by ON_BinaryArchive::ReadObject(). 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...
 
virtual unsigned int SizeOf () const
 
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
 
virtual bool Write (ON_BinaryArchive &binary_archive) const
 Low level archive writing tool used by ON_BinaryArchive::WriteObject(). More...
 

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...
 

Member Function Documentation

◆ CopyUserDataFrom()

unsigned int ON_UserDataHolder::CopyUserDataFrom ( const ON_Object source_object,
ON_UUID  user_data_item_id 
)

Copies the data from source_object with copy_count > 0 to "this" ON_UserDataHolder.

Parameters
source_object[in] This object and it's user data are not modified.
user_data_item_id[in] If not nil, then only userdata with this item id will be coped
Returns
Number of user data items that were copied from source_object to "this" ON_UserDataHolder.

◆ IsValid()

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

Tests an object to see if its data members are correctly initialized.

Parameters
text_log[in] if the object is not valid and text_log is not nullptr, then a brief englis description of the reason the object is not valid is appened to the log. The information appended to text_log is suitable for
lowlevel debugging purposes by programmers and is not intended to be useful as a high level user interface tool.
Returns
table true object is valid false object is invalid, uninitialized, etc.

Reimplemented from ON_Object.

◆ MoveUserDataFrom()

unsigned int ON_UserDataHolder::MoveUserDataFrom ( const ON_Object source_object)

Transfers the user data from source_object to "this". When MoveUserDataFrom() returns source_object will not have any user data. If "this" had user data when MoveUserDataFrom() was called, then that user data is destroyed.

Parameters
source_object[in] The "const" is a lie. It is there because, in practice the source object is frequently const and const_cast ends up being excessively used.
Returns
Number of user data items that were moved from source_object to "this" ON_UserDataHolder.

◆ MoveUserDataTo() [1/2]

unsigned int ON_UserDataHolder::MoveUserDataTo ( const ON_Object destination_object,
bool  bAppend 
)

Moves the user data on "this" ON_UserDataHolder to destination_object. When MoveUserDataTo() returns "this" ON_UserDataHolder will not have any user data.

Parameters
destination_object[in] The "const" is a lie. It is there because, in practice the source object is generally const and const_cast ends up being constantly used.
bAppend[in] true: Existing user data on destination_object is left unchanged. MoveUserDataTo( destination_object, true ) is identical to calling MoveUserDataTo( destination_object, ON_Object::UserDataConflictResolution::destination_object). false: Existing user data on destination_object is destroyed.
Returns
Number of user data items moved from "this" ON_UserDataHolder to destination_object.

◆ MoveUserDataTo() [2/2]

unsigned int ON_UserDataHolder::MoveUserDataTo ( const ON_Object destination_object,
ON_UUID  user_data_item_id,
ON_Object::UserDataConflictResolution  userdata_conflict_resolution 
)

Moves the user data on "this" ON_UserDataHolder to destination_object. When MoveUserDataTo() returns "this" ON_UserDataHolder will not have any user data.

Parameters
destination_object[in] The "const" is a lie. It is there because, in practice the source object is generally const and const_cast ends up being constantly used.
user_data_item_id[in] If not nil, then only user data items with this id will be considered for moving.
userdata_conflict_resolution[in] If destination_object and "this" ON_UserDataHolder have the same type of user data item, then userdata_conflict_resolution is used to determine if that destination_object user data item is replaced with the one on "this" ON_UserDataHolder.
Returns
Number of user data items moved from "this" ON_UserDataHolder to destination_object.