C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
Classes | Functions
exprtk_vector_resize_inline_example.cpp File Reference
#include <cstdio>
#include <string>
#include <vector>
#include <map>
#include "exprtk.hpp"
Include dependency graph for exprtk_vector_resize_inline_example.cpp:

Go to the source code of this file.

Classes

class  my_vv_size_handler_t< T >
 

Functions

template<typename T >
void vector_inline_resize_example ()
 
int main ()
 

Function Documentation

◆ main()

int main ( )

Definition at line 145 of file exprtk_vector_resize_inline_example.cpp.

146{
147 vector_inline_resize_example<double>();
148 return 0;
149}

◆ vector_inline_resize_example()

template<typename T >
void vector_inline_resize_example ( )

Definition at line 86 of file exprtk_vector_resize_inline_example.cpp.

87{
88 typedef exprtk::symbol_table<T> symbol_table_t;
89 typedef exprtk::expression<T> expression_t;
90 typedef exprtk::parser<T> parser_t;
91
92 const std::string inline_resize_expression =
93 " var vec_original_size := v[]; "
94 " "
95 " for (var i := 1; i <= 2 * vec_original_size; i += 1) "
96 " { "
97 " if (resize(v,i) == true and v[] == i and sum(2v) == (i^2 + i)) "
98 " { "
99 " println('Success: set size: ', i ,' v[] = ', v[]); "
100 " } "
101 " else "
102 " { "
103 " println('Error: Failed to resize vector v to size: ', i); "
104 " } "
105 " }; ";
106
107 std::vector<T> v0 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
108 std::vector<T> v1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
109
111
112
114
115 my_vv_size_handler_t<T> vv_size_handler;
116 vv_size_handler.register_vector_view(vv);
117
118 symbol_table_t symbol_table;
119 symbol_table.add_vector ("v", vv);
120 symbol_table.add_function("resize", vv_size_handler);
121 symbol_table.add_package (io_package);
122
123 expression_t expression;
124 expression.register_symbol_table(symbol_table);
125
126 parser_t parser;
127
128 if (!parser.compile(inline_resize_expression, expression))
129 {
130 printf("Error: %s\tExpression: %s\n",
131 parser.error().c_str(),
132 inline_resize_expression.c_str());
133 return;
134 }
135
136 vv.rebase(v0.data());
137 vv_size_handler.register_vector_view(vv);
138 expression.value();
139
140 vv.rebase(v1.data());
141 vv_size_handler.register_vector_view(vv);
142 expression.value();
143}
void rebase(data_ptr_t data)
Definition exprtk.hpp:4576
void register_vector_view(exprtk::vector_view< T > &vec_view)
vector_view< T > make_vector_view(T *data, const std::size_t size, const std::size_t offset=0)
Definition exprtk.hpp:4660

References exprtk::make_vector_view(), exprtk::vector_view< T >::rebase(), and my_vv_size_handler_t< T >::register_vector_view().

Here is the call graph for this function: