14#ifndef NODEPATHCOMPONENT_H
15#define NODEPATHCOMPONENT_H
42class EXPCL_PANDA_PGRAPH NodePathComponent final :
public ReferenceCount {
44 NodePathComponent(PandaNode *node, NodePathComponent *next,
45 int pipeline_stage,
Thread *current_thread);
48 NodePathComponent(
const NodePathComponent ©) =
delete;
49 INLINE ~NodePathComponent();
51 ALLOC_DELETED_CHAIN(NodePathComponent);
53 NodePathComponent &operator = (
const NodePathComponent ©) =
delete;
60 INLINE NodePathComponent *
get_next(
int pipeline_stage,
Thread *current_thread)
const;
65 void output(std::ostream &out)
const;
68 void set_next(NodePathComponent *next,
int pipeline_stage,
Thread *current_thread);
69 void set_top_node(
int pipeline_stage,
Thread *current_thread);
78 class EXPCL_PANDA_PGRAPH CData :
public CycleData {
81 CData(
const CData ©);
82 ALLOC_DELETED_CHAIN(CData);
85 return NodePathComponent::get_class_type();
88 PT(NodePathComponent) _next;
95 static void init_type() {
110 static int _next_key;
117 static void init_type() {
118 ReferenceCount::init_type();
120 ReferenceCount::get_class_type());
126 friend class PandaNode;
127 friend class NodePath;
132INLINE
void PointerToBase<NodePathComponent>::update_type(
To *ptr) {}
134INLINE std::ostream &operator << (std::ostream &out,
const NodePathComponent &comp);
This class is similar to CycleDataLockedReader, except it allows reading from a particular stage of t...
This template class calls PipelineCycler::read_unlocked(), and then provides a transparent read-only ...
This class is similar to CycleDataReader, except it allows reading from a particular stage of the pip...
This class is similar to CycleDataWriter, except it allows writing to a particular stage of the pipel...
This template class calls PipelineCycler::write() in the constructor and PipelineCycler::release_writ...
A single page of data maintained by a PipelineCycler.
This is a standard, non-reentrant mutex, similar to the Mutex class.
This is one component of a NodePath.
PandaNode * get_node() const
Returns the node referenced by this component.
bool fix_length(int pipeline_stage, Thread *current_thread)
Checks that the length indicated by the component is one more than the length of its predecessor.
bool is_top_node(int pipeline_stage, Thread *current_thread) const
Returns true if this component represents the top node in the path.
int get_key() const
Returns an index number that is guaranteed to be unique for this particular NodePathComponent,...
bool has_key() const
Returns true if the key for this component has already been generated, false otherwise.
NodePathComponent * get_next(int pipeline_stage, Thread *current_thread) const
Returns the next component in the path.
int get_length(int pipeline_stage, Thread *current_thread) const
Returns the length of the path to this node.
void output(std::ostream &out) const
The recursive implementation of NodePath::output(), this writes the names of each node component in o...
A thread; that is, a lightweight process.
TypeHandle is the identifier used to differentiate C++ class types.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
This class maintains different copies of a page of data between stages of the graphics pipeline (or a...