#include <c4d_fielddata.h>
A list of all of the "callers" i.e. objects that invoked the sampling function. Additionally contains an identifier one way hash created to generate a unique ID based on the objects invoking the sampling, you can append additional addresses/objects using the operator + and += functions in order to continue the chain and ensure that the caller ID remains unique within the FieldInfo for each call chain.
Public Member Functions | |
| FieldCallerStack ()=default | |
| FieldCallerStack (UInt value) | |
| FieldCallerStack (FieldCallerStack &&src) | |
| ~FieldCallerStack ()=default | |
| MAXON_OPERATOR_MOVE_ASSIGNMENT (FieldCallerStack) | |
| maxon::Result< void > | CopyFrom (const FieldCallerStack &src) | 
| const BaseList2D * | operator[] (Int index) const | 
| operator const UInt & () const | |
| UInt | RecalcValue () const | 
| void | UpdateValue () | 
| void | UpdateValue (const BaseList2D *caller) | 
| maxon::Result< void > | Add (const BaseList2D *caller) | 
| Int | GetCount () const | 
| UInt | GetValue () const | 
| Bool | IsValid () const | 
| void | Add (UInt levelValue) | 
| maxon::Result< void > | AddOrAddCacheParentObject (const BaseObject *caller) | 
Static Public Member Functions | |
| static FieldCallerStack | Create () | 
| static maxon::Result< FieldCallerStack > | Create (const BaseList2D *caller) | 
| static maxon::Result< FieldCallerStack > | Create (const std::initializer_list< const BaseList2D * > &callers) | 
| static FieldCallerStack | Add (const FieldCallerStack &src, const BaseList2D *newCaller) | 
Public Attributes | |
| UInt | _value | 
| maxon::BaseArray< const BaseList2D * > | _callers | 
Private Member Functions | |
| MAXON_DISALLOW_COPY_AND_ASSIGN (FieldCallerStack) | |
      
  | 
  default | 
      
  | 
  explicit | 
| FieldCallerStack | ( | FieldCallerStack && | src | ) | 
      
  | 
  default | 
      
  | 
  private | 
| MAXON_OPERATOR_MOVE_ASSIGNMENT | ( | FieldCallerStack | ) | 
      
  | 
  static | 
Creates an empty FieldCallerStack. Cannot fail. Same as using default constructor.
      
  | 
  static | 
Creates a FieldCallerStack while relaying potential allocation errors. On error, the result will contain a default FieldCallerStack structure.
| [in] | caller | The first caller for the stack. | 
      
  | 
  static | 
Creates a FieldCallerStack while relaying potential allocation errors. On error, the result will contain a default FieldCallerStack structure.
| [in] | callers | An initializer list to build the stack, first item is base of stack. | 
| maxon::Result<void> CopyFrom | ( | const FieldCallerStack & | src | ) | 
| const BaseList2D* operator[] | ( | Int | index | ) | const | 
Returns an element of the stack.
| [in] | index | The caller index. | 
| operator const UInt & | ( | ) | const | 
Cast to UInt, return the value of the stack.
| UInt RecalcValue | ( | ) | const | 
Calculates the id of the caller stack from scratch. Does not update stored id value.
| void UpdateValue | ( | ) | 
Recalculates the id of the caller stack from scratch. Will update the internal stack id value.
| void UpdateValue | ( | const BaseList2D * | caller | ) | 
Calculates a new stack id from the current id and the added caller. Can be used to calculate a stack id without carrying the actual BaseList2d stack.
| [in] | caller | The new caller, assuming already added to stack. | 
| maxon::Result<void> Add | ( | const BaseList2D * | caller | ) | 
Adds a caller to the caller stack and updates the stack id.
| [in] | caller | The caller object to add to the stack. | 
      
  | 
  static | 
Adds a caller to the caller stack and returns a modified stack. This function hides the memory management iferr statement by returning an empty FieldCallerStack if an error occurs. It can be used within a field sampling call directly. But it is recommended to use the non static version and avoid any field sampling call if a prior memory error occurred.
| [in] | src | The original stack. | 
| [in] | newCaller | The caller object to add to the stack. | 
| Int GetCount | ( | ) | const | 
Returns the number of callers involved in this chain.
| UInt GetValue | ( | ) | const | 
Returns the caller stack id.
| Bool IsValid | ( | ) | const | 
Check for valid stack content. Empty stack is valid. Stack with null pointers is not valid. Non empty stack with no stack id value is not valid.
| void Add | ( | UInt | levelValue | ) | 
Adds a non caller value to the stack ID.
| [in] | levelValue | The value to add to the stack ID.. | 
| maxon::Result<void> AddOrAddCacheParentObject | ( | const BaseObject * | caller | ) | 
Adds a the object or it's cache parent parent to the stack if the object has a cache along with all object uniqueIP's to maintain a better path to the object.
| [in] | caller | The caller object or caller cache source to add to the stack ID. | 
| UInt _value | 
Caller stack id.
| maxon::BaseArray<const BaseList2D*> _callers | 
Detailed stack for id _value.