C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
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_pack > local_data_list_t
typedef results_context< T > results_context_t
typedef control_block * cntrl_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_t * results
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 21839 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 21887 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 21885 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 21886 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 21841 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 21889 of file exprtk.hpp.

21890 : ref_count(0)
21891 , expr (0)
21892 , results (0)
21893 , retinv_null(false)
21895 {}

References expr, ref_count, results, retinv_null, and return_invoked.

Referenced by 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 21897 of file exprtk.hpp.

21898 : ref_count(1)
21899 , expr (e)
21900 , results (0)
21901 , retinv_null(false)
21903 {}

References expr, ref_count, results, retinv_null, and return_invoked.

◆ ~control_block()

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

Definition at line 21905 of file exprtk.hpp.

21906 {
21908 {
21910 }
21911
21912 if (!local_data_list.empty())
21913 {
21914 for (std::size_t i = 0; i < local_data_list.size(); ++i)
21915 {
21916 switch (local_data_list[i].type)
21917 {
21918 case e_expr : delete reinterpret_cast<expression_ptr>(local_data_list[i].pointer);
21919 break;
21920
21921 case e_vecholder : delete reinterpret_cast<vector_holder_ptr>(local_data_list[i].pointer);
21922 break;
21923
21924 case e_data : delete reinterpret_cast<T*>(local_data_list[i].pointer);
21925 break;
21926
21927 case e_vecdata : delete [] reinterpret_cast<T*>(local_data_list[i].pointer);
21928 break;
21929
21930 case e_string : delete reinterpret_cast<std::string*>(local_data_list[i].pointer);
21931 break;
21932
21933 default : break;
21934 }
21935 }
21936 }
21937
21938 if (results)
21939 {
21940 delete results;
21941 }
21942 }
local_data_list_t local_data_list
Definition exprtk.hpp:21967

References exprtk::details::branch_deletable(), e_data, e_expr, e_string, e_vecdata, e_vecholder, expr, local_data_list, and results.

Here is the call graph for this function:

Member Function Documentation

◆ create()

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

Definition at line 21944 of file exprtk.hpp.

21945 {
21946 return new control_block(e);
21947 }

References control_block().

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

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

◆ destroy()

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

Definition at line 21949 of file exprtk.hpp.

21950 {
21951 if (cntrl_blck)
21952 {
21953 if (
21954 (0 != cntrl_blck->ref_count) &&
21955 (0 == --cntrl_blck->ref_count)
21956 )
21957 {
21958 delete cntrl_blck;
21959 }
21960
21961 cntrl_blck = 0;
21962 }
21963 }

References ref_count.

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

Here is the caller graph for this function:

◆ to_str()

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

Definition at line 21851 of file exprtk.hpp.

21852 {
21853 switch (dt)
21854 {
21855 case e_unknown : return "e_unknown ";
21856 case e_expr : return "e_expr" ;
21857 case e_vecholder : return "e_vecholder";
21858 case e_data : return "e_data" ;
21859 case e_vecdata : return "e_vecdata" ;
21860 case e_string : return "e_string" ;
21861 }
21862
21863 return "";
21864 }

References e_data, e_expr, e_string, e_unknown, e_vecdata, and e_vecholder.

◆ function_compositor< T >

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

Definition at line 21970 of file exprtk.hpp.

References return_invoked.

Member Data Documentation

◆ expr

◆ local_data_list

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

Definition at line 21967 of file exprtk.hpp.

Referenced by ~control_block().

◆ ref_count

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

Definition at line 21965 of file exprtk.hpp.

Referenced by control_block(), control_block(), and destroy().

◆ results

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

Definition at line 21968 of file exprtk.hpp.

Referenced by control_block(), control_block(), and ~control_block().

◆ retinv_null

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

Definition at line 21969 of file exprtk.hpp.

Referenced by control_block(), and control_block().

◆ return_invoked

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

Definition at line 21970 of file exprtk.hpp.

Referenced by control_block(), control_block(), and function_compositor< T >.


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