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

◆ results_context_t

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

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

Constructor & Destructor Documentation

◆ expression() [1/3]

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

Definition at line 21632 of file exprtk.hpp.

21633 : control_block_(0)
21634 {
21636 }
void set_expression(const expression_ptr expr)
Definition exprtk.hpp:21780
control_block * control_block_
Definition exprtk.hpp:21878
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:598

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

21639 : control_block_ (e.control_block_ )
21640 , symbol_table_list_(e.symbol_table_list_)
21641 {
21643 }
symtab_list_t symbol_table_list_
Definition exprtk.hpp:21879

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

21646 : control_block_(0)
21647 {
21649 symbol_table_list_.push_back(symbol_table);
21650 }

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

21699 {
21701 }
static void destroy(cntrl_blck_ptr_t &cntrl_blck)
Definition exprtk.hpp:21604

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

21746 {
21747 return symbol_table_list_[index];
21748 }

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

21741 {
21742 return symbol_table_list_[index];
21743 }

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

21776 {
21777 return symbol_table_list_;
21778 }

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

21850 {
21851 if (control_block_)
21852 {
21854 }
21855 else
21856 {
21857 static typename control_block::local_data_list_t null_local_data_list;
21858 return null_local_data_list;
21859 }
21860 }
std::vector< data_pack > local_data_list_t
Definition exprtk.hpp:21540
local_data_list_t local_data_list
Definition exprtk.hpp:21622

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

21751 {
21752 return symbol_table_list_.size();
21753 }

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

◆ operator bool()

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

Definition at line 21721 of file exprtk.hpp.

21722 {
21723 return details::is_true(value());
21724 }
bool is_true(const double v)
Definition exprtk.hpp:5615

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

21717 {
21718 return value();
21719 }

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

21683 {
21684 return (
21685 (0 == control_block_ ) ||
21686 (0 == control_block_->expr)
21687 );
21688 }

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

21712 {
21713 return value();
21714 }

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

21653 {
21654 if (this != &e)
21655 {
21656 if (control_block_)
21657 {
21658 if (
21659 (0 != control_block_->ref_count) &&
21660 (0 == --control_block_->ref_count)
21661 )
21662 {
21663 delete control_block_;
21664 }
21665
21666 control_block_ = 0;
21667 }
21668
21669 control_block_ = e.control_block_;
21671 symbol_table_list_ = e.symbol_table_list_;
21672 }
21673
21674 return *this;
21675 }

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

21678 {
21679 return (this == &e);
21680 }

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

21827 {
21828 if (data)
21829 {
21830 if (control_block_)
21831 {
21833
21834 switch (data_mode)
21835 {
21836 case 0 : dt = control_block::e_data; break;
21837 case 1 : dt = control_block::e_vecdata; break;
21838 case 2 : dt = control_block::e_string; break;
21839 }
21840
21842 local_data_list.push_back(
21843 typename expression<T>::control_block::
21844 data_pack(reinterpret_cast<void*>(data), dt, size));
21845 }
21846 }
21847 }
const control_block::local_data_list_t & local_data_list()
Definition exprtk.hpp:21849
static std::string data()
Definition exprtk.hpp:45871

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

21797 {
21798 if (expr)
21799 {
21800 if (control_block_)
21801 {
21803 local_data_list.push_back(
21804 typename expression<T>::control_block::
21805 data_pack(reinterpret_cast<void*>(expr),
21806 control_block::e_expr));
21807 }
21808 }
21809 }

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

21812 {
21813 if (vec_holder)
21814 {
21815 if (control_block_)
21816 {
21818 local_data_list.push_back(
21819 typename expression<T>::control_block::
21820 data_pack(reinterpret_cast<void*>(vec_holder),
21821 control_block::e_vecholder));
21822 }
21823 }
21824 }

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

21863 {
21864 if (control_block_ && rc)
21865 {
21866 control_block_->results = rc;
21867 }
21868 }

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

21727 {
21728 for (std::size_t i = 0; i < symbol_table_list_.size(); ++i)
21729 {
21730 if (st == symbol_table_list_[i])
21731 {
21732 return false;
21733 }
21734 }
21735
21736 symbol_table_list_.push_back(st);
21737 return true;
21738 }

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

21691 {
21692 exprtk::details::dump_ptr("expression::release", this);
21694
21695 return (*this);
21696 }
void dump_ptr(const std::string &, const void *)
Definition exprtk.hpp:5164

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

21758 {
21760 return (*control_block_->results);
21761 else
21762 {
21763 static const results_context_t null_results;
21764 return null_results;
21765 }
21766 }
results_context< T > results_context_t
Definition exprtk.hpp:21755

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

21781 {
21782 if (expr)
21783 {
21784 if (control_block_)
21785 {
21786 if (0 == --control_block_->ref_count)
21787 {
21788 delete control_block_;
21789 }
21790 }
21791
21793 }
21794 }
static cntrl_blck_ptr_t create(expression_ptr e)
Definition exprtk.hpp:21599

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

21871 {
21872 if (control_block_)
21873 {
21874 control_block_->return_invoked = retinvk_ptr;
21875 }
21876 }

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

21704 {
21705 assert(control_block_ );
21706 assert(control_block_->expr);
21707
21708 return control_block_->expr->value();
21709 }

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

◆ function_compositor< T >

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

Definition at line 21879 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 21879 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: