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

#include <exprtk.hpp>

Collaboration diagram for exprtk::expression< T >:
[legend]

Classes

struct  control_block

Public Types

typedef results_context< T > results_context_t

Public Member Functions

 expression ()
 expression (const expression< T > &e)
 expression (const symbol_table< T > &symbol_table)
expression< T > & operator= (const expression< T > &e)
bool operator== (const expression< T > &e) const
bool operator! () const
expression< T > & release ()
 ~expression ()
value () const
operator() () const
 operator T () const
 operator bool () const
bool register_symbol_table (symbol_table< T > &st)
const symbol_table< T > & get_symbol_table (const std::size_t &index=0) const
symbol_table< T > & get_symbol_table (const std::size_t &index=0)
std::size_t num_symbol_tables () const
const results_context_tresults () const
bool return_invoked () const

Private Types

typedef details::expression_node< T > * expression_ptr
typedef details::vector_holder< T > * vector_holder_ptr
typedef std::vector< symbol_table< T > > symtab_list_t

Private Member Functions

symtab_list_t get_symbol_table_list () const
void set_expression (const expression_ptr expr)
void register_local_var (expression_ptr expr)
void register_local_var (vector_holder_ptr vec_holder)
void register_local_data (void *data, const std::size_t &size=0, const std::size_t data_mode=0)
const control_block::local_data_list_tlocal_data_list ()
void register_return_results (results_context_t *rc)
void set_retinvk (bool *retinvk_ptr)

Private Attributes

control_blockcontrol_block_
symtab_list_t symbol_table_list_

Friends

class parser< T >
class expression_helper< T >
class function_compositor< T >
template<typename TT>
bool is_valid (const expression< TT > &expr)

Detailed Description

template<typename T>
class exprtk::expression< T >

Definition at line 21831 of file exprtk.hpp.

Member Typedef Documentation

◆ expression_ptr

template<typename T>
typedef details::expression_node<T>* exprtk::expression< T >::expression_ptr
private

Definition at line 21835 of file exprtk.hpp.

◆ results_context_t

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

Definition at line 22100 of file exprtk.hpp.

◆ symtab_list_t

template<typename T>
typedef std::vector<symbol_table<T> > exprtk::expression< T >::symtab_list_t
private

Definition at line 21837 of file exprtk.hpp.

◆ vector_holder_ptr

template<typename T>
typedef details::vector_holder<T>* exprtk::expression< T >::vector_holder_ptr
private

Definition at line 21836 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ expression() [1/3]

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

Definition at line 21977 of file exprtk.hpp.

21978 : control_block_(0)
21979 {
21981 }
void set_expression(const expression_ptr expr)
Definition exprtk.hpp:22129
control_block * control_block_
Definition exprtk.hpp:22227

◆ expression() [2/3]

template<typename T>
exprtk::expression< T >::expression ( const expression< T > & e)
inline

Definition at line 21983 of file exprtk.hpp.

21986 {
21987 control_block_->ref_count++;
21988 }
symtab_list_t symbol_table_list_
Definition exprtk.hpp:22228

◆ expression() [3/3]

template<typename T>
exprtk::expression< T >::expression ( const symbol_table< T > & symbol_table)
inlineexplicit

Definition at line 21990 of file exprtk.hpp.

21991 : control_block_(0)
21992 {
21995 }

◆ ~expression()

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

Definition at line 22043 of file exprtk.hpp.

22044 {
22046 }
static void destroy(cntrl_blck_ptr_t &cntrl_blck)
Definition exprtk.hpp:21949

Member Function Documentation

◆ get_symbol_table() [1/2]

template<typename T>
symbol_table< T > & exprtk::expression< T >::get_symbol_table ( const std::size_t & index = 0)
inline

Definition at line 22090 of file exprtk.hpp.

22091 {
22092 return symbol_table_list_[index];
22093 }

◆ get_symbol_table() [2/2]

template<typename T>
const symbol_table< T > & exprtk::expression< T >::get_symbol_table ( const std::size_t & index = 0) const
inline

Definition at line 22085 of file exprtk.hpp.

22086 {
22087 return symbol_table_list_[index];
22088 }

◆ get_symbol_table_list()

template<typename T>
symtab_list_t exprtk::expression< T >::get_symbol_table_list ( ) const
inlineprivate

Definition at line 22124 of file exprtk.hpp.

22125 {
22126 return symbol_table_list_;
22127 }

Referenced by exprtk::parser< Type >::compile().

Here is the caller graph for this function:

◆ local_data_list()

template<typename T>
const control_block::local_data_list_t & exprtk::expression< T >::local_data_list ( )
inlineprivate

Definition at line 22198 of file exprtk.hpp.

22199 {
22200 if (control_block_)
22201 {
22202 return control_block_->local_data_list;
22203 }
22204 else
22205 {
22207 return null_local_data_list;
22208 }
22209 }
std::vector< data_pack > local_data_list_t
Definition exprtk.hpp:21885

Referenced by exprtk::function_compositor< T >::base_func::setup().

Here is the caller graph for this function:

◆ num_symbol_tables()

template<typename T>
std::size_t exprtk::expression< T >::num_symbol_tables ( ) const
inline

Definition at line 22095 of file exprtk.hpp.

22096 {
22097 return symbol_table_list_.size();
22098 }

◆ operator bool()

template<typename T>
exprtk::expression< T >::operator bool ( ) const
inline

Definition at line 22066 of file exprtk.hpp.

22067 {
22068 return details::is_true(value());
22069 }
bool is_true(const double v)
Definition exprtk.hpp:5763

◆ operator T()

template<typename T>
exprtk::expression< T >::operator T ( ) const
inline

Definition at line 22061 of file exprtk.hpp.

22062 {
22063 return value();
22064 }

◆ operator!()

template<typename T>
bool exprtk::expression< T >::operator! ( ) const
inline

Definition at line 22027 of file exprtk.hpp.

22028 {
22029 return (
22030 (0 == control_block_ ) ||
22031 (0 == control_block_->expr)
22032 );
22033 }

◆ operator()()

template<typename T>
T exprtk::expression< T >::operator() ( ) const
inline

Definition at line 22056 of file exprtk.hpp.

22057 {
22058 return value();
22059 }

◆ operator=()

template<typename T>
expression< T > & exprtk::expression< T >::operator= ( const expression< T > & e)
inline

Definition at line 21997 of file exprtk.hpp.

21998 {
21999 if (this != &e)
22000 {
22001 if (control_block_)
22002 {
22003 if (
22004 (0 != control_block_->ref_count) &&
22005 (0 == --control_block_->ref_count)
22006 )
22007 {
22008 delete control_block_;
22009 }
22010
22011 control_block_ = 0;
22012 }
22013
22015 control_block_->ref_count++;
22017 }
22018
22019 return *this;
22020 }

◆ operator==()

template<typename T>
bool exprtk::expression< T >::operator== ( const expression< T > & e) const
inline

Definition at line 22022 of file exprtk.hpp.

22023 {
22024 return (this == &e);
22025 }

◆ register_local_data()

template<typename T>
void exprtk::expression< T >::register_local_data ( void * data,
const std::size_t & size = 0,
const std::size_t data_mode = 0 )
inlineprivate

Definition at line 22175 of file exprtk.hpp.

22176 {
22177 if (data)
22178 {
22179 if (control_block_)
22180 {
22182
22183 switch (data_mode)
22184 {
22185 case 0 : dt = control_block::e_data; break;
22186 case 1 : dt = control_block::e_vecdata; break;
22187 case 2 : dt = control_block::e_string; break;
22188 }
22189
22191 local_data_list.push_back(
22193 data_pack(reinterpret_cast<void*>(data), dt, size));
22194 }
22195 }
22196 }
const control_block::local_data_list_t & local_data_list()
Definition exprtk.hpp:22198

◆ register_local_var() [1/2]

template<typename T>
void exprtk::expression< T >::register_local_var ( expression_ptr expr)
inlineprivate

Definition at line 22145 of file exprtk.hpp.

22146 {
22147 if (expr)
22148 {
22149 if (control_block_)
22150 {
22152 local_data_list.push_back(
22154 data_pack(reinterpret_cast<void*>(expr),
22156 }
22157 }
22158 }

◆ register_local_var() [2/2]

template<typename T>
void exprtk::expression< T >::register_local_var ( vector_holder_ptr vec_holder)
inlineprivate

Definition at line 22160 of file exprtk.hpp.

22161 {
22162 if (vec_holder)
22163 {
22164 if (control_block_)
22165 {
22167 local_data_list.push_back(
22169 data_pack(reinterpret_cast<void*>(vec_holder),
22171 }
22172 }
22173 }

◆ register_return_results()

template<typename T>
void exprtk::expression< T >::register_return_results ( results_context_t * rc)
inlineprivate

Definition at line 22211 of file exprtk.hpp.

22212 {
22213 if (control_block_ && rc)
22214 {
22215 control_block_->results = rc;
22216 }
22217 }

◆ register_symbol_table()

template<typename T>
bool exprtk::expression< T >::register_symbol_table ( symbol_table< T > & st)
inline

Definition at line 22071 of file exprtk.hpp.

22072 {
22073 for (std::size_t i = 0; i < symbol_table_list_.size(); ++i)
22074 {
22075 if (st == symbol_table_list_[i])
22076 {
22077 return false;
22078 }
22079 }
22080
22081 symbol_table_list_.push_back(st);
22082 return true;
22083 }

Referenced by exprtk::details::collector_helper< T >::collection_pass(), exprtk::parser< Type >::compile(), exprtk::function_compositor< T >::compile_expression(), exprtk::compute(), exprtk::compute(), exprtk::compute(), exprtk::compute(), load_expression(), main(), expression_processor< T >::process(), run_parse_benchmark(), run_test01(), run_test02(), run_test04(), run_test14(), test_expression(), test_gen(), and vector_randu().

Here is the caller graph for this function:

◆ release()

template<typename T>
expression< T > & exprtk::expression< T >::release ( )
inline

Definition at line 22035 of file exprtk.hpp.

22036 {
22037 exprtk::details::dump_ptr("expression::release", this);
22039
22040 return (*this);
22041 }
void dump_ptr(const std::string &, const void *)
Definition exprtk.hpp:5312

◆ results()

template<typename T>
const results_context_t & exprtk::expression< T >::results ( ) const
inline

Definition at line 22102 of file exprtk.hpp.

22103 {
22104 if (control_block_->results)
22105 return (*control_block_->results);
22106 else
22107 {
22108 static const results_context_t null_results;
22109 return null_results;
22110 }
22111 }
results_context< T > results_context_t
Definition exprtk.hpp:22100

Referenced by expression_processor< T >::process().

Here is the caller graph for this function:

◆ return_invoked()

template<typename T>
bool exprtk::expression< T >::return_invoked ( ) const
inline

Definition at line 22113 of file exprtk.hpp.

22114 {
22116
22117 return control_block_ &&
22118 control_block_->return_invoked &&
22119 (*control_block_->return_invoked);
22120 }

◆ set_expression()

template<typename T>
void exprtk::expression< T >::set_expression ( const expression_ptr expr)
inlineprivate

Definition at line 22129 of file exprtk.hpp.

22130 {
22131 if (expr)
22132 {
22133 if (control_block_)
22134 {
22135 if (0 == --control_block_->ref_count)
22136 {
22137 delete control_block_;
22138 }
22139 }
22140
22142 }
22143 }
static cntrl_blck_ptr_t create(expression_ptr e)
Definition exprtk.hpp:21944

Referenced by exprtk::parser< Type >::compile(), exprtk::symtab_list_t< T >::expression(), and exprtk::symtab_list_t< T >::expression().

Here is the caller graph for this function:

◆ set_retinvk()

template<typename T>
void exprtk::expression< T >::set_retinvk ( bool * retinvk_ptr)
inlineprivate

Definition at line 22219 of file exprtk.hpp.

22220 {
22221 if (control_block_)
22222 {
22223 control_block_->return_invoked = retinvk_ptr;
22224 }
22225 }

Referenced by exprtk::parser< Type >::compile().

Here is the caller graph for this function:

◆ value()

template<typename T>
T exprtk::expression< T >::value ( ) const
inline

Definition at line 22048 of file exprtk.hpp.

22049 {
22051 assert(control_block_->expr);
22052
22053 return control_block_->expr->value();
22054 }

Referenced by exprtk::compute(), exprtk::compute(), exprtk::compute(), exprtk::compute(), exprtk::symtab_list_t< T >::operator bool(), exprtk::symtab_list_t< T >::operator T(), exprtk::symtab_list_t< T >::operator()(), expression_processor< T >::process(), run_exprtk_benchmark(), run_test01(), run_test02(), run_test04(), test_expression(), and vector_randu().

Here is the caller graph for this function:

◆ expression_helper< T >

template<typename T>
friend class expression_helper< T >
friend

Definition at line 22228 of file exprtk.hpp.

◆ function_compositor< T >

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

Definition at line 22228 of file exprtk.hpp.

◆ is_valid

template<typename T>
template<typename TT>
bool is_valid ( const expression< TT > & expr)
friend

◆ parser< T >

template<typename T>
friend class parser< T >
friend

Definition at line 22228 of file exprtk.hpp.

Member Data Documentation

◆ control_block_

◆ symbol_table_list_

template<typename T>
symtab_list_t exprtk::expression< T >::symbol_table_list_
private

Definition at line 22228 of file exprtk.hpp.


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