C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
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
 
void 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)
 
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 20767 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 20771 of file exprtk.hpp.

◆ results_context_t

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

Definition at line 21015 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 20773 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 20772 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ expression() [1/3]

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

Definition at line 20898 of file exprtk.hpp.

20899 : control_block_(0)
20900 {
20902 }
void set_expression(const expression_ptr expr)
Definition exprtk.hpp:21040
control_block * control_block_
Definition exprtk.hpp:21138
bool match_impl(const Iterator pattern_begin, const Iterator pattern_end, const Iterator data_begin, const Iterator data_end, const typename std::iterator_traits< Iterator >::value_type &zero_or_more, const typename std::iterator_traits< Iterator >::value_type &exactly_one)
Definition exprtk.hpp:591

◆ expression() [2/3]

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

Definition at line 20904 of file exprtk.hpp.

20905 : control_block_ (e.control_block_ )
20906 , symbol_table_list_(e.symbol_table_list_)
20907 {
20909 }
symtab_list_t symbol_table_list_
Definition exprtk.hpp:21139

◆ expression() [3/3]

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

Definition at line 20911 of file exprtk.hpp.

20912 : control_block_(0)
20913 {
20915 symbol_table_list_.push_back(symbol_table);
20916 }

◆ ~expression()

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

Definition at line 20964 of file exprtk.hpp.

20965 {
20967 }
static void destroy(cntrl_blck_ptr_t &cntrl_blck)
Definition exprtk.hpp:20870

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

21011 {
21012 return symbol_table_list_[index];
21013 }

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

21006 {
21007 return symbol_table_list_[index];
21008 }

◆ get_symbol_table_list()

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

Definition at line 21035 of file exprtk.hpp.

21036 {
21037 return symbol_table_list_;
21038 }

Referenced by exprtk::parser< T >::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 21109 of file exprtk.hpp.

21110 {
21111 if (control_block_)
21112 {
21114 }
21115 else
21116 {
21117 static typename control_block::local_data_list_t null_local_data_list;
21118 return null_local_data_list;
21119 }
21120 }
std::vector< data_pack > local_data_list_t
Definition exprtk.hpp:20806
local_data_list_t local_data_list
Definition exprtk.hpp:20888

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

Here is the caller graph for this function:

◆ operator bool()

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

Definition at line 20987 of file exprtk.hpp.

20988 {
20989 return details::is_true(value());
20990 }
bool is_true(const double v)
Definition exprtk.hpp:5540

◆ operator T()

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

Definition at line 20982 of file exprtk.hpp.

20983 {
20984 return value();
20985 }

◆ operator!()

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

Definition at line 20948 of file exprtk.hpp.

20949 {
20950 return (
20951 (0 == control_block_ ) ||
20952 (0 == control_block_->expr)
20953 );
20954 }

◆ operator()()

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

Definition at line 20977 of file exprtk.hpp.

20978 {
20979 return value();
20980 }

◆ operator=()

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

Definition at line 20918 of file exprtk.hpp.

20919 {
20920 if (this != &e)
20921 {
20922 if (control_block_)
20923 {
20924 if (
20925 (0 != control_block_->ref_count) &&
20926 (0 == --control_block_->ref_count)
20927 )
20928 {
20929 delete control_block_;
20930 }
20931
20932 control_block_ = 0;
20933 }
20934
20935 control_block_ = e.control_block_;
20937 symbol_table_list_ = e.symbol_table_list_;
20938 }
20939
20940 return *this;
20941 }

◆ operator==()

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

Definition at line 20943 of file exprtk.hpp.

20944 {
20945 return (this == &e);
20946 }

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

21087 {
21088 if (data)
21089 {
21090 if (control_block_)
21091 {
21093
21094 switch (data_mode)
21095 {
21096 case 0 : dt = control_block::e_data; break;
21097 case 1 : dt = control_block::e_vecdata; break;
21098 case 2 : dt = control_block::e_string; break;
21099 }
21100
21102 local_data_list.push_back(
21103 typename expression<T>::control_block::
21104 data_pack(reinterpret_cast<void*>(data), dt, size));
21105 }
21106 }
21107 }
const control_block::local_data_list_t & local_data_list()
Definition exprtk.hpp:21109
static std::string data()
Definition exprtk.hpp:44167

◆ register_local_var() [1/2]

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

Definition at line 21056 of file exprtk.hpp.

21057 {
21058 if (expr)
21059 {
21060 if (control_block_)
21061 {
21063 local_data_list.push_back(
21064 typename expression<T>::control_block::
21065 data_pack(reinterpret_cast<void*>(expr),
21066 control_block::e_expr));
21067 }
21068 }
21069 }

◆ register_local_var() [2/2]

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

Definition at line 21071 of file exprtk.hpp.

21072 {
21073 if (vec_holder)
21074 {
21075 if (control_block_)
21076 {
21078 local_data_list.push_back(
21079 typename expression<T>::control_block::
21080 data_pack(reinterpret_cast<void*>(vec_holder),
21081 control_block::e_vecholder));
21082 }
21083 }
21084 }

◆ register_return_results()

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

Definition at line 21122 of file exprtk.hpp.

21123 {
21124 if (control_block_ && rc)
21125 {
21126 control_block_->results = rc;
21127 }
21128 }

◆ register_symbol_table()

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

Definition at line 20992 of file exprtk.hpp.

20993 {
20994 for (std::size_t i = 0; i < symbol_table_list_.size(); ++i)
20995 {
20996 if (&st == &symbol_table_list_[i])
20997 {
20998 return;
20999 }
21000 }
21001
21002 symbol_table_list_.push_back(st);
21003 }

Referenced by exprtk::details::collector_helper< T >::collection_pass(), exprtk::parser< T >::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(), and test_gen().

Here is the caller graph for this function:

◆ release()

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

Definition at line 20956 of file exprtk.hpp.

20957 {
20958 exprtk::details::dump_ptr("expression::release", this);
20960
20961 return (*this);
20962 }
void dump_ptr(const std::string &, const void *)
Definition exprtk.hpp:5090

References exprtk::details::dump_ptr().

Here is the call graph for this function:

◆ results()

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

Definition at line 21017 of file exprtk.hpp.

21018 {
21020 return (*control_block_->results);
21021 else
21022 {
21023 static const results_context_t null_results;
21024 return null_results;
21025 }
21026 }
results_context< T > results_context_t
Definition exprtk.hpp:21015

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

21029 {
21030 return (*control_block_->return_invoked);
21031 }

◆ set_expression()

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

Definition at line 21040 of file exprtk.hpp.

21041 {
21042 if (expr)
21043 {
21044 if (control_block_)
21045 {
21046 if (0 == --control_block_->ref_count)
21047 {
21048 delete control_block_;
21049 }
21050 }
21051
21053 }
21054 }
static cntrl_blck_ptr_t create(expression_ptr e)
Definition exprtk.hpp:20865

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

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

21131 {
21132 if (control_block_)
21133 {
21134 control_block_->return_invoked = retinvk_ptr;
21135 }
21136 }

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

Here is the caller graph for this function:

◆ value()

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

Definition at line 20969 of file exprtk.hpp.

20970 {
20971 assert(control_block_ );
20972 assert(control_block_->expr);
20973
20974 return control_block_->expr->value();
20975 }

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

Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ expression_helper< T >

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

Definition at line 21139 of file exprtk.hpp.

◆ function_compositor< T >

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

Definition at line 21139 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 21139 of file exprtk.hpp.

Member Data Documentation

◆ control_block_

template<typename T >
control_block* exprtk::expression< T >::control_block_
private

◆ symbol_table_list_

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

Definition at line 21139 of file exprtk.hpp.


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