Blender  V3.3
Classes | Namespaces | Typedefs | Functions
NOD_node_tree_ref.hh File Reference
#include "BLI_array.hh"
#include "BLI_function_ref.hh"
#include "BLI_linear_allocator.hh"
#include "BLI_map.hh"
#include "BLI_multi_value_map.hh"
#include "BLI_string_ref.hh"
#include "BLI_timeit.hh"
#include "BLI_utility_mixins.hh"
#include "BLI_vector.hh"
#include "BKE_node.h"
#include "BKE_node_runtime.hh"
#include "DNA_node_types.h"
#include "RNA_access.h"

Go to the source code of this file.

Classes

class  blender::nodes::SocketRef
 
class  blender::nodes::InputSocketRef
 
class  blender::nodes::OutputSocketRef
 
class  blender::nodes::NodeRef
 
class  blender::nodes::LinkRef
 
class  blender::nodes::InternalLinkRef
 
class  blender::nodes::NodeTreeRef
 
struct  blender::nodes::NodeTreeRef::ToposortResult
 

Namespaces

 blender
 
 blender::nodes
 
 blender::nodes::node_tree_ref_types
 

Typedefs

using blender::nodes::SocketIndexByIdentifierMap = Map< std::string, int >
 
using blender::nodes::NodeTreeRefMap = Map< bNodeTree *, std::unique_ptr< const NodeTreeRef > >
 

Functions

const NodeTreeRef & blender::nodes::get_tree_ref_from_map (NodeTreeRefMap &node_tree_refs, bNodeTree &btree)
 

Detailed Description

NodeTreeRef makes querying information about a bNodeTree more efficient. It is an immutable data structure. It should not be used after anymore, after the underlying node tree changed.

The following queries are supported efficiently:

Every socket has an id. The id-space is shared between input and output sockets. When storing data per socket, it is often better to use the id as index into an array, instead of a hash table.

Every node has an id as well. The same rule regarding hash tables applies.

There is an utility to export this data structure as graph in dot format.

Definition in file NOD_node_tree_ref.hh.