Description

Detailed Description

Groups

 COLOR
 
 COLORA
 
 CUSTOMGUI
 
 DESC
 
 DTYPE
 
 VECTOR
 
 VECTOR4D
 

Classes

struct  DescLevel
 
class  DescID
 
class  ConstDescIDMem< T >
 
class  Description
 
class  DynamicDescription
 
struct  DescriptionBaseMessage
 
struct  DescriptionCommand
 
struct  DescriptionPopup
 
struct  DescriptionCheckDragAndDrop
 
struct  DescriptionInExDeleted
 
struct  DescriptionInExAdded
 
struct  DescriptionInExSelChanged
 
struct  DescriptionCustomGuiNotification
 
struct  DescriptionGetBitmap
 
struct  DescriptionGetObjects
 
struct  DescriptionAllowOverride
 
struct  DescriptionTakeChanged
 
struct  DescriptionImExportVerifySuffix
 
struct  DescriptionImExportVerifyFilename
 

Macros

#define DESCID_ROOT
 
#define ID_USERDATA
 
#define DESCID_DYNAMICSUB
 
#define BOOL_PAGEMODE
 
#define VECTOR_NO_Z_COMPONENT
 
#define CUSTOMDATATYPE_DESCID
 
#define YDescLevel(A, B, C, ...)
 
#define XDescLevel(...)
 
#define AddDescX(t, i, a)
 
#define ConstDescID(...)
 
#define CreateDescID(...)
 

Typedefs

using Array = DescLevel[sizeof...(T)/3]
 

Functions

DescriptionLib * CheckDescriptionLib (Int32 offset)
 
constexpr DescLevel (Int32 t_id)
 
constexpr DescLevel (Int32 t_id, Int32 t_datatype, Int32 t_creator)
 
Bool operator== (const DescLevel &d) const
 
Bool operator!= (const DescLevel &d) const
 
String ToString (const maxon::FormatStatement *formatStatement=nullptr) const
 
static const ArrayToArray ()
 
 Description ()
 
 ~Description ()
 
Bool LoadDescription (const BCResourceObj *bc, Bool copy)
 
Bool LoadDescription (Int32 id)
 
Bool LoadDescription (const String &id)
 
Bool SortGroups ()
 
const BCResourceObj * GetDescription ()
 
const BaseContainerGetParameter (const DescID &id, BaseContainer &temp, AtomArray *ar) const
 
BaseContainerGetParameterI (const DescID &id, AtomArray *ar)
 
Bool SetParameter (const DescID &id, const BaseContainer &param, const DescID &groupid)
 
void * BrowseInit () const
 
Bool GetNext (void *handle, const BaseContainer **bc, DescID &id, DescID &groupid) const
 
void BrowseFree (void *&handle) const
 
DescEntry * GetFirst (const AtomArray &op)
 
DescEntry * GetNext (DescEntry *de)
 
DescEntry * GetDown (DescEntry *de)
 
void GetDescEntry (DescEntry *de, const BaseContainer **bc, DescID &descid)
 
SubDialogCreateDialogI ()
 
void FreeDialog (SubDialog *dlg)
 
Bool CreatePopupMenu (BaseContainer &menu)
 
Bool GetPopupId (Int32 id, const DescID &descid)
 
Bool CheckDescID (const DescID &searchid, const AtomArray &ops, DescID *completeid)
 
Bool GetSubDescriptionWithData (const DescID &did, const AtomArray &op, RESOURCEDATATYPEPLUGIN *resdatatypeplugin, const BaseContainer &bc, DescID *singledescid)
 
const DescIDGetSingleDescID ()
 
void SetSingleDescriptionMode (const DescID &descid)
 
 DynamicDescription ()
 
 ~DynamicDescription ()
 
DescID Alloc (const BaseContainer &datadescription)
 
Bool Set (const DescID &descid, const BaseContainer &datadescription, BaseList2D *bl)
 
const BaseContainerFind (const DescID &descid) const
 
Bool Remove (const DescID &descid)
 
Bool CopyTo (DynamicDescription *dest) const
 
void * BrowseInit ()
 
const void * BrowseInit () const
 
Bool BrowseGetNext (void *handle, DescID *id, const BaseContainer **data)
 
Bool BrowseGetNext (const void *handle, DescID *id, const BaseContainer **data) const
 
void BrowseFree (void *&handle)
 
void BrowseFree (const void *&handle) const
 
Bool FillDefaultContainer (BaseContainer &res, Int32 type, const String &name)
 
UInt32 GetDirty () const
 
Bool Description_Register (Int32 id, const String &idstr, LocalResource *res)
 

Variables

Int32 id
 
Int32 dtype
 
Int32 creator
 
maxon::StrongCOWRef< Int >   _refData
 
maxon::Block< const DescLevel >   _constData
 
union {
   maxon::StrongCOWRef< Int >   _refData
 
   maxon::Block< const DescLevel >   _constData
 
}; 
 
static constexpr Int32 _ids []
 

Constructor/Destructor

 DescID ()
 
 DescID (const DescID &src)
 
 DescID (DescID &&src)
 
template<int elementCount>
constexpr DescID (maxon::IN_PLACE_TYPE v, const DescLevel(&ids)[elementCount])
 
 DescID (maxon::IN_PLACE_TYPE v, const maxon::Block< const DescLevel > &ids)
 
template<typename... T>
static DescID Create (const T &... ids)
 
 ~DescID ()
 

Set/Push/Pop Level

void SetId (const DescLevel &subid)
 
void PushId (const DescLevel &subid)
 
void PushId (const std::initializer_list< DescLevel > &subids)
 
void PopId ()
 

Operator

const DescLeveloperator[] (Int32 pos) const
 
const DescIDoperator= (const DescID &id)
 
const DescIDoperator= (DescID &&id)
 
Bool operator== (const DescID &d) const
 
Bool operator!= (const DescID &d) const
 
const DescID operator<< (Int32 shift) const
 
const DescIDoperator+= (const DescID &s)
 
const DescID operator+ (const DescID &v1, const DescID &v2)
 

Read/Write

Bool Read (HyperFile *hf)
 
Bool Write (HyperFile *hf) const
 

Miscellaneous

Int32 GetDepth () const
 
Bool IsPopulated () const
 
Bool IsEmpty () const
 
Bool IsPartOf (const DescID &cmp, Int32 *pos) const
 
maxon::HashInt GetHashCode () const
 

Alloc/Free

static DescriptionAlloc ()
 
static void Free (Description *&description)
 

Macro Definition Documentation

◆ DESCID_ROOT

#define DESCID_ROOT

Root description ID.

◆ ID_USERDATA

#define ID_USERDATA

User data ID.

◆ DESCID_DYNAMICSUB

#define DESCID_DYNAMICSUB

User data/dynamic parameters description level.

◆ BOOL_PAGEMODE

#define BOOL_PAGEMODE

Page mode for boolean elements. If set it means that this boolean will have no checkbox. (Used for the Material Editor navigation.)

◆ VECTOR_NO_Z_COMPONENT

#define VECTOR_NO_Z_COMPONENT

Private. Restricts the displayed vector to two instead of three components.

◆ CUSTOMDATATYPE_DESCID

#define CUSTOMDATATYPE_DESCID

DescID custom data type ID.

◆ YDescLevel

#define YDescLevel (   A,
  B,
  C,
  ... 
)

◆ XDescLevel

#define XDescLevel (   ...)

◆ AddDescX

#define AddDescX (   t,
  i,
 
)

◆ ConstDescID

#define ConstDescID (   ...)

◆ CreateDescID

#define CreateDescID (   ...)

Typedef Documentation

◆ Array

using Array = DescLevel[sizeof...(T) / 3]

Function Documentation

◆ CheckDescriptionLib()

DescriptionLib* cinema::CheckDescriptionLib ( Int32  offset)

◆ DescLevel() [1/2]

constexpr DescLevel ( Int32  t_id)
constexpr

Constructor, specifying only the ID.

Parameters
[in]t_idInitial value for id.

◆ DescLevel() [2/2]

constexpr DescLevel ( Int32  t_id,
Int32  t_datatype,
Int32  t_creator 
)
constexpr
Parameters
[in]t_idInitial value for id.
[in]t_datatypeInitial value for dtype.
[in]t_creatorInitial value for creator.

◆ operator==() [1/2]

Bool operator== ( const DescLevel d) const

Equality operator. Checks if description levels are equals i.e all vales are equal.

Parameters
[in]dA description level to compare with.
Returns
true if description levels are equal, otherwise false.

◆ operator!=() [1/2]

Bool operator!= ( const DescLevel d) const

Inequality operator. Checks if description levels are not equal i.e any vales is different.

Parameters
[in]dA description level to compare with.
Returns
true if description levels are not equal, otherwise false.

◆ ToString()

String ToString ( const maxon::FormatStatement formatStatement = nullptr) const

◆ DescID() [1/5]

DescID ( )

Default constructor.

◆ DescID() [2/5]

DescID ( const DescID src)

Copy constructor.

Parameters
[in]srcSource DescID.

◆ DescID() [3/5]

DescID ( DescID &&  src)

Move constructor.

Parameters
[in]srcSource DescID.

◆ DescID() [4/5]

constexpr DescID ( maxon::IN_PLACE_TYPE  v,
const DescLevel(&)  ids[elementCount] 
)
explicitconstexpr

Creates an ID with any number of levels. Must be used only with ConstDescID or memory which is never deleted.

Parameters
[in]idsarray with DescLevels.

◆ DescID() [5/5]

DescID ( maxon::IN_PLACE_TYPE  v,
const maxon::Block< const DescLevel > &  ids 
)
explicit

Creates an ID with any number of levels. Must be used only with ConstDescID or memory which is never deleted.

Parameters
[in]idsarray with DescLevels.

◆ Create()

static DescID Create ( const T &...  ids)
static

Creates an ID with any number of levels.

Parameters
[in]idsarray with DescLevels.

◆ ~DescID()

~DescID ( )

Default destructor.

◆ SetId()

void SetId ( const DescLevel subid)

Sets the highest level to subid.

Parameters
[in]subidNew top level.

◆ PushId() [1/2]

void PushId ( const DescLevel subid)

Pushes a new level onto the stack.

Parameters
[in]subidLevel to push.

◆ PushId() [2/2]

void PushId ( const std::initializer_list< DescLevel > &  subids)

Pushes a new level onto the stack.

Parameters
[in]subidsLevels to push.

◆ PopId()

void PopId ( )

Pop the highest level from the stack.

◆ operator[]()

const DescLevel& operator[] ( Int32  pos) const

Accesses the level at position pos in the stack.

Parameters
[in]posThe position: 0 <= pos < GetDepth()
Returns
The level at the specified position.

◆ operator=() [1/2]

const DescID& operator= ( const DescID id)

Assignment operator. Assigns id to the description ID.

Parameters
[in]idRight operand. Source description ID.
Returns
Left operant.

◆ operator=() [2/2]

const DescID& operator= ( DescID &&  id)

Move Assignment operator. Assigns id to the description ID.

Parameters
[in]idRight operand. Source description ID.
Returns
Left operant.

◆ operator==() [2/2]

Bool operator== ( const DescID d) const

Equality operator. Checks if all levels are equal.

Parameters
[in]dRight operand description ID.
Returns
true if description IDs are equal, otherwise false.

◆ operator!=() [2/2]

Bool operator!= ( const DescID d) const

Inequality operator. Checks if any level is different.

Parameters
[in]dRight operand description ID.
Returns
true if description IDs are not equal, otherwise false.

◆ operator<<()

const DescID operator<< ( Int32  shift) const

Get the result of popping levels from the bottom of the stack.

Parameters
[in]shiftNumber of levels to pop. 0 <= shift < GetDepth().
Returns
Resulting description ID after popping level(s).

◆ operator+=()

const DescID& operator+= ( const DescID s)

Add operator. Merges two description IDs.

Parameters
[in]sRight operand. Source description ID.
Returns
Left operant.

◆ Read()

Bool Read ( HyperFile hf)

Reads the description ID from hf.

Parameters
[in]hfThe hyper file to read from. The caller owns the pointed hyper file.
Returns
true if successful, otherwise false.

◆ Write()

Bool Write ( HyperFile hf) const

Writes the description ID to hf.

Parameters
[in]hfThe hyper file to write to. The caller owns the pointed hyper file.
Returns
true if successful, otherwise false.

◆ GetDepth()

Int32 GetDepth ( ) const

Gets the depth of the stack, i.e. the number of levels.

Returns
The depth of the stack.

◆ IsPopulated()

Bool IsPopulated ( ) const

Returns True if Id is set to any value.

◆ IsEmpty()

Bool IsEmpty ( ) const

Returns True if Id is not set to any value.

◆ IsPartOf()

Bool IsPartOf ( const DescID cmp,
Int32 pos 
) const

Checks if the description ID is part of cmp and assigns the length of the match to pos.

Parameters
[in]cmpThe super description ID.
[out]posIf not nullptr this is assigned the length of the match.
Returns
true if the description ID matches the lowest part of cmp, otherwise false.

◆ GetHashCode()

maxon::HashInt GetHashCode ( ) const

Gets a hash code for the description ID.

Since
R17.032
Returns
The hash code.

◆ ToArray()

static const Array& ToArray ( )
static

◆ Description()

Description ( )
private

◆ ~Description()

~Description ( )
private

◆ Alloc() [1/2]

static Description* Alloc ( )
static

Allocates a description. Destroy the allocated description with Free(). Use AutoAlloc to automate the allocation and destruction based on scope.

Returns
The allocated description, or nullptr if the allocation failed.

◆ Free()

static void Free ( Description *&  description)
static

Destructs descriptions allocated with Alloc(). Use AutoAlloc to automate the allocation and destruction based on scope.

Parameters
[in,out]descriptionThe description to destruct. If the pointer is nullptr nothing happens. The pointer is assigned nullptr afterwards.

◆ LoadDescription() [1/3]

Bool LoadDescription ( const BCResourceObj *  bc,
Bool  copy 
)

Loads a description from a BCResourceObj, such as the one returned from GetDescription().

Warning
Existing entries are lost.
Parameters
[in]bcThe BCResourceObj to load the description from.
[in]copytrue if the description should be copied, otherwise the objects will share the same internal data so that changes to one affects the other.
Returns
true if the description was loaded, otherwise false.

◆ LoadDescription() [2/3]

Bool LoadDescription ( Int32  id)

Loads a description by ID. The ID must have been registered with RegisterDescription().

Warning
Existing entries are lost.
Parameters
[in]idThe description ID, for example Obase.
Returns
true if the description was loaded, otherwise false.

◆ LoadDescription() [3/3]

Bool LoadDescription ( const String id)

Loads a description by name. The description name must have been registered with RegisterDescription().

Warning
Existing entries are lost.
Parameters
[in]idThe description name, for example "Obase".
Returns
true if the description was loaded, otherwise false.

◆ SortGroups()

Bool SortGroups ( )

Private.

◆ GetDescription()

const BCResourceObj* GetDescription ( )

Retrieves the internal pointer of the description.

Returns
The internal description pointer.

◆ GetParameter()

const BaseContainer* GetParameter ( const DescID id,
BaseContainer temp,
AtomArray ar 
) const

Retrieves the information container for a description parameter.

Parameters
[in]idThe description ID.
[out]tempWhen the parameter is of a dynamic type that does not already exist as predefined container, i.e. not returnable as pointer, the result is the address of temp, where temp allows to store the data.
In this case nullptr is returned.
[out]arMost of the time this can be just AtomArray(). However dynamic descriptions (like sub-descriptions of a gradient or dynamic XPresso node) need an array of elements the parameter is assigned to.
Returns
The information container, or nullptr if temp was used. The description owns the pointed container.

◆ GetParameterI()

BaseContainer* GetParameterI ( const DescID id,
AtomArray ar 
)

Retrieves a pointer to the information container for a description parameter.

Parameters
[in]idThe description ID.
[out]arMost of the time this can be just AtomArray(). However dynamic descriptions (like sub-descriptions of a gradient or dynamic XPresso node) need an array of elements the parameter is assigned to.
Returns
The information container. The description owns the pointed container.

◆ SetParameter()

Bool SetParameter ( const DescID id,
const BaseContainer param,
const DescID groupid 
)

Inserts a description parameter into the collection.

Parameters
[in]idThe description ID.
[in]paramThe settings for the new parameter.
[in]groupidThe ID of the parameter's group, or DESCID_ROOT.
Returns
true if the parameter was inserted, otherwise false.

◆ BrowseInit() [1/3]

void* BrowseInit ( ) const

Starts browsing the parameters linearly.

Warning
After browsing is done done BrowseFree() must be called.
Returns
The browse handle.

◆ GetNext() [1/2]

Bool GetNext ( void *  handle,
const BaseContainer **  bc,
DescID id,
DescID groupid 
) const

Retrieves the next parameter in a browse sequence initialized with BrowseInit().

Parameters
[in]handleThe browse handle returned by BrowseInit().
[out]bcAssigned the settings for the retrieved parameter. The caller owns the pointed base container.
[out]idAssigned the ID of the retrieved parameter.
[out]groupidAssigned the group ID of the retrieved parameter.
Returns
true if a new parameter was retrieved, otherwise the sequence is finished.

◆ BrowseFree() [1/3]

void BrowseFree ( void *&  handle) const

Frees browse handles from BrowseInit().

Parameters
[in,out]handleThe handle to free. Assigned nullptr.

◆ GetFirst()

DescEntry* GetFirst ( const AtomArray op)

Gets a handle to the first description entry. Use GetDescEntry() to access the information and GetNext() or GetDown() to browse the hierarchy.

Parameters
[in]opMost of the time this can be just AtomArray(). However dynamic descriptions (like sub-descriptions of a gradient or dynamic XPresso node) need an array of elements the parameter is assigned to.
Returns
The description entry handle.

◆ GetNext() [2/2]

DescEntry* GetNext ( DescEntry *  de)

Gets the next description entry handle.

Parameters
[in]deThe current description entry handle.
Returns
The next description entry handle.

◆ GetDown()

DescEntry* GetDown ( DescEntry *  de)

Gets the child description entry handle.

Parameters
[in]deThe current description entry handle.
Returns
The child description entry handle.

◆ GetDescEntry()

void GetDescEntry ( DescEntry *  de,
const BaseContainer **  bc,
DescID descid 
)

Retrieves the data for a description entry handle.

Parameters
[in]deThe current description entry handle.
[out]bcAssigned the settings for the retrieved parameter. The caller owns the pointed base container.
[out]descidAssigned the ID of the retrieved parameter.

◆ CreateDialogI()

SubDialog* CreateDialogI ( )

Private.

◆ FreeDialog()

void FreeDialog ( SubDialog dlg)

Private.

◆ CreatePopupMenu()

Bool CreatePopupMenu ( BaseContainer menu)

Builds a popup menu for choosing a parameter in the description.

Parameters
[out]menuAssigned the menu container.
Returns
true if the menu was built, otherwise false.

◆ GetPopupId()

Bool GetPopupId ( Int32  id,
const DescID descid 
)

Private.

◆ CheckDescID()

Bool CheckDescID ( const DescID searchid,
const AtomArray ops,
DescID completeid 
)

Checks if a description ID searchid exists for the given objects ops (usually only one single object is passed as otherwise the smallest common nominator is returned).
If completeid != nullptr and the return value is true the complete ID will be assigned to completeid.

Note
Complete ID means that all parts of the DescLevel are filled with appropriate data.
For example if the DescID passed is:
ConstDescID(DescLevel(ID_BASEOBJECT_POSITION, 0, 0), DescLevel(VECTOR_X, 0, 0))
@ VECTOR_X
X component.
Definition: lib_description.h:277
#define ConstDescID(...)
Definition: lib_description.h:592
CheckDescID() will return:
ConstDescID(DescLevel(ID_BASEOBJECT_POSITION, DTYPE_VECTOR, ID_BASEOBJECT_GROUP1), DescLevel(VECTOR_X, DTYPE_REAL, ...))
@ DTYPE_VECTOR
Vector
Definition: lib_description.h:69
@ DTYPE_REAL
Float
Definition: lib_description.h:67
@ ID_BASEOBJECT_GROUP1
Definition: obase.h:54
Parameters
[in]searchidThe partial ID.
[in]opsMost of the time this can be just AtomArray(). However dynamic descriptions (like sub-descriptions of a gradient or dynamic XPresso node) need an array of elements the parameter is assigned to.
[out]completeidAssigned the complete ID.
Returns
true if a description ID searchid exists, otherwise false.

◆ GetSubDescriptionWithData()

Bool GetSubDescriptionWithData ( const DescID did,
const AtomArray op,
RESOURCEDATATYPEPLUGIN *  resdatatypeplugin,
const BaseContainer bc,
DescID singledescid 
)

Retrieves dynamic sub-description data (e.g. the gradient data type).

Parameters
[in]didThe description ID.
[in]opThe current objects.
[in]resdatatypepluginThe resource data type plug, retrieved with FindResourceDataTypePlugin().
[out]bcThe existing container for the data type.
[in]singledescidShould be nullptr.
Returns
true if successful, otherwise false.

◆ GetSingleDescID()

const DescID* GetSingleDescID ( )

Private.

◆ SetSingleDescriptionMode()

void SetSingleDescriptionMode ( const DescID descid)

Private.

◆ DynamicDescription()

DynamicDescription ( )
private

◆ ~DynamicDescription()

~DynamicDescription ( )
private

◆ Alloc() [2/2]

DescID Alloc ( const BaseContainer datadescription)

Allocates a new user data and return its ID.

Parameters
[in]datadescriptionThe settings of the new user data.
Returns
The ID of the new user data.

◆ Set()

Bool Set ( const DescID descid,
const BaseContainer datadescription,
BaseList2D bl 
)

Inserts a new user data with the specified ID.

Parameters
[in]descidThe ID of the new user data.
[in]datadescriptionThe settings of the new user data.
[in]blTODO
Returns
true if the user data was inserted, otherwise false.

◆ Find()

const BaseContainer* Find ( const DescID descid) const

Finds user data settings from its description ID.

Parameters
[in]descidThe ID of the user data.
Returns
The found settings, or nullptr. The description owns the pointed base container.

◆ Remove()

Bool Remove ( const DescID descid)

Removes user data by ID.

Parameters
[in]descidThe ID of the user data.
Returns
true if the user data was removed, otherwise false.

◆ CopyTo()

Bool CopyTo ( DynamicDescription dest) const

Copies the dynamic description.

Parameters
[in]destThe destination dynamic description. The caller owns the pointed dynamic description.
Returns
true if the description was copied, otherwise false.

◆ BrowseInit() [2/3]

void* BrowseInit ( )

Starts browsing the parameters linearly.

Warning
After browsing is done done BrowseFree() must be called.
Returns
The browse handle.

◆ BrowseInit() [3/3]

const void* BrowseInit ( ) const

◆ BrowseGetNext() [1/2]

Bool BrowseGetNext ( void *  handle,
DescID id,
const BaseContainer **  data 
)

Retrieves the next parameter in a browse sequence initialized with BrowseInit().

Parameters
[in]handleThe browse handle returned by BrowseInit().
[out]idAssigned the ID of the retrieved parameter.
[out]dataAssigned the settings for the retrieved parameter. The caller owns the pointed base container.
Returns
true if a new parameter was retrieved, otherwise the sequence is finished.

◆ BrowseGetNext() [2/2]

Bool BrowseGetNext ( const void *  handle,
DescID id,
const BaseContainer **  data 
) const

◆ BrowseFree() [2/3]

void BrowseFree ( void *&  handle)

Frees browse handles from BrowseInit().

Parameters
[in,out]handleThe handle to free. Assigned nullptr.

◆ BrowseFree() [3/3]

void BrowseFree ( const void *&  handle) const

◆ FillDefaultContainer()

Bool FillDefaultContainer ( BaseContainer res,
Int32  type,
const String name 
)

Fills the default settings container for a certain data type with the specified name.

Parameters
[out]resAssigned the default settings.
[in]typeThe datatype ID. Either a custom ID or one of: DTYPE.
[in]nameThe name of the user data.
Returns
true if the settings were filled, otherwise false.

◆ GetDirty()

UInt32 GetDirty ( ) const

Gets the dirty count. Can be used to check if something has changed.

Returns
The dirty counter, incremented when something changes in the system.

◆ Description_Register()

Bool cinema::Description_Register ( Int32  id,
const String idstr,
LocalResource *  res 
)

Internal. Use RegisterDescription() instead.

Variable Documentation

◆ id

Int32 id

ID of the level.

◆ dtype

Int32 dtype

Data type. Either a custom ID or one of these: DTYPE.

◆ creator

Int32 creator

Creator ID.

◆ _refData [1/2]

◆ _refData [2/2]

◆ _constData [1/2]

maxon::Block<const DescLevel> _constData

◆ _constData [2/2]

maxon::Block<const DescLevel> _constData

◆ 

union { ... }

◆ _ids

constexpr Int32 _ids[]
staticconstexpr

Friends

◆ operator+

const DescID operator+ ( const DescID v1,
const DescID v2 
)
friend

Add operator. Merges two description IDs.

Parameters
[in]v1Left operand.
[in]v2Right operand.
Returns
Result.