C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
exprtk::details::node_collection_destructor< Node > Class Template Reference

#include <exprtk.hpp>

Public Types

typedef node_collector_interface< Node > nci_t
typedef nci_t::node_ptr_t node_ptr_t
typedef nci_t::node_pp_t node_pp_t
typedef nci_t::noderef_list_t noderef_list_t

Static Public Member Functions

static void delete_nodes (node_ptr_t &root)

Static Private Member Functions

static void collect_nodes (node_ptr_t &root, noderef_list_t &node_delete_list)

Detailed Description

template<typename Node>
class exprtk::details::node_collection_destructor< Node >

Definition at line 6080 of file exprtk.hpp.

Member Typedef Documentation

◆ nci_t

template<typename Node>
typedef node_collector_interface<Node> exprtk::details::node_collection_destructor< Node >::nci_t

Definition at line 6084 of file exprtk.hpp.

◆ node_pp_t

template<typename Node>
typedef nci_t::node_pp_t exprtk::details::node_collection_destructor< Node >::node_pp_t

Definition at line 6087 of file exprtk.hpp.

◆ node_ptr_t

template<typename Node>
typedef nci_t::node_ptr_t exprtk::details::node_collection_destructor< Node >::node_ptr_t

Definition at line 6086 of file exprtk.hpp.

◆ noderef_list_t

template<typename Node>
typedef nci_t::noderef_list_t exprtk::details::node_collection_destructor< Node >::noderef_list_t

Definition at line 6088 of file exprtk.hpp.

Member Function Documentation

◆ collect_nodes()

template<typename Node>
void exprtk::details::node_collection_destructor< Node >::collect_nodes ( node_ptr_t & root,
noderef_list_t & node_delete_list )
inlinestaticprivate

Definition at line 6108 of file exprtk.hpp.

6109 {
6111 node_list.push_back(root);
6112 node_delete_list.push_back(&root);
6113
6115 child_node_delete_list.reserve(1000);
6116
6117 while (!node_list.empty())
6118 {
6120
6121 if (!child_node_delete_list.empty())
6122 {
6123 for (std::size_t i = 0; i < child_node_delete_list.size(); ++i)
6124 {
6126
6127 if (0 == (*node))
6128 {
6129 exprtk_debug(("ncd::collect_nodes() - null node encountered.\n"));
6130 }
6131
6132 node_list.push_back(*node);
6133 }
6134
6135 node_delete_list.insert(
6136 node_delete_list.end(),
6138
6139 child_node_delete_list.clear();
6140 }
6141
6142 node_list.pop_front();
6143 }
6144
6146 }
static void collect_nodes(node_ptr_t &root, noderef_list_t &node_delete_list)
Definition exprtk.hpp:6108
#define exprtk_debug(params)
Definition exprtk.hpp:64

References exprtk_debug.

Referenced by delete_nodes().

Here is the caller graph for this function:

◆ delete_nodes()

template<typename Node>
void exprtk::details::node_collection_destructor< Node >::delete_nodes ( node_ptr_t & root)
inlinestatic

Definition at line 6090 of file exprtk.hpp.

6091 {
6093 node_delete_list.reserve(1000);
6094
6096
6097 for (std::size_t i = 0; i < node_delete_list.size(); ++i)
6098 {
6100 exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node)));
6101 delete node;
6102 node = reinterpret_cast<node_ptr_t>(0);
6103 }
6104 }

References collect_nodes(), and exprtk_debug.

Here is the call graph for this function:

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