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 21494 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 21542 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 21540 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 21541 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 21496 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 21544 of file exprtk.hpp.

21545 : ref_count(0)
21546 , expr (0)
21547 , results (0)
21548 , retinv_null(false)
21550 {}

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 21552 of file exprtk.hpp.

21553 : ref_count(1)
21554 , expr (e)
21555 , results (0)
21556 , retinv_null(false)
21558 {}

◆ ~control_block()

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

Definition at line 21560 of file exprtk.hpp.

21561 {
21563 {
21565 }
21566
21567 if (!local_data_list.empty())
21568 {
21569 for (std::size_t i = 0; i < local_data_list.size(); ++i)
21570 {
21571 switch (local_data_list[i].type)
21572 {
21573 case e_expr : delete reinterpret_cast<expression_ptr>(local_data_list[i].pointer);
21574 break;
21575
21576 case e_vecholder : delete reinterpret_cast<vector_holder_ptr>(local_data_list[i].pointer);
21577 break;
21578
21579 case e_data : delete reinterpret_cast<T*>(local_data_list[i].pointer);
21580 break;
21581
21582 case e_vecdata : delete [] reinterpret_cast<T*>(local_data_list[i].pointer);
21583 break;
21584
21585 case e_string : delete reinterpret_cast<std::string*>(local_data_list[i].pointer);
21586 break;
21587
21588 default : break;
21589 }
21590 }
21591 }
21592
21593 if (results)
21594 {
21595 delete results;
21596 }
21597 }
details::vector_holder< T > * vector_holder_ptr
Definition exprtk.hpp:21491
details::expression_node< T > * expression_ptr
Definition exprtk.hpp:21490
bool branch_deletable(const expression_node< T > *node)
Definition exprtk.hpp:5852
void destroy_node(expression_node< T > *&node)
Definition exprtk.hpp:6019
local_data_list_t local_data_list
Definition exprtk.hpp:21622

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 21599 of file exprtk.hpp.

21600 {
21601 return new control_block(e);
21602 }

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 21604 of file exprtk.hpp.

21605 {
21606 if (cntrl_blck)
21607 {
21608 if (
21609 (0 != cntrl_blck->ref_count) &&
21610 (0 == --cntrl_blck->ref_count)
21611 )
21612 {
21613 delete cntrl_blck;
21614 }
21615
21616 cntrl_blck = 0;
21617 }
21618 }

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 21506 of file exprtk.hpp.

21507 {
21508 switch(dt)
21509 {
21510 case e_unknown : return "e_unknown ";
21511 case e_expr : return "e_expr" ;
21512 case e_vecholder : return "e_vecholder";
21513 case e_data : return "e_data" ;
21514 case e_vecdata : return "e_vecdata" ;
21515 case e_string : return "e_string" ;
21516 }
21517
21518 return "";
21519 }

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 21625 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 21624 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: