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

◆ results_context_t

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

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

Constructor & Destructor Documentation

◆ expression() [1/3]

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

Definition at line 21897 of file exprtk.hpp.

21898 : control_block_(0)
21899 {
21901 }
void set_expression(const expression_ptr expr)
Definition exprtk.hpp:22045
control_block * control_block_
Definition exprtk.hpp:22143
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:605

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

Here is the call graph for this function:

◆ expression() [2/3]

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

Definition at line 21903 of file exprtk.hpp.

21904 : control_block_ (e.control_block_ )
21905 , symbol_table_list_(e.symbol_table_list_)
21906 {
21908 }
symtab_list_t symbol_table_list_
Definition exprtk.hpp:22144

References exprtk::expression< T >::control_block_, and exprtk::expression< T >::control_block::ref_count.

◆ expression() [3/3]

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

Definition at line 21910 of file exprtk.hpp.

21911 : control_block_(0)
21912 {
21914 symbol_table_list_.push_back(symbol_table);
21915 }

References exprtk::expression< T >::set_expression(), and exprtk::expression< T >::symbol_table_list_.

Here is the call graph for this function:

◆ ~expression()

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

Definition at line 21963 of file exprtk.hpp.

21964 {
21966 }
static void destroy(cntrl_blck_ptr_t &cntrl_blck)
Definition exprtk.hpp:21869

References exprtk::expression< T >::control_block_, and exprtk::expression< T >::control_block::destroy().

Here is the call graph for this function:

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

22011 {
22012 return symbol_table_list_[index];
22013 }

References exprtk::expression< T >::symbol_table_list_.

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

22006 {
22007 return symbol_table_list_[index];
22008 }

References exprtk::expression< T >::symbol_table_list_.

◆ get_symbol_table_list()

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

Definition at line 22040 of file exprtk.hpp.

22041 {
22042 return symbol_table_list_;
22043 }

References exprtk::expression< T >::symbol_table_list_.

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

22115 {
22116 if (control_block_)
22117 {
22119 }
22120 else
22121 {
22122 static typename control_block::local_data_list_t null_local_data_list;
22123 return null_local_data_list;
22124 }
22125 }
std::vector< data_pack > local_data_list_t
Definition exprtk.hpp:21805
local_data_list_t local_data_list
Definition exprtk.hpp:21887

References exprtk::expression< T >::control_block_, and exprtk::expression< T >::control_block::local_data_list.

Referenced by exprtk::expression< T >::register_local_data(), exprtk::expression< T >::register_local_var(), exprtk::expression< T >::register_local_var(), and 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 22015 of file exprtk.hpp.

22016 {
22017 return symbol_table_list_.size();
22018 }

References exprtk::expression< T >::symbol_table_list_.

◆ operator bool()

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

Definition at line 21986 of file exprtk.hpp.

21987 {
21988 return details::is_true(value());
21989 }
bool is_true(const double v)
Definition exprtk.hpp:5742

References exprtk::details::is_true(), and exprtk::expression< T >::value().

Here is the call graph for this function:

◆ operator T()

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

Definition at line 21981 of file exprtk.hpp.

21982 {
21983 return value();
21984 }

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

Here is the call graph for this function:

◆ operator!()

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

Definition at line 21947 of file exprtk.hpp.

21948 {
21949 return (
21950 (0 == control_block_ ) ||
21951 (0 == control_block_->expr)
21952 );
21953 }

References exprtk::expression< T >::control_block_, and exprtk::expression< T >::control_block::expr.

◆ operator()()

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

Definition at line 21976 of file exprtk.hpp.

21977 {
21978 return value();
21979 }

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

Here is the call graph for this function:

◆ operator=()

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

Definition at line 21917 of file exprtk.hpp.

21918 {
21919 if (this != &e)
21920 {
21921 if (control_block_)
21922 {
21923 if (
21924 (0 != control_block_->ref_count) &&
21925 (0 == --control_block_->ref_count)
21926 )
21927 {
21928 delete control_block_;
21929 }
21930
21931 control_block_ = 0;
21932 }
21933
21934 control_block_ = e.control_block_;
21936 symbol_table_list_ = e.symbol_table_list_;
21937 }
21938
21939 return *this;
21940 }

References exprtk::expression< T >::control_block_, exprtk::expression< T >::control_block::ref_count, and exprtk::expression< T >::symbol_table_list_.

◆ operator==()

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

Definition at line 21942 of file exprtk.hpp.

21943 {
21944 return (this == &e);
21945 }

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

22092 {
22093 if (data)
22094 {
22095 if (control_block_)
22096 {
22098
22099 switch (data_mode)
22100 {
22101 case 0 : dt = control_block::e_data; break;
22102 case 1 : dt = control_block::e_vecdata; break;
22103 case 2 : dt = control_block::e_string; break;
22104 }
22105
22107 local_data_list.push_back(
22108 typename expression<T>::control_block::
22109 data_pack(reinterpret_cast<void*>(data), dt, size));
22110 }
22111 }
22112 }
const control_block::local_data_list_t & local_data_list()
Definition exprtk.hpp:22114
static std::string data()
Definition exprtk.hpp:46497

References exprtk::expression< T >::control_block_, exprtk::expression< T >::control_block::e_data, exprtk::expression< T >::control_block::e_string, exprtk::expression< T >::control_block::e_vecdata, and exprtk::expression< T >::local_data_list().

Here is the call graph for this function:

◆ register_local_var() [1/2]

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

Definition at line 22061 of file exprtk.hpp.

22062 {
22063 if (expr)
22064 {
22065 if (control_block_)
22066 {
22068 local_data_list.push_back(
22069 typename expression<T>::control_block::
22070 data_pack(reinterpret_cast<void*>(expr),
22071 control_block::e_expr));
22072 }
22073 }
22074 }

References exprtk::expression< T >::control_block_, exprtk::expression< T >::control_block::e_expr, and exprtk::expression< T >::local_data_list().

Here is the call graph for this function:

◆ register_local_var() [2/2]

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

Definition at line 22076 of file exprtk.hpp.

22077 {
22078 if (vec_holder)
22079 {
22080 if (control_block_)
22081 {
22083 local_data_list.push_back(
22084 typename expression<T>::control_block::
22085 data_pack(reinterpret_cast<void*>(vec_holder),
22086 control_block::e_vecholder));
22087 }
22088 }
22089 }

References exprtk::expression< T >::control_block_, exprtk::expression< T >::control_block::e_vecholder, and exprtk::expression< T >::local_data_list().

Here is the call graph for this function:

◆ register_return_results()

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

Definition at line 22127 of file exprtk.hpp.

22128 {
22129 if (control_block_ && rc)
22130 {
22131 control_block_->results = rc;
22132 }
22133 }

References exprtk::expression< T >::control_block_, and exprtk::expression< T >::control_block::results.

◆ register_symbol_table()

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

Definition at line 21991 of file exprtk.hpp.

21992 {
21993 for (std::size_t i = 0; i < symbol_table_list_.size(); ++i)
21994 {
21995 if (st == symbol_table_list_[i])
21996 {
21997 return false;
21998 }
21999 }
22000
22001 symbol_table_list_.push_back(st);
22002 return true;
22003 }

References exprtk::expression< T >::symbol_table_list_.

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(), 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 21955 of file exprtk.hpp.

21956 {
21957 exprtk::details::dump_ptr("expression::release", this);
21959
21960 return (*this);
21961 }
void dump_ptr(const std::string &, const void *)
Definition exprtk.hpp:5291

References exprtk::expression< T >::control_block_, exprtk::expression< T >::control_block::destroy(), and 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 22022 of file exprtk.hpp.

22023 {
22025 return (*control_block_->results);
22026 else
22027 {
22028 static const results_context_t null_results;
22029 return null_results;
22030 }
22031 }
results_context< T > results_context_t
Definition exprtk.hpp:22020

References exprtk::expression< T >::control_block_, and exprtk::expression< T >::control_block::results.

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

◆ set_expression()

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

Definition at line 22045 of file exprtk.hpp.

22046 {
22047 if (expr)
22048 {
22049 if (control_block_)
22050 {
22051 if (0 == --control_block_->ref_count)
22052 {
22053 delete control_block_;
22054 }
22055 }
22056
22058 }
22059 }
static cntrl_blck_ptr_t create(expression_ptr e)
Definition exprtk.hpp:21864

References exprtk::expression< T >::control_block_, exprtk::expression< T >::control_block::create(), and exprtk::expression< T >::control_block::ref_count.

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

Here is the call graph for this function:
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 22135 of file exprtk.hpp.

22136 {
22137 if (control_block_)
22138 {
22139 control_block_->return_invoked = retinvk_ptr;
22140 }
22141 }

References exprtk::expression< T >::control_block_, and exprtk::expression< T >::control_block::return_invoked.

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

21969 {
21970 assert(control_block_ );
21971 assert(control_block_->expr);
21972
21973 return control_block_->expr->value();
21974 }

References exprtk::expression< T >::control_block_, exprtk::expression< T >::control_block::expr, and exprtk::details::expression_node< T >::value().

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

Here is the call graph for this function:
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 22144 of file exprtk.hpp.

◆ function_compositor< T >

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

Definition at line 22144 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 22144 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

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