C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
exprtk::function_compositor< T >::base_func Struct Reference
Inheritance diagram for exprtk::function_compositor< T >::base_func:
[legend]
Collaboration diagram for exprtk::function_compositor< T >::base_func:
[legend]

Public Types

typedef const T & type
typedef exprtk::ifunction< T > function_t
typedef std::vector< T * > varref_t
typedef std::vector< T > var_t
typedef std::vector< std::string > str_t
typedef std::pair< T *, std::size_t > lvarref_t
typedef std::vector< lvarref_tlvr_vec_t
typedef std::vector< std::string * > lstr_vec_t

Public Member Functions

 base_func (const std::size_t &pc=0)
virtual ~base_func ()
void update (const T &v0)
void update (const T &v0, const T &v1)
void update (const T &v0, const T &v1, const T &v2)
void update (const T &v0, const T &v1, const T &v2, const T &v3)
void update (const T &v0, const T &v1, const T &v2, const T &v3, const T &v4)
void update (const T &v0, const T &v1, const T &v2, const T &v3, const T &v4, const T &v5)
function_tsetup (expression_t &expr)
void pre ()
void post ()
void copy (const varref_t &src_v, var_t &dest_v)
void copy (const lstr_vec_t &src_v, str_t &dest_v)
void copy (const var_t &src_v, varref_t &dest_v)
void copy (const lvr_vec_t &src_v, var_t &dest_v)
void copy (const var_t &src_v, lvr_vec_t &dest_v)
void copy (const str_t &src_str, lstr_vec_t &dest_str)
void clear_stack ()
virtual T value (expression_t &e)
Public Member Functions inherited from exprtk::ifunction< T >
 ifunction (const std::size_t &pc)
virtual ~ifunction ()
virtual T operator() ()
virtual T operator() (const T &)
virtual T operator() (const T &, const T &)
virtual T operator() (const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
virtual T operator() (const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &, const T &)
Public Member Functions inherited from exprtk::function_traits
 function_traits ()
bool & allow_zero_parameters ()
bool & has_side_effects ()
std::size_t & min_num_args ()
std::size_t & max_num_args ()

Public Attributes

expression_t expression
varref_t v
lvr_vec_t local_vars
lstr_vec_t local_str_vars
std::size_t local_var_stack_size
std::size_t stack_depth
std::deque< var_tinput_params_stack
std::deque< var_tlocal_var_stack
std::deque< str_tlocal_str_stack
Public Attributes inherited from exprtk::ifunction< T >
std::size_t param_count

Detailed Description

template<typename T>
struct exprtk::function_compositor< T >::base_func

Definition at line 43202 of file exprtk.hpp.

Member Typedef Documentation

◆ function_t

template<typename T>
typedef exprtk::ifunction<T> exprtk::function_compositor< T >::base_func::function_t

Definition at line 43205 of file exprtk.hpp.

◆ lstr_vec_t

template<typename T>
typedef std::vector<std::string*> exprtk::function_compositor< T >::base_func::lstr_vec_t

Definition at line 43211 of file exprtk.hpp.

◆ lvarref_t

template<typename T>
typedef std::pair<T*,std::size_t> exprtk::function_compositor< T >::base_func::lvarref_t

Definition at line 43209 of file exprtk.hpp.

◆ lvr_vec_t

template<typename T>
typedef std::vector<lvarref_t> exprtk::function_compositor< T >::base_func::lvr_vec_t

Definition at line 43210 of file exprtk.hpp.

◆ str_t

template<typename T>
typedef std::vector<std::string> exprtk::function_compositor< T >::base_func::str_t

Definition at line 43208 of file exprtk.hpp.

◆ type

template<typename T>
typedef const T& exprtk::function_compositor< T >::base_func::type

Definition at line 43204 of file exprtk.hpp.

◆ var_t

template<typename T>
typedef std::vector<T> exprtk::function_compositor< T >::base_func::var_t

Definition at line 43207 of file exprtk.hpp.

◆ varref_t

template<typename T>
typedef std::vector<T*> exprtk::function_compositor< T >::base_func::varref_t

Definition at line 43206 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ base_func()

template<typename T>
exprtk::function_compositor< T >::base_func::base_func ( const std::size_t & pc = 0)
inlineexplicit

Definition at line 43215 of file exprtk.hpp.

References exprtk::ifunction< T >::ifunction(), local_var_stack_size, stack_depth, and v.

Referenced by exprtk::function_compositor< T >::func_0param::func_0param(), exprtk::function_compositor< T >::func_1param::func_1param(), exprtk::function_compositor< T >::func_2param::func_2param(), exprtk::function_compositor< T >::func_3param::func_3param(), exprtk::function_compositor< T >::func_4param::func_4param(), exprtk::function_compositor< T >::func_5param::func_5param(), and exprtk::function_compositor< T >::func_6param::func_6param().

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

◆ ~base_func()

template<typename T>
virtual exprtk::function_compositor< T >::base_func::~base_func ( )
inlinevirtual

Definition at line 43223 of file exprtk.hpp.

43224 {}

Member Function Documentation

◆ clear_stack()

template<typename T>
void exprtk::function_compositor< T >::base_func::clear_stack ( )
inline

Definition at line 43468 of file exprtk.hpp.

43469 {
43470 for (std::size_t i = 0; i < v.size(); ++i)
43471 {
43472 (*v[i]) = 0;
43473 }
43474 }

References v.

Referenced by setup().

Here is the caller graph for this function:

◆ copy() [1/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::copy ( const lstr_vec_t & src_v,
str_t & dest_v )
inline

Definition at line 43401 of file exprtk.hpp.

43402 {
43403 for (std::size_t i = 0; i < src_v.size(); ++i)
43404 {
43405 dest_v[i] = (*src_v[i]);
43406 }
43407 }

◆ copy() [2/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::copy ( const lvr_vec_t & src_v,
var_t & dest_v )
inline

Definition at line 43417 of file exprtk.hpp.

43418 {
43419 typename var_t::iterator itr = dest_v.begin();
43421
43422 for (std::size_t i = 0; i < src_v.size(); ++i)
43423 {
43424 lvarref_t vr = src_v[i];
43425
43426 if (1 == vr.second)
43427 *itr++ = (*vr.first);
43428 else
43429 {
43430 std::copy(vr.first, vr.first + vr.second, itr);
43431 itr += static_cast<diff_t>(vr.second);
43432 }
43433 }
43434 }
std::pair< T *, std::size_t > lvarref_t
Definition exprtk.hpp:43209

◆ copy() [3/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::copy ( const str_t & src_str,
lstr_vec_t & dest_str )
inline

Definition at line 43458 of file exprtk.hpp.

43459 {
43460 assert(src_str.size() == dest_str.size());
43461
43462 for (std::size_t i = 0; i < dest_str.size(); ++i)
43463 {
43464 *dest_str[i] = src_str[i];
43465 }
43466 }

◆ copy() [4/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::copy ( const var_t & src_v,
lvr_vec_t & dest_v )
inline

Definition at line 43436 of file exprtk.hpp.

43437 {
43438 typename var_t::const_iterator itr = src_v.begin();
43440
43441 for (std::size_t i = 0; i < dest_v.size(); ++i)
43442 {
43443 lvarref_t& vr = dest_v[i];
43444
43445 assert(vr.first != 0);
43446 assert(vr.second > 0);
43447
43448 if (1 == vr.second)
43449 (*vr.first) = *itr++;
43450 else
43451 {
43452 std::copy(itr, itr + static_cast<diff_t>(vr.second), vr.first);
43453 itr += static_cast<diff_t>(vr.second);
43454 }
43455 }
43456 }

◆ copy() [5/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::copy ( const var_t & src_v,
varref_t & dest_v )
inline

Definition at line 43409 of file exprtk.hpp.

43410 {
43411 for (std::size_t i = 0; i < src_v.size(); ++i)
43412 {
43413 (*dest_v[i]) = src_v[i];
43414 }
43415 }

◆ copy() [6/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::copy ( const varref_t & src_v,
var_t & dest_v )
inline

Definition at line 43393 of file exprtk.hpp.

43394 {
43395 for (std::size_t i = 0; i < src_v.size(); ++i)
43396 {
43397 dest_v[i] = (*src_v[i]);
43398 }
43399 }

Referenced by post(), and pre().

Here is the caller graph for this function:

◆ post()

template<typename T>
void exprtk::function_compositor< T >::base_func::post ( )
inline

Definition at line 43369 of file exprtk.hpp.

43370 {
43371 if (--stack_depth)
43372 {
43373 if (!v.empty())
43374 {
43375 copy(input_params_stack.back(), v);
43376 input_params_stack.pop_back();
43377 }
43378
43379 if (!local_vars.empty())
43380 {
43382 local_var_stack.pop_back();
43383 }
43384
43385 if (!local_str_vars.empty())
43386 {
43388 local_str_stack.pop_back();
43389 }
43390 }
43391 }
void copy(const varref_t &src_v, var_t &dest_v)
Definition exprtk.hpp:43393

References copy(), input_params_stack, local_str_stack, local_str_vars, local_var_stack, local_vars, stack_depth, and v.

Here is the call graph for this function:

◆ pre()

template<typename T>
void exprtk::function_compositor< T >::base_func::pre ( )
inline

Definition at line 43342 of file exprtk.hpp.

43343 {
43344 if (stack_depth++)
43345 {
43346 if (!v.empty())
43347 {
43348 var_t var_stack(v.size(),T(0));
43349 copy(v,var_stack);
43350 input_params_stack.push_back(var_stack);
43351 }
43352
43353 if (!local_vars.empty())
43354 {
43358 }
43359
43360 if (!local_str_vars.empty())
43361 {
43365 }
43366 }
43367 }
std::vector< std::string > str_t
Definition exprtk.hpp:43208

References copy(), input_params_stack, local_str_stack, local_str_vars, local_var_stack, local_var_stack_size, local_vars, stack_depth, and v.

Here is the call graph for this function:

◆ setup()

template<typename T>
function_t & exprtk::function_compositor< T >::base_func::setup ( expression_t & expr)
inline

Definition at line 43269 of file exprtk.hpp.

43270 {
43271 expression = expr;
43272
43273 typedef typename expression_t::control_block ctrlblk_t;
43274 typedef typename ctrlblk_t::local_data_list_t ldl_t;
43275 typedef typename ctrlblk_t::data_type data_t;
43276 typedef typename ldl_t::value_type ldl_value_type;
43277
43278 const ldl_t ldl = expr.local_data_list();
43279
43281
43282 for (std::size_t i = 0; i < ldl.size(); ++i)
43283 {
43284 exprtk_debug(("base_func::setup() - element[%02d] type: %s size: %d\n",
43285 static_cast<int>(i),
43287 static_cast<int>(ldl[i].size)));
43288
43289 switch (ldl[i].type)
43290 {
43291 case ctrlblk_t::e_unknown : continue;
43292 case ctrlblk_t::e_expr : continue;
43293 case ctrlblk_t::e_vecholder : continue;
43294 default : break;
43295 }
43296
43297 if (ldl[i].size)
43298 {
43299 index_list.push_back(std::make_pair(i,ldl[i].type));
43300 }
43301 }
43302
43304
43305 for (std::size_t i = 0; i < index_list.size(); ++i)
43306 {
43307 const std::size_t index = index_list[i].first;
43309
43310 assert(local_var.pointer);
43311
43312 if (i < (index_list.size() - v.size()))
43313 {
43315 {
43316 local_str_vars.push_back(
43317 reinterpret_cast<std::string*>(local_var.pointer));
43318 }
43319 else if (
43322 )
43323 {
43324 local_vars.push_back(std::make_pair(
43325 reinterpret_cast<T*>(local_var.pointer),
43326 local_var.size));
43327
43329 }
43330 }
43331 else
43332 {
43333 v[input_param_count++] = reinterpret_cast<T*>(local_var.pointer);
43334 }
43335 }
43336
43337 clear_stack();
43338
43339 return (*this);
43340 }
#define exprtk_debug(params)
Definition exprtk.hpp:64

References clear_stack(), expression, exprtk_debug, exprtk::expression< T >::local_data_list(), local_str_vars, local_var_stack_size, local_vars, and v.

Here is the call graph for this function:

◆ update() [1/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::update ( const T & v0)
inline

Definition at line 43229 of file exprtk.hpp.

43230 {
43231 exprtk_assign(0)
43232 }
#define exprtk_assign(Index)
Definition exprtk.hpp:43226

References exprtk_assign.

Referenced by exprtk::function_compositor< T >::func_1param::operator()(), exprtk::function_compositor< T >::func_2param::operator()(), exprtk::function_compositor< T >::func_3param::operator()(), exprtk::function_compositor< T >::func_4param::operator()(), exprtk::function_compositor< T >::func_5param::operator()(), and exprtk::function_compositor< T >::func_6param::operator()().

Here is the caller graph for this function:

◆ update() [2/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::update ( const T & v0,
const T & v1 )
inline

Definition at line 43234 of file exprtk.hpp.

43235 {
43237 }

References exprtk_assign.

◆ update() [3/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::update ( const T & v0,
const T & v1,
const T & v2 )
inline

Definition at line 43239 of file exprtk.hpp.

43240 {
43242 exprtk_assign(2)
43243 }

References exprtk_assign.

◆ update() [4/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::update ( const T & v0,
const T & v1,
const T & v2,
const T & v3 )
inline

Definition at line 43245 of file exprtk.hpp.

43246 {
43249 }

References exprtk_assign.

◆ update() [5/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::update ( const T & v0,
const T & v1,
const T & v2,
const T & v3,
const T & v4 )
inline

Definition at line 43251 of file exprtk.hpp.

43252 {
43255 exprtk_assign(4)
43256 }

References exprtk_assign.

◆ update() [6/6]

template<typename T>
void exprtk::function_compositor< T >::base_func::update ( const T & v0,
const T & v1,
const T & v2,
const T & v3,
const T & v4,
const T & v5 )
inline

Definition at line 43258 of file exprtk.hpp.

43259 {
43263 }

References exprtk_assign.

◆ value()

Member Data Documentation

◆ expression

◆ input_params_stack

template<typename T>
std::deque<var_t> exprtk::function_compositor< T >::base_func::input_params_stack

Definition at line 43487 of file exprtk.hpp.

Referenced by post(), and pre().

◆ local_str_stack

template<typename T>
std::deque<str_t> exprtk::function_compositor< T >::base_func::local_str_stack

Definition at line 43489 of file exprtk.hpp.

Referenced by post(), and pre().

◆ local_str_vars

template<typename T>
lstr_vec_t exprtk::function_compositor< T >::base_func::local_str_vars

Definition at line 43484 of file exprtk.hpp.

Referenced by post(), pre(), and setup().

◆ local_var_stack

template<typename T>
std::deque<var_t> exprtk::function_compositor< T >::base_func::local_var_stack

Definition at line 43488 of file exprtk.hpp.

Referenced by post(), and pre().

◆ local_var_stack_size

template<typename T>
std::size_t exprtk::function_compositor< T >::base_func::local_var_stack_size

Definition at line 43485 of file exprtk.hpp.

Referenced by base_func(), pre(), and setup().

◆ local_vars

template<typename T>
lvr_vec_t exprtk::function_compositor< T >::base_func::local_vars

Definition at line 43483 of file exprtk.hpp.

Referenced by post(), pre(), and setup().

◆ stack_depth

template<typename T>
std::size_t exprtk::function_compositor< T >::base_func::stack_depth

Definition at line 43486 of file exprtk.hpp.

Referenced by base_func(), post(), and pre().

◆ v

template<typename T>
varref_t exprtk::function_compositor< T >::base_func::v

Definition at line 43482 of file exprtk.hpp.

Referenced by base_func(), clear_stack(), post(), pre(), and setup().


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