C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
exprtk::expression< T >::control_block Struct Reference
Collaboration diagram for exprtk::expression< T >::control_block:
[legend]

Classes

struct  data_pack
 

Public Types

enum  data_type {
  e_unknown , e_expr , e_vecholder , e_data ,
  e_vecdata , e_string
}
 
typedef std::vector< data_packlocal_data_list_t
 
typedef results_context< T > results_context_t
 
typedef control_blockcntrl_blck_ptr_t
 

Public Member Functions

 control_block ()
 
 control_block (expression_ptr e)
 
 ~control_block ()
 

Static Public Member Functions

static std::string to_str (data_type dt)
 
static cntrl_blck_ptr_t create (expression_ptr e)
 
static void destroy (cntrl_blck_ptr_t &cntrl_blck)
 

Public Attributes

std::size_t ref_count
 
expression_ptr expr
 
local_data_list_t local_data_list
 
results_context_tresults
 
bool retinv_null
 
bool * return_invoked
 

Friends

class function_compositor< T >
 

Detailed Description

template<typename T>
struct exprtk::expression< T >::control_block

Definition at line 21759 of file exprtk.hpp.

Member Typedef Documentation

◆ cntrl_blck_ptr_t

template<typename T >
typedef control_block* exprtk::expression< T >::control_block::cntrl_blck_ptr_t

Definition at line 21807 of file exprtk.hpp.

◆ local_data_list_t

template<typename T >
typedef std::vector<data_pack> exprtk::expression< T >::control_block::local_data_list_t

Definition at line 21805 of file exprtk.hpp.

◆ results_context_t

template<typename T >
typedef results_context<T> exprtk::expression< T >::control_block::results_context_t

Definition at line 21806 of file exprtk.hpp.

Member Enumeration Documentation

◆ data_type

Enumerator
e_unknown 
e_expr 
e_vecholder 
e_data 
e_vecdata 
e_string 

Definition at line 21761 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ control_block() [1/2]

template<typename T >
exprtk::expression< T >::control_block::control_block ( )
inline

Definition at line 21809 of file exprtk.hpp.

21810 : ref_count(0)
21811 , expr (0)
21812 , results (0)
21813 , retinv_null(false)
21815 {}

Referenced by exprtk::expression< T >::control_block::create().

Here is the caller graph for this function:

◆ control_block() [2/2]

template<typename T >
exprtk::expression< T >::control_block::control_block ( expression_ptr  e)
inlineexplicit

Definition at line 21817 of file exprtk.hpp.

21818 : ref_count(1)
21819 , expr (e)
21820 , results (0)
21821 , retinv_null(false)
21823 {}

◆ ~control_block()

template<typename T >
exprtk::expression< T >::control_block::~control_block ( )
inline

Definition at line 21825 of file exprtk.hpp.

21826 {
21828 {
21830 }
21831
21832 if (!local_data_list.empty())
21833 {
21834 for (std::size_t i = 0; i < local_data_list.size(); ++i)
21835 {
21836 switch (local_data_list[i].type)
21837 {
21838 case e_expr : delete reinterpret_cast<expression_ptr>(local_data_list[i].pointer);
21839 break;
21840
21841 case e_vecholder : delete reinterpret_cast<vector_holder_ptr>(local_data_list[i].pointer);
21842 break;
21843
21844 case e_data : delete reinterpret_cast<T*>(local_data_list[i].pointer);
21845 break;
21846
21847 case e_vecdata : delete [] reinterpret_cast<T*>(local_data_list[i].pointer);
21848 break;
21849
21850 case e_string : delete reinterpret_cast<std::string*>(local_data_list[i].pointer);
21851 break;
21852
21853 default : break;
21854 }
21855 }
21856 }
21857
21858 if (results)
21859 {
21860 delete results;
21861 }
21862 }
details::vector_holder< T > * vector_holder_ptr
Definition exprtk.hpp:21756
details::expression_node< T > * expression_ptr
Definition exprtk.hpp:21755
bool branch_deletable(const expression_node< T > *node)
Definition exprtk.hpp:5997
void destroy_node(expression_node< T > *&node)
Definition exprtk.hpp:6164
local_data_list_t local_data_list
Definition exprtk.hpp:21887

References exprtk::details::branch_deletable(), exprtk::expression< T >::control_block::e_data, exprtk::expression< T >::control_block::e_expr, exprtk::expression< T >::control_block::e_string, exprtk::expression< T >::control_block::e_vecdata, exprtk::expression< T >::control_block::e_vecholder, exprtk::expression< T >::control_block::expr, exprtk::expression< T >::control_block::local_data_list, and exprtk::expression< T >::control_block::results.

Here is the call graph for this function:

Member Function Documentation

◆ create()

template<typename T >
static cntrl_blck_ptr_t exprtk::expression< T >::control_block::create ( expression_ptr  e)
inlinestatic

Definition at line 21864 of file exprtk.hpp.

21865 {
21866 return new control_block(e);
21867 }

References exprtk::expression< T >::control_block::control_block().

Referenced by exprtk::expression< T >::set_expression().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ destroy()

template<typename T >
static void exprtk::expression< T >::control_block::destroy ( cntrl_blck_ptr_t cntrl_blck)
inlinestatic

Definition at line 21869 of file exprtk.hpp.

21870 {
21871 if (cntrl_blck)
21872 {
21873 if (
21874 (0 != cntrl_blck->ref_count) &&
21875 (0 == --cntrl_blck->ref_count)
21876 )
21877 {
21878 delete cntrl_blck;
21879 }
21880
21881 cntrl_blck = 0;
21882 }
21883 }

References exprtk::expression< T >::control_block::ref_count.

Referenced by exprtk::expression< T >::release(), and exprtk::expression< T >::~expression().

Here is the caller graph for this function:

◆ to_str()

template<typename T >
static std::string exprtk::expression< T >::control_block::to_str ( data_type  dt)
inlinestatic

Definition at line 21771 of file exprtk.hpp.

21772 {
21773 switch (dt)
21774 {
21775 case e_unknown : return "e_unknown ";
21776 case e_expr : return "e_expr" ;
21777 case e_vecholder : return "e_vecholder";
21778 case e_data : return "e_data" ;
21779 case e_vecdata : return "e_vecdata" ;
21780 case e_string : return "e_string" ;
21781 }
21782
21783 return "";
21784 }

References exprtk::expression< T >::control_block::e_data, exprtk::expression< T >::control_block::e_expr, exprtk::expression< T >::control_block::e_string, exprtk::expression< T >::control_block::e_unknown, exprtk::expression< T >::control_block::e_vecdata, and exprtk::expression< T >::control_block::e_vecholder.

Friends And Related Symbol Documentation

◆ function_compositor< T >

template<typename T >
friend class function_compositor< T >
friend

Definition at line 21890 of file exprtk.hpp.

Member Data Documentation

◆ expr

template<typename T >
expression_ptr exprtk::expression< T >::control_block::expr

◆ local_data_list

template<typename T >
local_data_list_t exprtk::expression< T >::control_block::local_data_list

◆ ref_count

template<typename T >
std::size_t exprtk::expression< T >::control_block::ref_count

◆ results

template<typename T >
results_context_t* exprtk::expression< T >::control_block::results

◆ retinv_null

template<typename T >
bool exprtk::expression< T >::control_block::retinv_null

Definition at line 21889 of file exprtk.hpp.

◆ return_invoked

template<typename T >
bool* exprtk::expression< T >::control_block::return_invoked

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