C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
expression_processor< T > Class Template Reference
Collaboration diagram for expression_processor< T >:
[legend]

Classes

struct  function_definition
 
struct  parse_function_definition_impl
 

Public Types

typedef exprtk::symbol_table< T > symbol_table_t
 
typedef exprtk::expression< T > expression_t
 
typedef exprtk::parser< T > parser_t
 
typedef exprtk::parser_error::type error_t
 
typedef exprtk::function_compositor< T > compositor_t
 
typedef compositor_t::function function_t
 
typedef parser_t::settings_store settings_store_t
 
typedef exprtk::lexer::parser_helper prsrhlpr_t
 
typedef parser_t::dependent_entity_collector::symbol_t symbol_t
 
typedef std::vector< symbol_tsymbol_list_t
 
typedef exprtk::symbol_table< T > symbol_table_t
 
typedef exprtk::expression< T > expression_t
 
typedef exprtk::parser< T > parser_t
 
typedef exprtk::parser_error::type error_t
 
typedef exprtk::function_compositor< T > compositor_t
 
typedef compositor_t::function function_t
 
typedef parser_t::settings_store settings_store_t
 
typedef exprtk::lexer::parser_helper prsrhlpr_t
 
typedef parser_t::dependent_entity_collector::symbol_t symbol_t
 
typedef std::vector< symbol_tsymbol_list_t
 

Public Member Functions

 expression_processor ()
 
 ~expression_processor ()
 
bool & persist_symbol_table ()
 
bool & symbol_dump ()
 
bool & assignment_dump ()
 
bool & display_total_time ()
 
bool & display_total_compile_time ()
 
bool & enable_usr ()
 
bool & disable_local_vardef ()
 
void setup_symbol_table ()
 
void process (std::string program)
 
void process_from_file (const std::string &file_name)
 
void process_directive (std::string expression)
 
 expression_processor ()
 
 ~expression_processor ()
 
bool & persist_symbol_table ()
 
bool & symbol_dump ()
 
bool & assignment_dump ()
 
bool & display_total_time ()
 
bool & display_total_compile_time ()
 
bool & enable_usr ()
 
bool & disable_local_vardef ()
 
void setup_symbol_table ()
 
void process (std::string program)
 
void process_from_file (const std::string &file_name)
 
void process_directive (std::string expression)
 

Private Types

enum  func_parse_result {
  e_parse_unknown = 0 , e_parse_success = 1 , e_parse_partial = 2 , e_parse_lexfail = 4 ,
  e_parse_notfunc = 8 , e_parse_unknown = 0 , e_parse_success = 1 , e_parse_partial = 2 ,
  e_parse_lexfail = 4 , e_parse_notfunc = 8
}
 
enum  func_parse_result {
  e_parse_unknown = 0 , e_parse_success = 1 , e_parse_partial = 2 , e_parse_lexfail = 4 ,
  e_parse_notfunc = 8 , e_parse_unknown = 0 , e_parse_success = 1 , e_parse_partial = 2 ,
  e_parse_lexfail = 4 , e_parse_notfunc = 8
}
 

Private Member Functions

void print_results (const exprtk::results_context< T > &results)
 
void perform_symbol_dump (const symbol_list_t &variable_list) const
 
void process_batch_run (const std::string &batch_runs_cnt)
 
void process_multiline ()
 
func_parse_result parse_function_definition (std::string &func_def, function_definition &cf)
 
std::string read_from_stdin ()
 
void process_function_definition (const std::string &func_def_header, bool read_stdin=true)
 
void list_symbols ()
 
void clear_functions ()
 
std::string trim_whitespace (std::string s)
 
void process_disable_arithmetic (const std::string &arithmetic)
 
void process_disable_assignment (const std::string &assignment)
 
void process_disable_inequality (const std::string &inequality)
 
void process_enable_arithmetic (const std::string &arithmetic)
 
void process_enable_assignment (const std::string &assignment)
 
void process_enable_inequality (const std::string &inequality)
 
void print_results (const exprtk::results_context< T > &results)
 
void perform_symbol_dump (const symbol_list_t &variable_list) const
 
void process_batch_run (const std::string &batch_runs_cnt)
 
void process_multiline ()
 
func_parse_result parse_function_definition (std::string &func_def, function_definition &cf)
 
std::string read_from_stdin ()
 
void process_function_definition (const std::string &func_def_header, bool read_stdin=true)
 
void list_symbols ()
 
void clear_functions ()
 
std::string trim_whitespace (std::string s)
 
void process_disable_arithmetic (const std::string &arithmetic)
 
void process_disable_assignment (const std::string &assignment)
 
void process_disable_inequality (const std::string &inequality)
 
void process_enable_arithmetic (const std::string &arithmetic)
 
void process_enable_assignment (const std::string &assignment)
 
void process_enable_inequality (const std::string &inequality)
 

Private Attributes

bool persist_symbol_table_
 
bool symbol_dump_
 
bool assignment_dump_
 
bool display_total_time_
 
bool display_total_compile_time_
 
bool enable_usr_
 
bool disable_local_vardef_
 
std::size_t batch_runs_cnt_
 
symbol_table_t symbol_table_
 
symbol_table_t function_symbol_table_
 
parser_t parser_
 
compositor_t compositor_
 
putch< T > putch_
 
putint< T > putint_
 
rnd_01< T > rnd_01_
 
exprtk::rtl::io::file::package< T > fileio_package_
 
exprtk::rtl::vecops::package< T > vecops_package_
 
exprtk::rtl::io::package< T > io_package_
 
exprtk::polynomial< T, 1 > poly01_
 
exprtk::polynomial< T, 2 > poly02_
 
exprtk::polynomial< T, 3 > poly03_
 
exprtk::polynomial< T, 4 > poly04_
 
exprtk::polynomial< T, 5 > poly05_
 
exprtk::polynomial< T, 6 > poly06_
 
exprtk::polynomial< T, 7 > poly07_
 
exprtk::polynomial< T, 8 > poly08_
 
exprtk::polynomial< T, 9 > poly09_
 
exprtk::polynomial< T, 10 > poly10_
 
exprtk::polynomial< T, 11 > poly11_
 
exprtk::polynomial< T, 12 > poly12_
 
std::vector< function_definitionfunc_def_list_
 
std::map< std::string, typename settings_store_t::settings_arithmetic_oprarith_opr_
 
std::map< std::string, typename settings_store_t::settings_assignment_oprassign_opr_
 
std::map< std::string, typename settings_store_t::settings_inequality_oprinequality_opr_
 

Detailed Description

template<typename T>
class expression_processor< T >

Definition at line 78 of file exprtk_mpfr_repl.cpp.

Member Typedef Documentation

◆ compositor_t [1/2]

template<typename T >
typedef exprtk::function_compositor<T> expression_processor< T >::compositor_t

Definition at line 86 of file exprtk_mpfr_repl.cpp.

◆ compositor_t [2/2]

template<typename T >
typedef exprtk::function_compositor<T> expression_processor< T >::compositor_t

Definition at line 84 of file exprtk_repl.cpp.

◆ error_t [1/2]

template<typename T >
typedef exprtk::parser_error::type expression_processor< T >::error_t

Definition at line 85 of file exprtk_mpfr_repl.cpp.

◆ error_t [2/2]

template<typename T >
typedef exprtk::parser_error::type expression_processor< T >::error_t

Definition at line 83 of file exprtk_repl.cpp.

◆ expression_t [1/2]

template<typename T >
typedef exprtk::expression<T> expression_processor< T >::expression_t

Definition at line 83 of file exprtk_mpfr_repl.cpp.

◆ expression_t [2/2]

template<typename T >
typedef exprtk::expression<T> expression_processor< T >::expression_t

Definition at line 81 of file exprtk_repl.cpp.

◆ function_t [1/2]

template<typename T >
typedef compositor_t::function expression_processor< T >::function_t

Definition at line 87 of file exprtk_mpfr_repl.cpp.

◆ function_t [2/2]

template<typename T >
typedef compositor_t::function expression_processor< T >::function_t

Definition at line 85 of file exprtk_repl.cpp.

◆ parser_t [1/2]

template<typename T >
typedef exprtk::parser<T> expression_processor< T >::parser_t

Definition at line 84 of file exprtk_mpfr_repl.cpp.

◆ parser_t [2/2]

template<typename T >
typedef exprtk::parser<T> expression_processor< T >::parser_t

Definition at line 82 of file exprtk_repl.cpp.

◆ prsrhlpr_t [1/2]

template<typename T >
typedef exprtk::lexer::parser_helper expression_processor< T >::prsrhlpr_t

Definition at line 89 of file exprtk_mpfr_repl.cpp.

◆ prsrhlpr_t [2/2]

template<typename T >
typedef exprtk::lexer::parser_helper expression_processor< T >::prsrhlpr_t

Definition at line 87 of file exprtk_repl.cpp.

◆ settings_store_t [1/2]

template<typename T >
typedef parser_t::settings_store expression_processor< T >::settings_store_t

Definition at line 88 of file exprtk_mpfr_repl.cpp.

◆ settings_store_t [2/2]

template<typename T >
typedef parser_t::settings_store expression_processor< T >::settings_store_t

Definition at line 86 of file exprtk_repl.cpp.

◆ symbol_list_t [1/2]

template<typename T >
typedef std::vector<symbol_t> expression_processor< T >::symbol_list_t

Definition at line 92 of file exprtk_mpfr_repl.cpp.

◆ symbol_list_t [2/2]

template<typename T >
typedef std::vector<symbol_t> expression_processor< T >::symbol_list_t

Definition at line 90 of file exprtk_repl.cpp.

◆ symbol_t [1/2]

template<typename T >
typedef parser_t::dependent_entity_collector::symbol_t expression_processor< T >::symbol_t

Definition at line 91 of file exprtk_mpfr_repl.cpp.

◆ symbol_t [2/2]

template<typename T >
typedef parser_t::dependent_entity_collector::symbol_t expression_processor< T >::symbol_t

Definition at line 89 of file exprtk_repl.cpp.

◆ symbol_table_t [1/2]

template<typename T >
typedef exprtk::symbol_table<T> expression_processor< T >::symbol_table_t

Definition at line 82 of file exprtk_mpfr_repl.cpp.

◆ symbol_table_t [2/2]

template<typename T >
typedef exprtk::symbol_table<T> expression_processor< T >::symbol_table_t

Definition at line 80 of file exprtk_repl.cpp.

Member Enumeration Documentation

◆ func_parse_result [1/2]

template<typename T >
enum expression_processor::func_parse_result
private
Enumerator
e_parse_unknown 
e_parse_success 
e_parse_partial 
e_parse_lexfail 
e_parse_notfunc 
e_parse_unknown 
e_parse_success 
e_parse_partial 
e_parse_lexfail 
e_parse_notfunc 

Definition at line 607 of file exprtk_mpfr_repl.cpp.

◆ func_parse_result [2/2]

template<typename T >
enum expression_processor::func_parse_result
private
Enumerator
e_parse_unknown 
e_parse_success 
e_parse_partial 
e_parse_lexfail 
e_parse_notfunc 
e_parse_unknown 
e_parse_success 
e_parse_partial 
e_parse_lexfail 
e_parse_notfunc 

Definition at line 603 of file exprtk_repl.cpp.

604 {
605 e_parse_unknown = 0,
606 e_parse_success = 1,
607 e_parse_partial = 2,
608 e_parse_lexfail = 4,
610 };

Constructor & Destructor Documentation

◆ expression_processor() [1/2]

template<typename T >
expression_processor< T >::expression_processor ( )
inline

Definition at line 94 of file exprtk_mpfr_repl.cpp.

95 : persist_symbol_table_ (false),
96 symbol_dump_ (false),
97 assignment_dump_ (false),
98 display_total_time_ (false),
100 enable_usr_ (false),
101 disable_local_vardef_ (false),
102 batch_runs_cnt_ (0),
104 #ifdef exprtk_enable_repl_variables
105 ,s0_("abcdefghijk"),
106 s1_("abcdefghijk0123456789"),
107 s2_("012345678901234567890123456789"),
108 v0_({1,1,1}),
109 v1_({2,2,2,2,2}),
110 v2_({3,3,3,3,3,3,3}),
111 v3_({4,4,4,4,4,4,4,4}),
112 vv_(exprtk::make_vector_view(v2_,v2_.size()))
113 #endif
114 {
116
123
136
137 #ifdef exprtk_enable_repl_variables
141 symbol_table_.add_vector ("v0",v0_);
142 symbol_table_.add_vector ("v1",v1_);
143 symbol_table_.add_vector ("v2",v2_);
144 symbol_table_.add_vector ("v3",v3_);
145
146 vv_ = exprtk::make_vector_view(v2_,v2_.size());
147 symbol_table_.add_vector ("vv",vv_);
148 #endif
149
151
158
165
174
176 }
exprtk::rtl::io::file::package< T > fileio_package_
exprtk::polynomial< T, 6 > poly06_
exprtk::polynomial< T, 5 > poly05_
std::map< std::string, typename settings_store_t::settings_arithmetic_opr > arith_opr_
exprtk::polynomial< T, 7 > poly07_
exprtk::rtl::vecops::package< T > vecops_package_
exprtk::polynomial< T, 4 > poly04_
exprtk::polynomial< T, 8 > poly08_
std::map< std::string, typename settings_store_t::settings_assignment_opr > assign_opr_
exprtk::polynomial< T, 3 > poly03_
exprtk::polynomial< T, 9 > poly09_
std::map< std::string, typename settings_store_t::settings_inequality_opr > inequality_opr_
exprtk::polynomial< T, 2 > poly02_
exprtk::polynomial< T, 12 > poly12_
symbol_table_t function_symbol_table_
exprtk::rtl::io::package< T > io_package_
exprtk::polynomial< T, 11 > poly11_
exprtk::polynomial< T, 10 > poly10_
exprtk::polynomial< T, 1 > poly01_
void add_auxiliary_symtab(symbol_table_t &symtab)
Definition exprtk.hpp:41549
bool add_package(Package &package)
Definition exprtk.hpp:20386
bool add_function(const std::string &function_name, function_t &function)
Definition exprtk.hpp:20127
bool add_vector(const std::string &vector_name, T(&v)[N])
Definition exprtk.hpp:20262
bool add_stringvar(const std::string &stringvar_name, std::string &s, const bool is_constant=false)
Definition exprtk.hpp:20114
vector_view< T > make_vector_view(T *data, const std::size_t size, const std::size_t offset=0)
Definition exprtk.hpp:4586

◆ ~expression_processor() [1/2]

template<typename T >
expression_processor< T >::~expression_processor ( )
inline

Definition at line 178 of file exprtk_mpfr_repl.cpp.

179 {
181 }

References expression_processor< T >::clear_functions().

Here is the call graph for this function:

◆ expression_processor() [2/2]

template<typename T >
expression_processor< T >::expression_processor ( )
inline

Definition at line 92 of file exprtk_repl.cpp.

93 : persist_symbol_table_ (false)
94 , symbol_dump_ (false)
95 , assignment_dump_ (false)
96 , display_total_time_ (false)
98 , enable_usr_ (false)
99 , disable_local_vardef_ (false)
100 , batch_runs_cnt_ (0 )
102 #ifdef exprtk_enable_repl_variables
103 , s0_("abcdefghijk")
104 , s1_("abcdefghijk0123456789")
105 , s2_("012345678901234567890123456789")
106 , v0_({1,1,1})
107 , v1_({2,2,2,2,2})
108 , v2_({3,3,3,3,3,3,3})
109 , v3_({4,4,4,4,4,4,4,4})
110 , vv_(exprtk::make_vector_view(v2_,v2_.size()))
111 #endif
112 {
114
121
134
135 #ifdef exprtk_enable_repl_variables
136 symbol_table_.add_stringvar("s0", s0_);
137 symbol_table_.add_stringvar("s1", s1_);
138 symbol_table_.add_stringvar("s2", s2_);
139 symbol_table_.add_vector ("v0", v0_);
140 symbol_table_.add_vector ("v1", v1_);
141 symbol_table_.add_vector ("v2", v2_);
142 symbol_table_.add_vector ("v3", v3_);
143
144 vv_ = exprtk::make_vector_view(v2_,v2_.size());
145 symbol_table_.add_vector ("vv", vv_);
146 #endif
147
149
156
163
172
174 }

◆ ~expression_processor() [2/2]

template<typename T >
expression_processor< T >::~expression_processor ( )
inline

Definition at line 176 of file exprtk_repl.cpp.

177 {
179 }

References expression_processor< T >::clear_functions().

Here is the call graph for this function:

Member Function Documentation

◆ assignment_dump() [1/2]

template<typename T >
bool & expression_processor< T >::assignment_dump ( )
inline

Definition at line 193 of file exprtk_mpfr_repl.cpp.

194 {
195 return assignment_dump_;
196 }

References expression_processor< T >::assignment_dump_.

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

Here is the caller graph for this function:

◆ assignment_dump() [2/2]

template<typename T >
bool & expression_processor< T >::assignment_dump ( )
inline

Definition at line 191 of file exprtk_repl.cpp.

192 {
193 return assignment_dump_;
194 }

References expression_processor< T >::assignment_dump_.

◆ clear_functions() [1/2]

template<typename T >
void expression_processor< T >::clear_functions ( )
inlineprivate

Definition at line 848 of file exprtk_mpfr_repl.cpp.

849 {
850 func_def_list_.clear();
852 }
std::vector< function_definition > func_def_list_

References exprtk::symbol_table< T >::clear(), expression_processor< T >::func_def_list_, and expression_processor< T >::function_symbol_table_.

Referenced by expression_processor< T >::process_directive(), and expression_processor< T >::~expression_processor().

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

◆ clear_functions() [2/2]

template<typename T >
void expression_processor< T >::clear_functions ( )
inlineprivate

Definition at line 844 of file exprtk_repl.cpp.

845 {
846 func_def_list_.clear();
848 }

References exprtk::symbol_table< T >::clear(), expression_processor< T >::func_def_list_, and expression_processor< T >::function_symbol_table_.

Here is the call graph for this function:

◆ disable_local_vardef() [1/2]

template<typename T >
bool & expression_processor< T >::disable_local_vardef ( )
inline

Definition at line 213 of file exprtk_mpfr_repl.cpp.

214 {
216 }

References expression_processor< T >::disable_local_vardef_.

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

Here is the caller graph for this function:

◆ disable_local_vardef() [2/2]

template<typename T >
bool & expression_processor< T >::disable_local_vardef ( )
inline

Definition at line 211 of file exprtk_repl.cpp.

212 {
214 }

References expression_processor< T >::disable_local_vardef_.

◆ display_total_compile_time() [1/2]

template<typename T >
bool & expression_processor< T >::display_total_compile_time ( )
inline

Definition at line 203 of file exprtk_mpfr_repl.cpp.

204 {
206 }

References expression_processor< T >::display_total_compile_time_.

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

Here is the caller graph for this function:

◆ display_total_compile_time() [2/2]

template<typename T >
bool & expression_processor< T >::display_total_compile_time ( )
inline

Definition at line 201 of file exprtk_repl.cpp.

202 {
204 }

References expression_processor< T >::display_total_compile_time_.

◆ display_total_time() [1/2]

template<typename T >
bool & expression_processor< T >::display_total_time ( )
inline

Definition at line 198 of file exprtk_mpfr_repl.cpp.

199 {
200 return display_total_time_;
201 }

References expression_processor< T >::display_total_time_.

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

Here is the caller graph for this function:

◆ display_total_time() [2/2]

template<typename T >
bool & expression_processor< T >::display_total_time ( )
inline

Definition at line 196 of file exprtk_repl.cpp.

197 {
198 return display_total_time_;
199 }

References expression_processor< T >::display_total_time_.

◆ enable_usr() [1/2]

template<typename T >
bool & expression_processor< T >::enable_usr ( )
inline

Definition at line 208 of file exprtk_mpfr_repl.cpp.

209 {
210 return enable_usr_;
211 }

References expression_processor< T >::enable_usr_.

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

Here is the caller graph for this function:

◆ enable_usr() [2/2]

template<typename T >
bool & expression_processor< T >::enable_usr ( )
inline

Definition at line 206 of file exprtk_repl.cpp.

207 {
208 return enable_usr_;
209 }

References expression_processor< T >::enable_usr_.

◆ list_symbols() [1/2]

template<typename T >
void expression_processor< T >::list_symbols ( )
inlineprivate

Definition at line 817 of file exprtk_mpfr_repl.cpp.

818 {
819 std::deque<std::pair<std::string,T> > variable_list;
820 symbol_table_.get_variable_list(variable_list);
821
822 std::size_t max_varname_length = 0;
823
824 for (std::size_t i = 0; i < variable_list.size(); ++i)
825 {
826 max_varname_length = std::max(max_varname_length,variable_list[i].first.size());
827 }
828
829 for (std::size_t i = 0; i < variable_list.size(); ++i)
830 {
831 int pad_length = 0;
832
833 if (max_varname_length > variable_list[i].first.size())
834 {
835 pad_length = static_cast<int>(max_varname_length - variable_list[i].first.size());
836 }
837
838 printf("%02d %s%*.*s %s\n",
839 static_cast<unsigned int>(i),
840 variable_list[i].first.c_str(),
841 pad_length,
842 pad_length,
843 std::string(max_varname_length,' ').c_str(),
844 variable_list[i].second.toString().c_str());
845 }
846 }
std::size_t get_variable_list(Sequence< std::pair< std::string, T >, Allocator > &vlist) const
Definition exprtk.hpp:20393

References exprtk::symbol_table< T >::get_variable_list(), and expression_processor< T >::symbol_table_.

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

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

◆ list_symbols() [2/2]

template<typename T >
void expression_processor< T >::list_symbols ( )
inlineprivate

Definition at line 813 of file exprtk_repl.cpp.

814 {
815 std::deque<std::pair<std::string,T> > variable_list;
816 symbol_table_.get_variable_list(variable_list);
817
818 std::size_t max_varname_length = 0;
819
820 for (std::size_t i = 0; i < variable_list.size(); ++i)
821 {
822 max_varname_length = std::max(max_varname_length,variable_list[i].first.size());
823 }
824
825 for (std::size_t i = 0; i < variable_list.size(); ++i)
826 {
827 int pad_length = 0;
828
829 if (max_varname_length > variable_list[i].first.size())
830 {
831 pad_length = static_cast<int>(max_varname_length - variable_list[i].first.size());
832 }
833
834 printf("%02d %s%*.*s %25.10f\n",
835 static_cast<unsigned int>(i),
836 variable_list[i].first.c_str(),
837 pad_length,
838 pad_length,
839 std::string(max_varname_length,' ').c_str(),
840 variable_list[i].second);
841 }
842 }

References exprtk::symbol_table< T >::get_variable_list(), and expression_processor< T >::symbol_table_.

Here is the call graph for this function:

◆ parse_function_definition() [1/2]

template<typename T >
func_parse_result expression_processor< T >::parse_function_definition ( std::string &  func_def,
function_definition cf 
)
inlineprivate

Definition at line 703 of file exprtk_mpfr_repl.cpp.

704 {
705 parse_function_definition_impl parser;
706 return parser.process(func_def,cf);
707 }

References expression_processor< T >::parse_function_definition_impl::process().

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

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

◆ parse_function_definition() [2/2]

template<typename T >
func_parse_result expression_processor< T >::parse_function_definition ( std::string &  func_def,
function_definition cf 
)
inlineprivate

Definition at line 699 of file exprtk_repl.cpp.

700 {
701 parse_function_definition_impl parser;
702 return parser.process(func_def,cf);
703 }

◆ perform_symbol_dump() [1/2]

template<typename T >
void expression_processor< T >::perform_symbol_dump ( const symbol_list_t variable_list) const
inlineprivate

Definition at line 520 of file exprtk_mpfr_repl.cpp.

521 {
522 for (std::size_t i = 0; i < variable_list.size(); ++i)
523 {
524 const symbol_t& symbol = variable_list[i];
525
526 switch (symbol.second)
527 {
528 case parser_t::e_st_variable : printf("[%02d] Variable %s\n",
529 static_cast<int>(i),symbol.first.c_str());
530 break;
531
532 case parser_t::e_st_vector : printf("[%02d] Vector %s\n",
533 static_cast<int>(i),symbol.first.c_str());
534 break;
535
536 case parser_t::e_st_string : printf("[%02d] String %s\n",
537 static_cast<int>(i),symbol.first.c_str());
538 break;
539
540 case parser_t::e_st_function : printf("[%02d] Function %s\n",
541 static_cast<int>(i),symbol.first.c_str());
542 break;
543
545 : printf("[%02d] LocalVar %s\n",
546 static_cast<int>(i),symbol.first.c_str());
547 break;
548
550 : printf("[%02d] LocalVec %s\n",
551 static_cast<int>(i),symbol.first.c_str());
552 break;
553
555 : printf("[%02d] LocalStr %s\n",
556 static_cast<int>(i),symbol.first.c_str());
557 break;
558
559 default : break;
560 }
561 }
562 }
parser_t::dependent_entity_collector::symbol_t symbol_t

References exprtk::parser< T >::e_st_function, exprtk::parser< T >::e_st_local_string, exprtk::parser< T >::e_st_local_variable, exprtk::parser< T >::e_st_local_vector, exprtk::parser< T >::e_st_string, exprtk::parser< T >::e_st_variable, and exprtk::parser< T >::e_st_vector.

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

Here is the caller graph for this function:

◆ perform_symbol_dump() [2/2]

template<typename T >
void expression_processor< T >::perform_symbol_dump ( const symbol_list_t variable_list) const
inlineprivate

Definition at line 516 of file exprtk_repl.cpp.

517 {
518 for (std::size_t i = 0; i < variable_list.size(); ++i)
519 {
520 const symbol_t& symbol = variable_list[i];
521
522 switch (symbol.second)
523 {
524 case parser_t::e_st_variable : printf("[%02d] Variable %s\n",
525 static_cast<int>(i),symbol.first.c_str());
526 break;
527
528 case parser_t::e_st_vector : printf("[%02d] Vector %s\n",
529 static_cast<int>(i),symbol.first.c_str());
530 break;
531
532 case parser_t::e_st_string : printf("[%02d] String %s\n",
533 static_cast<int>(i),symbol.first.c_str());
534 break;
535
536 case parser_t::e_st_function : printf("[%02d] Function %s\n",
537 static_cast<int>(i),symbol.first.c_str());
538 break;
539
541 : printf("[%02d] LocalVar %s\n",
542 static_cast<int>(i),symbol.first.c_str());
543 break;
544
546 : printf("[%02d] LocalVec %s\n",
547 static_cast<int>(i),symbol.first.c_str());
548 break;
549
551 : printf("[%02d] LocalStr %s\n",
552 static_cast<int>(i),symbol.first.c_str());
553 break;
554
555 default : break;
556 }
557 }
558 }

References exprtk::parser< T >::e_st_function, exprtk::parser< T >::e_st_local_string, exprtk::parser< T >::e_st_local_variable, exprtk::parser< T >::e_st_local_vector, exprtk::parser< T >::e_st_string, exprtk::parser< T >::e_st_variable, and exprtk::parser< T >::e_st_vector.

◆ persist_symbol_table() [1/2]

template<typename T >
bool & expression_processor< T >::persist_symbol_table ( )
inline

Definition at line 183 of file exprtk_mpfr_repl.cpp.

184 {
186 }

References expression_processor< T >::persist_symbol_table_.

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

Here is the caller graph for this function:

◆ persist_symbol_table() [2/2]

template<typename T >
bool & expression_processor< T >::persist_symbol_table ( )
inline

Definition at line 181 of file exprtk_repl.cpp.

182 {
184 }

References expression_processor< T >::persist_symbol_table_.

◆ print_results() [1/2]

template<typename T >
void expression_processor< T >::print_results ( const exprtk::results_context< T > &  results)
inlineprivate

Definition at line 468 of file exprtk_mpfr_repl.cpp.

469 {
470 typedef exprtk::results_context<T> results_context_t;
471 typedef typename results_context_t::type_store_t type_t;
472 typedef typename type_t::scalar_view scalar_t;
473 typedef typename type_t::vector_view vector_t;
474 typedef typename type_t::string_view string_t;
475
477
478 printf("%s\n",std::string(10,'-').c_str());
479 printf("Return Results (#%d)\n",static_cast<int>(results.count()));
480
481 for (std::size_t i = 0; i < results.count(); ++i)
482 {
483 printf("[%02d] ",static_cast<int>(i));
484
485 type_t t = results[i];
486
487 switch (t.type)
488 {
489 case type_t::e_scalar : printf("Scalar\t");
490 exprtk::rtl::io::details::print_type("%10.5f",scalar_t(t)(),num_type);
491 break;
492
493 case type_t::e_vector : {
494 printf("Vector\t");
495 vector_t vector(t);
496
497 for (std::size_t x = 0; x < vector.size(); ++x)
498 {
499 exprtk::rtl::io::details::print_type("%10.5f",vector[x],num_type);
500
501 if ((x + 1) < vector.size())
502 printf(" ");
503 }
504 }
505 break;
506
507 case type_t::e_string : printf("String\t");
508 printf("%s",to_str(string_t(t)).c_str());
509 break;
510
511 default : continue;
512 }
513
514 printf("\n");
515 }
516
517 printf("%s\n",std::string(10,'-').c_str());
518 }
std::size_t count() const
Definition exprtk.hpp:4822
std::string to_str(int i)
Definition exprtk.hpp:271
void print_type(const std::string &fmt, const T v, exprtk::details::numeric::details::real_type_tag)
Definition exprtk.hpp:41957

References exprtk::results_context< T >::count(), and exprtk::rtl::io::details::print_type().

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

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

◆ print_results() [2/2]

template<typename T >
void expression_processor< T >::print_results ( const exprtk::results_context< T > &  results)
inlineprivate

Definition at line 464 of file exprtk_repl.cpp.

465 {
466 typedef exprtk::results_context<T> results_context_t;
467 typedef typename results_context_t::type_store_t type_t;
468 typedef typename type_t::scalar_view scalar_t;
469 typedef typename type_t::vector_view vector_t;
470 typedef typename type_t::string_view string_t;
471
473
474 printf("%s\n",std::string(10,'-').c_str());
475 printf("Return Results (#%d)\n",static_cast<int>(results.count()));
476
477 for (std::size_t i = 0; i < results.count(); ++i)
478 {
479 printf("[%02d] ",static_cast<int>(i));
480
481 type_t t = results[i];
482
483 switch (t.type)
484 {
485 case type_t::e_scalar : printf("Scalar\t");
486 exprtk::rtl::io::details::print_type("%10.5f",scalar_t(t)(),num_type);
487 break;
488
489 case type_t::e_vector : {
490 printf("Vector\t");
491 vector_t vector(t);
492
493 for (std::size_t x = 0; x < vector.size(); ++x)
494 {
495 exprtk::rtl::io::details::print_type("%10.5f",vector[x],num_type);
496
497 if ((x + 1) < vector.size())
498 printf(" ");
499 }
500 }
501 break;
502
503 case type_t::e_string : printf("String\t");
504 printf("%s",to_str(string_t(t)).c_str());
505 break;
506
507 default : continue;
508 }
509
510 printf("\n");
511 }
512
513 printf("%s\n",std::string(10,'-').c_str());
514 }

References exprtk::results_context< T >::count(), and exprtk::rtl::io::details::print_type().

Here is the call graph for this function:

◆ process() [1/2]

template<typename T >
void expression_processor< T >::process ( std::string  program)
inline

Definition at line 228 of file exprtk_mpfr_repl.cpp.

229 {
230 program = trim_whitespace(program);
231
232 if (program.empty())
233 return;
234
236
237 expression_t expression;
238 expression.register_symbol_table(symbol_table_);
239 expression.register_symbol_table(function_symbol_table_);
240
241 exprtk::timer compile_timer;
242 compile_timer.start();
243
244 if (enable_usr_)
246 else
248
251 else
253
256
258
259 if (!parser_.compile(program,expression))
260 {
261 printf("Error: %s\tExpression:%c%s\n",
262 parser_.error().c_str(),
263 ((std::string::npos != program.find_first_of('\n')) ? '\n' : ' '),
264 ((program.size() < 200) ? program.c_str() : "....."));
265
266 for (std::size_t i = 0; i < parser_.error_count(); ++i)
267 {
268 error_t error = parser_.get_error(i);
269
270 printf("Err No.: %02d Pos: %02d Type: [%14s] Msg: %s\n",
271 static_cast<unsigned int>(i),
272 static_cast<unsigned int>(error.token.position),
273 exprtk::parser_error::to_str(error.mode).c_str(),
274 error.diagnostic.c_str());
275
276 if (
277 (0 == i) &&
279 )
280 {
281 printf("Error (line: %d column: %d)\n",
282 static_cast<unsigned int>(error.line_no),
283 static_cast<unsigned int>(error.column_no));
284
285 printf("%s \n",error.error_line.c_str());
286 printf("%s^\n",std::string(error.column_no,'~').c_str());
287 }
288 }
289
290 return;
291 }
292
293 compile_timer.stop();
294
296 {
297 printf("\nCompile time: %6.3fms\n",compile_timer.time() * 1000.0);
298 }
299
300 if (batch_runs_cnt_)
301 {
302 std::vector<double> timings(batch_runs_cnt_,0.0);
303
304 exprtk::timer total_timer;
305 exprtk::timer timer;
306
307 T result = T(0);
308
309 total_timer.start();
310
311 for (std::size_t i = 0; i < batch_runs_cnt_; ++i)
312 {
313 timer.start();
314
315 result = expression.value();
316
317 timer.stop();
318
319 timings[i] = timer.time() * 1000.0;
320 }
321
322 total_timer.stop();
323
324 printf("\nresult: %s\n",result.toString().c_str());
325
326 std::sort(timings.begin(),timings.end());
327
328 printf("\nRuns: %4d Time min %7.3fms\tmax: %7.3fms\tavg: %7.3fms\ttot: %7.3fms 90%%:%7.3fms\n",
329 static_cast<unsigned int>(batch_runs_cnt_),
330 timings.front(),
331 timings.back (),
332 std::accumulate(timings.begin(),timings.end(),0.0) / timings.size(),
333 total_timer.time() * 1000.0,
334 timings[static_cast<int>(timings.size() * 0.90)]);
335
336 return;
337 }
338
339 exprtk::timer timer;
340 timer.start();
341
342 T result = expression.value();
343
344 timer.stop();
345
346 if (expression.results().count())
347 {
348 print_results(expression.results());
349 }
350
351 printf("\nresult: %s\n",result.toString().c_str());
352
354 {
355 printf("\nTotal time: %6.3fms\n",timer.time() * 1000.0);
356 }
357
358 if (symbol_dump_)
359 {
360 symbol_list_t symbol_list;
361
362 parser_.dec().symbols(symbol_list);
363
364 printf("------ Symbols ------\n");
365 perform_symbol_dump(symbol_list);
366 printf("---------------------\n");
367 }
368
370 {
371 symbol_list_t assignment_list;
372
373 parser_.dec().assignment_symbols(assignment_list);
374
375 printf("---- Assignments ----\n");
376 perform_symbol_dump(assignment_list);
377 printf("---------------------\n");
378 }
379 }
void print_results(const exprtk::results_context< T > &results)
exprtk::expression< T > expression_t
void perform_symbol_dump(const symbol_list_t &variable_list) const
std::vector< symbol_t > symbol_list_t
std::string trim_whitespace(std::string s)
exprtk::parser_error::type error_t
std::size_t assignment_symbols(Sequence< symbol_t, Allocator > &assignment_list)
Definition exprtk.hpp:22681
std::size_t symbols(Sequence< symbol_t, Allocator > &symbols_list)
Definition exprtk.hpp:22655
settings_store & disable_local_vardef()
Definition exprtk.hpp:23012
settings_store & enable_local_vardef()
Definition exprtk.hpp:22940
bool compile(const std::string &expression_string, expression< T > &expr)
Definition exprtk.hpp:23584
void enable_unknown_symbol_resolver(unknown_symbol_resolver *usr=reinterpret_cast< unknown_symbol_resolver * >(0))
Definition exprtk.hpp:23898
dependent_entity_collector & dec()
Definition exprtk.hpp:23873
parser_error::type get_error(const std::size_t &index) const
Definition exprtk.hpp:23850
std::string error() const
Definition exprtk.hpp:23858
std::size_t error_count() const
Definition exprtk.hpp:23868
void disable_unknown_symbol_resolver()
Definition exprtk.hpp:23913
settings_store & settings()
Definition exprtk.hpp:23845
double time() const
Definition exprtk.hpp:41912
bool update_error(type &error, const std::string &expression)
Definition exprtk.hpp:21265
std::string to_str(error_mode mode)
Definition exprtk.hpp:21249

References expression_processor< T >::assignment_dump_, exprtk::parser< T >::dependent_entity_collector::assignment_symbols(), expression_processor< T >::batch_runs_cnt_, exprtk::parser< T >::dependent_entity_collector::collect_assignments(), exprtk::parser< T >::dependent_entity_collector::collect_functions(), exprtk::parser< T >::dependent_entity_collector::collect_variables(), exprtk::parser_error::type::column_no, exprtk::parser< T >::compile(), exprtk::results_context< T >::count(), exprtk::parser< T >::dec(), exprtk::parser_error::type::diagnostic, exprtk::parser< T >::settings_store::disable_local_vardef(), expression_processor< T >::disable_local_vardef_, exprtk::parser< T >::disable_unknown_symbol_resolver(), expression_processor< T >::display_total_compile_time_, expression_processor< T >::display_total_time_, exprtk::parser< T >::settings_store::enable_local_vardef(), exprtk::parser< T >::enable_unknown_symbol_resolver(), expression_processor< T >::enable_usr_, exprtk::parser< T >::error(), exprtk::parser< T >::error_count(), exprtk::parser_error::type::error_line, expression_processor< T >::function_symbol_table_, exprtk::parser< T >::get_error(), exprtk::parser_error::type::line_no, exprtk::parser_error::type::mode, expression_processor< T >::parser_, expression_processor< T >::perform_symbol_dump(), exprtk::lexer::token::position, expression_processor< T >::print_results(), exprtk::expression< T >::register_symbol_table(), exprtk::expression< T >::results(), exprtk::parser< T >::settings(), expression_processor< T >::setup_symbol_table(), exprtk::timer::start(), exprtk::timer::stop(), expression_processor< T >::symbol_dump_, expression_processor< T >::symbol_table_, exprtk::parser< T >::dependent_entity_collector::symbols(), exprtk::timer::time(), exprtk::parser_error::to_str(), exprtk::parser_error::type::token, expression_processor< T >::trim_whitespace(), exprtk::parser_error::update_error(), and exprtk::expression< T >::value().

Referenced by expression_processor< T >::process_function_definition(), expression_processor< T >::process_multiline(), and repl().

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

◆ process() [2/2]

template<typename T >
void expression_processor< T >::process ( std::string  program)
inline

Definition at line 226 of file exprtk_repl.cpp.

227 {
228 program = trim_whitespace(program);
229
230 if (program.empty())
231 return;
232
234
235 expression_t expression;
236 expression.register_symbol_table(symbol_table_);
237 expression.register_symbol_table(function_symbol_table_);
238
239 exprtk::timer compile_timer;
240 compile_timer.start();
241
242 if (enable_usr_)
244 else
246
249 else
251
254
256
257 if (!parser_.compile(program,expression))
258 {
259 printf("Error: %s\tExpression:%c%s\n",
260 parser_.error().c_str(),
261 ((std::string::npos != program.find_first_of('\n')) ? '\n' : ' '),
262 ((program.size() < 200) ? program.c_str() : "....."));
263
264 for (std::size_t i = 0; i < parser_.error_count(); ++i)
265 {
266 error_t error = parser_.get_error(i);
267
268 printf("Err No.: %02d Pos: %02d Type: [%14s] Msg: %s\n",
269 static_cast<unsigned int>(i),
270 static_cast<unsigned int>(error.token.position),
271 exprtk::parser_error::to_str(error.mode).c_str(),
272 error.diagnostic.c_str());
273
274 if (
275 (0 == i) &&
277 )
278 {
279 printf("Error (line: %d column: %d)\n",
280 static_cast<unsigned int>(error.line_no),
281 static_cast<unsigned int>(error.column_no));
282
283 printf("%s \n",error.error_line.c_str());
284 printf("%s^\n",std::string(error.column_no,'~').c_str());
285 }
286 }
287
288 return;
289 }
290
291 compile_timer.stop();
292
294 {
295 printf("\nCompile time: %6.3fms\n",compile_timer.time() * 1000.0);
296 }
297
298 if (batch_runs_cnt_)
299 {
300 std::vector<double> timings(batch_runs_cnt_,0.0);
301
302 exprtk::timer total_timer;
303 exprtk::timer timer;
304
305 T result = T(0);
306
307 total_timer.start();
308
309 for (std::size_t i = 0; i < batch_runs_cnt_; ++i)
310 {
311 timer.start();
312
313 result = expression.value();
314
315 timer.stop();
316
317 timings[i] = timer.time() * 1000.0;
318 }
319
320 total_timer.stop();
321
322 printf("\nResult: %15.9f\n",result);
323
324 std::sort(timings.begin(),timings.end());
325
326 printf("\nRuns: %4d Time min: %7.3fms max: %7.3fms avg: %7.3fms tot: %7.3fms 90%%:%7.3fms\n",
327 static_cast<unsigned int>(batch_runs_cnt_),
328 timings.front(),
329 timings.back (),
330 std::accumulate(timings.begin(),timings.end(),0.0) / timings.size(),
331 total_timer.time() * 1000.0,
332 timings[static_cast<int>(timings.size() * 0.90)]);
333
334 return;
335 }
336
337 exprtk::timer timer;
338 timer.start();
339
340 const T result = expression.value();
341
342 timer.stop();
343
344 if (expression.results().count())
345 {
346 print_results(expression.results());
347 }
348
349 printf("\nResult: %15.9f\n",result);
350
352 {
353 printf("\nTotal time: %6.3fms\n",timer.time() * 1000.0);
354 }
355
356 if (symbol_dump_)
357 {
358 symbol_list_t symbol_list;
359
360 parser_.dec().symbols(symbol_list);
361
362 printf("------ Symbols ------\n");
363 perform_symbol_dump(symbol_list);
364 printf("---------------------\n");
365 }
366
368 {
369 symbol_list_t assignment_list;
370
371 parser_.dec().assignment_symbols(assignment_list);
372
373 printf("---- Assignments ----\n");
374 perform_symbol_dump(assignment_list);
375 printf("---------------------\n");
376 }
377 }

References expression_processor< T >::assignment_dump_, exprtk::parser< T >::dependent_entity_collector::assignment_symbols(), expression_processor< T >::batch_runs_cnt_, exprtk::parser< T >::dependent_entity_collector::collect_assignments(), exprtk::parser< T >::dependent_entity_collector::collect_functions(), exprtk::parser< T >::dependent_entity_collector::collect_variables(), exprtk::parser_error::type::column_no, exprtk::parser< T >::compile(), exprtk::results_context< T >::count(), exprtk::parser< T >::dec(), exprtk::parser_error::type::diagnostic, exprtk::parser< T >::settings_store::disable_local_vardef(), expression_processor< T >::disable_local_vardef_, exprtk::parser< T >::disable_unknown_symbol_resolver(), expression_processor< T >::display_total_compile_time_, expression_processor< T >::display_total_time_, exprtk::parser< T >::settings_store::enable_local_vardef(), exprtk::parser< T >::enable_unknown_symbol_resolver(), expression_processor< T >::enable_usr_, exprtk::parser< T >::error(), exprtk::parser< T >::error_count(), exprtk::parser_error::type::error_line, expression_processor< T >::function_symbol_table_, exprtk::parser< T >::get_error(), exprtk::parser_error::type::line_no, exprtk::parser_error::type::mode, expression_processor< T >::parser_, expression_processor< T >::perform_symbol_dump(), exprtk::lexer::token::position, expression_processor< T >::print_results(), exprtk::expression< T >::register_symbol_table(), exprtk::expression< T >::results(), exprtk::parser< T >::settings(), expression_processor< T >::setup_symbol_table(), exprtk::timer::start(), exprtk::timer::stop(), expression_processor< T >::symbol_dump_, expression_processor< T >::symbol_table_, exprtk::parser< T >::dependent_entity_collector::symbols(), exprtk::timer::time(), exprtk::parser_error::to_str(), exprtk::parser_error::type::token, expression_processor< T >::trim_whitespace(), exprtk::parser_error::update_error(), and exprtk::expression< T >::value().

Here is the call graph for this function:

◆ process_batch_run() [1/2]

template<typename T >
void expression_processor< T >::process_batch_run ( const std::string &  batch_runs_cnt)
inlineprivate

Definition at line 564 of file exprtk_mpfr_repl.cpp.

565 {
566 batch_runs_cnt_ = atoi(batch_runs_cnt.c_str());
567 }

References expression_processor< T >::batch_runs_cnt_.

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

Here is the caller graph for this function:

◆ process_batch_run() [2/2]

template<typename T >
void expression_processor< T >::process_batch_run ( const std::string &  batch_runs_cnt)
inlineprivate

Definition at line 560 of file exprtk_repl.cpp.

561 {
562 batch_runs_cnt_ = atoi(batch_runs_cnt.c_str());
563 }

References expression_processor< T >::batch_runs_cnt_.

◆ process_directive() [1/2]

template<typename T >
void expression_processor< T >::process_directive ( std::string  expression)
inline

Definition at line 402 of file exprtk_mpfr_repl.cpp.

403 {
404 expression = trim_whitespace(expression);
405
406 if ('$' != expression[0])
407 return;
408 else if ("$enable_cache" == expression)
409 persist_symbol_table() = true;
410 else if ("$disable_cache" == expression)
411 persist_symbol_table() = false;
412 else if ("$enable_symbol_dump" == expression)
413 symbol_dump() = true;
414 else if ("$disable_symbol_dump" == expression)
415 symbol_dump() = false;
416 else if ("$enable_assignment_dump" == expression)
417 assignment_dump() = true;
418 else if ("$disable_assignment_dump" == expression)
419 assignment_dump() = false;
420 else if ("$enable_timer" == expression)
421 display_total_time() = true;
422 else if ("$enable_compile_timer" == expression)
424 else if ("$disable_timer" == expression)
425 display_total_time() = false;
426 else if ("$disable_compile_timer" == expression)
428 else if ("$enable_usr" == expression)
429 enable_usr() = true;
430 else if ("$disable_usr" == expression)
431 enable_usr() = false;
432 else if ("$enable_local_vardef" == expression)
433 disable_local_vardef() = false;
434 else if ("$disable_local_vardef" == expression)
435 disable_local_vardef() = true;
436 else if ("$list_vars" == expression)
437 list_symbols();
438 else if ("$clear_functions" == expression)
440 else if ((0 == expression.find("$set_mpfr_prec ")) && (expression.size() > 15))
441 mpfr::mpreal::set_default_prec(atoi(expression.substr(14,expression.size() - 14).c_str()));
442 else if ((0 == expression.find("$batch_run ")) && (expression.size() > 12))
443 process_batch_run(expression.substr(11,expression.size() - 11));
444 else if ((0 == expression.find("$load ")) && (expression.size() > 7))
445 process_from_file(expression.substr(6,expression.size() - 6));
446 else if ((0 == expression.find("$disable arithmetic ")) && (expression.size() >= 21))
447 process_disable_arithmetic(expression.substr(20,expression.size() - 20));
448 else if ((0 == expression.find("$disable assignment ")) && (expression.size() >= 21))
449 process_disable_assignment(expression.substr(20,expression.size() - 20));
450 else if ((0 == expression.find("$disable inequality ")) && (expression.size() >= 21))
451 process_disable_inequality(expression.substr(20,expression.size() - 20));
452 else if ((0 == expression.find("$enable arithmetic ")) && (expression.size() >= 20))
453 process_enable_arithmetic(expression.substr(19,expression.size() - 19));
454 else if ((0 == expression.find("$enable assignment ")) && (expression.size() >= 20))
455 process_enable_assignment(expression.substr(19,expression.size() - 19));
456 else if ((0 == expression.find("$enable inequality ")) && (expression.size() >= 20))
457 process_enable_inequality(expression.substr(19,expression.size() - 19));
458 else if ("$begin" == expression)
460 else if (0 == expression.find("$function"))
461 process_function_definition(expression);
462 else
463 printf("\nERROR - Invalid directive: %s\n",expression.c_str());
464 }
void process_enable_inequality(const std::string &inequality)
void process_disable_inequality(const std::string &inequality)
void process_enable_assignment(const std::string &assignment)
void process_batch_run(const std::string &batch_runs_cnt)
void process_disable_arithmetic(const std::string &arithmetic)
void process_disable_assignment(const std::string &assignment)
void process_function_definition(const std::string &func_def_header, bool read_stdin=true)
void process_from_file(const std::string &file_name)
void process_enable_arithmetic(const std::string &arithmetic)

References expression_processor< T >::assignment_dump(), expression_processor< T >::clear_functions(), expression_processor< T >::disable_local_vardef(), expression_processor< T >::display_total_compile_time(), expression_processor< T >::display_total_time(), expression_processor< T >::enable_usr(), expression_processor< T >::list_symbols(), expression_processor< T >::persist_symbol_table(), expression_processor< T >::process_batch_run(), expression_processor< T >::process_disable_arithmetic(), expression_processor< T >::process_disable_assignment(), expression_processor< T >::process_disable_inequality(), expression_processor< T >::process_enable_arithmetic(), expression_processor< T >::process_enable_assignment(), expression_processor< T >::process_enable_inequality(), expression_processor< T >::process_from_file(), expression_processor< T >::process_function_definition(), expression_processor< T >::process_multiline(), expression_processor< T >::symbol_dump(), and expression_processor< T >::trim_whitespace().

Referenced by repl().

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

◆ process_directive() [2/2]

template<typename T >
void expression_processor< T >::process_directive ( std::string  expression)
inline

Definition at line 400 of file exprtk_repl.cpp.

401 {
402 expression = trim_whitespace(expression);
403
404 if ('$' != expression[0])
405 return;
406 else if ("$enable_cache" == expression)
407 persist_symbol_table() = true;
408 else if ("$disable_cache" == expression)
409 persist_symbol_table() = false;
410 else if ("$enable_symbol_dump" == expression)
411 symbol_dump() = true;
412 else if ("$disable_symbol_dump" == expression)
413 symbol_dump() = false;
414 else if ("$enable_assignment_dump" == expression)
415 assignment_dump() = true;
416 else if ("$disable_assignment_dump" == expression)
417 assignment_dump() = false;
418 else if ("$enable_timer" == expression)
419 display_total_time() = true;
420 else if ("$enable_compile_timer" == expression)
422 else if ("$disable_timer" == expression)
423 display_total_time() = false;
424 else if ("$disable_compile_timer" == expression)
426 else if ("$enable_usr" == expression)
427 enable_usr() = true;
428 else if ("$disable_usr" == expression)
429 enable_usr() = false;
430 else if ("$enable_local_vardef" == expression)
431 disable_local_vardef() = false;
432 else if ("$disable_local_vardef" == expression)
433 disable_local_vardef() = true;
434 else if ("$list_vars" == expression)
435 list_symbols();
436 else if ("$clear_functions" == expression)
438 else if ((0 == expression.find("$batch_run ")) && (expression.size() >= 12))
439 process_batch_run(expression.substr(11,expression.size() - 11));
440 else if ((0 == expression.find("$load ")) && (expression.size() > 7))
441 process_from_file(expression.substr(6,expression.size() - 6));
442 else if ((0 == expression.find("$disable arithmetic ")) && (expression.size() >= 21))
443 process_disable_arithmetic(expression.substr(20,expression.size() - 20));
444 else if ((0 == expression.find("$disable assignment ")) && (expression.size() >= 21))
445 process_disable_assignment(expression.substr(20,expression.size() - 20));
446 else if ((0 == expression.find("$disable inequality ")) && (expression.size() >= 21))
447 process_disable_inequality(expression.substr(20,expression.size() - 20));
448 else if ((0 == expression.find("$enable arithmetic ")) && (expression.size() >= 20))
449 process_enable_arithmetic(expression.substr(19,expression.size() - 19));
450 else if ((0 == expression.find("$enable assignment ")) && (expression.size() >= 20))
451 process_enable_assignment(expression.substr(19,expression.size() - 19));
452 else if ((0 == expression.find("$enable inequality ")) && (expression.size() >= 20))
453 process_enable_inequality(expression.substr(19,expression.size() - 19));
454 else if ("$begin" == expression)
456 else if (0 == expression.find("$function"))
457 process_function_definition(expression);
458 else
459 printf("\nERROR - Invalid directive: %s\n",expression.c_str());
460 }

References expression_processor< T >::assignment_dump(), expression_processor< T >::clear_functions(), expression_processor< T >::disable_local_vardef(), expression_processor< T >::display_total_compile_time(), expression_processor< T >::display_total_time(), expression_processor< T >::enable_usr(), expression_processor< T >::list_symbols(), expression_processor< T >::persist_symbol_table(), expression_processor< T >::process_batch_run(), expression_processor< T >::process_disable_arithmetic(), expression_processor< T >::process_disable_assignment(), expression_processor< T >::process_disable_inequality(), expression_processor< T >::process_enable_arithmetic(), expression_processor< T >::process_enable_assignment(), expression_processor< T >::process_enable_inequality(), expression_processor< T >::process_from_file(), expression_processor< T >::process_function_definition(), expression_processor< T >::process_multiline(), expression_processor< T >::symbol_dump(), and expression_processor< T >::trim_whitespace().

Here is the call graph for this function:

◆ process_disable_arithmetic() [1/2]

template<typename T >
void expression_processor< T >::process_disable_arithmetic ( const std::string &  arithmetic)
inlineprivate

Definition at line 876 of file exprtk_mpfr_repl.cpp.

877 {
878 typename std::map<std::string,typename settings_store_t::settings_arithmetic_opr>::iterator itr;
879
880 if (arith_opr_.end() != (itr = arith_opr_.find(arithmetic)))
881 {
883 .disable_arithmetic_operation(itr->second);
884 }
885 }
settings_store & disable_arithmetic_operation(const settings_arithmetic_opr arithmetic)
Definition exprtk.hpp:23194

References expression_processor< T >::arith_opr_, exprtk::parser< T >::settings_store::disable_arithmetic_operation(), expression_processor< T >::parser_, and exprtk::parser< T >::settings().

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

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

◆ process_disable_arithmetic() [2/2]

template<typename T >
void expression_processor< T >::process_disable_arithmetic ( const std::string &  arithmetic)
inlineprivate

Definition at line 872 of file exprtk_repl.cpp.

873 {
874 typename std::map<std::string,typename settings_store_t::settings_arithmetic_opr>::iterator itr;
875
876 if (arith_opr_.end() != (itr = arith_opr_.find(arithmetic)))
877 {
879 .disable_arithmetic_operation(itr->second);
880 }
881 }

References expression_processor< T >::arith_opr_, exprtk::parser< T >::settings_store::disable_arithmetic_operation(), expression_processor< T >::parser_, and exprtk::parser< T >::settings().

Here is the call graph for this function:

◆ process_disable_assignment() [1/2]

template<typename T >
void expression_processor< T >::process_disable_assignment ( const std::string &  assignment)
inlineprivate

Definition at line 887 of file exprtk_mpfr_repl.cpp.

888 {
889 typename std::map<std::string,typename settings_store_t::settings_assignment_opr>::iterator itr;
890
891 if (assign_opr_.end() != (itr = assign_opr_.find(assignment)))
892 {
894 .disable_assignment_operation(itr->second);
895 }
896 }
settings_store & disable_assignment_operation(const settings_assignment_opr assignment)
Definition exprtk.hpp:23207

References expression_processor< T >::assign_opr_, exprtk::parser< T >::settings_store::disable_assignment_operation(), expression_processor< T >::parser_, and exprtk::parser< T >::settings().

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

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

◆ process_disable_assignment() [2/2]

template<typename T >
void expression_processor< T >::process_disable_assignment ( const std::string &  assignment)
inlineprivate

Definition at line 883 of file exprtk_repl.cpp.

884 {
885 typename std::map<std::string,typename settings_store_t::settings_assignment_opr>::iterator itr;
886
887 if (assign_opr_.end() != (itr = assign_opr_.find(assignment)))
888 {
890 .disable_assignment_operation(itr->second);
891 }
892 }

References expression_processor< T >::assign_opr_, exprtk::parser< T >::settings_store::disable_assignment_operation(), expression_processor< T >::parser_, and exprtk::parser< T >::settings().

Here is the call graph for this function:

◆ process_disable_inequality() [1/2]

template<typename T >
void expression_processor< T >::process_disable_inequality ( const std::string &  inequality)
inlineprivate

Definition at line 898 of file exprtk_mpfr_repl.cpp.

899 {
900 typename std::map<std::string,typename settings_store_t::settings_inequality_opr>::iterator itr;
901
902 if (inequality_opr_.end() != (itr = inequality_opr_.find(inequality)))
903 {
905 .disable_inequality_operation(itr->second);
906 }
907 }
settings_store & disable_inequality_operation(const settings_inequality_opr inequality)
Definition exprtk.hpp:23220

References exprtk::parser< T >::settings_store::disable_inequality_operation(), expression_processor< T >::inequality_opr_, expression_processor< T >::parser_, and exprtk::parser< T >::settings().

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

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

◆ process_disable_inequality() [2/2]

template<typename T >
void expression_processor< T >::process_disable_inequality ( const std::string &  inequality)
inlineprivate

Definition at line 894 of file exprtk_repl.cpp.

895 {
896 typename std::map<std::string,typename settings_store_t::settings_inequality_opr>::iterator itr;
897
898 if (inequality_opr_.end() != (itr = inequality_opr_.find(inequality)))
899 {
901 .disable_inequality_operation(itr->second);
902 }
903 }

References exprtk::parser< T >::settings_store::disable_inequality_operation(), expression_processor< T >::inequality_opr_, expression_processor< T >::parser_, and exprtk::parser< T >::settings().

Here is the call graph for this function:

◆ process_enable_arithmetic() [1/2]

template<typename T >
void expression_processor< T >::process_enable_arithmetic ( const std::string &  arithmetic)
inlineprivate

Definition at line 909 of file exprtk_mpfr_repl.cpp.

910 {
911 typename std::map<std::string,typename settings_store_t::settings_arithmetic_opr>::iterator itr;
912
913 if (arith_opr_.end() != (itr = arith_opr_.find(arithmetic)))
914 {
916 .enable_arithmetic_operation(itr->second);
917 }
918 }
settings_store & enable_arithmetic_operation(const settings_arithmetic_opr arithmetic)
Definition exprtk.hpp:23287

References expression_processor< T >::arith_opr_, exprtk::parser< T >::settings_store::enable_arithmetic_operation(), expression_processor< T >::parser_, and exprtk::parser< T >::settings().

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

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

◆ process_enable_arithmetic() [2/2]

template<typename T >
void expression_processor< T >::process_enable_arithmetic ( const std::string &  arithmetic)
inlineprivate

Definition at line 905 of file exprtk_repl.cpp.

906 {
907 typename std::map<std::string,typename settings_store_t::settings_arithmetic_opr>::iterator itr;
908
909 if (arith_opr_.end() != (itr = arith_opr_.find(arithmetic)))
910 {
912 .enable_arithmetic_operation(itr->second);
913 }
914 }

References expression_processor< T >::arith_opr_, exprtk::parser< T >::settings_store::enable_arithmetic_operation(), expression_processor< T >::parser_, and exprtk::parser< T >::settings().

Here is the call graph for this function:

◆ process_enable_assignment() [1/2]

template<typename T >
void expression_processor< T >::process_enable_assignment ( const std::string &  assignment)
inlineprivate

Definition at line 920 of file exprtk_mpfr_repl.cpp.

921 {
922 typename std::map<std::string,typename settings_store_t::settings_assignment_opr>::iterator itr;
923
924 if (assign_opr_.end() != (itr = assign_opr_.find(assignment)))
925 {
927 .enable_assignment_operation(itr->second);
928 }
929 }
settings_store & enable_assignment_operation(const settings_assignment_opr assignment)
Definition exprtk.hpp:23305

References expression_processor< T >::assign_opr_, exprtk::parser< T >::settings_store::enable_assignment_operation(), expression_processor< T >::parser_, and exprtk::parser< T >::settings().

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

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

◆ process_enable_assignment() [2/2]

template<typename T >
void expression_processor< T >::process_enable_assignment ( const std::string &  assignment)
inlineprivate

Definition at line 916 of file exprtk_repl.cpp.

917 {
918 typename std::map<std::string,typename settings_store_t::settings_assignment_opr>::iterator itr;
919
920 if (assign_opr_.end() != (itr = assign_opr_.find(assignment)))
921 {
923 .enable_assignment_operation(itr->second);
924 }
925 }

References expression_processor< T >::assign_opr_, exprtk::parser< T >::settings_store::enable_assignment_operation(), expression_processor< T >::parser_, and exprtk::parser< T >::settings().

Here is the call graph for this function:

◆ process_enable_inequality() [1/2]

template<typename T >
void expression_processor< T >::process_enable_inequality ( const std::string &  inequality)
inlineprivate

Definition at line 931 of file exprtk_mpfr_repl.cpp.

932 {
933 typename std::map<std::string,typename settings_store_t::settings_inequality_opr>::iterator itr;
934
935 if (inequality_opr_.end() != (itr = inequality_opr_.find(inequality)))
936 {
938 .enable_inequality_operation(itr->second);
939 }
940 }
settings_store & enable_inequality_operation(const settings_inequality_opr inequality)
Definition exprtk.hpp:23323

References exprtk::parser< T >::settings_store::enable_inequality_operation(), expression_processor< T >::inequality_opr_, expression_processor< T >::parser_, and exprtk::parser< T >::settings().

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

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

◆ process_enable_inequality() [2/2]

template<typename T >
void expression_processor< T >::process_enable_inequality ( const std::string &  inequality)
inlineprivate

Definition at line 927 of file exprtk_repl.cpp.

928 {
929 typename std::map<std::string,typename settings_store_t::settings_inequality_opr>::iterator itr;
930
931 if (inequality_opr_.end() != (itr = inequality_opr_.find(inequality)))
932 {
934 .enable_inequality_operation(itr->second);
935 }
936 }

References exprtk::parser< T >::settings_store::enable_inequality_operation(), expression_processor< T >::inequality_opr_, expression_processor< T >::parser_, and exprtk::parser< T >::settings().

Here is the call graph for this function:

◆ process_from_file() [1/2]

template<typename T >
void expression_processor< T >::process_from_file ( const std::string &  file_name)
inline

Definition at line 381 of file exprtk_mpfr_repl.cpp.

382 {
383 if (file_name.empty())
384 return;
385
386 std::ifstream stream(file_name.c_str());
387
388 if (!stream)
389 {
390 printf("ERROR: Failed to open file: %s\n\n",file_name.c_str());
391 return;
392 }
393
394 std::string program(
395 (std::istreambuf_iterator<char>(stream)),
396 (std::istreambuf_iterator<char>())
397 );
398
399 process_function_definition(program,false);
400 }

References expression_processor< T >::process_function_definition().

Referenced by expression_processor< T >::process_directive(), and repl().

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

◆ process_from_file() [2/2]

template<typename T >
void expression_processor< T >::process_from_file ( const std::string &  file_name)
inline

Definition at line 379 of file exprtk_repl.cpp.

380 {
381 if (file_name.empty())
382 return;
383
384 std::ifstream stream(file_name.c_str());
385
386 if (!stream)
387 {
388 printf("ERROR: Failed to open file: %s\n\n",file_name.c_str());
389 return;
390 }
391
392 std::string program(
393 (std::istreambuf_iterator<char>(stream)),
394 (std::istreambuf_iterator<char>())
395 );
396
397 process_function_definition(program,false);
398 }

References expression_processor< T >::process_function_definition().

Here is the call graph for this function:

◆ process_function_definition() [1/2]

template<typename T >
void expression_processor< T >::process_function_definition ( const std::string &  func_def_header,
bool  read_stdin = true 
)
inlineprivate

Definition at line 734 of file exprtk_mpfr_repl.cpp.

735 {
736 std::string func_def = func_def_header;
737
738 if (read_stdin)
739 {
740 func_def += read_from_stdin();
741
742 if (!func_def.empty() && ('$' == func_def[0]))
743 func_def.erase(func_def.begin());
744 }
745
746 do
747 {
748 function_definition fd;
749
750 func_parse_result fp_result = parse_function_definition(func_def,fd);
751
752 if (e_parse_success == fp_result)
753 {
754 std::string vars;
755
756 for (std::size_t i = 0; i < fd.var_list.size(); ++i)
757 {
758 vars += fd.var_list[i] + ((i < fd.var_list.size() - 1) ? "," : "");
759 }
760
761 function_t f(fd.name);
762
763 for (std::size_t i = 0; i < fd.var_list.size(); ++i)
764 {
765 f.var(fd.var_list[i]);
766 }
767
768 f.expression(fd.body);
769
771 {
773
774 for (std::size_t i = 0; i < func_def_list_.size(); ++i)
775 {
776 if (exprtk::details::imatch(fd.name, func_def_list_[i].name))
777 {
778 func_def_list_.erase(func_def_list_.begin() + i);
779
780 break;
781 }
782 }
783 }
784
785 if (!compositor_.add(f,true))
786 {
788
789 printf("Error - Failed to add function: %s\n",fd.name.c_str());
790
791 return;
792 }
793
794 printf("Function[%02d]\n",static_cast<int>(func_def_list_.size()));
795 printf("Name: %s \n",fd.name.c_str() );
796 printf("Vars: (%s) \n",vars.c_str() );
797 printf("------------------------------------------------------\n");
798
799 func_def_list_.push_back(fd);
800 }
801 else if (e_parse_notfunc != fp_result)
802 {
803 printf("Error - Critical parsing error - partial parse occured\n");
804 return;
805 }
806 else
807 break;
808 }
809 while (!func_def.empty());
810
811 if (!func_def.empty())
812 {
813 process(func_def);
814 }
815 }
func_parse_result parse_function_definition(std::string &func_def, function_definition &cf)
compositor_t::function function_t
void process(std::string program)
bool add(const std::string &name, const std::string &expression, const Sequence< std::string, Allocator > &var_list, const bool override=false)
Definition exprtk.hpp:41478
function_ptr get_function(const std::string &function_name) const
Definition exprtk.hpp:19944
bool remove_function(const std::string &function_name)
Definition exprtk.hpp:20335
bool imatch(const char_t c1, const char_t c2)
Definition exprtk.hpp:184

References exprtk::function_compositor< T >::add(), expression_processor< T >::function_definition::body, expression_processor< T >::compositor_, expression_processor< T >::e_parse_notfunc, expression_processor< T >::e_parse_success, exprtk::function_compositor< T >::function::expression(), expression_processor< T >::func_def_list_, expression_processor< T >::function_symbol_table_, exprtk::symbol_table< T >::get_function(), exprtk::details::imatch(), expression_processor< T >::function_definition::name, expression_processor< T >::parse_function_definition(), expression_processor< T >::process(), expression_processor< T >::read_from_stdin(), exprtk::symbol_table< T >::remove_function(), exprtk::function_compositor< T >::function::var(), and expression_processor< T >::function_definition::var_list.

Referenced by expression_processor< T >::process_directive(), and expression_processor< T >::process_from_file().

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

◆ process_function_definition() [2/2]

template<typename T >
void expression_processor< T >::process_function_definition ( const std::string &  func_def_header,
bool  read_stdin = true 
)
inlineprivate

Definition at line 730 of file exprtk_repl.cpp.

731 {
732 std::string func_def = func_def_header;
733
734 if (read_stdin)
735 {
736 func_def += read_from_stdin();
737
738 if (!func_def.empty() && ('$' == func_def[0]))
739 func_def.erase(func_def.begin());
740 }
741
742 do
743 {
744 function_definition fd;
745
746 func_parse_result fp_result = parse_function_definition(func_def,fd);
747
748 if (e_parse_success == fp_result)
749 {
750 std::string vars;
751
752 for (std::size_t i = 0; i < fd.var_list.size(); ++i)
753 {
754 vars += fd.var_list[i] + ((i < fd.var_list.size() - 1) ? "," : "");
755 }
756
757 function_t f(fd.name);
758
759 for (std::size_t i = 0; i < fd.var_list.size(); ++i)
760 {
761 f.var(fd.var_list[i]);
762 }
763
764 f.expression(fd.body);
765
767 {
769
770 for (std::size_t i = 0; i < func_def_list_.size(); ++i)
771 {
772 if (exprtk::details::imatch(fd.name, func_def_list_[i].name))
773 {
774 func_def_list_.erase(func_def_list_.begin() + i);
775
776 break;
777 }
778 }
779 }
780
781 if (!compositor_.add(f,true))
782 {
784
785 printf("Error - Failed to add function: %s\n",fd.name.c_str());
786
787 return;
788 }
789
790 printf("Function[%02d]\n",static_cast<int>(func_def_list_.size()));
791 printf("Name: %s \n",fd.name.c_str() );
792 printf("Vars: (%s) \n",vars.c_str() );
793 printf("------------------------------------------------------\n");
794
795 func_def_list_.push_back(fd);
796 }
797 else if (e_parse_notfunc != fp_result)
798 {
799 printf("Error - Critical parsing error - partial parse occurred\n");
800 return;
801 }
802 else
803 break;
804 }
805 while (!func_def.empty());
806
807 if (!func_def.empty())
808 {
809 process(func_def);
810 }
811 }

References exprtk::function_compositor< T >::add(), expression_processor< T >::compositor_, expression_processor< T >::e_parse_notfunc, expression_processor< T >::e_parse_success, exprtk::function_compositor< T >::function::expression(), expression_processor< T >::func_def_list_, expression_processor< T >::function_symbol_table_, exprtk::symbol_table< T >::get_function(), exprtk::details::imatch(), expression_processor< T >::parse_function_definition(), expression_processor< T >::process(), expression_processor< T >::read_from_stdin(), exprtk::symbol_table< T >::remove_function(), and exprtk::function_compositor< T >::function::var().

Here is the call graph for this function:

◆ process_multiline() [1/2]

template<typename T >
void expression_processor< T >::process_multiline ( )
inlineprivate

Definition at line 569 of file exprtk_mpfr_repl.cpp.

570 {
571 std::string program;
572
573 for ( ; ; )
574 {
575 std::string line;
576
577 std::cout << ">> ";
578 std::getline(std::cin,line);
579
580 line = trim_whitespace(line);
581
582 if (line.empty())
583 continue;
584 else if ("$end" == line)
585 break;
586 else
587 program += (line + "\n");
588 }
589
590 process(program);
591 }

References expression_processor< T >::process(), and expression_processor< T >::trim_whitespace().

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

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

◆ process_multiline() [2/2]

template<typename T >
void expression_processor< T >::process_multiline ( )
inlineprivate

Definition at line 565 of file exprtk_repl.cpp.

566 {
567 std::string program;
568
569 for ( ; ; )
570 {
571 std::string line;
572
573 std::cout << ">> ";
574 std::getline(std::cin,line);
575
576 line = trim_whitespace(line);
577
578 if (line.empty())
579 continue;
580 else if ("$end" == line)
581 break;
582 else
583 program += (line + "\n");
584 }
585
586 process(program);
587 }

References expression_processor< T >::process(), and expression_processor< T >::trim_whitespace().

Here is the call graph for this function:

◆ read_from_stdin() [1/2]

template<typename T >
std::string expression_processor< T >::read_from_stdin ( )
inlineprivate

Definition at line 709 of file exprtk_mpfr_repl.cpp.

710 {
711 std::string input;
712
713 for ( ; ; )
714 {
715 std::string line;
716
717 std::cout << ">> ";
718 std::getline(std::cin,line);
719
720 if (line.empty())
721 continue;
722 else if ("$end" == line)
723 break;
724 else
725 input += (line + "\n");
726 }
727
728 if (!input.empty())
729 input.erase(input.end() - 1);
730
731 return input;
732 }

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

Here is the caller graph for this function:

◆ read_from_stdin() [2/2]

template<typename T >
std::string expression_processor< T >::read_from_stdin ( )
inlineprivate

Definition at line 705 of file exprtk_repl.cpp.

706 {
707 std::string input;
708
709 for ( ; ; )
710 {
711 std::string line;
712
713 std::cout << ">> ";
714 std::getline(std::cin,line);
715
716 if (line.empty())
717 continue;
718 else if ("$end" == line)
719 break;
720 else
721 input += (line + "\n");
722 }
723
724 if (!input.empty())
725 input.erase(input.end() - 1);
726
727 return input;
728 }

◆ setup_symbol_table() [1/2]

template<typename T >
void expression_processor< T >::setup_symbol_table ( )
inline

Definition at line 218 of file exprtk_mpfr_repl.cpp.

219 {
221 {
225 }
226 }
bool add_constant(const std::string &constant_name, const T &value)
Definition exprtk.hpp:20098
void clear_variables(const bool delete_node=true)
Definition exprtk.hpp:19824

References exprtk::symbol_table< T >::add_constant(), exprtk::symbol_table< T >::add_constants(), exprtk::symbol_table< T >::clear_variables(), exprtk::details::numeric::constant::e, expression_processor< T >::persist_symbol_table_, and expression_processor< T >::symbol_table_.

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

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

◆ setup_symbol_table() [2/2]

template<typename T >
void expression_processor< T >::setup_symbol_table ( )
inline

◆ symbol_dump() [1/2]

template<typename T >
bool & expression_processor< T >::symbol_dump ( )
inline

Definition at line 188 of file exprtk_mpfr_repl.cpp.

189 {
190 return symbol_dump_;
191 }

References expression_processor< T >::symbol_dump_.

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

Here is the caller graph for this function:

◆ symbol_dump() [2/2]

template<typename T >
bool & expression_processor< T >::symbol_dump ( )
inline

Definition at line 186 of file exprtk_repl.cpp.

187 {
188 return symbol_dump_;
189 }

References expression_processor< T >::symbol_dump_.

◆ trim_whitespace() [1/2]

template<typename T >
std::string expression_processor< T >::trim_whitespace ( std::string  s)
inlineprivate

Definition at line 854 of file exprtk_mpfr_repl.cpp.

855 {
856 static const std::string whitespace(" \n\r\t\b\v\f");
857
858 if (!s.empty())
859 {
860 s.erase(0,s.find_first_not_of(whitespace));
861
862 if (!s.empty())
863 {
864 std::size_t index = s.find_last_not_of(whitespace);
865
866 if (std::string::npos != index)
867 s.erase(index + 1);
868 else
869 s.clear();
870 }
871 }
872
873 return s;
874 }

Referenced by expression_processor< T >::process(), expression_processor< T >::process_directive(), and expression_processor< T >::process_multiline().

Here is the caller graph for this function:

◆ trim_whitespace() [2/2]

template<typename T >
std::string expression_processor< T >::trim_whitespace ( std::string  s)
inlineprivate

Definition at line 850 of file exprtk_repl.cpp.

851 {
852 static const std::string whitespace(" \n\r\t\b\v\f");
853
854 if (!s.empty())
855 {
856 s.erase(0,s.find_first_not_of(whitespace));
857
858 if (!s.empty())
859 {
860 std::size_t index = s.find_last_not_of(whitespace);
861
862 if (std::string::npos != index)
863 s.erase(index + 1);
864 else
865 s.clear();
866 }
867 }
868
869 return s;
870 }

Member Data Documentation

◆ arith_opr_

template<typename T >
std::map< std::string, typename settings_store_t::settings_arithmetic_opr > expression_processor< T >::arith_opr_
private

◆ assign_opr_

template<typename T >
std::map< std::string, typename settings_store_t::settings_assignment_opr > expression_processor< T >::assign_opr_
private

◆ assignment_dump_

template<typename T >
bool expression_processor< T >::assignment_dump_
private

◆ batch_runs_cnt_

template<typename T >
std::size_t expression_processor< T >::batch_runs_cnt_
private

◆ compositor_

template<typename T >
compositor_t expression_processor< T >::compositor_
private

◆ disable_local_vardef_

template<typename T >
bool expression_processor< T >::disable_local_vardef_
private

◆ display_total_compile_time_

template<typename T >
bool expression_processor< T >::display_total_compile_time_
private

◆ display_total_time_

template<typename T >
bool expression_processor< T >::display_total_time_
private

◆ enable_usr_

template<typename T >
bool expression_processor< T >::enable_usr_
private

◆ fileio_package_

template<typename T >
exprtk::rtl::io::file::package< T > expression_processor< T >::fileio_package_
private

Definition at line 962 of file exprtk_mpfr_repl.cpp.

◆ func_def_list_

template<typename T >
std::vector< function_definition > expression_processor< T >::func_def_list_
private

◆ function_symbol_table_

template<typename T >
symbol_table_t expression_processor< T >::function_symbol_table_
private

◆ inequality_opr_

template<typename T >
std::map< std::string, typename settings_store_t::settings_inequality_opr > expression_processor< T >::inequality_opr_
private

◆ io_package_

template<typename T >
exprtk::rtl::io::package< T > expression_processor< T >::io_package_
private

Definition at line 964 of file exprtk_mpfr_repl.cpp.

◆ parser_

template<typename T >
parser_t expression_processor< T >::parser_
private

◆ persist_symbol_table_

template<typename T >
bool expression_processor< T >::persist_symbol_table_
private

◆ poly01_

template<typename T >
exprtk::polynomial< T, 1 > expression_processor< T >::poly01_
private

Definition at line 966 of file exprtk_mpfr_repl.cpp.

◆ poly02_

template<typename T >
exprtk::polynomial< T, 2 > expression_processor< T >::poly02_
private

Definition at line 967 of file exprtk_mpfr_repl.cpp.

◆ poly03_

template<typename T >
exprtk::polynomial< T, 3 > expression_processor< T >::poly03_
private

Definition at line 968 of file exprtk_mpfr_repl.cpp.

◆ poly04_

template<typename T >
exprtk::polynomial< T, 4 > expression_processor< T >::poly04_
private

Definition at line 969 of file exprtk_mpfr_repl.cpp.

◆ poly05_

template<typename T >
exprtk::polynomial< T, 5 > expression_processor< T >::poly05_
private

Definition at line 970 of file exprtk_mpfr_repl.cpp.

◆ poly06_

template<typename T >
exprtk::polynomial< T, 6 > expression_processor< T >::poly06_
private

Definition at line 971 of file exprtk_mpfr_repl.cpp.

◆ poly07_

template<typename T >
exprtk::polynomial< T, 7 > expression_processor< T >::poly07_
private

Definition at line 972 of file exprtk_mpfr_repl.cpp.

◆ poly08_

template<typename T >
exprtk::polynomial< T, 8 > expression_processor< T >::poly08_
private

Definition at line 973 of file exprtk_mpfr_repl.cpp.

◆ poly09_

template<typename T >
exprtk::polynomial< T, 9 > expression_processor< T >::poly09_
private

Definition at line 974 of file exprtk_mpfr_repl.cpp.

◆ poly10_

template<typename T >
exprtk::polynomial< T, 10 > expression_processor< T >::poly10_
private

Definition at line 975 of file exprtk_mpfr_repl.cpp.

◆ poly11_

template<typename T >
exprtk::polynomial< T, 11 > expression_processor< T >::poly11_
private

Definition at line 976 of file exprtk_mpfr_repl.cpp.

◆ poly12_

template<typename T >
exprtk::polynomial< T, 12 > expression_processor< T >::poly12_
private

Definition at line 977 of file exprtk_mpfr_repl.cpp.

◆ putch_

template<typename T >
putch< T > expression_processor< T >::putch_
private

Definition at line 959 of file exprtk_mpfr_repl.cpp.

◆ putint_

template<typename T >
putint< T > expression_processor< T >::putint_
private

Definition at line 960 of file exprtk_mpfr_repl.cpp.

◆ rnd_01_

template<typename T >
rnd_01< T > expression_processor< T >::rnd_01_
private

Definition at line 961 of file exprtk_mpfr_repl.cpp.

◆ symbol_dump_

template<typename T >
bool expression_processor< T >::symbol_dump_
private

◆ symbol_table_

template<typename T >
symbol_table_t expression_processor< T >::symbol_table_
private

◆ vecops_package_

template<typename T >
exprtk::rtl::vecops::package< T > expression_processor< T >::vecops_package_
private

Definition at line 963 of file exprtk_mpfr_repl.cpp.


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