VTK: vtkDataAssembly Class Reference

| VTK 9.3.1

Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
vtkDataAssembly Class Reference

hierarchical representation to use with vtkPartitionedDataSetCollection More...

`#include <vtkDataAssembly.h>`

Inheritance diagram for vtkDataAssembly:
[legend]
Collaboration diagram for vtkDataAssembly:
[legend]

## Public Types
enum | TraversalOrder { DepthFirst = 0 , BreadthFirst }
typedef vtkObject | Superclass

## Public Member Functions
virtual vtkTypeBool | IsA (const char *type)
| Return 1 if this class is the same type of (or a subclass of) the named class. More...
vtkDataAssembly * | NewInstance () const
void | PrintSelf (ostream &os, vtkIndent indent) override
| Methods invoked by print to print information about the object including superclasses. More...
void | Initialize ()
| Initializes the data-assembly. More...
int | AddNode (const char *name, int parent=0)
| Adds a node to the assembly with the given name and returns its id. More...
std::vector< int > | AddNodes (const std::vector< std::string > &names, int parent=0)
| Same as `AddNode` except allows adding multiple nodes in one go. More...
int | AddSubtree (int parent, vtkDataAssembly *other, int otherParent=0)
| Add a subtree by copy the nodes from another tree starting with the specified parent index. More...
bool | RemoveNode (int id)
| Removes a node from the assembly. More...
std::string | GetNodePath (int id) const
| Returns the path for a node. More...
int | GetFirstNodeByPath (const char *path) const
| Return a node id given the path. More...
bool | AddDataSetIndex (int id, unsigned int dataset_index)
| Add a dataset index to a node. More...
bool | AddDataSetIndices (int id, const std::vector< unsigned int > &dataset_indices)
| Same as `AddDataSetIndex` except supports adding multiple dataset indices in one go. More...
bool | AddDataSetIndexRange (int id, unsigned int index_start, int count)
| Same as `AddDataSetIndices` except this supports adding a contiguous range of dataset indices in one go. More...
bool | RemoveDataSetIndex (int id, unsigned int dataset_index)
| Removes a dataset index from a node. More...
bool | RemoveAllDataSetIndices (int id, bool traverse_subtree=true)
| Clears all dataset indices from the node. More...
int | FindFirstNodeWithName (const char *name, int traversal_order=vtkDataAssembly::TraversalOrder::DepthFirst) const
| Finds first node that is encountered in a breadth first traversal of the assembly with the given name. More...
std::vector< int > | FindNodesWithName (const char *name, int sort_order=vtkDataAssembly::TraversalOrder::DepthFirst) const
| Finds all nodes with the given name. More...
std::vector< int > | GetChildNodes (int parent, bool traverse_subtree=true, int traversal_order=vtkDataAssembly::TraversalOrder::DepthFirst) const
| Returns ids for all child nodes. More...
int | GetNumberOfChildren (int parent) const
| Returns the number of child nodes. More...
int | GetChild (int parent, int index) const
| Returns the id for a child not at the given index, if valid, otherwise -1. More...
int | GetChildIndex (int parent, int child) const
| Returns the index for a child under a given. More...
int | GetParent (int id) const
| Returns the id for the parent node, if any. More...
bool | HasAttribute (int id, const char *name) const
| Returns true if attribute with the given name is present on the chosen node. More...
std::vector< int > | SelectNodes (const std::vector< std::string > &path_queries, int traversal_order=vtkDataAssembly::TraversalOrder::DepthFirst) const
| Returns ids for nodes matching the path_queries. More...
bool | RemapDataSetIndices (const std::map< unsigned int, unsigned int > &mapping, bool remove_unmapped)
| Remap dataset indices. More...
void | SubsetCopy (vtkDataAssembly *other, const std::vector< int > &selected_branches)
| Create a deep-copy of other by only passing the chosen branches. More...
void | DeepCopy (vtkDataAssembly *other)
| Deep copy the `other`. More...
bool | InitializeFromXML (const char *xmlcontents)
| Initializes a data-assembly using an XML representation of the assembly. More...
std::string | SerializeToXML (vtkIndent indent) const
| Saves the data-assembly as a XML. More...
void | SetRootNodeName (const char *name)
| Get/Set root node name. More...
const char * | GetRootNodeName () const
| Get/Set root node name. More...
void | SetNodeName (int id, const char *name)
| Get/Set a node's name. More...
const char * | GetNodeName (int id) const
| Get/Set a node's name. More...
void | SetAttribute (int id, const char *name, const char *value)
| Set an attribute. More...
void | SetAttribute (int id, const char *name, int value)
| Set an attribute. More...
void | SetAttribute (int id, const char *name, unsigned int value)
| Set an attribute. More...
bool | GetAttribute (int id, const char *name, const char *&value) const
| Get an attribute value. More...
bool | GetAttribute (int id, const char *name, int &value) const
| Get an attribute value. More...
bool | GetAttribute (int id, const char *name, unsigned int &value) const
| Get an attribute value. More...
const char * | GetAttributeOrDefault (int id, const char *name, const char *default_value) const
| Get an attribute value. More...
int | GetAttributeOrDefault (int id, const char *name, int default_value) const
| Get an attribute value. More...
unsigned int | GetAttributeOrDefault (int id, const char *name, unsigned int default_value) const
| Get an attribute value. More...
void | Visit (vtkDataAssemblyVisitor *visitor, int traversal_order=vtkDataAssembly::TraversalOrder::DepthFirst) const
| Visit each node in the assembly for processing. More...
void | Visit (int id, vtkDataAssemblyVisitor *visitor, int traversal_order=vtkDataAssembly::TraversalOrder::DepthFirst) const
| Visit each node in the assembly for processing. More...
std::vector< unsigned int > | GetDataSetIndices (int id, bool traverse_subtree=true, int traversal_order=vtkDataAssembly::TraversalOrder::DepthFirst) const
| Returns the dataset indices associated with the node. More...
std::vector< unsigned int > | GetDataSetIndices (const std::vector< int > &ids, bool traverse_subtree=true, int traversal_order=vtkDataAssembly::TraversalOrder::DepthFirst) const
| Returns the dataset indices associated with the node. More...
Public Member Functions inherited from vtkObject
| vtkBaseTypeMacro (vtkObject, vtkObjectBase)
virtual void | DebugOn ()
| Turn debugging output on. More...
virtual void | DebugOff ()
| Turn debugging output off. More...
bool | GetDebug ()
| Get the value of the debug flag. More...
void | SetDebug (bool debugFlag)
| Set the value of the debug flag. More...
virtual void | Modified ()
| Update the modification time for this object. More...
virtual vtkMTimeType | GetMTime ()
| Return this object's modified time. More...
void | RemoveObserver (unsigned long tag)
void | RemoveObservers (unsigned long event)
void | RemoveObservers (const char *event)
void | RemoveAllObservers ()
vtkTypeBool | HasObserver (unsigned long event)
vtkTypeBool | HasObserver (const char *event)
vtkTypeBool | InvokeEvent (unsigned long event)
vtkTypeBool | InvokeEvent (const char *event)
std::string | GetObjectDescription () const override
| The object description printed in messages and PrintSelf output. More...
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
| Allow people to add/remove/invoke observers (callbacks) to any VTK object. More...
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f)
| Allow people to add/remove/invoke observers (callbacks) to any VTK object. More...
vtkCommand * | GetCommand (unsigned long tag)
| Allow people to add/remove/invoke observers (callbacks) to any VTK object. More...
void | RemoveObserver (vtkCommand *)
| Allow people to add/remove/invoke observers (callbacks) to any VTK object. More...
void | RemoveObservers (unsigned long event, vtkCommand *)
| Allow people to add/remove/invoke observers (callbacks) to any VTK object. More...
void | RemoveObservers (const char *event, vtkCommand *)
| Allow people to add/remove/invoke observers (callbacks) to any VTK object. More...
vtkTypeBool | HasObserver (unsigned long event, vtkCommand *)
| Allow people to add/remove/invoke observers (callbacks) to any VTK object. More...
vtkTypeBool | HasObserver (const char *event, vtkCommand *)
| Allow people to add/remove/invoke observers (callbacks) to any VTK object. More...
template<class U , class T >
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
| Overloads to AddObserver that allow developers to add class member functions as callbacks for events. More...
template<class U , class T >
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
| Overloads to AddObserver that allow developers to add class member functions as callbacks for events. More...
template<class U , class T >
unsigned long | AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
| Allow user to set the AbortFlagOn() with the return value of the callback method. More...
vtkTypeBool | InvokeEvent (unsigned long event, void *callData)
| This method invokes an event and return whether the event was aborted or not. More...
vtkTypeBool | InvokeEvent (const char *event, void *callData)
| This method invokes an event and return whether the event was aborted or not. More...
virtual void | SetObjectName (const std::string &objectName)
| Set/get the name of this object for reporting purposes. More...
virtual std::string | GetObjectName () const
| Set/get the name of this object for reporting purposes. More...
Public Member Functions inherited from vtkObjectBase
const char * | GetClassName () const
| Return the class name as a string. More...
virtual vtkIdType | GetNumberOfGenerationsFromBase (const char *name)
| Given the name of a base class of this class type, return the distance of inheritance between this class type and the named class (how many generations of inheritance are there between this class and the named class). More...
virtual void | Delete ()
| Delete a VTK object. More...
virtual void | FastDelete ()
| Delete a reference to this object. More...
void | InitializeObjectBase ()
void | Print (ostream &os)
| Print an object to an ostream. More...
virtual void | Register (vtkObjectBase *o)
| Increase the reference count (mark as used by another object). More...
virtual void | UnRegister (vtkObjectBase *o)
| Decrease the reference count (release by another object). More...
int | GetReferenceCount ()
| Return the current reference count of this object. More...
void | SetReferenceCount (int)
| Sets the reference count. More...
bool | GetIsInMemkind () const
| A local state flag that remembers whether this object lives in the normal or extended memory space. More...
virtual void | PrintHeader (ostream &os, vtkIndent indent)
| Methods invoked by print to print information about the object including superclasses. More...
virtual void | PrintTrailer (ostream &os, vtkIndent indent)
| Methods invoked by print to print information about the object including superclasses. More...
virtual bool | UsesGarbageCollector () const
| Indicate whether the class uses `vtkGarbageCollector` or not. More...

## Static Public Member Functions
static vtkDataAssembly * | New ()
static vtkTypeBool | IsTypeOf (const char *type)
static vtkDataAssembly * | SafeDownCast (vtkObjectBase *o)
static int | GetRootNode ()
| Returns the ID for the root node. More...
static bool | IsNodeNameValid (const char *name)
| Validates a node name. More...
static std::string | MakeValidNodeName (const char *name)
| Converts any string to a string that is a valid node name. More...
static bool | IsNodeNameReserved (const char *name)
| Returns true for node names that are reserved. More...
Static Public Member Functions inherited from vtkObject
static vtkObject * | New ()
| Create an object with Debug turned off, modified time initialized to zero, and reference counting on. More...
static void | BreakOnError ()
| This method is called when vtkErrorMacro executes. More...
static void | SetGlobalWarningDisplay (vtkTypeBool val)
| This is a global flag that controls whether any debug, warning or error messages are displayed. More...
static void | GlobalWarningDisplayOn ()
| This is a global flag that controls whether any debug, warning or error messages are displayed. More...
static void | GlobalWarningDisplayOff ()
| This is a global flag that controls whether any debug, warning or error messages are displayed. More...
static vtkTypeBool | GetGlobalWarningDisplay ()
| This is a global flag that controls whether any debug, warning or error messages are displayed. More...
Static Public Member Functions inherited from vtkObjectBase
static vtkTypeBool | IsTypeOf (const char *name)
| Return 1 if this class type is the same type of (or a subclass of) the named class. More...
static vtkIdType | GetNumberOfGenerationsFromBaseType (const char *name)
| Given a the name of a base class of this class type, return the distance of inheritance between this class type and the named class (how many generations of inheritance are there between this class and the named class). More...
static vtkObjectBase * | New ()
| Create an object with Debug turned off, modified time initialized to zero, and reference counting on. More...
static void | SetMemkindDirectory (const char *directoryname)
| The name of a directory, ideally mounted -o dax, to memory map an extended memory space within. More...
static bool | GetUsingMemkind ()
| A global state flag that controls whether vtkObjects are constructed in the usual way (the default) or within the extended memory space. More...

## Protected Member Functions
virtual vtkObjectBase * | NewInstanceInternal () const
| vtkDataAssembly ()
| ~vtkDataAssembly () override
Protected Member Functions inherited from vtkObject
| vtkObject ()
| ~vtkObject () override
void | RegisterInternal (vtkObjectBase *, vtkTypeBool check) override
void | UnRegisterInternal (vtkObjectBase *, vtkTypeBool check) override
void | InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
| These methods allow a command to exclusively grab all events. More...
void | InternalReleaseFocus ()
| These methods allow a command to exclusively grab all events. More...
Protected Member Functions inherited from vtkObjectBase
| vtkObjectBase ()
virtual | ~vtkObjectBase ()
virtual void | ReportReferences (vtkGarbageCollector *)
| vtkObjectBase (const vtkObjectBase &)
void | operator= (const vtkObjectBase &)

## Additional Inherited Members
Static Protected Member Functions inherited from vtkObjectBase
static vtkMallocingFunction | GetCurrentMallocFunction ()
static vtkReallocingFunction | GetCurrentReallocFunction ()
static vtkFreeingFunction | GetCurrentFreeFunction ()
static vtkFreeingFunction | GetAlternateFreeFunction ()
Protected Attributes inherited from vtkObject
bool | Debug
vtkTimeStamp | MTime
vtkSubjectHelper * | SubjectHelper
std::string | ObjectName
Protected Attributes inherited from vtkObjectBase
std::atomic< int32_t > | ReferenceCount
vtkWeakPointerBase ** | WeakPointers

## Detailed Description

hierarchical representation to use with vtkPartitionedDataSetCollection

vtkDataAssembly is a mechanism to represent hierarchical organization of items (or vtkPartitionedDataSet instances) in a vtkPartitionedDataSetCollection. vtkPartitionedDataSetCollection is similar to a vtkMultiBlockDataSet since it provides a means for putting together multiple non-composite datasets. However, vtkPartitionedDataSetCollection itself doesn't provide any mechanism to define relationships between items in the collections. That is done using vtkDataAssembly.

# Overview

At its core, vtkDataAssembly is simply a tree of nodes starting with the root node. Each node has a unique id and a string name (names need not be unique). On initialization with `vtkDataAssembly::Initialize`, an empty tree with a root node is created. The root node's id and name can be obtained using `vtkDataAssembly::GetRootNode` and `vtkDataAssembly::GetRootNodeName`. The root node's id is fixed (vtkDataAssembly::GetRootNode), however the name can be changed using `vtkDataAssembly::SetRootNodeName`.

Child nodes can be added using `vtkDataAssembly::AddNode` or `vtkDataAssembly::AddNodes`, each of which returns the ids for every child node added. A non-root node can be removed using `vtkDataAssembly::RemoveNode`.

Each node in the tree (including the root node) can have associated dataset indices. For a vtkDataAssembly associated with a vtkPartitionedDataSetCollection, these indices refer to the item index, or partitioned-dataset-index for items in the collection. Dataset indices can be specified using `vtkDataAssembly::AddDataSetIndex`, `vtkDataAssembly::AddDataSetIndices` and removed using `vtkDataAssembly::RemoveDataSetIndex`, `vtkDataAssembly::RemoveAllDataSetIndices`. `vtkDataAssembly::GetDataSetIndices` provides a mechanism to get the database indices associated with a node, and optionally, the entire subtree rooted at the chosen node.

# Searching

Each node in the vtkDataAssembly is assigned a unique id. `vtkDataAssembly::FindFirstNodeWithName` and `vtkDataAssembly::FindNodesWithName` can be used to get the id(s) for node(s) with given name.

`vtkDataAssembly::SelectNodes` provides a more flexible mechanism to find nodes using name-based queries. Section Supported Path Queries covers supported queries.

# Traversal

`vtkDataAssemblyVisitor` defines a visitor API. An instance of a concretized `vtkDataAssemblyVisitor` subclass can be passed to `vtkDataAssembly::Visit` to traverse the data-assembly hierarchy either in depth-first or breadth-first order.

# Supported Path Queries

`vtkDataAssembly::SelectNodes` can be used find nodes that match the specified query (or queries) using XPath 1.0 syntax.

For example:

- '/' is used as the path separator. If a node name has a `/` it must be escaped using `\\` in the query. Note, escaping is not necessary when using `SetNodeName`/`GetNodeName`.
- '/' selects the root node.
- '/nodename' selects all child nodes of the root with the name 'nodename'.
- '//nodename' selects all nodes with 'nodename' that are descendants of the root; thus, this this will traverse the entire tree.
- '/nodename/' selects all child nodes of all nodes named 'nodename' under the root; thus, ending a query with '/' selects the children of the found nodes rather than the nodes themselves.
- '/nodename1/nodename2' selects all nodes named 'nodename2' which are children of nodes with name 'nodename1' that are themselves children of the root node.
- '//nodename1/nodename2' finds all nodes in the tree named 'nodename1' and then selects all children of these found nodes that are named 'nodename2'.

# Applications

The separation of dataset storage (vtkPartitionedDataSetCollection) and organization (vtkDataAssembly) enables development of algorithms that can expose APIs that are not tightly coupled to dataset storage. Together, vtkPartitionedDataSetCollection and vtkDataAssembly can be thought of as a different way of organizing data that was previously organized as a vtkMultiBlockDataSet. The advantage of the this newer approach is that filters can support specifying parameters using paths or path queries rather than composite indices. The composite indices suffered from the fact that they made no sense except for the specific vtkMultiBlockDataSet they were applied too. Thus, if the filters input was changed, the composite ids rarely made any sense and needed to be updated. Paths and path queries, however, do not suffer from this issue.

Tests:
  vtkDataAssembly (Tests)

Definition at line 122 of file vtkDataAssembly.h.

## Member Typedef Documentation

## ◆ Superclass

typedef vtkObject vtkDataAssembly::Superclass

Definition at line 126 of file vtkDataAssembly.h.

## Member Enumeration Documentation

## ◆ TraversalOrder

enum vtkDataAssembly::TraversalOrder

Enumerator
DepthFirst |
BreadthFirst |

Definition at line 272 of file vtkDataAssembly.h.

## Constructor & Destructor Documentation

## ◆ vtkDataAssembly()

vtkDataAssembly::vtkDataAssembly | ( |  | ) |
| protected

## ◆ ~vtkDataAssembly()

vtkDataAssembly::~vtkDataAssembly | ( |  | ) |
| overrideprotected

## Member Function Documentation

## ◆ New()

static vtkDataAssembly* vtkDataAssembly::New | ( |  | ) |
| static

## ◆ IsTypeOf()

static vtkTypeBool vtkDataAssembly::IsTypeOf | ( | const char * | type | ) |
| static

## ◆ IsA()

virtual vtkTypeBool vtkDataAssembly::IsA | ( | const char * | name | ) |
| virtual

Return 1 if this class is the same type of (or a subclass of) the named class.

Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkObjectBase.

## ◆ SafeDownCast()

static vtkDataAssembly* vtkDataAssembly::SafeDownCast | ( | vtkObjectBase * | o | ) |
| static

## ◆ NewInstanceInternal()

virtual vtkObjectBase* vtkDataAssembly::NewInstanceInternal | ( |  | ) | const
| protectedvirtual

## ◆ NewInstance()

vtkDataAssembly* vtkDataAssembly::NewInstance | ( |  | ) | const

## ◆ PrintSelf()

void vtkDataAssembly::PrintSelf | ( | ostream & | os,
|  | vtkIndent | indent
| ) |  |
| overridevirtual

Methods invoked by print to print information about the object including superclasses.

Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkObject.

## ◆ Initialize()

void vtkDataAssembly::Initialize | ( |  | ) |

Initializes the data-assembly.

When a new vtkDataAssembly instance is created, it is in initialized form and it is not required to call this method to initialize it.

## ◆ InitializeFromXML()

bool vtkDataAssembly::InitializeFromXML | ( | const char * | xmlcontents | ) |

Initializes a data-assembly using an XML representation of the assembly.

Returns true if the initialization was successful, otherwise the assembly is set a clean state and returns false.

## ◆ SerializeToXML()

std::string vtkDataAssembly::SerializeToXML | ( | vtkIndent | indent | ) | const

Saves the data-assembly as a XML.

## ◆ GetRootNode()

static int vtkDataAssembly::GetRootNode | ( |  | ) |
| inlinestatic

Returns the ID for the root node.

This always returns 0.

Definition at line 156 of file vtkDataAssembly.h.

## ◆ SetRootNodeName()

void vtkDataAssembly::SetRootNodeName | ( | const char * | name | ) |
| inline

Get/Set root node name.

Defaults to DataAssembly.

Definition at line 162 of file vtkDataAssembly.h.

## ◆ GetRootNodeName()

const char* vtkDataAssembly::GetRootNodeName | ( |  | ) | const
| inline

Get/Set root node name.

Defaults to DataAssembly.

Definition at line 166 of file vtkDataAssembly.h.

## ◆ AddNode()

int vtkDataAssembly::AddNode | ( | const char * | name,
|  | int | parent = `0`
| ) |  |

Adds a node to the assembly with the given name and returns its id.

`parent` is the id for the parent node which defaults to the root node id (i.e. `GetRootNode`).

If `parent` is invalid, the add will fail.

Returns
  id of the newly added node on success, else -1.

## ◆ AddNodes()

std::vector<int> vtkDataAssembly::AddNodes | ( | const std::vector< std::string > & | names,
|  | int | parent = `0`
| ) |  |

Same as `AddNode` except allows adding multiple nodes in one go.

If `parent` is invalid, the add will fail.

Returns
  vectors of corresponding indices for each of the `names` added.

## ◆ AddSubtree()

int vtkDataAssembly::AddSubtree | ( | int | parent,
|  | vtkDataAssembly * | other,
|  | int | otherParent = `0`
| ) |  |

Add a subtree by copy the nodes from another tree starting with the specified parent index.

## ◆ RemoveNode()

bool vtkDataAssembly::RemoveNode | ( | int | id | ) |

Removes a node from the assembly.

The node identified by the id and all its children are removed.

Root node cannot be removed.

Returns
  true if removal was successful, false if the id is invalid or root node id.

## ◆ SetNodeName()

void vtkDataAssembly::SetNodeName | ( | int | id,
|  | const char * | name
| ) |  |

Get/Set a node's name.

If node id is invalid, `SetNodeName` will raise an error; `GetNodeName` will also raise an error and return nullptr.

`SetNodeName` will raise an error if the name is not valid. Name cannot be empty or nullptr.

## ◆ GetNodeName()

const char* vtkDataAssembly::GetNodeName | ( | int | id | ) | const

Get/Set a node's name.

If node id is invalid, `SetNodeName` will raise an error; `GetNodeName` will also raise an error and return nullptr.

`SetNodeName` will raise an error if the name is not valid. Name cannot be empty or nullptr.

## ◆ GetNodePath()

std::string vtkDataAssembly::GetNodePath | ( | int | id | ) | const

Returns the path for a node.

## ◆ GetFirstNodeByPath()

int vtkDataAssembly::GetFirstNodeByPath | ( | const char * | path | ) | const

Return a node id given the path.

Returns `-1` if path is not valid.

## ◆ AddDataSetIndex()

bool vtkDataAssembly::AddDataSetIndex | ( | int | id,
|  | unsigned int | dataset_index
| ) |  |

Add a dataset index to a node.

The node id can refer to any valid node in the assembly, including the root.

While the same dataset can be added multiple times in the assembly, it cannot be added multiple times to the same node. Additional adds will fail.

Returns
  true if addition succeeded else false.

## ◆ AddDataSetIndices()

bool vtkDataAssembly::AddDataSetIndices | ( | int | id,
|  | const std::vector< unsigned int > & | dataset_indices
| ) |  |

Same as `AddDataSetIndex` except supports adding multiple dataset indices in one go.

Note, a dataset index only gets added once.

Returns
  true if any dataset index was successfully added.

## ◆ AddDataSetIndexRange()

bool vtkDataAssembly::AddDataSetIndexRange | ( | int | id,
|  | unsigned int | index_start,
|  | int | count
| ) |  |

Same as `AddDataSetIndices` except this supports adding a contiguous range of dataset indices in one go.

@ returns true if any dataset index was successfully added.

## ◆ RemoveDataSetIndex()

bool vtkDataAssembly::RemoveDataSetIndex | ( | int | id,
|  | unsigned int | dataset_index
| ) |  |

Removes a dataset index from a node.

Returns
  true if the removal was successful, else returns false.

## ◆ RemoveAllDataSetIndices()

bool vtkDataAssembly::RemoveAllDataSetIndices | ( | int | id,
|  | bool | traverse_subtree = `true`
| ) |  |

Clears all dataset indices from the node.

If `traverse_subtree` is true (default), recursively removes all dataset indices from all the child nodes.

Returns
  true on success, else returns false.

## ◆ FindFirstNodeWithName()

int vtkDataAssembly::FindFirstNodeWithName | ( | const char * | name,
|  | int | traversal_order = `vtkDataAssembly::TraversalOrder::DepthFirst`
| ) |  | const

Finds first node that is encountered in a breadth first traversal of the assembly with the given name.

Returns
  the if of the node if found, else -1.

## ◆ FindNodesWithName()

std::vector<int> vtkDataAssembly::FindNodesWithName | ( | const char * | name,
|  | int | sort_order = `vtkDataAssembly::TraversalOrder::DepthFirst`
| ) |  | const

Finds all nodes with the given name.

The nodes can be ordered depth first or breadth first, based on the `sort_order` flag.

## ◆ GetChildNodes()

std::vector<int> vtkDataAssembly::GetChildNodes | ( | int | parent,
|  | bool | traverse_subtree = `true`,
|  | int | traversal_order = `vtkDataAssembly::TraversalOrder::DepthFirst`
| ) |  | const

Returns ids for all child nodes.

If `traverse_subtree` is true (default), recursively builds the child node list. The traversal order can be specified using `traversal_order` flag; defaults to depth-first.

See also
  vtkDataAssembly::Visit, vtkDataAssemblyVisitor

## ◆ GetNumberOfChildren()

int vtkDataAssembly::GetNumberOfChildren | ( | int | parent | ) | const

Returns the number of child nodes.

Returns
  the number of child nodes for the parent node or 0 if the parent is invalid.

## ◆ GetChild()

int vtkDataAssembly::GetChild | ( | int | parent,
|  | int | index
| ) |  | const

Returns the id for a child not at the given index, if valid, otherwise -1.

## ◆ GetChildIndex()

int vtkDataAssembly::GetChildIndex | ( | int | parent,
|  | int | child
| ) |  | const

Returns the index for a child under a given.

-1 if invalid.

## ◆ GetParent()

int vtkDataAssembly::GetParent | ( | int | id | ) | const

Returns the id for the parent node, if any.

Returns -1 if the node is invalid or has no parent (i.e. is the root node).

## ◆ HasAttribute()

bool vtkDataAssembly::HasAttribute | ( | int | id,
|  | const char * | name
| ) |  | const

Returns true if attribute with the given name is present on the chosen node.

## ◆ SetAttribute() [1/3]

void vtkDataAssembly::SetAttribute | ( | int | id,
|  | const char * | name,
|  | const char * | value
| ) |  |

Set an attribute.

Will replace an existing attribute with the same name if present.

## ◆ SetAttribute() [2/3]

void vtkDataAssembly::SetAttribute | ( | int | id,
|  | const char * | name,
|  | int | value
| ) |  |

Set an attribute.

Will replace an existing attribute with the same name if present.

## ◆ SetAttribute() [3/3]

void vtkDataAssembly::SetAttribute | ( | int | id,
|  | const char * | name,
|  | unsigned int | value
| ) |  |

Set an attribute.

Will replace an existing attribute with the same name if present.

## ◆ GetAttribute() [1/3]

bool vtkDataAssembly::GetAttribute | ( | int | id,
|  | const char * | name,
|  | const char *& | value
| ) |  | const

Get an attribute value.

Returns true if a value was provided else false.

## ◆ GetAttribute() [2/3]

bool vtkDataAssembly::GetAttribute | ( | int | id,
|  | const char * | name,
|  | int & | value
| ) |  | const

Get an attribute value.

Returns true if a value was provided else false.

## ◆ GetAttribute() [3/3]

bool vtkDataAssembly::GetAttribute | ( | int | id,
|  | const char * | name,
|  | unsigned int & | value
| ) |  | const

Get an attribute value.

Returns true if a value was provided else false.

## ◆ GetAttributeOrDefault() [1/3]

const char* vtkDataAssembly::GetAttributeOrDefault | ( | int | id,
|  | const char * | name,
|  | const char * | default_value
| ) |  | const

Get an attribute value.

Returns the value associated with the node or the provided default value.

## ◆ GetAttributeOrDefault() [2/3]

int vtkDataAssembly::GetAttributeOrDefault | ( | int | id,
|  | const char * | name,
|  | int | default_value
| ) |  | const

Get an attribute value.

Returns the value associated with the node or the provided default value.

## ◆ GetAttributeOrDefault() [3/3]

unsigned int vtkDataAssembly::GetAttributeOrDefault | ( | int | id,
|  | const char * | name,
|  | unsigned int | default_value
| ) |  | const

Get an attribute value.

Returns the value associated with the node or the provided default value.

## ◆ Visit() [1/2]

void vtkDataAssembly::Visit | ( | vtkDataAssemblyVisitor * | visitor,
|  | int | traversal_order = `vtkDataAssembly::TraversalOrder::DepthFirst`
| ) |  | const
| inline

Visit each node in the assembly for processing.

The traversal order can be specified using `traversal_order` which defaults to depth-first.

Definition at line 380 of file vtkDataAssembly.h.

## ◆ Visit() [2/2]

void vtkDataAssembly::Visit | ( | int | id,
|  | vtkDataAssemblyVisitor * | visitor,
|  | int | traversal_order = `vtkDataAssembly::TraversalOrder::DepthFirst`
| ) |  | const

Visit each node in the assembly for processing.

The traversal order can be specified using `traversal_order` which defaults to depth-first.

## ◆ GetDataSetIndices() [1/2]

std::vector<unsigned int> vtkDataAssembly::GetDataSetIndices | ( | int | id,
|  | bool | traverse_subtree = `true`,
|  | int | traversal_order = `vtkDataAssembly::TraversalOrder::DepthFirst`
| ) |  | const

Returns the dataset indices associated with the node.

If `traverse_subtree` is true (default), recursively builds the dataset indices list for the node and all its child nodes. Note, a dataset index will only appear once in the output even if it is encountered on multiple nodes in the subtree.

When `traverse_subtree` is true, the traversal order can be specified using `traversal_order`. Defaults to depth-first.

## ◆ GetDataSetIndices() [2/2]

std::vector<unsigned int> vtkDataAssembly::GetDataSetIndices | ( | const std::vector< int > & | ids,
|  | bool | traverse_subtree = `true`,
|  | int | traversal_order = `vtkDataAssembly::TraversalOrder::DepthFirst`
| ) |  | const

Returns the dataset indices associated with the node.

If `traverse_subtree` is true (default), recursively builds the dataset indices list for the node and all its child nodes. Note, a dataset index will only appear once in the output even if it is encountered on multiple nodes in the subtree.

When `traverse_subtree` is true, the traversal order can be specified using `traversal_order`. Defaults to depth-first.

## ◆ SelectNodes()

std::vector<int> vtkDataAssembly::SelectNodes | ( | const std::vector< std::string > & | path_queries,
|  | int | traversal_order = `vtkDataAssembly::TraversalOrder::DepthFirst`
| ) |  | const

Returns ids for nodes matching the path_queries.

See Section Supported Path Queries for supported query expressions.

Will return an empty vector is no nodes match the requested query.

Returns
  node ids matching the query in traversal order chosen using `traversal_order`.

## ◆ RemapDataSetIndices()

bool vtkDataAssembly::RemapDataSetIndices | ( | const std::map< unsigned int, unsigned int > & | mapping,
|  | bool | remove_unmapped
| ) |  |

Remap dataset indices.

`mapping` is map where the key is the old index and value is the new index. If `remove_unmapped` is true, then any dataset not in the map will be removed.

## ◆ SubsetCopy()

void vtkDataAssembly::SubsetCopy | ( | vtkDataAssembly * | other,
|  | const std::vector< int > & | selected_branches
| ) |  |

Create a deep-copy of other by only passing the chosen branches.

All other branches of the tree will be pruned. Note this method never affects the depth of the selected branches or dataset indices attached to any of the nodes in pruned output.

## ◆ DeepCopy()

void vtkDataAssembly::DeepCopy | ( | vtkDataAssembly * | other | ) |

Deep copy the `other`.

## ◆ IsNodeNameValid()

static bool vtkDataAssembly::IsNodeNameValid | ( | const char * | name | ) |
| static

Validates a node name.

## ◆ MakeValidNodeName()

static std::string vtkDataAssembly::MakeValidNodeName | ( | const char * | name | ) |
| static

Converts any string to a string that is a valid node name.

This is done by simply discarding any non-supported character. Additionally, if the first character is not a "_" or an alphabet, then the "_" is prepended.

## ◆ IsNodeNameReserved()

static bool vtkDataAssembly::IsNodeNameReserved | ( | const char * | name | ) |
| static

Returns true for node names that are reserved.

The documentation for this class was generated from the following file:

- Common/DataModel/vtkDataAssembly.h