Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | ****************************************************************** |
3 | | * C++ Mathematical Expression Toolkit Library * |
4 | | * * |
5 | | * Author: Arash Partow (1999-2024) * |
6 | | * URL: https://www.partow.net/programming/exprtk/index.html * |
7 | | * * |
8 | | * Copyright notice: * |
9 | | * Free use of the C++ Mathematical Expression Toolkit Library is * |
10 | | * permitted under the guidelines and in accordance with the most * |
11 | | * current version of the MIT License. * |
12 | | * https://www.opensource.org/licenses/MIT * |
13 | | * SPDX-License-Identifier: MIT * |
14 | | * * |
15 | | * Example expressions: * |
16 | | * (00) (y + x / y) * (x - y / x) * |
17 | | * (01) (x^2 / sin(2 * pi / y)) - x / 2 * |
18 | | * (02) sqrt(1 - (x^2)) * |
19 | | * (03) 1 - sin(2 * x) + cos(pi / y) * |
20 | | * (04) a * exp(2 * t) + c * |
21 | | * (05) if(((x + 2) == 3) and ((y + 5) <= 9), 1 + w, 2 / z) * |
22 | | * (06) (avg(x,y) <= x + y ? x - y : x * y) + 2 * pi / x * |
23 | | * (07) z := x + sin(2 * pi / y) * |
24 | | * (08) u := 2 * (pi * z) / (w := x + cos(y / pi)) * |
25 | | * (09) clamp(-1, sin(2 * pi * x) + cos(y / 2 * pi), +1) * |
26 | | * (10) inrange(-2, m, +2) == if(({-2 <= m} and [m <= +2]), 1, 0) * |
27 | | * (11) (2sin(x)cos(2y)7 + 1) == (2 * sin(x) * cos(2*y) * 7 + 1) * |
28 | | * (12) (x ilike 's*ri?g') and [y < (3 z^7 + w)] * |
29 | | * * |
30 | | ****************************************************************** |
31 | | */ |
32 | | |
33 | | |
34 | | #ifndef INCLUDE_EXPRTK_HPP |
35 | | #define INCLUDE_EXPRTK_HPP |
36 | | |
37 | | |
38 | | #include <algorithm> |
39 | | #include <cassert> |
40 | | #include <cctype> |
41 | | #include <cmath> |
42 | | #include <cstdio> |
43 | | #include <cstdlib> |
44 | | #include <cstring> |
45 | | #include <deque> |
46 | | #include <functional> |
47 | | #include <iterator> |
48 | | #include <limits> |
49 | | #include <list> |
50 | | #include <map> |
51 | | #include <set> |
52 | | #include <stack> |
53 | | #include <stdexcept> |
54 | | #include <string> |
55 | | #include <utility> |
56 | | #include <vector> |
57 | | |
58 | | |
59 | | namespace exprtk |
60 | | { |
61 | | #ifdef exprtk_enable_debugging |
62 | | #define exprtk_debug(params) printf params |
63 | | #else |
64 | 379k | #define exprtk_debug(params) (void)0 |
65 | | #endif |
66 | | |
67 | | #define exprtk_error_location \ |
68 | 30.2k | "exprtk.hpp:" + details::to_str(__LINE__) \ |
69 | | |
70 | | #if __cplusplus >= 201103L |
71 | | #define exprtk_override override |
72 | | #define exprtk_final final |
73 | | #define exprtk_delete = delete |
74 | | #else |
75 | | #define exprtk_override |
76 | | #define exprtk_final |
77 | | #define exprtk_delete |
78 | | #endif |
79 | | |
80 | | #if __cplusplus >= 201603L |
81 | | #define exprtk_fallthrough [[fallthrough]]; |
82 | | #elif (__cplusplus >= 201103L) && (defined(__GNUC__) && !defined(__clang__)) |
83 | | #define exprtk_fallthrough [[gnu::fallthrough]]; |
84 | | #else |
85 | | #ifndef _MSC_VER |
86 | 456 | #define exprtk_fallthrough __attribute__ ((fallthrough)); |
87 | | #else |
88 | | #define exprtk_fallthrough |
89 | | #endif |
90 | | #endif |
91 | | |
92 | | namespace details |
93 | | { |
94 | | typedef char char_t; |
95 | | typedef char_t* char_ptr; |
96 | | typedef char_t const* char_cptr; |
97 | | typedef unsigned char uchar_t; |
98 | | typedef uchar_t* uchar_ptr; |
99 | | typedef uchar_t const* uchar_cptr; |
100 | | typedef unsigned long long int _uint64_t; |
101 | | typedef long long int _int64_t; |
102 | | |
103 | | inline bool is_whitespace(const char_t c) |
104 | 13.0M | { |
105 | 13.0M | return (' ' == c) || ('\n' == c) || |
106 | 13.0M | ('\r' == c) || ('\t' == c) || |
107 | 13.0M | ('\b' == c) || ('\v' == c) || |
108 | 13.0M | ('\f' == c) ; |
109 | 13.0M | } |
110 | | |
111 | | inline bool is_operator_char(const char_t c) |
112 | 5.07M | { |
113 | 5.07M | return ('+' == c) || ('-' == c) || |
114 | 5.07M | ('*' == c) || ('/' == c) || |
115 | 5.07M | ('^' == c) || ('<' == c) || |
116 | 5.07M | ('>' == c) || ('=' == c) || |
117 | 5.07M | (',' == c) || ('!' == c) || |
118 | 5.07M | ('(' == c) || (')' == c) || |
119 | 5.07M | ('[' == c) || (']' == c) || |
120 | 5.07M | ('{' == c) || ('}' == c) || |
121 | 5.07M | ('%' == c) || (':' == c) || |
122 | 5.07M | ('?' == c) || ('&' == c) || |
123 | 5.07M | ('|' == c) || (';' == c) ; |
124 | 5.07M | } |
125 | | |
126 | | inline bool is_letter(const char_t c) |
127 | 22.8M | { |
128 | 22.8M | return (('a' <= c) && (c <= 'z')) || |
129 | 22.8M | (('A' <= c) && (c <= 'Z')) ; |
130 | 22.8M | } |
131 | | |
132 | | inline bool is_digit(const char_t c) |
133 | 30.0M | { |
134 | 30.0M | return ('0' <= c) && (c <= '9'); |
135 | 30.0M | } |
136 | | |
137 | | inline bool is_letter_or_digit(const char_t c) |
138 | 20.7M | { |
139 | 20.7M | return is_letter(c) || is_digit(c); |
140 | 20.7M | } |
141 | | |
142 | | inline bool is_left_bracket(const char_t c) |
143 | 7.97M | { |
144 | 7.97M | return ('(' == c) || ('[' == c) || ('{' == c); |
145 | 7.97M | } |
146 | | |
147 | | inline bool is_right_bracket(const char_t c) |
148 | 7.95M | { |
149 | 7.95M | return (')' == c) || (']' == c) || ('}' == c); |
150 | 7.95M | } |
151 | | |
152 | | inline bool is_bracket(const char_t c) |
153 | 2.33M | { |
154 | 2.33M | return is_left_bracket(c) || is_right_bracket(c); |
155 | 2.33M | } |
156 | | |
157 | | inline bool is_sign(const char_t c) |
158 | 2.02M | { |
159 | 2.02M | return ('+' == c) || ('-' == c); |
160 | 2.02M | } |
161 | | |
162 | | inline bool is_invalid(const char_t c) |
163 | 0 | { |
164 | 0 | return !is_whitespace (c) && |
165 | 0 | !is_operator_char(c) && |
166 | 0 | !is_letter (c) && |
167 | 0 | !is_digit (c) && |
168 | 0 | ('.' != c) && |
169 | 0 | ('_' != c) && |
170 | 0 | ('$' != c) && |
171 | 0 | ('~' != c) && |
172 | 0 | ('\'' != c); |
173 | 0 | } |
174 | | |
175 | | inline bool is_valid_string_char(const char_t c) |
176 | 36.4M | { |
177 | 36.4M | return std::isprint(static_cast<uchar_t>(c)) || |
178 | 36.4M | is_whitespace(c); |
179 | 36.4M | } |
180 | | |
181 | | #ifndef exprtk_disable_caseinsensitivity |
182 | | inline void case_normalise(std::string& s) |
183 | 0 | { |
184 | 0 | for (std::size_t i = 0; i < s.size(); ++i) |
185 | 0 | { |
186 | 0 | s[i] = static_cast<std::string::value_type>(std::tolower(s[i])); |
187 | 0 | } |
188 | 0 | } |
189 | | |
190 | | inline bool imatch(const char_t c1, const char_t c2) |
191 | 1.33k | { |
192 | 1.33k | return std::tolower(c1) == std::tolower(c2); |
193 | 1.33k | } |
194 | | |
195 | | inline bool imatch(const std::string& s1, const std::string& s2) |
196 | 3.01M | { |
197 | 3.01M | if (s1.size() == s2.size()) |
198 | 142k | { |
199 | 154k | for (std::size_t i = 0; i < s1.size(); ++i) |
200 | 147k | { |
201 | 147k | if (std::tolower(s1[i]) != std::tolower(s2[i])) |
202 | 135k | { |
203 | 135k | return false; |
204 | 135k | } |
205 | 147k | } |
206 | | |
207 | 7.18k | return true; |
208 | 142k | } |
209 | | |
210 | 2.87M | return false; |
211 | 3.01M | } |
212 | | |
213 | | struct ilesscompare |
214 | | { |
215 | | inline bool operator() (const std::string& s1, const std::string& s2) const |
216 | 21.1M | { |
217 | 21.1M | const std::size_t length = std::min(s1.size(),s2.size()); |
218 | | |
219 | 24.5M | for (std::size_t i = 0; i < length; ++i) |
220 | 22.9M | { |
221 | 22.9M | const char_t c1 = static_cast<char_t>(std::tolower(s1[i])); |
222 | 22.9M | const char_t c2 = static_cast<char_t>(std::tolower(s2[i])); |
223 | | |
224 | 22.9M | if (c1 < c2) |
225 | 14.3M | return true; |
226 | 8.52M | else if (c2 < c1) |
227 | 5.11M | return false; |
228 | 22.9M | } |
229 | | |
230 | 1.63M | return s1.size() < s2.size(); |
231 | 21.1M | } |
232 | | }; |
233 | | |
234 | | #else |
235 | | inline void case_normalise(std::string&) |
236 | | {} |
237 | | |
238 | | inline bool imatch(const char_t c1, const char_t c2) |
239 | | { |
240 | | return c1 == c2; |
241 | | } |
242 | | |
243 | | inline bool imatch(const std::string& s1, const std::string& s2) |
244 | | { |
245 | | return s1 == s2; |
246 | | } |
247 | | |
248 | | struct ilesscompare |
249 | | { |
250 | | inline bool operator() (const std::string& s1, const std::string& s2) const |
251 | | { |
252 | | return s1 < s2; |
253 | | } |
254 | | }; |
255 | | #endif |
256 | | |
257 | | inline bool is_valid_sf_symbol(const std::string& symbol) |
258 | 127k | { |
259 | | // Special function: $f12 or $F34 |
260 | 127k | return (4 == symbol.size()) && |
261 | 127k | ('$' == symbol[0]) && |
262 | 127k | imatch('f',symbol[1]) && |
263 | 127k | is_digit(symbol[2]) && |
264 | 127k | is_digit(symbol[3]); |
265 | 127k | } |
266 | | |
267 | | inline const char_t& front(const std::string& s) |
268 | 0 | { |
269 | 0 | return s[0]; |
270 | 0 | } |
271 | | |
272 | | inline const char_t& back(const std::string& s) |
273 | 0 | { |
274 | 0 | return s[s.size() - 1]; |
275 | 0 | } |
276 | | |
277 | | template <typename SignedType> |
278 | | inline std::string to_str_impl(SignedType i) |
279 | 30.2k | { |
280 | 30.2k | if (0 == i) |
281 | 12 | return std::string("0"); |
282 | | |
283 | 30.2k | std::string result; |
284 | | |
285 | 30.2k | const int sign = (i < 0) ? -1 : 1; |
286 | | |
287 | 181k | for ( ; i; i /= 10) |
288 | 151k | { |
289 | 151k | result += '0' + static_cast<char_t>(sign * (i % 10)); |
290 | 151k | } |
291 | | |
292 | 30.2k | if (sign < 0) |
293 | 10 | { |
294 | 10 | result += '-'; |
295 | 10 | } |
296 | | |
297 | 30.2k | std::reverse(result.begin(), result.end()); |
298 | | |
299 | 30.2k | return result; |
300 | 30.2k | } std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > exprtk::details::to_str_impl<long long>(long long) Line | Count | Source | 279 | 12 | { | 280 | 12 | if (0 == i) | 281 | 0 | return std::string("0"); | 282 | | | 283 | 12 | std::string result; | 284 | | | 285 | 12 | const int sign = (i < 0) ? -1 : 1; | 286 | | | 287 | 48 | for ( ; i; i /= 10) | 288 | 36 | { | 289 | 36 | result += '0' + static_cast<char_t>(sign * (i % 10)); | 290 | 36 | } | 291 | | | 292 | 12 | if (sign < 0) | 293 | 0 | { | 294 | 0 | result += '-'; | 295 | 0 | } | 296 | | | 297 | 12 | std::reverse(result.begin(), result.end()); | 298 | | | 299 | 12 | return result; | 300 | 12 | } |
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > exprtk::details::to_str_impl<int>(int) Line | Count | Source | 279 | 30.2k | { | 280 | 30.2k | if (0 == i) | 281 | 12 | return std::string("0"); | 282 | | | 283 | 30.2k | std::string result; | 284 | | | 285 | 30.2k | const int sign = (i < 0) ? -1 : 1; | 286 | | | 287 | 181k | for ( ; i; i /= 10) | 288 | 151k | { | 289 | 151k | result += '0' + static_cast<char_t>(sign * (i % 10)); | 290 | 151k | } | 291 | | | 292 | 30.2k | if (sign < 0) | 293 | 10 | { | 294 | 10 | result += '-'; | 295 | 10 | } | 296 | | | 297 | 30.2k | std::reverse(result.begin(), result.end()); | 298 | | | 299 | 30.2k | return result; | 300 | 30.2k | } |
|
301 | | |
302 | | inline std::string to_str(int i) |
303 | 30.2k | { |
304 | 30.2k | return to_str_impl(i); |
305 | 30.2k | } |
306 | | |
307 | | inline std::string to_str(std::size_t i) |
308 | 12 | { |
309 | 12 | return to_str_impl(static_cast<long long int>(i)); |
310 | 12 | } |
311 | | |
312 | | inline bool is_hex_digit(const uchar_t digit) |
313 | 18.4k | { |
314 | 18.4k | return (('0' <= digit) && (digit <= '9')) || |
315 | 18.4k | (('A' <= digit) && (digit <= 'F')) || |
316 | 18.4k | (('a' <= digit) && (digit <= 'f')) ; |
317 | 18.4k | } |
318 | | |
319 | | inline uchar_t hex_to_bin(uchar_t h) |
320 | 8.62k | { |
321 | 8.62k | if (('0' <= h) && (h <= '9')) |
322 | 2.33k | return (h - '0'); |
323 | 6.29k | else |
324 | 6.29k | return static_cast<uchar_t>(std::toupper(h) - 'A' + 10); |
325 | 8.62k | } |
326 | | |
327 | | template <typename Iterator> |
328 | | inline bool parse_hex(Iterator& itr, Iterator end, |
329 | | char_t& result) |
330 | 65.8k | { |
331 | 65.8k | if ( |
332 | 65.8k | (end == (itr )) || |
333 | 65.8k | (end == (itr + 1)) || |
334 | 65.8k | (end == (itr + 2)) || |
335 | 65.8k | (end == (itr + 3)) || |
336 | 65.8k | ('0' != *(itr )) || |
337 | 65.8k | ('X' != std::toupper(*(itr + 1))) || |
338 | 65.8k | (!is_hex_digit(*(itr + 2))) || |
339 | 65.8k | (!is_hex_digit(*(itr + 3))) |
340 | 65.8k | ) |
341 | 61.5k | { |
342 | 61.5k | return false; |
343 | 61.5k | } |
344 | | |
345 | 4.31k | result = hex_to_bin(static_cast<uchar_t>(*(itr + 2))) << 4 | |
346 | 4.31k | hex_to_bin(static_cast<uchar_t>(*(itr + 3))) ; |
347 | | |
348 | 4.31k | return true; |
349 | 65.8k | } |
350 | | |
351 | | inline bool cleanup_escapes(std::string& s) |
352 | 5.65k | { |
353 | 5.65k | typedef std::string::iterator str_itr_t; |
354 | | |
355 | 5.65k | str_itr_t itr1 = s.begin(); |
356 | 5.65k | str_itr_t itr2 = s.begin(); |
357 | 5.65k | str_itr_t end = s.end (); |
358 | | |
359 | 5.65k | std::size_t removal_count = 0; |
360 | | |
361 | 15.8M | while (end != itr1) |
362 | 15.8M | { |
363 | 15.8M | if ('\\' == (*itr1)) |
364 | 65.8k | { |
365 | 65.8k | if (end == ++itr1) |
366 | 0 | { |
367 | 0 | return false; |
368 | 0 | } |
369 | 65.8k | else if (parse_hex(itr1, end, *itr2)) |
370 | 4.31k | { |
371 | 4.31k | itr1 += 4; |
372 | 4.31k | itr2 += 1; |
373 | 4.31k | removal_count += 4; |
374 | 4.31k | } |
375 | 61.5k | else if ('a' == (*itr1)) { (*itr2++) = '\a'; ++itr1; ++removal_count; } |
376 | 61.0k | else if ('b' == (*itr1)) { (*itr2++) = '\b'; ++itr1; ++removal_count; } |
377 | 60.0k | else if ('f' == (*itr1)) { (*itr2++) = '\f'; ++itr1; ++removal_count; } |
378 | 59.6k | else if ('n' == (*itr1)) { (*itr2++) = '\n'; ++itr1; ++removal_count; } |
379 | 54.8k | else if ('r' == (*itr1)) { (*itr2++) = '\r'; ++itr1; ++removal_count; } |
380 | 54.0k | else if ('t' == (*itr1)) { (*itr2++) = '\t'; ++itr1; ++removal_count; } |
381 | 52.9k | else if ('v' == (*itr1)) { (*itr2++) = '\v'; ++itr1; ++removal_count; } |
382 | 52.4k | else if ('0' == (*itr1)) { (*itr2++) = '\0'; ++itr1; ++removal_count; } |
383 | 52.4k | else |
384 | 52.4k | { |
385 | 52.4k | (*itr2++) = (*itr1++); |
386 | 52.4k | ++removal_count; |
387 | 52.4k | } |
388 | | |
389 | 65.8k | continue; |
390 | 65.8k | } |
391 | 15.7M | else |
392 | 15.7M | (*itr2++) = (*itr1++); |
393 | 15.8M | } |
394 | | |
395 | 5.65k | if ((removal_count > s.size()) || (0 == removal_count)) |
396 | 0 | return false; |
397 | | |
398 | 5.65k | s.resize(s.size() - removal_count); |
399 | | |
400 | 5.65k | return true; |
401 | 5.65k | } |
402 | | |
403 | | class build_string |
404 | | { |
405 | | public: |
406 | | |
407 | | explicit build_string(const std::size_t& initial_size = 64) |
408 | 40.1k | { |
409 | 40.1k | data_.reserve(initial_size); |
410 | 40.1k | } |
411 | | |
412 | | inline build_string& operator << (const std::string& s) |
413 | 92.4k | { |
414 | 92.4k | data_ += s; |
415 | 92.4k | return (*this); |
416 | 92.4k | } |
417 | | |
418 | | inline build_string& operator << (char_cptr s) |
419 | 132k | { |
420 | 132k | data_ += std::string(s); |
421 | 132k | return (*this); |
422 | 132k | } |
423 | | |
424 | | inline operator std::string () const |
425 | 40.1k | { |
426 | 40.1k | return data_; |
427 | 40.1k | } |
428 | | |
429 | | inline std::string as_string() const |
430 | 0 | { |
431 | 0 | return data_; |
432 | 0 | } |
433 | | |
434 | | private: |
435 | | |
436 | | std::string data_; |
437 | | }; |
438 | | |
439 | | static const std::string reserved_words[] = |
440 | | { |
441 | | "assert", "break", "case", "continue", "const", "default", |
442 | | "false", "for", "if", "else", "ilike", "in", "like", "and", |
443 | | "nand", "nor", "not", "null", "or", "repeat", "return", |
444 | | "shl", "shr", "swap", "switch", "true", "until", "var", |
445 | | "while", "xnor", "xor", "&", "|" |
446 | | }; |
447 | | |
448 | | static const std::size_t reserved_words_size = sizeof(reserved_words) / sizeof(std::string); |
449 | | |
450 | | static const std::string reserved_symbols[] = |
451 | | { |
452 | | "abs", "acos", "acosh", "and", "asin", "asinh", "assert", |
453 | | "atan", "atanh", "atan2", "avg", "break", "case", "ceil", |
454 | | "clamp", "continue", "const", "cos", "cosh", "cot", "csc", |
455 | | "default", "deg2grad", "deg2rad", "equal", "erf", "erfc", |
456 | | "exp", "expm1", "false", "floor", "for", "frac", "grad2deg", |
457 | | "hypot", "iclamp", "if", "else", "ilike", "in", "inrange", |
458 | | "like", "log", "log10", "log2", "logn", "log1p", "mand", |
459 | | "max", "min", "mod", "mor", "mul", "ncdf", "nand", "nor", |
460 | | "not", "not_equal", "null", "or", "pow", "rad2deg", |
461 | | "repeat", "return", "root", "round", "roundn", "sec", "sgn", |
462 | | "shl", "shr", "sin", "sinc", "sinh", "sqrt", "sum", "swap", |
463 | | "switch", "tan", "tanh", "true", "trunc", "until", "var", |
464 | | "while", "xnor", "xor", "&", "|" |
465 | | }; |
466 | | |
467 | | static const std::size_t reserved_symbols_size = sizeof(reserved_symbols) / sizeof(std::string); |
468 | | |
469 | | static const std::string base_function_list[] = |
470 | | { |
471 | | "abs", "acos", "acosh", "asin", "asinh", "atan", "atanh", |
472 | | "atan2", "avg", "ceil", "clamp", "cos", "cosh", "cot", |
473 | | "csc", "equal", "erf", "erfc", "exp", "expm1", "floor", |
474 | | "frac", "hypot", "iclamp", "like", "log", "log10", "log2", |
475 | | "logn", "log1p", "mand", "max", "min", "mod", "mor", "mul", |
476 | | "ncdf", "pow", "root", "round", "roundn", "sec", "sgn", |
477 | | "sin", "sinc", "sinh", "sqrt", "sum", "swap", "tan", "tanh", |
478 | | "trunc", "not_equal", "inrange", "deg2grad", "deg2rad", |
479 | | "rad2deg", "grad2deg" |
480 | | }; |
481 | | |
482 | | static const std::size_t base_function_list_size = sizeof(base_function_list) / sizeof(std::string); |
483 | | |
484 | | static const std::string logic_ops_list[] = |
485 | | { |
486 | | "and", "nand", "nor", "not", "or", "xnor", "xor", "&", "|" |
487 | | }; |
488 | | |
489 | | static const std::size_t logic_ops_list_size = sizeof(logic_ops_list) / sizeof(std::string); |
490 | | |
491 | | static const std::string cntrl_struct_list[] = |
492 | | { |
493 | | "if", "switch", "for", "while", "repeat", "return" |
494 | | }; |
495 | | |
496 | | static const std::size_t cntrl_struct_list_size = sizeof(cntrl_struct_list) / sizeof(std::string); |
497 | | |
498 | | static const std::string arithmetic_ops_list[] = |
499 | | { |
500 | | "+", "-", "*", "/", "%", "^" |
501 | | }; |
502 | | |
503 | | static const std::size_t arithmetic_ops_list_size = sizeof(arithmetic_ops_list) / sizeof(std::string); |
504 | | |
505 | | static const std::string assignment_ops_list[] = |
506 | | { |
507 | | ":=", "+=", "-=", |
508 | | "*=", "/=", "%=" |
509 | | }; |
510 | | |
511 | | static const std::size_t assignment_ops_list_size = sizeof(assignment_ops_list) / sizeof(std::string); |
512 | | |
513 | | static const std::string inequality_ops_list[] = |
514 | | { |
515 | | "<", "<=", "==", |
516 | | "=", "!=", "<>", |
517 | | ">=", ">" |
518 | | }; |
519 | | |
520 | | static const std::size_t inequality_ops_list_size = sizeof(inequality_ops_list) / sizeof(std::string); |
521 | | |
522 | | inline bool is_reserved_word(const std::string& symbol) |
523 | 0 | { |
524 | 0 | for (std::size_t i = 0; i < reserved_words_size; ++i) |
525 | 0 | { |
526 | 0 | if (imatch(symbol, reserved_words[i])) |
527 | 0 | { |
528 | 0 | return true; |
529 | 0 | } |
530 | 0 | } |
531 | 0 |
|
532 | 0 | return false; |
533 | 0 | } |
534 | | |
535 | | inline bool is_reserved_symbol(const std::string& symbol) |
536 | 700 | { |
537 | 62.5k | for (std::size_t i = 0; i < reserved_symbols_size; ++i) |
538 | 61.9k | { |
539 | 61.9k | if (imatch(symbol, reserved_symbols[i])) |
540 | 69 | { |
541 | 69 | return true; |
542 | 69 | } |
543 | 61.9k | } |
544 | | |
545 | 631 | return false; |
546 | 700 | } |
547 | | |
548 | | inline bool is_base_function(const std::string& function_name) |
549 | 0 | { |
550 | 0 | for (std::size_t i = 0; i < base_function_list_size; ++i) |
551 | 0 | { |
552 | 0 | if (imatch(function_name, base_function_list[i])) |
553 | 0 | { |
554 | 0 | return true; |
555 | 0 | } |
556 | 0 | } |
557 | | |
558 | 0 | return false; |
559 | 0 | } |
560 | | |
561 | | inline bool is_control_struct(const std::string& cntrl_strct) |
562 | 0 | { |
563 | 0 | for (std::size_t i = 0; i < cntrl_struct_list_size; ++i) |
564 | 0 | { |
565 | 0 | if (imatch(cntrl_strct, cntrl_struct_list[i])) |
566 | 0 | { |
567 | 0 | return true; |
568 | 0 | } |
569 | 0 | } |
570 | 0 |
|
571 | 0 | return false; |
572 | 0 | } |
573 | | |
574 | | inline bool is_logic_opr(const std::string& lgc_opr) |
575 | 0 | { |
576 | 0 | for (std::size_t i = 0; i < logic_ops_list_size; ++i) |
577 | 0 | { |
578 | 0 | if (imatch(lgc_opr, logic_ops_list[i])) |
579 | 0 | { |
580 | 0 | return true; |
581 | 0 | } |
582 | 0 | } |
583 | | |
584 | 0 | return false; |
585 | 0 | } |
586 | | |
587 | | struct cs_match |
588 | | { |
589 | | static inline bool cmp(const char_t c0, const char_t c1) |
590 | 0 | { |
591 | 0 | return (c0 == c1); |
592 | 0 | } |
593 | | }; |
594 | | |
595 | | struct cis_match |
596 | | { |
597 | | static inline bool cmp(const char_t c0, const char_t c1) |
598 | 0 | { |
599 | 0 | return (std::tolower(c0) == std::tolower(c1)); |
600 | 0 | } |
601 | | }; |
602 | | |
603 | | template <typename Iterator, typename Compare> |
604 | | inline bool match_impl(const Iterator pattern_begin, |
605 | | const Iterator pattern_end , |
606 | | const Iterator data_begin , |
607 | | const Iterator data_end , |
608 | | const typename std::iterator_traits<Iterator>::value_type& zero_or_more, |
609 | | const typename std::iterator_traits<Iterator>::value_type& exactly_one ) |
610 | 0 | { |
611 | 0 | typedef typename std::iterator_traits<Iterator>::value_type type; |
612 | |
|
613 | 0 | const Iterator null_itr(0); |
614 | |
|
615 | 0 | Iterator p_itr = pattern_begin; |
616 | 0 | Iterator d_itr = data_begin; |
617 | 0 | Iterator np_itr = null_itr; |
618 | 0 | Iterator nd_itr = null_itr; |
619 | |
|
620 | 0 | for ( ; ; ) |
621 | 0 | { |
622 | 0 | if (p_itr != pattern_end) |
623 | 0 | { |
624 | 0 | const type c = *(p_itr); |
625 | |
|
626 | 0 | if ((data_end != d_itr) && (Compare::cmp(c,*(d_itr)) || (exactly_one == c))) |
627 | 0 | { |
628 | 0 | ++d_itr; |
629 | 0 | ++p_itr; |
630 | 0 | continue; |
631 | 0 | } |
632 | 0 | else if (zero_or_more == c) |
633 | 0 | { |
634 | 0 | while ((pattern_end != p_itr) && (zero_or_more == *(p_itr))) |
635 | 0 | { |
636 | 0 | ++p_itr; |
637 | 0 | } |
638 | |
|
639 | 0 | const type d = *(p_itr); |
640 | |
|
641 | 0 | while ((data_end != d_itr) && !(Compare::cmp(d,*(d_itr)) || (exactly_one == d))) |
642 | 0 | { |
643 | 0 | ++d_itr; |
644 | 0 | } |
645 | | |
646 | | // set backtrack iterators |
647 | 0 | np_itr = p_itr - 1; |
648 | 0 | nd_itr = d_itr + 1; |
649 | |
|
650 | 0 | continue; |
651 | 0 | } |
652 | 0 | } |
653 | 0 | else if (data_end == d_itr) |
654 | 0 | break; |
655 | | |
656 | 0 | if ((data_end == d_itr) || (null_itr == nd_itr)) |
657 | 0 | return false; |
658 | | |
659 | 0 | p_itr = np_itr; |
660 | 0 | d_itr = nd_itr; |
661 | 0 | } |
662 | | |
663 | 0 | return true; |
664 | 0 | } Unexecuted instantiation: bool exprtk::details::match_impl<char const*, exprtk::details::cs_match>(char const*, char const*, char const*, char const*, std::__1::iterator_traits<char const*>::value_type const&, std::__1::iterator_traits<char const*>::value_type const&) Unexecuted instantiation: bool exprtk::details::match_impl<char const*, exprtk::details::cis_match>(char const*, char const*, char const*, char const*, std::__1::iterator_traits<char const*>::value_type const&, std::__1::iterator_traits<char const*>::value_type const&) |
665 | | |
666 | | inline bool wc_match(const std::string& wild_card, |
667 | | const std::string& str) |
668 | 0 | { |
669 | 0 | return match_impl<char_cptr,cs_match> |
670 | 0 | ( |
671 | 0 | wild_card.data(), |
672 | 0 | wild_card.data() + wild_card.size(), |
673 | 0 | str.data(), |
674 | 0 | str.data() + str.size(), |
675 | 0 | '*', '?' |
676 | 0 | ); |
677 | 0 | } |
678 | | |
679 | | inline bool wc_imatch(const std::string& wild_card, |
680 | | const std::string& str) |
681 | 0 | { |
682 | 0 | return match_impl<char_cptr,cis_match> |
683 | 0 | ( |
684 | 0 | wild_card.data(), |
685 | 0 | wild_card.data() + wild_card.size(), |
686 | 0 | str.data(), |
687 | 0 | str.data() + str.size(), |
688 | 0 | '*', '?' |
689 | 0 | ); |
690 | 0 | } |
691 | | |
692 | | inline bool sequence_match(const std::string& pattern, |
693 | | const std::string& str, |
694 | | std::size_t& diff_index, |
695 | | char_t& diff_value) |
696 | 0 | { |
697 | 0 | if (str.empty()) |
698 | 0 | { |
699 | 0 | return ("Z" == pattern); |
700 | 0 | } |
701 | 0 | else if ('*' == pattern[0]) |
702 | 0 | return false; |
703 | | |
704 | 0 | typedef std::string::const_iterator itr_t; |
705 | |
|
706 | 0 | itr_t p_itr = pattern.begin(); |
707 | 0 | itr_t s_itr = str .begin(); |
708 | |
|
709 | 0 | const itr_t p_end = pattern.end(); |
710 | 0 | const itr_t s_end = str .end(); |
711 | |
|
712 | 0 | while ((s_end != s_itr) && (p_end != p_itr)) |
713 | 0 | { |
714 | 0 | if ('*' == (*p_itr)) |
715 | 0 | { |
716 | 0 | const char_t target = static_cast<char_t>(std::toupper(*(p_itr - 1))); |
717 | |
|
718 | 0 | if ('*' == target) |
719 | 0 | { |
720 | 0 | diff_index = static_cast<std::size_t>(std::distance(str.begin(),s_itr)); |
721 | 0 | diff_value = static_cast<char_t>(std::toupper(*p_itr)); |
722 | |
|
723 | 0 | return false; |
724 | 0 | } |
725 | 0 | else |
726 | 0 | ++p_itr; |
727 | | |
728 | 0 | while (s_itr != s_end) |
729 | 0 | { |
730 | 0 | if (target != std::toupper(*s_itr)) |
731 | 0 | break; |
732 | 0 | else |
733 | 0 | ++s_itr; |
734 | 0 | } |
735 | |
|
736 | 0 | continue; |
737 | 0 | } |
738 | 0 | else if ( |
739 | 0 | ('?' != *p_itr) && |
740 | 0 | std::toupper(*p_itr) != std::toupper(*s_itr) |
741 | 0 | ) |
742 | 0 | { |
743 | 0 | diff_index = static_cast<std::size_t>(std::distance(str.begin(),s_itr)); |
744 | 0 | diff_value = static_cast<char_t>(std::toupper(*p_itr)); |
745 | |
|
746 | 0 | return false; |
747 | 0 | } |
748 | | |
749 | 0 | ++p_itr; |
750 | 0 | ++s_itr; |
751 | 0 | } |
752 | | |
753 | 0 | return ( |
754 | 0 | (s_end == s_itr) && |
755 | 0 | ( |
756 | 0 | (p_end == p_itr) || |
757 | 0 | ('*' == *p_itr) |
758 | 0 | ) |
759 | 0 | ); |
760 | 0 | } |
761 | | |
762 | | template<typename T> |
763 | | struct set_zero_value_impl |
764 | | { |
765 | | static inline void process(T* base_ptr, const std::size_t size) |
766 | | { |
767 | | const T zero = T(0); |
768 | | for (std::size_t i = 0; i < size; ++i) |
769 | | { |
770 | | base_ptr[i] = zero; |
771 | | } |
772 | | } |
773 | | }; |
774 | | |
775 | | #define pod_set_zero_value(T) \ |
776 | | template <> \ |
777 | | struct set_zero_value_impl<T> \ |
778 | | { \ |
779 | | static inline void process(T* base_ptr, const std::size_t size) \ |
780 | 0 | { std::memset(base_ptr, 0x00, size * sizeof(T)); } \ Unexecuted instantiation: exprtk::details::set_zero_value_impl<double>::process(double*, unsigned long) Unexecuted instantiation: exprtk::details::set_zero_value_impl<float>::process(float*, unsigned long) Unexecuted instantiation: exprtk::details::set_zero_value_impl<long double>::process(long double*, unsigned long) |
781 | | }; \ |
782 | | |
783 | | pod_set_zero_value(float ) |
784 | | pod_set_zero_value(double ) |
785 | | pod_set_zero_value(long double) |
786 | | |
787 | | #ifdef pod_set_zero_value |
788 | | #undef pod_set_zero_value |
789 | | #endif |
790 | | |
791 | | template<typename T> |
792 | | inline void set_zero_value(T* data, const std::size_t size) |
793 | 0 | { |
794 | 0 | set_zero_value_impl<T>::process(data,size); |
795 | 0 | } Unexecuted instantiation: void exprtk::details::set_zero_value<double>(double*, unsigned long) Unexecuted instantiation: void exprtk::details::set_zero_value<float>(float*, unsigned long) |
796 | | |
797 | | template<typename T> |
798 | | inline void set_zero_value(std::vector<T>& v) |
799 | | { |
800 | | set_zero_value(v.data(),v.size()); |
801 | | } |
802 | | |
803 | | static const double pow10[] = |
804 | | { |
805 | | 1.0, |
806 | | 1.0E+001, 1.0E+002, 1.0E+003, 1.0E+004, |
807 | | 1.0E+005, 1.0E+006, 1.0E+007, 1.0E+008, |
808 | | 1.0E+009, 1.0E+010, 1.0E+011, 1.0E+012, |
809 | | 1.0E+013, 1.0E+014, 1.0E+015, 1.0E+016 |
810 | | }; |
811 | | |
812 | | static const std::size_t pow10_size = sizeof(pow10) / sizeof(double); |
813 | | |
814 | | namespace numeric |
815 | | { |
816 | | namespace constant |
817 | | { |
818 | | static const double e = 2.71828182845904523536028747135266249775724709369996; |
819 | | static const double pi = 3.14159265358979323846264338327950288419716939937510; |
820 | | static const double pi_2 = 1.57079632679489661923132169163975144209858469968755; |
821 | | static const double pi_4 = 0.78539816339744830961566084581987572104929234984378; |
822 | | static const double pi_180 = 0.01745329251994329576923690768488612713442871888542; |
823 | | static const double _1_pi = 0.31830988618379067153776752674502872406891929148091; |
824 | | static const double _2_pi = 0.63661977236758134307553505349005744813783858296183; |
825 | | static const double _180_pi = 57.29577951308232087679815481410517033240547246656443; |
826 | | static const double log2 = 0.69314718055994530941723212145817656807550013436026; |
827 | | static const double sqrt2 = 1.41421356237309504880168872420969807856967187537695; |
828 | | } |
829 | | |
830 | | namespace details |
831 | | { |
832 | 0 | struct unknown_type_tag { unknown_type_tag() {} }; |
833 | 1.27M | struct real_type_tag { real_type_tag () {} }; |
834 | 0 | struct int_type_tag { int_type_tag () {} }; |
835 | | |
836 | | template <typename T> |
837 | | struct number_type |
838 | | { |
839 | | typedef unknown_type_tag type; |
840 | | number_type() {} |
841 | | }; |
842 | | |
843 | | #define exprtk_register_real_type_tag(T) \ |
844 | | template <> struct number_type<T> \ |
845 | 0 | { typedef real_type_tag type; number_type() {} }; \ Unexecuted instantiation: exprtk::details::numeric::details::number_type<float>::number_type() Unexecuted instantiation: exprtk::details::numeric::details::number_type<double>::number_type() Unexecuted instantiation: exprtk::details::numeric::details::number_type<long double>::number_type() |
846 | | |
847 | | #define exprtk_register_int_type_tag(T) \ |
848 | | template <> struct number_type<T> \ |
849 | 0 | { typedef int_type_tag type; number_type() {} }; \ Unexecuted instantiation: exprtk::details::numeric::details::number_type<short>::number_type() Unexecuted instantiation: exprtk::details::numeric::details::number_type<int>::number_type() Unexecuted instantiation: exprtk::details::numeric::details::number_type<long long>::number_type() Unexecuted instantiation: exprtk::details::numeric::details::number_type<unsigned short>::number_type() Unexecuted instantiation: exprtk::details::numeric::details::number_type<unsigned int>::number_type() Unexecuted instantiation: exprtk::details::numeric::details::number_type<unsigned long long>::number_type() |
850 | | |
851 | | exprtk_register_real_type_tag(float ) |
852 | | exprtk_register_real_type_tag(double ) |
853 | | exprtk_register_real_type_tag(long double) |
854 | | |
855 | | exprtk_register_int_type_tag(short ) |
856 | | exprtk_register_int_type_tag(int ) |
857 | | exprtk_register_int_type_tag(_int64_t ) |
858 | | exprtk_register_int_type_tag(unsigned short) |
859 | | exprtk_register_int_type_tag(unsigned int ) |
860 | | exprtk_register_int_type_tag(_uint64_t ) |
861 | | |
862 | | #undef exprtk_register_real_type_tag |
863 | | #undef exprtk_register_int_type_tag |
864 | | |
865 | | template <typename T> |
866 | | struct epsilon_type {}; |
867 | | |
868 | | #define exprtk_define_epsilon_type(Type, Epsilon) \ |
869 | | template <> struct epsilon_type<Type> \ |
870 | | { \ |
871 | | static inline Type value() \ |
872 | 2 | { \ |
873 | 2 | const Type epsilon = static_cast<Type>(Epsilon); \ |
874 | 2 | return epsilon; \ |
875 | 2 | } \ exprtk::details::numeric::details::epsilon_type<double>::value() Line | Count | Source | 872 | 1 | { \ | 873 | 1 | const Type epsilon = static_cast<Type>(Epsilon); \ | 874 | 1 | return epsilon; \ | 875 | 1 | } \ |
exprtk::details::numeric::details::epsilon_type<float>::value() Line | Count | Source | 872 | 1 | { \ | 873 | 1 | const Type epsilon = static_cast<Type>(Epsilon); \ | 874 | 1 | return epsilon; \ | 875 | 1 | } \ |
Unexecuted instantiation: exprtk::details::numeric::details::epsilon_type<long double>::value() |
876 | | }; \ |
877 | | |
878 | | exprtk_define_epsilon_type(float , 0.00000100000f) |
879 | | exprtk_define_epsilon_type(double , 0.000000000100) |
880 | | exprtk_define_epsilon_type(long double, 0.000000000001) |
881 | | |
882 | | #undef exprtk_define_epsilon_type |
883 | | |
884 | | template <typename T> |
885 | | inline bool is_nan_impl(const T v, real_type_tag) |
886 | 0 | { |
887 | 0 | return std::not_equal_to<T>()(v,v); |
888 | 0 | } Unexecuted instantiation: bool exprtk::details::numeric::details::is_nan_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: bool exprtk::details::numeric::details::is_nan_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
889 | | |
890 | | template <typename T> |
891 | | inline int to_int32_impl(const T v, real_type_tag) |
892 | 5.35k | { |
893 | 5.35k | return static_cast<int>(v); |
894 | 5.35k | } int exprtk::details::numeric::details::to_int32_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 892 | 3.05k | { | 893 | 3.05k | return static_cast<int>(v); | 894 | 3.05k | } |
int exprtk::details::numeric::details::to_int32_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 892 | 2.30k | { | 893 | 2.30k | return static_cast<int>(v); | 894 | 2.30k | } |
|
895 | | |
896 | | template <typename T> |
897 | | inline _int64_t to_int64_impl(const T v, real_type_tag) |
898 | 28 | { |
899 | 28 | return static_cast<_int64_t>(v); |
900 | 28 | } long long exprtk::details::numeric::details::to_int64_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 898 | 14 | { | 899 | 14 | return static_cast<_int64_t>(v); | 900 | 14 | } |
long long exprtk::details::numeric::details::to_int64_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 898 | 14 | { | 899 | 14 | return static_cast<_int64_t>(v); | 900 | 14 | } |
|
901 | | |
902 | | template <typename T> |
903 | | inline _uint64_t to_uint64_impl(const T v, real_type_tag) |
904 | 0 | { |
905 | 0 | return static_cast<_uint64_t>(v); |
906 | 0 | } Unexecuted instantiation: unsigned long long exprtk::details::numeric::details::to_uint64_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: unsigned long long exprtk::details::numeric::details::to_uint64_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
907 | | |
908 | | template <typename T> |
909 | | inline bool is_true_impl(const T v) |
910 | 26 | { |
911 | 26 | return std::not_equal_to<T>()(T(0),v); |
912 | 26 | } bool exprtk::details::numeric::details::is_true_impl<double>(double) Line | Count | Source | 910 | 13 | { | 911 | 13 | return std::not_equal_to<T>()(T(0),v); | 912 | 13 | } |
bool exprtk::details::numeric::details::is_true_impl<float>(float) Line | Count | Source | 910 | 13 | { | 911 | 13 | return std::not_equal_to<T>()(T(0),v); | 912 | 13 | } |
|
913 | | |
914 | | template <typename T> |
915 | | inline bool is_false_impl(const T v) |
916 | 152 | { |
917 | 152 | return std::equal_to<T>()(T(0),v); |
918 | 152 | } bool exprtk::details::numeric::details::is_false_impl<double>(double) Line | Count | Source | 916 | 76 | { | 917 | 76 | return std::equal_to<T>()(T(0),v); | 918 | 76 | } |
bool exprtk::details::numeric::details::is_false_impl<float>(float) Line | Count | Source | 916 | 76 | { | 917 | 76 | return std::equal_to<T>()(T(0),v); | 918 | 76 | } |
|
919 | | |
920 | | template <typename T> |
921 | | inline T abs_impl(const T v, real_type_tag) |
922 | 11.0k | { |
923 | 11.0k | return ((v < T(0)) ? -v : v); |
924 | 11.0k | } double exprtk::details::numeric::details::abs_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 922 | 6.33k | { | 923 | 6.33k | return ((v < T(0)) ? -v : v); | 924 | 6.33k | } |
float exprtk::details::numeric::details::abs_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 922 | 4.74k | { | 923 | 4.74k | return ((v < T(0)) ? -v : v); | 924 | 4.74k | } |
|
925 | | |
926 | | template <typename T> |
927 | | inline T min_impl(const T v0, const T v1, real_type_tag) |
928 | | { |
929 | | return std::min<T>(v0,v1); |
930 | | } |
931 | | |
932 | | template <typename T> |
933 | | inline T max_impl(const T v0, const T v1, real_type_tag) |
934 | | { |
935 | | return std::max<T>(v0,v1); |
936 | | } |
937 | | |
938 | | template <typename T> |
939 | | inline T equal_impl(const T v0, const T v1, real_type_tag) |
940 | 0 | { |
941 | 0 | const T epsilon = epsilon_type<T>::value(); |
942 | 0 | return (abs_impl(v0 - v1,real_type_tag()) <= (std::max(T(1),std::max(abs_impl(v0,real_type_tag()),abs_impl(v1,real_type_tag()))) * epsilon)) ? T(1) : T(0); |
943 | 0 | } |
944 | | |
945 | | inline float equal_impl(const float v0, const float v1, real_type_tag) |
946 | 0 | { |
947 | 0 | const float epsilon = epsilon_type<float>::value(); |
948 | 0 | return (abs_impl(v0 - v1,real_type_tag()) <= (std::max(1.0f,std::max(abs_impl(v0,real_type_tag()),abs_impl(v1,real_type_tag()))) * epsilon)) ? 1.0f : 0.0f; |
949 | 0 | } |
950 | | |
951 | | template <typename T> |
952 | | inline T equal_impl(const T v0, const T v1, int_type_tag) |
953 | | { |
954 | | return (v0 == v1) ? 1 : 0; |
955 | | } |
956 | | |
957 | | template <typename T> |
958 | | inline T nequal_impl(const T v0, const T v1, real_type_tag) |
959 | 0 | { |
960 | 0 | typedef real_type_tag rtg; |
961 | 0 | const T epsilon = epsilon_type<T>::value(); |
962 | 0 | return (abs_impl(v0 - v1,rtg()) > (std::max(T(1),std::max(abs_impl(v0,rtg()),abs_impl(v1,rtg()))) * epsilon)) ? T(1) : T(0); |
963 | 0 | } |
964 | | |
965 | | inline float nequal_impl(const float v0, const float v1, real_type_tag) |
966 | 0 | { |
967 | 0 | typedef real_type_tag rtg; |
968 | 0 | const float epsilon = epsilon_type<float>::value(); |
969 | 0 | return (abs_impl(v0 - v1,rtg()) > (std::max(1.0f,std::max(abs_impl(v0,rtg()),abs_impl(v1,rtg()))) * epsilon)) ? 1.0f : 0.0f; |
970 | 0 | } |
971 | | |
972 | | template <typename T> |
973 | | inline T nequal_impl(const T v0, const T v1, int_type_tag) |
974 | | { |
975 | | return (v0 != v1) ? 1 : 0; |
976 | | } |
977 | | |
978 | | template <typename T> |
979 | | inline T modulus_impl(const T v0, const T v1, real_type_tag) |
980 | 7.84k | { |
981 | 7.84k | return std::fmod(v0,v1); |
982 | 7.84k | } double exprtk::details::numeric::details::modulus_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 980 | 7.55k | { | 981 | 7.55k | return std::fmod(v0,v1); | 982 | 7.55k | } |
float exprtk::details::numeric::details::modulus_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 980 | 287 | { | 981 | 287 | return std::fmod(v0,v1); | 982 | 287 | } |
|
983 | | |
984 | | template <typename T> |
985 | | inline T modulus_impl(const T v0, const T v1, int_type_tag) |
986 | | { |
987 | | return v0 % v1; |
988 | | } |
989 | | |
990 | | template <typename T> |
991 | | inline T pow_impl(const T v0, const T v1, real_type_tag) |
992 | 1.45k | { |
993 | 1.45k | return std::pow(v0,v1); |
994 | 1.45k | } double exprtk::details::numeric::details::pow_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 992 | 766 | { | 993 | 766 | return std::pow(v0,v1); | 994 | 766 | } |
float exprtk::details::numeric::details::pow_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 992 | 691 | { | 993 | 691 | return std::pow(v0,v1); | 994 | 691 | } |
|
995 | | |
996 | | template <typename T> |
997 | | inline T pow_impl(const T v0, const T v1, int_type_tag) |
998 | | { |
999 | | return std::pow(static_cast<double>(v0),static_cast<double>(v1)); |
1000 | | } |
1001 | | |
1002 | | template <typename T> |
1003 | | inline T logn_impl(const T v0, const T v1, real_type_tag) |
1004 | 0 | { |
1005 | 0 | return std::log(v0) / std::log(v1); |
1006 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::logn_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::logn_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) |
1007 | | |
1008 | | template <typename T> |
1009 | | inline T logn_impl(const T v0, const T v1, int_type_tag) |
1010 | | { |
1011 | | return static_cast<T>(logn_impl<double>(static_cast<double>(v0),static_cast<double>(v1),real_type_tag())); |
1012 | | } |
1013 | | |
1014 | | template <typename T> |
1015 | | inline T root_impl(const T v0, const T v1, real_type_tag) |
1016 | 0 | { |
1017 | 0 | if (v0 < T(0)) |
1018 | 0 | { |
1019 | 0 | return (v1 == trunc_impl(v1, real_type_tag())) && |
1020 | 0 | (modulus_impl(v1, T(2), real_type_tag()) != T(0)) ? |
1021 | 0 | -std::pow(abs_impl(v0, real_type_tag()), T(1) / v1) : |
1022 | 0 | std::numeric_limits<double>::quiet_NaN(); |
1023 | 0 | } |
1024 | | |
1025 | 0 | return std::pow(v0, T(1) / v1); |
1026 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::root_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::root_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) |
1027 | | |
1028 | | template <typename T> |
1029 | | inline T root_impl(const T v0, const T v1, int_type_tag) |
1030 | | { |
1031 | | return root_impl<double>(static_cast<double>(v0),static_cast<double>(v1),real_type_tag()); |
1032 | | } |
1033 | | |
1034 | | template <typename T> |
1035 | | inline T round_impl(const T v, real_type_tag) |
1036 | 0 | { |
1037 | 0 | return ((v < T(0)) ? std::ceil(v - T(0.5)) : std::floor(v + T(0.5))); |
1038 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::round_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::round_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1039 | | |
1040 | | template <typename T> |
1041 | | inline T roundn_impl(const T v0, const T v1, real_type_tag) |
1042 | 0 | { |
1043 | 0 | const int index = std::max<int>(0, std::min<int>(pow10_size - 1, static_cast<int>(std::floor(v1)))); |
1044 | 0 | const T p10 = T(pow10[index]); |
1045 | |
|
1046 | 0 | if (v0 < T(0)) |
1047 | 0 | return T(std::ceil ((v0 * p10) - T(0.5)) / p10); |
1048 | 0 | else |
1049 | 0 | return T(std::floor((v0 * p10) + T(0.5)) / p10); |
1050 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::roundn_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::roundn_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) |
1051 | | |
1052 | | template <typename T> |
1053 | | inline T roundn_impl(const T v0, const T, int_type_tag) |
1054 | | { |
1055 | | return v0; |
1056 | | } |
1057 | | |
1058 | | template <typename T> |
1059 | | inline T hypot_impl(const T v0, const T v1, real_type_tag) |
1060 | 0 | { |
1061 | 0 | return std::sqrt((v0 * v0) + (v1 * v1)); |
1062 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::hypot_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::hypot_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) |
1063 | | |
1064 | | template <typename T> |
1065 | | inline T hypot_impl(const T v0, const T v1, int_type_tag) |
1066 | | { |
1067 | | return static_cast<T>(std::sqrt(static_cast<double>((v0 * v0) + (v1 * v1)))); |
1068 | | } |
1069 | | |
1070 | | template <typename T> |
1071 | | inline T atan2_impl(const T v0, const T v1, real_type_tag) |
1072 | 0 | { |
1073 | 0 | return std::atan2(v0,v1); |
1074 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::atan2_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::atan2_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) |
1075 | | |
1076 | | template <typename T> |
1077 | | inline T atan2_impl(const T, const T, int_type_tag) |
1078 | | { |
1079 | | return 0; |
1080 | | } |
1081 | | |
1082 | | template <typename T> |
1083 | | inline T shr_impl(const T v0, const T v1, real_type_tag) |
1084 | 0 | { |
1085 | 0 | return v0 * (T(1) / std::pow(T(2),static_cast<T>(static_cast<int>(v1)))); |
1086 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::shr_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::shr_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) |
1087 | | |
1088 | | template <typename T> |
1089 | | inline T shr_impl(const T v0, const T v1, int_type_tag) |
1090 | | { |
1091 | | return v0 >> v1; |
1092 | | } |
1093 | | |
1094 | | template <typename T> |
1095 | | inline T shl_impl(const T v0, const T v1, real_type_tag) |
1096 | 0 | { |
1097 | 0 | return v0 * std::pow(T(2),static_cast<T>(static_cast<int>(v1))); |
1098 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::shl_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::shl_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) |
1099 | | |
1100 | | template <typename T> |
1101 | | inline T shl_impl(const T v0, const T v1, int_type_tag) |
1102 | | { |
1103 | | return v0 << v1; |
1104 | | } |
1105 | | |
1106 | | template <typename T> |
1107 | | inline T sgn_impl(const T v, real_type_tag) |
1108 | 0 | { |
1109 | 0 | if (v > T(0)) return T(+1); |
1110 | 0 | else if (v < T(0)) return T(-1); |
1111 | 0 | else return T( 0); |
1112 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::sgn_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::sgn_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1113 | | |
1114 | | template <typename T> |
1115 | | inline T sgn_impl(const T v, int_type_tag) |
1116 | | { |
1117 | | if (v > T(0)) return T(+1); |
1118 | | else if (v < T(0)) return T(-1); |
1119 | | else return T( 0); |
1120 | | } |
1121 | | |
1122 | | template <typename T> |
1123 | | inline T and_impl(const T v0, const T v1, real_type_tag) |
1124 | 0 | { |
1125 | 0 | return (is_true_impl(v0) && is_true_impl(v1)) ? T(1) : T(0); |
1126 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::and_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::and_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) |
1127 | | |
1128 | | template <typename T> |
1129 | | inline T and_impl(const T v0, const T v1, int_type_tag) |
1130 | | { |
1131 | | return v0 && v1; |
1132 | | } |
1133 | | |
1134 | | template <typename T> |
1135 | | inline T nand_impl(const T v0, const T v1, real_type_tag) |
1136 | 6 | { |
1137 | 6 | return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0); |
1138 | 6 | } double exprtk::details::numeric::details::nand_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1136 | 3 | { | 1137 | 3 | return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0); | 1138 | 3 | } |
float exprtk::details::numeric::details::nand_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1136 | 3 | { | 1137 | 3 | return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0); | 1138 | 3 | } |
|
1139 | | |
1140 | | template <typename T> |
1141 | | inline T nand_impl(const T v0, const T v1, int_type_tag) |
1142 | | { |
1143 | | return !(v0 && v1); |
1144 | | } |
1145 | | |
1146 | | template <typename T> |
1147 | | inline T or_impl(const T v0, const T v1, real_type_tag) |
1148 | 4 | { |
1149 | 4 | return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0); |
1150 | 4 | } double exprtk::details::numeric::details::or_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1148 | 2 | { | 1149 | 2 | return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0); | 1150 | 2 | } |
float exprtk::details::numeric::details::or_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1148 | 2 | { | 1149 | 2 | return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0); | 1150 | 2 | } |
|
1151 | | |
1152 | | template <typename T> |
1153 | | inline T or_impl(const T v0, const T v1, int_type_tag) |
1154 | | { |
1155 | | return (v0 || v1); |
1156 | | } |
1157 | | |
1158 | | template <typename T> |
1159 | | inline T nor_impl(const T v0, const T v1, real_type_tag) |
1160 | 0 | { |
1161 | 0 | return (is_false_impl(v0) && is_false_impl(v1)) ? T(1) : T(0); |
1162 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::nor_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::nor_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) |
1163 | | |
1164 | | template <typename T> |
1165 | | inline T nor_impl(const T v0, const T v1, int_type_tag) |
1166 | | { |
1167 | | return !(v0 || v1); |
1168 | | } |
1169 | | |
1170 | | template <typename T> |
1171 | | inline T xor_impl(const T v0, const T v1, real_type_tag) |
1172 | 70 | { |
1173 | 70 | return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0); |
1174 | 70 | } double exprtk::details::numeric::details::xor_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1172 | 35 | { | 1173 | 35 | return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0); | 1174 | 35 | } |
float exprtk::details::numeric::details::xor_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1172 | 35 | { | 1173 | 35 | return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0); | 1174 | 35 | } |
|
1175 | | |
1176 | | template <typename T> |
1177 | | inline T xor_impl(const T v0, const T v1, int_type_tag) |
1178 | | { |
1179 | | return v0 ^ v1; |
1180 | | } |
1181 | | |
1182 | | template <typename T> |
1183 | | inline T xnor_impl(const T v0, const T v1, real_type_tag) |
1184 | 10 | { |
1185 | 10 | const bool v0_true = is_true_impl(v0); |
1186 | 10 | const bool v1_true = is_true_impl(v1); |
1187 | | |
1188 | 10 | if ((v0_true && v1_true) || (!v0_true && !v1_true)) |
1189 | 4 | return T(1); |
1190 | 6 | else |
1191 | 6 | return T(0); |
1192 | 10 | } double exprtk::details::numeric::details::xnor_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1184 | 5 | { | 1185 | 5 | const bool v0_true = is_true_impl(v0); | 1186 | 5 | const bool v1_true = is_true_impl(v1); | 1187 | | | 1188 | 5 | if ((v0_true && v1_true) || (!v0_true && !v1_true)) | 1189 | 2 | return T(1); | 1190 | 3 | else | 1191 | 3 | return T(0); | 1192 | 5 | } |
float exprtk::details::numeric::details::xnor_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1184 | 5 | { | 1185 | 5 | const bool v0_true = is_true_impl(v0); | 1186 | 5 | const bool v1_true = is_true_impl(v1); | 1187 | | | 1188 | 5 | if ((v0_true && v1_true) || (!v0_true && !v1_true)) | 1189 | 2 | return T(1); | 1190 | 3 | else | 1191 | 3 | return T(0); | 1192 | 5 | } |
|
1193 | | |
1194 | | template <typename T> |
1195 | | inline T xnor_impl(const T v0, const T v1, int_type_tag) |
1196 | | { |
1197 | | const bool v0_true = is_true_impl(v0); |
1198 | | const bool v1_true = is_true_impl(v1); |
1199 | | |
1200 | | if ((v0_true && v1_true) || (!v0_true && !v1_true)) |
1201 | | return T(1); |
1202 | | else |
1203 | | return T(0); |
1204 | | } |
1205 | | |
1206 | | #if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || !defined(_MSC_VER) |
1207 | | #define exprtk_define_erf(TT, impl) \ |
1208 | 0 | inline TT erf_impl(const TT v) { return impl(v); } \ Unexecuted instantiation: exprtk::details::numeric::details::erf_impl(double) Unexecuted instantiation: exprtk::details::numeric::details::erf_impl(float) Unexecuted instantiation: exprtk::details::numeric::details::erf_impl(long double) |
1209 | | |
1210 | | exprtk_define_erf(float , ::erff) |
1211 | | exprtk_define_erf(double , ::erf ) |
1212 | | exprtk_define_erf(long double, ::erfl) |
1213 | | #undef exprtk_define_erf |
1214 | | #endif |
1215 | | |
1216 | | template <typename T> |
1217 | | inline T erf_impl(const T v, real_type_tag) |
1218 | 0 | { |
1219 | | #if defined(_MSC_VER) && (_MSC_VER < 1900) |
1220 | | // Credits: Abramowitz & Stegun Equations 7.1.25-28 |
1221 | | static const T c[] = |
1222 | | { |
1223 | | T( 1.26551223), T(1.00002368), |
1224 | | T( 0.37409196), T(0.09678418), |
1225 | | T(-0.18628806), T(0.27886807), |
1226 | | T(-1.13520398), T(1.48851587), |
1227 | | T(-0.82215223), T(0.17087277) |
1228 | | }; |
1229 | | |
1230 | | const T t = T(1) / (T(1) + T(0.5) * abs_impl(v,real_type_tag())); |
1231 | | |
1232 | | const T result = T(1) - t * std::exp((-v * v) - |
1233 | | c[0] + t * (c[1] + t * |
1234 | | (c[2] + t * (c[3] + t * |
1235 | | (c[4] + t * (c[5] + t * |
1236 | | (c[6] + t * (c[7] + t * |
1237 | | (c[8] + t * (c[9])))))))))); |
1238 | | |
1239 | | return (v >= T(0)) ? result : -result; |
1240 | | #else |
1241 | 0 | return erf_impl(v); |
1242 | 0 | #endif |
1243 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::erf_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::erf_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1244 | | |
1245 | | template <typename T> |
1246 | | inline T erf_impl(const T v, int_type_tag) |
1247 | | { |
1248 | | return erf_impl(static_cast<double>(v),real_type_tag()); |
1249 | | } |
1250 | | |
1251 | | #if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || !defined(_MSC_VER) |
1252 | | #define exprtk_define_erfc(TT, impl) \ |
1253 | 0 | inline TT erfc_impl(const TT v) { return impl(v); } \ Unexecuted instantiation: exprtk::details::numeric::details::erfc_impl(double) Unexecuted instantiation: exprtk::details::numeric::details::erfc_impl(float) Unexecuted instantiation: exprtk::details::numeric::details::erfc_impl(long double) |
1254 | | |
1255 | | exprtk_define_erfc(float ,::erfcf) |
1256 | | exprtk_define_erfc(double ,::erfc ) |
1257 | | exprtk_define_erfc(long double,::erfcl) |
1258 | | #undef exprtk_define_erfc |
1259 | | #endif |
1260 | | |
1261 | | template <typename T> |
1262 | | inline T erfc_impl(const T v, real_type_tag) |
1263 | 0 | { |
1264 | | #if defined(_MSC_VER) && (_MSC_VER < 1900) |
1265 | | return T(1) - erf_impl(v,real_type_tag()); |
1266 | | #else |
1267 | 0 | return erfc_impl(v); |
1268 | 0 | #endif |
1269 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::erfc_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::erfc_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1270 | | |
1271 | | template <typename T> |
1272 | | inline T erfc_impl(const T v, int_type_tag) |
1273 | | { |
1274 | | return erfc_impl(static_cast<double>(v),real_type_tag()); |
1275 | | } |
1276 | | |
1277 | | template <typename T> |
1278 | | inline T ncdf_impl(const T v, real_type_tag) |
1279 | 0 | { |
1280 | 0 | return T(0.5) * erfc_impl(-(v / T(numeric::constant::sqrt2)),real_type_tag()); |
1281 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::ncdf_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::ncdf_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1282 | | |
1283 | | template <typename T> |
1284 | | inline T ncdf_impl(const T v, int_type_tag) |
1285 | | { |
1286 | | return ncdf_impl(static_cast<double>(v),real_type_tag()); |
1287 | | } |
1288 | | |
1289 | | template <typename T> |
1290 | | inline T sinc_impl(const T v, real_type_tag) |
1291 | 0 | { |
1292 | 0 | if (std::abs(v) >= std::numeric_limits<T>::epsilon()) |
1293 | 0 | return(std::sin(v) / v); |
1294 | 0 | else |
1295 | 0 | return T(1); |
1296 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::sinc_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::sinc_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1297 | | |
1298 | | template <typename T> |
1299 | | inline T sinc_impl(const T v, int_type_tag) |
1300 | | { |
1301 | | return sinc_impl(static_cast<double>(v),real_type_tag()); |
1302 | | } |
1303 | | |
1304 | | #if __cplusplus >= 201103L |
1305 | | template <typename T> |
1306 | | inline T acosh_impl(const T v, real_type_tag) |
1307 | 0 | { |
1308 | 0 | return std::acosh(v); |
1309 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::acosh_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::acosh_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1310 | | |
1311 | | template <typename T> |
1312 | | inline T asinh_impl(const T v, real_type_tag) |
1313 | 0 | { |
1314 | 0 | return std::asinh(v); |
1315 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::asinh_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::asinh_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1316 | | |
1317 | | template <typename T> |
1318 | | inline T atanh_impl(const T v, real_type_tag) |
1319 | 0 | { |
1320 | 0 | return std::atanh(v); |
1321 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::atanh_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::atanh_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1322 | | |
1323 | | template <typename T> |
1324 | | inline T trunc_impl(const T v, real_type_tag) |
1325 | 0 | { |
1326 | 0 | return std::trunc(v); |
1327 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::trunc_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::trunc_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1328 | | |
1329 | | template <typename T> |
1330 | | inline T expm1_impl(const T v, real_type_tag) |
1331 | 0 | { |
1332 | 0 | return std::expm1(v); |
1333 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::expm1_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::expm1_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1334 | | |
1335 | | template <typename T> |
1336 | | inline T expm1_impl(const T v, int_type_tag) |
1337 | | { |
1338 | | return std::expm1(v); |
1339 | | } |
1340 | | |
1341 | | template <typename T> |
1342 | | inline T log1p_impl(const T v, real_type_tag) |
1343 | 0 | { |
1344 | 0 | return std::log1p(v); |
1345 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::details::log1p_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::log1p_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1346 | | |
1347 | | template <typename T> |
1348 | | inline T log1p_impl(const T v, int_type_tag) |
1349 | | { |
1350 | | return std::log1p(v); |
1351 | | } |
1352 | | #else |
1353 | | template <typename T> |
1354 | | inline T acosh_impl(const T v, real_type_tag) |
1355 | | { |
1356 | | return std::log(v + std::sqrt((v * v) - T(1))); |
1357 | | } |
1358 | | |
1359 | | template <typename T> |
1360 | | inline T asinh_impl(const T v, real_type_tag) |
1361 | | { |
1362 | | return std::log(v + std::sqrt((v * v) + T(1))); |
1363 | | } |
1364 | | |
1365 | | template <typename T> |
1366 | | inline T atanh_impl(const T v, real_type_tag) |
1367 | | { |
1368 | | return (std::log(T(1) + v) - std::log(T(1) - v)) / T(2); |
1369 | | } |
1370 | | |
1371 | | template <typename T> |
1372 | | inline T trunc_impl(const T v, real_type_tag) |
1373 | | { |
1374 | | return T(static_cast<long long>(v)); |
1375 | | } |
1376 | | |
1377 | | template <typename T> |
1378 | | inline T expm1_impl(const T v, real_type_tag) |
1379 | | { |
1380 | | if (abs_impl(v,real_type_tag()) < T(0.00001)) |
1381 | | return v + (T(0.5) * v * v); |
1382 | | else |
1383 | | return std::exp(v) - T(1); |
1384 | | } |
1385 | | |
1386 | | template <typename T> |
1387 | | inline T expm1_impl(const T v, int_type_tag) |
1388 | | { |
1389 | | return T(std::exp<double>(v)) - T(1); |
1390 | | } |
1391 | | |
1392 | | template <typename T> |
1393 | | inline T log1p_impl(const T v, real_type_tag) |
1394 | | { |
1395 | | if (v > T(-1)) |
1396 | | { |
1397 | | if (abs_impl(v,real_type_tag()) > T(0.0001)) |
1398 | | { |
1399 | | return std::log(T(1) + v); |
1400 | | } |
1401 | | else |
1402 | | return (T(-0.5) * v + T(1)) * v; |
1403 | | } |
1404 | | |
1405 | | return std::numeric_limits<T>::quiet_NaN(); |
1406 | | } |
1407 | | |
1408 | | template <typename T> |
1409 | | inline T log1p_impl(const T v, int_type_tag) |
1410 | | { |
1411 | | if (v > T(-1)) |
1412 | | { |
1413 | | return std::log(T(1) + v); |
1414 | | } |
1415 | | |
1416 | | return std::numeric_limits<T>::quiet_NaN(); |
1417 | | } |
1418 | | #endif |
1419 | | |
1420 | 0 | template <typename T> inline T acos_impl(const T v, real_type_tag) { return std::acos (v); } Unexecuted instantiation: double exprtk::details::numeric::details::acos_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::acos_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1421 | 0 | template <typename T> inline T asin_impl(const T v, real_type_tag) { return std::asin (v); } Unexecuted instantiation: double exprtk::details::numeric::details::asin_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::asin_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1422 | 0 | template <typename T> inline T atan_impl(const T v, real_type_tag) { return std::atan (v); } Unexecuted instantiation: double exprtk::details::numeric::details::atan_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::atan_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1423 | 0 | template <typename T> inline T ceil_impl(const T v, real_type_tag) { return std::ceil (v); } Unexecuted instantiation: double exprtk::details::numeric::details::ceil_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::ceil_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1424 | 0 | template <typename T> inline T cos_impl(const T v, real_type_tag) { return std::cos (v); } Unexecuted instantiation: double exprtk::details::numeric::details::cos_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::cos_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1425 | 0 | template <typename T> inline T cosh_impl(const T v, real_type_tag) { return std::cosh (v); } Unexecuted instantiation: double exprtk::details::numeric::details::cosh_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::cosh_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1426 | 0 | template <typename T> inline T exp_impl(const T v, real_type_tag) { return std::exp (v); } Unexecuted instantiation: double exprtk::details::numeric::details::exp_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::exp_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1427 | 0 | template <typename T> inline T floor_impl(const T v, real_type_tag) { return std::floor(v); } Unexecuted instantiation: double exprtk::details::numeric::details::floor_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::floor_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1428 | 0 | template <typename T> inline T log_impl(const T v, real_type_tag) { return std::log (v); } Unexecuted instantiation: double exprtk::details::numeric::details::log_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::log_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1429 | 0 | template <typename T> inline T log10_impl(const T v, real_type_tag) { return std::log10(v); } Unexecuted instantiation: double exprtk::details::numeric::details::log10_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::log10_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1430 | 0 | template <typename T> inline T log2_impl(const T v, real_type_tag) { return std::log(v)/T(numeric::constant::log2); } Unexecuted instantiation: double exprtk::details::numeric::details::log2_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::log2_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1431 | 16.3k | template <typename T> inline T neg_impl(const T v, real_type_tag) { return -v; } double exprtk::details::numeric::details::neg_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1431 | 14.1k | template <typename T> inline T neg_impl(const T v, real_type_tag) { return -v; } |
float exprtk::details::numeric::details::neg_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1431 | 2.22k | template <typename T> inline T neg_impl(const T v, real_type_tag) { return -v; } |
|
1432 | 0 | template <typename T> inline T pos_impl(const T v, real_type_tag) { return +v; } Unexecuted instantiation: double exprtk::details::numeric::details::pos_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::pos_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1433 | 0 | template <typename T> inline T sin_impl(const T v, real_type_tag) { return std::sin (v); } Unexecuted instantiation: double exprtk::details::numeric::details::sin_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::sin_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1434 | 0 | template <typename T> inline T sinh_impl(const T v, real_type_tag) { return std::sinh (v); } Unexecuted instantiation: double exprtk::details::numeric::details::sinh_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::sinh_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1435 | 0 | template <typename T> inline T sqrt_impl(const T v, real_type_tag) { return std::sqrt (v); } Unexecuted instantiation: double exprtk::details::numeric::details::sqrt_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::sqrt_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1436 | 0 | template <typename T> inline T tan_impl(const T v, real_type_tag) { return std::tan (v); } Unexecuted instantiation: double exprtk::details::numeric::details::tan_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::tan_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1437 | 0 | template <typename T> inline T tanh_impl(const T v, real_type_tag) { return std::tanh (v); } Unexecuted instantiation: double exprtk::details::numeric::details::tanh_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::tanh_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1438 | 0 | template <typename T> inline T cot_impl(const T v, real_type_tag) { return T(1) / std::tan(v); } Unexecuted instantiation: double exprtk::details::numeric::details::cot_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::cot_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1439 | 0 | template <typename T> inline T sec_impl(const T v, real_type_tag) { return T(1) / std::cos(v); } Unexecuted instantiation: double exprtk::details::numeric::details::sec_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::sec_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1440 | 0 | template <typename T> inline T csc_impl(const T v, real_type_tag) { return T(1) / std::sin(v); } Unexecuted instantiation: double exprtk::details::numeric::details::csc_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::csc_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1441 | 0 | template <typename T> inline T r2d_impl(const T v, real_type_tag) { return (v * T(numeric::constant::_180_pi)); } Unexecuted instantiation: double exprtk::details::numeric::details::r2d_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::r2d_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1442 | 0 | template <typename T> inline T d2r_impl(const T v, real_type_tag) { return (v * T(numeric::constant::pi_180)); } Unexecuted instantiation: double exprtk::details::numeric::details::d2r_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::d2r_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1443 | 0 | template <typename T> inline T d2g_impl(const T v, real_type_tag) { return (v * T(10.0/9.0)); } Unexecuted instantiation: double exprtk::details::numeric::details::d2g_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::d2g_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1444 | 0 | template <typename T> inline T g2d_impl(const T v, real_type_tag) { return (v * T(9.0/10.0)); } Unexecuted instantiation: double exprtk::details::numeric::details::g2d_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::g2d_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1445 | 0 | template <typename T> inline T notl_impl(const T v, real_type_tag) { return (std::not_equal_to<T>()(T(0),v) ? T(0) : T(1)); } Unexecuted instantiation: double exprtk::details::numeric::details::notl_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::notl_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1446 | 0 | template <typename T> inline T frac_impl(const T v, real_type_tag) { return (v - trunc_impl(v,real_type_tag())); } Unexecuted instantiation: double exprtk::details::numeric::details::frac_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Unexecuted instantiation: float exprtk::details::numeric::details::frac_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1447 | | |
1448 | 2 | template <typename T> inline T const_pi_impl(real_type_tag) { return T(numeric::constant::pi); } double exprtk::details::numeric::details::const_pi_impl<double>(exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1448 | 1 | template <typename T> inline T const_pi_impl(real_type_tag) { return T(numeric::constant::pi); } |
float exprtk::details::numeric::details::const_pi_impl<float>(exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1448 | 1 | template <typename T> inline T const_pi_impl(real_type_tag) { return T(numeric::constant::pi); } |
|
1449 | | template <typename T> inline T const_e_impl(real_type_tag) { return T(numeric::constant::e); } |
1450 | | template <typename T> inline T const_qnan_impl(real_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1451 | | |
1452 | | template <typename T> inline T abs_impl(const T v, int_type_tag) { return ((v >= T(0)) ? v : -v); } |
1453 | | template <typename T> inline T exp_impl(const T v, int_type_tag) { return std::exp (v); } |
1454 | | template <typename T> inline T log_impl(const T v, int_type_tag) { return std::log (v); } |
1455 | | template <typename T> inline T log10_impl(const T v, int_type_tag) { return std::log10(v); } |
1456 | | template <typename T> inline T log2_impl(const T v, int_type_tag) { return std::log(v)/T(numeric::constant::log2); } |
1457 | | template <typename T> inline T neg_impl(const T v, int_type_tag) { return -v; } |
1458 | | template <typename T> inline T pos_impl(const T v, int_type_tag) { return +v; } |
1459 | | template <typename T> inline T ceil_impl(const T v, int_type_tag) { return v; } |
1460 | | template <typename T> inline T floor_impl(const T v, int_type_tag) { return v; } |
1461 | | template <typename T> inline T round_impl(const T v, int_type_tag) { return v; } |
1462 | | template <typename T> inline T notl_impl(const T v, int_type_tag) { return !v; } |
1463 | | template <typename T> inline T sqrt_impl(const T v, int_type_tag) { return std::sqrt (v); } |
1464 | | template <typename T> inline T frac_impl(const T , int_type_tag) { return T(0); } |
1465 | | template <typename T> inline T trunc_impl(const T v, int_type_tag) { return v; } |
1466 | | template <typename T> inline T acos_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1467 | | template <typename T> inline T acosh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1468 | | template <typename T> inline T asin_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1469 | | template <typename T> inline T asinh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1470 | | template <typename T> inline T atan_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1471 | | template <typename T> inline T atanh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1472 | | template <typename T> inline T cos_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1473 | | template <typename T> inline T cosh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1474 | | template <typename T> inline T sin_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1475 | | template <typename T> inline T sinh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1476 | | template <typename T> inline T tan_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1477 | | template <typename T> inline T tanh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1478 | | template <typename T> inline T cot_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1479 | | template <typename T> inline T sec_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1480 | | template <typename T> inline T csc_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1481 | | |
1482 | | template <typename T> |
1483 | | inline bool is_integer_impl(const T& v, real_type_tag) |
1484 | 5.39k | { |
1485 | 5.39k | return std::equal_to<T>()(T(0),std::fmod(v,T(1))); |
1486 | 5.39k | } bool exprtk::details::numeric::details::is_integer_impl<double>(double const&, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1484 | 3.07k | { | 1485 | 3.07k | return std::equal_to<T>()(T(0),std::fmod(v,T(1))); | 1486 | 3.07k | } |
bool exprtk::details::numeric::details::is_integer_impl<float>(float const&, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1484 | 2.32k | { | 1485 | 2.32k | return std::equal_to<T>()(T(0),std::fmod(v,T(1))); | 1486 | 2.32k | } |
|
1487 | | |
1488 | | template <typename T> |
1489 | | inline bool is_integer_impl(const T&, int_type_tag) |
1490 | | { |
1491 | | return true; |
1492 | | } |
1493 | | } |
1494 | | |
1495 | | template <typename Type> |
1496 | | struct numeric_info { enum { length = 0, size = 32, bound_length = 0, min_exp = 0, max_exp = 0 }; }; |
1497 | | |
1498 | | template <> struct numeric_info<int > { enum { length = 10, size = 16, bound_length = 9 }; }; |
1499 | | template <> struct numeric_info<float > { enum { min_exp = -38, max_exp = +38 }; }; |
1500 | | template <> struct numeric_info<double > { enum { min_exp = -308, max_exp = +308 }; }; |
1501 | | template <> struct numeric_info<long double> { enum { min_exp = -308, max_exp = +308 }; }; |
1502 | | |
1503 | | template <typename T> |
1504 | | inline int to_int32(const T v) |
1505 | 5.35k | { |
1506 | 5.35k | const typename details::number_type<T>::type num_type; |
1507 | 5.35k | return to_int32_impl(v, num_type); |
1508 | 5.35k | } int exprtk::details::numeric::to_int32<double>(double) Line | Count | Source | 1505 | 3.05k | { | 1506 | 3.05k | const typename details::number_type<T>::type num_type; | 1507 | 3.05k | return to_int32_impl(v, num_type); | 1508 | 3.05k | } |
int exprtk::details::numeric::to_int32<float>(float) Line | Count | Source | 1505 | 2.30k | { | 1506 | 2.30k | const typename details::number_type<T>::type num_type; | 1507 | 2.30k | return to_int32_impl(v, num_type); | 1508 | 2.30k | } |
|
1509 | | |
1510 | | template <typename T> |
1511 | | inline _int64_t to_int64(const T v) |
1512 | 28 | { |
1513 | 28 | const typename details::number_type<T>::type num_type; |
1514 | 28 | return to_int64_impl(v, num_type); |
1515 | 28 | } long long exprtk::details::numeric::to_int64<double>(double) Line | Count | Source | 1512 | 14 | { | 1513 | 14 | const typename details::number_type<T>::type num_type; | 1514 | 14 | return to_int64_impl(v, num_type); | 1515 | 14 | } |
long long exprtk::details::numeric::to_int64<float>(float) Line | Count | Source | 1512 | 14 | { | 1513 | 14 | const typename details::number_type<T>::type num_type; | 1514 | 14 | return to_int64_impl(v, num_type); | 1515 | 14 | } |
|
1516 | | |
1517 | | template <typename T> |
1518 | | inline _uint64_t to_uint64(const T v) |
1519 | 0 | { |
1520 | 0 | const typename details::number_type<T>::type num_type; |
1521 | 0 | return to_uint64_impl(v, num_type); |
1522 | 0 | } Unexecuted instantiation: unsigned long long exprtk::details::numeric::to_uint64<double>(double) Unexecuted instantiation: unsigned long long exprtk::details::numeric::to_uint64<float>(float) |
1523 | | |
1524 | | template <typename T> |
1525 | | inline bool is_nan(const T v) |
1526 | 0 | { |
1527 | 0 | const typename details::number_type<T>::type num_type; |
1528 | 0 | return is_nan_impl(v, num_type); |
1529 | 0 | } Unexecuted instantiation: bool exprtk::details::numeric::is_nan<double>(double) Unexecuted instantiation: bool exprtk::details::numeric::is_nan<float>(float) |
1530 | | |
1531 | | template <typename T> |
1532 | | inline T min(const T v0, const T v1) |
1533 | | { |
1534 | | const typename details::number_type<T>::type num_type; |
1535 | | return min_impl(v0, v1, num_type); |
1536 | | } |
1537 | | |
1538 | | template <typename T> |
1539 | | inline T max(const T v0, const T v1) |
1540 | | { |
1541 | | const typename details::number_type<T>::type num_type; |
1542 | | return max_impl(v0, v1, num_type); |
1543 | | } |
1544 | | |
1545 | | template <typename T> |
1546 | | inline T equal(const T v0, const T v1) |
1547 | 0 | { |
1548 | 0 | const typename details::number_type<T>::type num_type; |
1549 | 0 | return equal_impl(v0, v1, num_type); |
1550 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::equal<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::equal<float>(float, float) |
1551 | | |
1552 | | template <typename T> |
1553 | | inline T nequal(const T v0, const T v1) |
1554 | 0 | { |
1555 | 0 | const typename details::number_type<T>::type num_type; |
1556 | 0 | return nequal_impl(v0, v1, num_type); |
1557 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::nequal<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::nequal<float>(float, float) |
1558 | | |
1559 | | template <typename T> |
1560 | | inline T modulus(const T v0, const T v1) |
1561 | 7.84k | { |
1562 | 7.84k | const typename details::number_type<T>::type num_type; |
1563 | 7.84k | return modulus_impl(v0, v1, num_type); |
1564 | 7.84k | } double exprtk::details::numeric::modulus<double>(double, double) Line | Count | Source | 1561 | 7.55k | { | 1562 | 7.55k | const typename details::number_type<T>::type num_type; | 1563 | 7.55k | return modulus_impl(v0, v1, num_type); | 1564 | 7.55k | } |
float exprtk::details::numeric::modulus<float>(float, float) Line | Count | Source | 1561 | 287 | { | 1562 | 287 | const typename details::number_type<T>::type num_type; | 1563 | 287 | return modulus_impl(v0, v1, num_type); | 1564 | 287 | } |
|
1565 | | |
1566 | | template <typename T> |
1567 | | inline T pow(const T v0, const T v1) |
1568 | 1.45k | { |
1569 | 1.45k | const typename details::number_type<T>::type num_type; |
1570 | 1.45k | return pow_impl(v0, v1, num_type); |
1571 | 1.45k | } double exprtk::details::numeric::pow<double>(double, double) Line | Count | Source | 1568 | 766 | { | 1569 | 766 | const typename details::number_type<T>::type num_type; | 1570 | 766 | return pow_impl(v0, v1, num_type); | 1571 | 766 | } |
float exprtk::details::numeric::pow<float>(float, float) Line | Count | Source | 1568 | 691 | { | 1569 | 691 | const typename details::number_type<T>::type num_type; | 1570 | 691 | return pow_impl(v0, v1, num_type); | 1571 | 691 | } |
|
1572 | | |
1573 | | template <typename T> |
1574 | | inline T logn(const T v0, const T v1) |
1575 | 0 | { |
1576 | 0 | const typename details::number_type<T>::type num_type; |
1577 | 0 | return logn_impl(v0, v1, num_type); |
1578 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::logn<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::logn<float>(float, float) |
1579 | | |
1580 | | template <typename T> |
1581 | | inline T root(const T v0, const T v1) |
1582 | 0 | { |
1583 | 0 | const typename details::number_type<T>::type num_type; |
1584 | 0 | return root_impl(v0, v1, num_type); |
1585 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::root<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::root<float>(float, float) |
1586 | | |
1587 | | template <typename T> |
1588 | | inline T roundn(const T v0, const T v1) |
1589 | 0 | { |
1590 | 0 | const typename details::number_type<T>::type num_type; |
1591 | 0 | return roundn_impl(v0, v1, num_type); |
1592 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::roundn<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::roundn<float>(float, float) |
1593 | | |
1594 | | template <typename T> |
1595 | | inline T hypot(const T v0, const T v1) |
1596 | 0 | { |
1597 | 0 | const typename details::number_type<T>::type num_type; |
1598 | 0 | return hypot_impl(v0, v1, num_type); |
1599 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::hypot<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::hypot<float>(float, float) |
1600 | | |
1601 | | template <typename T> |
1602 | | inline T atan2(const T v0, const T v1) |
1603 | 0 | { |
1604 | 0 | const typename details::number_type<T>::type num_type; |
1605 | 0 | return atan2_impl(v0, v1, num_type); |
1606 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::atan2<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::atan2<float>(float, float) |
1607 | | |
1608 | | template <typename T> |
1609 | | inline T shr(const T v0, const T v1) |
1610 | 0 | { |
1611 | 0 | const typename details::number_type<T>::type num_type; |
1612 | 0 | return shr_impl(v0, v1, num_type); |
1613 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::shr<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::shr<float>(float, float) |
1614 | | |
1615 | | template <typename T> |
1616 | | inline T shl(const T v0, const T v1) |
1617 | 0 | { |
1618 | 0 | const typename details::number_type<T>::type num_type; |
1619 | 0 | return shl_impl(v0, v1, num_type); |
1620 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::shl<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::shl<float>(float, float) |
1621 | | |
1622 | | template <typename T> |
1623 | | inline T and_opr(const T v0, const T v1) |
1624 | 0 | { |
1625 | 0 | const typename details::number_type<T>::type num_type; |
1626 | 0 | return and_impl(v0, v1, num_type); |
1627 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::and_opr<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::and_opr<float>(float, float) |
1628 | | |
1629 | | template <typename T> |
1630 | | inline T nand_opr(const T v0, const T v1) |
1631 | 6 | { |
1632 | 6 | const typename details::number_type<T>::type num_type; |
1633 | 6 | return nand_impl(v0, v1, num_type); |
1634 | 6 | } double exprtk::details::numeric::nand_opr<double>(double, double) Line | Count | Source | 1631 | 3 | { | 1632 | 3 | const typename details::number_type<T>::type num_type; | 1633 | 3 | return nand_impl(v0, v1, num_type); | 1634 | 3 | } |
float exprtk::details::numeric::nand_opr<float>(float, float) Line | Count | Source | 1631 | 3 | { | 1632 | 3 | const typename details::number_type<T>::type num_type; | 1633 | 3 | return nand_impl(v0, v1, num_type); | 1634 | 3 | } |
|
1635 | | |
1636 | | template <typename T> |
1637 | | inline T or_opr(const T v0, const T v1) |
1638 | 4 | { |
1639 | 4 | const typename details::number_type<T>::type num_type; |
1640 | 4 | return or_impl(v0, v1, num_type); |
1641 | 4 | } double exprtk::details::numeric::or_opr<double>(double, double) Line | Count | Source | 1638 | 2 | { | 1639 | 2 | const typename details::number_type<T>::type num_type; | 1640 | 2 | return or_impl(v0, v1, num_type); | 1641 | 2 | } |
float exprtk::details::numeric::or_opr<float>(float, float) Line | Count | Source | 1638 | 2 | { | 1639 | 2 | const typename details::number_type<T>::type num_type; | 1640 | 2 | return or_impl(v0, v1, num_type); | 1641 | 2 | } |
|
1642 | | |
1643 | | template <typename T> |
1644 | | inline T nor_opr(const T v0, const T v1) |
1645 | 0 | { |
1646 | 0 | const typename details::number_type<T>::type num_type; |
1647 | 0 | return nor_impl(v0, v1, num_type); |
1648 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::nor_opr<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::nor_opr<float>(float, float) |
1649 | | |
1650 | | template <typename T> |
1651 | | inline T xor_opr(const T v0, const T v1) |
1652 | 70 | { |
1653 | 70 | const typename details::number_type<T>::type num_type; |
1654 | 70 | return xor_impl(v0, v1, num_type); |
1655 | 70 | } double exprtk::details::numeric::xor_opr<double>(double, double) Line | Count | Source | 1652 | 35 | { | 1653 | 35 | const typename details::number_type<T>::type num_type; | 1654 | 35 | return xor_impl(v0, v1, num_type); | 1655 | 35 | } |
float exprtk::details::numeric::xor_opr<float>(float, float) Line | Count | Source | 1652 | 35 | { | 1653 | 35 | const typename details::number_type<T>::type num_type; | 1654 | 35 | return xor_impl(v0, v1, num_type); | 1655 | 35 | } |
|
1656 | | |
1657 | | template <typename T> |
1658 | | inline T xnor_opr(const T v0, const T v1) |
1659 | 10 | { |
1660 | 10 | const typename details::number_type<T>::type num_type; |
1661 | 10 | return xnor_impl(v0, v1, num_type); |
1662 | 10 | } double exprtk::details::numeric::xnor_opr<double>(double, double) Line | Count | Source | 1659 | 5 | { | 1660 | 5 | const typename details::number_type<T>::type num_type; | 1661 | 5 | return xnor_impl(v0, v1, num_type); | 1662 | 5 | } |
float exprtk::details::numeric::xnor_opr<float>(float, float) Line | Count | Source | 1659 | 5 | { | 1660 | 5 | const typename details::number_type<T>::type num_type; | 1661 | 5 | return xnor_impl(v0, v1, num_type); | 1662 | 5 | } |
|
1663 | | |
1664 | | template <typename T> |
1665 | | inline bool is_integer(const T v) |
1666 | 5.39k | { |
1667 | 5.39k | const typename details::number_type<T>::type num_type; |
1668 | 5.39k | return is_integer_impl(v, num_type); |
1669 | 5.39k | } bool exprtk::details::numeric::is_integer<double>(double) Line | Count | Source | 1666 | 3.07k | { | 1667 | 3.07k | const typename details::number_type<T>::type num_type; | 1668 | 3.07k | return is_integer_impl(v, num_type); | 1669 | 3.07k | } |
bool exprtk::details::numeric::is_integer<float>(float) Line | Count | Source | 1666 | 2.32k | { | 1667 | 2.32k | const typename details::number_type<T>::type num_type; | 1668 | 2.32k | return is_integer_impl(v, num_type); | 1669 | 2.32k | } |
|
1670 | | |
1671 | | template <typename T, unsigned int N> |
1672 | | struct fast_exp |
1673 | | { |
1674 | | static inline T result(T v) |
1675 | 1.24k | { |
1676 | 1.24k | unsigned int k = N; |
1677 | 1.24k | T l = T(1); |
1678 | | |
1679 | 7.96k | while (k) |
1680 | 6.72k | { |
1681 | 6.72k | if (1 == (k % 2)) |
1682 | 3.83k | { |
1683 | 3.83k | l *= v; |
1684 | 3.83k | --k; |
1685 | 3.83k | } |
1686 | | |
1687 | 6.72k | v *= v; |
1688 | 6.72k | k /= 2; |
1689 | 6.72k | } |
1690 | | |
1691 | 1.24k | return l; |
1692 | 1.24k | } |
1693 | | }; |
1694 | | |
1695 | 38 | template <typename T> struct fast_exp<T,10> { static inline T result(const T v) { T v_5 = fast_exp<T,5>::result(v); return v_5 * v_5; } }; exprtk::details::numeric::fast_exp<double, 10u>::result(double) Line | Count | Source | 1695 | 19 | template <typename T> struct fast_exp<T,10> { static inline T result(const T v) { T v_5 = fast_exp<T,5>::result(v); return v_5 * v_5; } }; |
exprtk::details::numeric::fast_exp<float, 10u>::result(float) Line | Count | Source | 1695 | 19 | template <typename T> struct fast_exp<T,10> { static inline T result(const T v) { T v_5 = fast_exp<T,5>::result(v); return v_5 * v_5; } }; |
|
1696 | 66 | template <typename T> struct fast_exp<T, 9> { static inline T result(const T v) { return fast_exp<T,8>::result(v) * v; } }; exprtk::details::numeric::fast_exp<double, 9u>::result(double) Line | Count | Source | 1696 | 33 | template <typename T> struct fast_exp<T, 9> { static inline T result(const T v) { return fast_exp<T,8>::result(v) * v; } }; |
exprtk::details::numeric::fast_exp<float, 9u>::result(float) Line | Count | Source | 1696 | 33 | template <typename T> struct fast_exp<T, 9> { static inline T result(const T v) { return fast_exp<T,8>::result(v) * v; } }; |
|
1697 | 148 | template <typename T> struct fast_exp<T, 8> { static inline T result(const T v) { T v_4 = fast_exp<T,4>::result(v); return v_4 * v_4; } }; exprtk::details::numeric::fast_exp<double, 8u>::result(double) Line | Count | Source | 1697 | 74 | template <typename T> struct fast_exp<T, 8> { static inline T result(const T v) { T v_4 = fast_exp<T,4>::result(v); return v_4 * v_4; } }; |
exprtk::details::numeric::fast_exp<float, 8u>::result(float) Line | Count | Source | 1697 | 74 | template <typename T> struct fast_exp<T, 8> { static inline T result(const T v) { T v_4 = fast_exp<T,4>::result(v); return v_4 * v_4; } }; |
|
1698 | 62 | template <typename T> struct fast_exp<T, 7> { static inline T result(const T v) { return fast_exp<T,6>::result(v) * v; } }; exprtk::details::numeric::fast_exp<double, 7u>::result(double) Line | Count | Source | 1698 | 31 | template <typename T> struct fast_exp<T, 7> { static inline T result(const T v) { return fast_exp<T,6>::result(v) * v; } }; |
exprtk::details::numeric::fast_exp<float, 7u>::result(float) Line | Count | Source | 1698 | 31 | template <typename T> struct fast_exp<T, 7> { static inline T result(const T v) { return fast_exp<T,6>::result(v) * v; } }; |
|
1699 | 130 | template <typename T> struct fast_exp<T, 6> { static inline T result(const T v) { T v_3 = fast_exp<T,3>::result(v); return v_3 * v_3; } }; exprtk::details::numeric::fast_exp<double, 6u>::result(double) Line | Count | Source | 1699 | 65 | template <typename T> struct fast_exp<T, 6> { static inline T result(const T v) { T v_3 = fast_exp<T,3>::result(v); return v_3 * v_3; } }; |
exprtk::details::numeric::fast_exp<float, 6u>::result(float) Line | Count | Source | 1699 | 65 | template <typename T> struct fast_exp<T, 6> { static inline T result(const T v) { T v_3 = fast_exp<T,3>::result(v); return v_3 * v_3; } }; |
|
1700 | 132 | template <typename T> struct fast_exp<T, 5> { static inline T result(const T v) { return fast_exp<T,4>::result(v) * v; } }; exprtk::details::numeric::fast_exp<double, 5u>::result(double) Line | Count | Source | 1700 | 66 | template <typename T> struct fast_exp<T, 5> { static inline T result(const T v) { return fast_exp<T,4>::result(v) * v; } }; |
exprtk::details::numeric::fast_exp<float, 5u>::result(float) Line | Count | Source | 1700 | 66 | template <typename T> struct fast_exp<T, 5> { static inline T result(const T v) { return fast_exp<T,4>::result(v) * v; } }; |
|
1701 | 376 | template <typename T> struct fast_exp<T, 4> { static inline T result(const T v) { T v_2 = v * v; return v_2 * v_2; } }; exprtk::details::numeric::fast_exp<double, 4u>::result(double) Line | Count | Source | 1701 | 188 | template <typename T> struct fast_exp<T, 4> { static inline T result(const T v) { T v_2 = v * v; return v_2 * v_2; } }; |
exprtk::details::numeric::fast_exp<float, 4u>::result(float) Line | Count | Source | 1701 | 188 | template <typename T> struct fast_exp<T, 4> { static inline T result(const T v) { T v_2 = v * v; return v_2 * v_2; } }; |
|
1702 | 212 | template <typename T> struct fast_exp<T, 3> { static inline T result(const T v) { return v * v * v; } }; exprtk::details::numeric::fast_exp<double, 3u>::result(double) Line | Count | Source | 1702 | 106 | template <typename T> struct fast_exp<T, 3> { static inline T result(const T v) { return v * v * v; } }; |
exprtk::details::numeric::fast_exp<float, 3u>::result(float) Line | Count | Source | 1702 | 106 | template <typename T> struct fast_exp<T, 3> { static inline T result(const T v) { return v * v * v; } }; |
|
1703 | 36 | template <typename T> struct fast_exp<T, 2> { static inline T result(const T v) { return v * v; } }; exprtk::details::numeric::fast_exp<double, 2u>::result(double) Line | Count | Source | 1703 | 18 | template <typename T> struct fast_exp<T, 2> { static inline T result(const T v) { return v * v; } }; |
exprtk::details::numeric::fast_exp<float, 2u>::result(float) Line | Count | Source | 1703 | 18 | template <typename T> struct fast_exp<T, 2> { static inline T result(const T v) { return v * v; } }; |
|
1704 | 28 | template <typename T> struct fast_exp<T, 1> { static inline T result(const T v) { return v; } }; exprtk::details::numeric::fast_exp<double, 1u>::result(double) Line | Count | Source | 1704 | 14 | template <typename T> struct fast_exp<T, 1> { static inline T result(const T v) { return v; } }; |
exprtk::details::numeric::fast_exp<float, 1u>::result(float) Line | Count | Source | 1704 | 14 | template <typename T> struct fast_exp<T, 1> { static inline T result(const T v) { return v; } }; |
|
1705 | | template <typename T> struct fast_exp<T, 0> { static inline T result(const T ) { return T(1); } }; |
1706 | | |
1707 | | #define exprtk_define_unary_function(FunctionName) \ |
1708 | | template <typename T> \ |
1709 | | inline T FunctionName (const T v) \ |
1710 | 27.4k | { \ |
1711 | 27.4k | const typename details::number_type<T>::type num_type; \ |
1712 | 27.4k | return FunctionName##_impl(v,num_type); \ |
1713 | 27.4k | } \ double exprtk::details::numeric::abs<double>(double) Line | Count | Source | 1710 | 6.33k | { \ | 1711 | 6.33k | const typename details::number_type<T>::type num_type; \ | 1712 | 6.33k | return FunctionName##_impl(v,num_type); \ | 1713 | 6.33k | } \ |
Unexecuted instantiation: double exprtk::details::numeric::acos<double>(double) Unexecuted instantiation: double exprtk::details::numeric::acosh<double>(double) Unexecuted instantiation: double exprtk::details::numeric::asin<double>(double) Unexecuted instantiation: double exprtk::details::numeric::asinh<double>(double) Unexecuted instantiation: double exprtk::details::numeric::atanh<double>(double) Unexecuted instantiation: double exprtk::details::numeric::ceil<double>(double) Unexecuted instantiation: double exprtk::details::numeric::cos<double>(double) Unexecuted instantiation: double exprtk::details::numeric::cosh<double>(double) Unexecuted instantiation: double exprtk::details::numeric::exp<double>(double) Unexecuted instantiation: double exprtk::details::numeric::expm1<double>(double) Unexecuted instantiation: double exprtk::details::numeric::floor<double>(double) Unexecuted instantiation: double exprtk::details::numeric::log<double>(double) Unexecuted instantiation: double exprtk::details::numeric::log10<double>(double) Unexecuted instantiation: double exprtk::details::numeric::log2<double>(double) Unexecuted instantiation: double exprtk::details::numeric::log1p<double>(double) double exprtk::details::numeric::neg<double>(double) Line | Count | Source | 1710 | 14.1k | { \ | 1711 | 14.1k | const typename details::number_type<T>::type num_type; \ | 1712 | 14.1k | return FunctionName##_impl(v,num_type); \ | 1713 | 14.1k | } \ |
Unexecuted instantiation: double exprtk::details::numeric::pos<double>(double) Unexecuted instantiation: double exprtk::details::numeric::round<double>(double) Unexecuted instantiation: double exprtk::details::numeric::sin<double>(double) Unexecuted instantiation: double exprtk::details::numeric::sinc<double>(double) Unexecuted instantiation: double exprtk::details::numeric::sinh<double>(double) Unexecuted instantiation: double exprtk::details::numeric::sqrt<double>(double) Unexecuted instantiation: double exprtk::details::numeric::tan<double>(double) Unexecuted instantiation: double exprtk::details::numeric::tanh<double>(double) Unexecuted instantiation: double exprtk::details::numeric::cot<double>(double) Unexecuted instantiation: double exprtk::details::numeric::sec<double>(double) Unexecuted instantiation: double exprtk::details::numeric::csc<double>(double) Unexecuted instantiation: double exprtk::details::numeric::r2d<double>(double) Unexecuted instantiation: double exprtk::details::numeric::d2r<double>(double) Unexecuted instantiation: double exprtk::details::numeric::d2g<double>(double) Unexecuted instantiation: double exprtk::details::numeric::g2d<double>(double) Unexecuted instantiation: double exprtk::details::numeric::notl<double>(double) Unexecuted instantiation: double exprtk::details::numeric::sgn<double>(double) Unexecuted instantiation: double exprtk::details::numeric::erf<double>(double) Unexecuted instantiation: double exprtk::details::numeric::erfc<double>(double) Unexecuted instantiation: double exprtk::details::numeric::ncdf<double>(double) Unexecuted instantiation: double exprtk::details::numeric::frac<double>(double) Unexecuted instantiation: double exprtk::details::numeric::trunc<double>(double) Unexecuted instantiation: double exprtk::details::numeric::atan<double>(double) float exprtk::details::numeric::abs<float>(float) Line | Count | Source | 1710 | 4.74k | { \ | 1711 | 4.74k | const typename details::number_type<T>::type num_type; \ | 1712 | 4.74k | return FunctionName##_impl(v,num_type); \ | 1713 | 4.74k | } \ |
Unexecuted instantiation: float exprtk::details::numeric::acos<float>(float) Unexecuted instantiation: float exprtk::details::numeric::acosh<float>(float) Unexecuted instantiation: float exprtk::details::numeric::asin<float>(float) Unexecuted instantiation: float exprtk::details::numeric::asinh<float>(float) Unexecuted instantiation: float exprtk::details::numeric::atanh<float>(float) Unexecuted instantiation: float exprtk::details::numeric::ceil<float>(float) Unexecuted instantiation: float exprtk::details::numeric::cos<float>(float) Unexecuted instantiation: float exprtk::details::numeric::cosh<float>(float) Unexecuted instantiation: float exprtk::details::numeric::exp<float>(float) Unexecuted instantiation: float exprtk::details::numeric::expm1<float>(float) Unexecuted instantiation: float exprtk::details::numeric::floor<float>(float) Unexecuted instantiation: float exprtk::details::numeric::log<float>(float) Unexecuted instantiation: float exprtk::details::numeric::log10<float>(float) Unexecuted instantiation: float exprtk::details::numeric::log2<float>(float) Unexecuted instantiation: float exprtk::details::numeric::log1p<float>(float) float exprtk::details::numeric::neg<float>(float) Line | Count | Source | 1710 | 2.22k | { \ | 1711 | 2.22k | const typename details::number_type<T>::type num_type; \ | 1712 | 2.22k | return FunctionName##_impl(v,num_type); \ | 1713 | 2.22k | } \ |
Unexecuted instantiation: float exprtk::details::numeric::pos<float>(float) Unexecuted instantiation: float exprtk::details::numeric::round<float>(float) Unexecuted instantiation: float exprtk::details::numeric::sin<float>(float) Unexecuted instantiation: float exprtk::details::numeric::sinc<float>(float) Unexecuted instantiation: float exprtk::details::numeric::sinh<float>(float) Unexecuted instantiation: float exprtk::details::numeric::sqrt<float>(float) Unexecuted instantiation: float exprtk::details::numeric::tan<float>(float) Unexecuted instantiation: float exprtk::details::numeric::tanh<float>(float) Unexecuted instantiation: float exprtk::details::numeric::cot<float>(float) Unexecuted instantiation: float exprtk::details::numeric::sec<float>(float) Unexecuted instantiation: float exprtk::details::numeric::csc<float>(float) Unexecuted instantiation: float exprtk::details::numeric::r2d<float>(float) Unexecuted instantiation: float exprtk::details::numeric::d2r<float>(float) Unexecuted instantiation: float exprtk::details::numeric::d2g<float>(float) Unexecuted instantiation: float exprtk::details::numeric::g2d<float>(float) Unexecuted instantiation: float exprtk::details::numeric::notl<float>(float) Unexecuted instantiation: float exprtk::details::numeric::sgn<float>(float) Unexecuted instantiation: float exprtk::details::numeric::erf<float>(float) Unexecuted instantiation: float exprtk::details::numeric::erfc<float>(float) Unexecuted instantiation: float exprtk::details::numeric::ncdf<float>(float) Unexecuted instantiation: float exprtk::details::numeric::frac<float>(float) Unexecuted instantiation: float exprtk::details::numeric::trunc<float>(float) Unexecuted instantiation: float exprtk::details::numeric::atan<float>(float) |
1714 | | |
1715 | | exprtk_define_unary_function(abs ) |
1716 | | exprtk_define_unary_function(acos ) |
1717 | | exprtk_define_unary_function(acosh) |
1718 | | exprtk_define_unary_function(asin ) |
1719 | | exprtk_define_unary_function(asinh) |
1720 | | exprtk_define_unary_function(atan ) |
1721 | | exprtk_define_unary_function(atanh) |
1722 | | exprtk_define_unary_function(ceil ) |
1723 | | exprtk_define_unary_function(cos ) |
1724 | | exprtk_define_unary_function(cosh ) |
1725 | | exprtk_define_unary_function(exp ) |
1726 | | exprtk_define_unary_function(expm1) |
1727 | | exprtk_define_unary_function(floor) |
1728 | | exprtk_define_unary_function(log ) |
1729 | | exprtk_define_unary_function(log10) |
1730 | | exprtk_define_unary_function(log2 ) |
1731 | | exprtk_define_unary_function(log1p) |
1732 | | exprtk_define_unary_function(neg ) |
1733 | | exprtk_define_unary_function(pos ) |
1734 | | exprtk_define_unary_function(round) |
1735 | | exprtk_define_unary_function(sin ) |
1736 | | exprtk_define_unary_function(sinc ) |
1737 | | exprtk_define_unary_function(sinh ) |
1738 | | exprtk_define_unary_function(sqrt ) |
1739 | | exprtk_define_unary_function(tan ) |
1740 | | exprtk_define_unary_function(tanh ) |
1741 | | exprtk_define_unary_function(cot ) |
1742 | | exprtk_define_unary_function(sec ) |
1743 | | exprtk_define_unary_function(csc ) |
1744 | | exprtk_define_unary_function(r2d ) |
1745 | | exprtk_define_unary_function(d2r ) |
1746 | | exprtk_define_unary_function(d2g ) |
1747 | | exprtk_define_unary_function(g2d ) |
1748 | | exprtk_define_unary_function(notl ) |
1749 | | exprtk_define_unary_function(sgn ) |
1750 | | exprtk_define_unary_function(erf ) |
1751 | | exprtk_define_unary_function(erfc ) |
1752 | | exprtk_define_unary_function(ncdf ) |
1753 | | exprtk_define_unary_function(frac ) |
1754 | | exprtk_define_unary_function(trunc) |
1755 | | #undef exprtk_define_unary_function |
1756 | | } |
1757 | | |
1758 | | template <typename T> |
1759 | | inline T compute_pow10(T d, const int exponent) |
1760 | 1.27k | { |
1761 | 1.27k | static const double fract10[] = |
1762 | 1.27k | { |
1763 | 1.27k | 0.0, |
1764 | 1.27k | 1.0E+001, 1.0E+002, 1.0E+003, 1.0E+004, 1.0E+005, 1.0E+006, 1.0E+007, 1.0E+008, 1.0E+009, 1.0E+010, |
1765 | 1.27k | 1.0E+011, 1.0E+012, 1.0E+013, 1.0E+014, 1.0E+015, 1.0E+016, 1.0E+017, 1.0E+018, 1.0E+019, 1.0E+020, |
1766 | 1.27k | 1.0E+021, 1.0E+022, 1.0E+023, 1.0E+024, 1.0E+025, 1.0E+026, 1.0E+027, 1.0E+028, 1.0E+029, 1.0E+030, |
1767 | 1.27k | 1.0E+031, 1.0E+032, 1.0E+033, 1.0E+034, 1.0E+035, 1.0E+036, 1.0E+037, 1.0E+038, 1.0E+039, 1.0E+040, |
1768 | 1.27k | 1.0E+041, 1.0E+042, 1.0E+043, 1.0E+044, 1.0E+045, 1.0E+046, 1.0E+047, 1.0E+048, 1.0E+049, 1.0E+050, |
1769 | 1.27k | 1.0E+051, 1.0E+052, 1.0E+053, 1.0E+054, 1.0E+055, 1.0E+056, 1.0E+057, 1.0E+058, 1.0E+059, 1.0E+060, |
1770 | 1.27k | 1.0E+061, 1.0E+062, 1.0E+063, 1.0E+064, 1.0E+065, 1.0E+066, 1.0E+067, 1.0E+068, 1.0E+069, 1.0E+070, |
1771 | 1.27k | 1.0E+071, 1.0E+072, 1.0E+073, 1.0E+074, 1.0E+075, 1.0E+076, 1.0E+077, 1.0E+078, 1.0E+079, 1.0E+080, |
1772 | 1.27k | 1.0E+081, 1.0E+082, 1.0E+083, 1.0E+084, 1.0E+085, 1.0E+086, 1.0E+087, 1.0E+088, 1.0E+089, 1.0E+090, |
1773 | 1.27k | 1.0E+091, 1.0E+092, 1.0E+093, 1.0E+094, 1.0E+095, 1.0E+096, 1.0E+097, 1.0E+098, 1.0E+099, 1.0E+100, |
1774 | 1.27k | 1.0E+101, 1.0E+102, 1.0E+103, 1.0E+104, 1.0E+105, 1.0E+106, 1.0E+107, 1.0E+108, 1.0E+109, 1.0E+110, |
1775 | 1.27k | 1.0E+111, 1.0E+112, 1.0E+113, 1.0E+114, 1.0E+115, 1.0E+116, 1.0E+117, 1.0E+118, 1.0E+119, 1.0E+120, |
1776 | 1.27k | 1.0E+121, 1.0E+122, 1.0E+123, 1.0E+124, 1.0E+125, 1.0E+126, 1.0E+127, 1.0E+128, 1.0E+129, 1.0E+130, |
1777 | 1.27k | 1.0E+131, 1.0E+132, 1.0E+133, 1.0E+134, 1.0E+135, 1.0E+136, 1.0E+137, 1.0E+138, 1.0E+139, 1.0E+140, |
1778 | 1.27k | 1.0E+141, 1.0E+142, 1.0E+143, 1.0E+144, 1.0E+145, 1.0E+146, 1.0E+147, 1.0E+148, 1.0E+149, 1.0E+150, |
1779 | 1.27k | 1.0E+151, 1.0E+152, 1.0E+153, 1.0E+154, 1.0E+155, 1.0E+156, 1.0E+157, 1.0E+158, 1.0E+159, 1.0E+160, |
1780 | 1.27k | 1.0E+161, 1.0E+162, 1.0E+163, 1.0E+164, 1.0E+165, 1.0E+166, 1.0E+167, 1.0E+168, 1.0E+169, 1.0E+170, |
1781 | 1.27k | 1.0E+171, 1.0E+172, 1.0E+173, 1.0E+174, 1.0E+175, 1.0E+176, 1.0E+177, 1.0E+178, 1.0E+179, 1.0E+180, |
1782 | 1.27k | 1.0E+181, 1.0E+182, 1.0E+183, 1.0E+184, 1.0E+185, 1.0E+186, 1.0E+187, 1.0E+188, 1.0E+189, 1.0E+190, |
1783 | 1.27k | 1.0E+191, 1.0E+192, 1.0E+193, 1.0E+194, 1.0E+195, 1.0E+196, 1.0E+197, 1.0E+198, 1.0E+199, 1.0E+200, |
1784 | 1.27k | 1.0E+201, 1.0E+202, 1.0E+203, 1.0E+204, 1.0E+205, 1.0E+206, 1.0E+207, 1.0E+208, 1.0E+209, 1.0E+210, |
1785 | 1.27k | 1.0E+211, 1.0E+212, 1.0E+213, 1.0E+214, 1.0E+215, 1.0E+216, 1.0E+217, 1.0E+218, 1.0E+219, 1.0E+220, |
1786 | 1.27k | 1.0E+221, 1.0E+222, 1.0E+223, 1.0E+224, 1.0E+225, 1.0E+226, 1.0E+227, 1.0E+228, 1.0E+229, 1.0E+230, |
1787 | 1.27k | 1.0E+231, 1.0E+232, 1.0E+233, 1.0E+234, 1.0E+235, 1.0E+236, 1.0E+237, 1.0E+238, 1.0E+239, 1.0E+240, |
1788 | 1.27k | 1.0E+241, 1.0E+242, 1.0E+243, 1.0E+244, 1.0E+245, 1.0E+246, 1.0E+247, 1.0E+248, 1.0E+249, 1.0E+250, |
1789 | 1.27k | 1.0E+251, 1.0E+252, 1.0E+253, 1.0E+254, 1.0E+255, 1.0E+256, 1.0E+257, 1.0E+258, 1.0E+259, 1.0E+260, |
1790 | 1.27k | 1.0E+261, 1.0E+262, 1.0E+263, 1.0E+264, 1.0E+265, 1.0E+266, 1.0E+267, 1.0E+268, 1.0E+269, 1.0E+270, |
1791 | 1.27k | 1.0E+271, 1.0E+272, 1.0E+273, 1.0E+274, 1.0E+275, 1.0E+276, 1.0E+277, 1.0E+278, 1.0E+279, 1.0E+280, |
1792 | 1.27k | 1.0E+281, 1.0E+282, 1.0E+283, 1.0E+284, 1.0E+285, 1.0E+286, 1.0E+287, 1.0E+288, 1.0E+289, 1.0E+290, |
1793 | 1.27k | 1.0E+291, 1.0E+292, 1.0E+293, 1.0E+294, 1.0E+295, 1.0E+296, 1.0E+297, 1.0E+298, 1.0E+299, 1.0E+300, |
1794 | 1.27k | 1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308 |
1795 | 1.27k | }; |
1796 | | |
1797 | 1.27k | static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double)); |
1798 | | |
1799 | 1.27k | const int e = std::abs(exponent); |
1800 | | |
1801 | 1.27k | if (exponent >= std::numeric_limits<T>::min_exponent10) |
1802 | 1.27k | { |
1803 | 1.27k | if (e < fract10_size) |
1804 | 1.27k | { |
1805 | 1.27k | if (exponent > 0) |
1806 | 523 | return T(d * fract10[e]); |
1807 | 749 | else |
1808 | 749 | return T(d / fract10[e]); |
1809 | 1.27k | } |
1810 | 0 | else |
1811 | 0 | return T(d * std::pow(10.0, 10.0 * exponent)); |
1812 | 1.27k | } |
1813 | 3 | else |
1814 | 3 | { |
1815 | 3 | d /= T(fract10[ -std::numeric_limits<T>::min_exponent10]); |
1816 | 3 | return T(d / fract10[-exponent + std::numeric_limits<T>::min_exponent10]); |
1817 | 3 | } |
1818 | 1.27k | } double exprtk::details::compute_pow10<double>(double, int) Line | Count | Source | 1760 | 679 | { | 1761 | 679 | static const double fract10[] = | 1762 | 679 | { | 1763 | 679 | 0.0, | 1764 | 679 | 1.0E+001, 1.0E+002, 1.0E+003, 1.0E+004, 1.0E+005, 1.0E+006, 1.0E+007, 1.0E+008, 1.0E+009, 1.0E+010, | 1765 | 679 | 1.0E+011, 1.0E+012, 1.0E+013, 1.0E+014, 1.0E+015, 1.0E+016, 1.0E+017, 1.0E+018, 1.0E+019, 1.0E+020, | 1766 | 679 | 1.0E+021, 1.0E+022, 1.0E+023, 1.0E+024, 1.0E+025, 1.0E+026, 1.0E+027, 1.0E+028, 1.0E+029, 1.0E+030, | 1767 | 679 | 1.0E+031, 1.0E+032, 1.0E+033, 1.0E+034, 1.0E+035, 1.0E+036, 1.0E+037, 1.0E+038, 1.0E+039, 1.0E+040, | 1768 | 679 | 1.0E+041, 1.0E+042, 1.0E+043, 1.0E+044, 1.0E+045, 1.0E+046, 1.0E+047, 1.0E+048, 1.0E+049, 1.0E+050, | 1769 | 679 | 1.0E+051, 1.0E+052, 1.0E+053, 1.0E+054, 1.0E+055, 1.0E+056, 1.0E+057, 1.0E+058, 1.0E+059, 1.0E+060, | 1770 | 679 | 1.0E+061, 1.0E+062, 1.0E+063, 1.0E+064, 1.0E+065, 1.0E+066, 1.0E+067, 1.0E+068, 1.0E+069, 1.0E+070, | 1771 | 679 | 1.0E+071, 1.0E+072, 1.0E+073, 1.0E+074, 1.0E+075, 1.0E+076, 1.0E+077, 1.0E+078, 1.0E+079, 1.0E+080, | 1772 | 679 | 1.0E+081, 1.0E+082, 1.0E+083, 1.0E+084, 1.0E+085, 1.0E+086, 1.0E+087, 1.0E+088, 1.0E+089, 1.0E+090, | 1773 | 679 | 1.0E+091, 1.0E+092, 1.0E+093, 1.0E+094, 1.0E+095, 1.0E+096, 1.0E+097, 1.0E+098, 1.0E+099, 1.0E+100, | 1774 | 679 | 1.0E+101, 1.0E+102, 1.0E+103, 1.0E+104, 1.0E+105, 1.0E+106, 1.0E+107, 1.0E+108, 1.0E+109, 1.0E+110, | 1775 | 679 | 1.0E+111, 1.0E+112, 1.0E+113, 1.0E+114, 1.0E+115, 1.0E+116, 1.0E+117, 1.0E+118, 1.0E+119, 1.0E+120, | 1776 | 679 | 1.0E+121, 1.0E+122, 1.0E+123, 1.0E+124, 1.0E+125, 1.0E+126, 1.0E+127, 1.0E+128, 1.0E+129, 1.0E+130, | 1777 | 679 | 1.0E+131, 1.0E+132, 1.0E+133, 1.0E+134, 1.0E+135, 1.0E+136, 1.0E+137, 1.0E+138, 1.0E+139, 1.0E+140, | 1778 | 679 | 1.0E+141, 1.0E+142, 1.0E+143, 1.0E+144, 1.0E+145, 1.0E+146, 1.0E+147, 1.0E+148, 1.0E+149, 1.0E+150, | 1779 | 679 | 1.0E+151, 1.0E+152, 1.0E+153, 1.0E+154, 1.0E+155, 1.0E+156, 1.0E+157, 1.0E+158, 1.0E+159, 1.0E+160, | 1780 | 679 | 1.0E+161, 1.0E+162, 1.0E+163, 1.0E+164, 1.0E+165, 1.0E+166, 1.0E+167, 1.0E+168, 1.0E+169, 1.0E+170, | 1781 | 679 | 1.0E+171, 1.0E+172, 1.0E+173, 1.0E+174, 1.0E+175, 1.0E+176, 1.0E+177, 1.0E+178, 1.0E+179, 1.0E+180, | 1782 | 679 | 1.0E+181, 1.0E+182, 1.0E+183, 1.0E+184, 1.0E+185, 1.0E+186, 1.0E+187, 1.0E+188, 1.0E+189, 1.0E+190, | 1783 | 679 | 1.0E+191, 1.0E+192, 1.0E+193, 1.0E+194, 1.0E+195, 1.0E+196, 1.0E+197, 1.0E+198, 1.0E+199, 1.0E+200, | 1784 | 679 | 1.0E+201, 1.0E+202, 1.0E+203, 1.0E+204, 1.0E+205, 1.0E+206, 1.0E+207, 1.0E+208, 1.0E+209, 1.0E+210, | 1785 | 679 | 1.0E+211, 1.0E+212, 1.0E+213, 1.0E+214, 1.0E+215, 1.0E+216, 1.0E+217, 1.0E+218, 1.0E+219, 1.0E+220, | 1786 | 679 | 1.0E+221, 1.0E+222, 1.0E+223, 1.0E+224, 1.0E+225, 1.0E+226, 1.0E+227, 1.0E+228, 1.0E+229, 1.0E+230, | 1787 | 679 | 1.0E+231, 1.0E+232, 1.0E+233, 1.0E+234, 1.0E+235, 1.0E+236, 1.0E+237, 1.0E+238, 1.0E+239, 1.0E+240, | 1788 | 679 | 1.0E+241, 1.0E+242, 1.0E+243, 1.0E+244, 1.0E+245, 1.0E+246, 1.0E+247, 1.0E+248, 1.0E+249, 1.0E+250, | 1789 | 679 | 1.0E+251, 1.0E+252, 1.0E+253, 1.0E+254, 1.0E+255, 1.0E+256, 1.0E+257, 1.0E+258, 1.0E+259, 1.0E+260, | 1790 | 679 | 1.0E+261, 1.0E+262, 1.0E+263, 1.0E+264, 1.0E+265, 1.0E+266, 1.0E+267, 1.0E+268, 1.0E+269, 1.0E+270, | 1791 | 679 | 1.0E+271, 1.0E+272, 1.0E+273, 1.0E+274, 1.0E+275, 1.0E+276, 1.0E+277, 1.0E+278, 1.0E+279, 1.0E+280, | 1792 | 679 | 1.0E+281, 1.0E+282, 1.0E+283, 1.0E+284, 1.0E+285, 1.0E+286, 1.0E+287, 1.0E+288, 1.0E+289, 1.0E+290, | 1793 | 679 | 1.0E+291, 1.0E+292, 1.0E+293, 1.0E+294, 1.0E+295, 1.0E+296, 1.0E+297, 1.0E+298, 1.0E+299, 1.0E+300, | 1794 | 679 | 1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308 | 1795 | 679 | }; | 1796 | | | 1797 | 679 | static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double)); | 1798 | | | 1799 | 679 | const int e = std::abs(exponent); | 1800 | | | 1801 | 679 | if (exponent >= std::numeric_limits<T>::min_exponent10) | 1802 | 679 | { | 1803 | 679 | if (e < fract10_size) | 1804 | 679 | { | 1805 | 679 | if (exponent > 0) | 1806 | 293 | return T(d * fract10[e]); | 1807 | 386 | else | 1808 | 386 | return T(d / fract10[e]); | 1809 | 679 | } | 1810 | 0 | else | 1811 | 0 | return T(d * std::pow(10.0, 10.0 * exponent)); | 1812 | 679 | } | 1813 | 0 | else | 1814 | 0 | { | 1815 | 0 | d /= T(fract10[ -std::numeric_limits<T>::min_exponent10]); | 1816 | 0 | return T(d / fract10[-exponent + std::numeric_limits<T>::min_exponent10]); | 1817 | 0 | } | 1818 | 679 | } |
float exprtk::details::compute_pow10<float>(float, int) Line | Count | Source | 1760 | 596 | { | 1761 | 596 | static const double fract10[] = | 1762 | 596 | { | 1763 | 596 | 0.0, | 1764 | 596 | 1.0E+001, 1.0E+002, 1.0E+003, 1.0E+004, 1.0E+005, 1.0E+006, 1.0E+007, 1.0E+008, 1.0E+009, 1.0E+010, | 1765 | 596 | 1.0E+011, 1.0E+012, 1.0E+013, 1.0E+014, 1.0E+015, 1.0E+016, 1.0E+017, 1.0E+018, 1.0E+019, 1.0E+020, | 1766 | 596 | 1.0E+021, 1.0E+022, 1.0E+023, 1.0E+024, 1.0E+025, 1.0E+026, 1.0E+027, 1.0E+028, 1.0E+029, 1.0E+030, | 1767 | 596 | 1.0E+031, 1.0E+032, 1.0E+033, 1.0E+034, 1.0E+035, 1.0E+036, 1.0E+037, 1.0E+038, 1.0E+039, 1.0E+040, | 1768 | 596 | 1.0E+041, 1.0E+042, 1.0E+043, 1.0E+044, 1.0E+045, 1.0E+046, 1.0E+047, 1.0E+048, 1.0E+049, 1.0E+050, | 1769 | 596 | 1.0E+051, 1.0E+052, 1.0E+053, 1.0E+054, 1.0E+055, 1.0E+056, 1.0E+057, 1.0E+058, 1.0E+059, 1.0E+060, | 1770 | 596 | 1.0E+061, 1.0E+062, 1.0E+063, 1.0E+064, 1.0E+065, 1.0E+066, 1.0E+067, 1.0E+068, 1.0E+069, 1.0E+070, | 1771 | 596 | 1.0E+071, 1.0E+072, 1.0E+073, 1.0E+074, 1.0E+075, 1.0E+076, 1.0E+077, 1.0E+078, 1.0E+079, 1.0E+080, | 1772 | 596 | 1.0E+081, 1.0E+082, 1.0E+083, 1.0E+084, 1.0E+085, 1.0E+086, 1.0E+087, 1.0E+088, 1.0E+089, 1.0E+090, | 1773 | 596 | 1.0E+091, 1.0E+092, 1.0E+093, 1.0E+094, 1.0E+095, 1.0E+096, 1.0E+097, 1.0E+098, 1.0E+099, 1.0E+100, | 1774 | 596 | 1.0E+101, 1.0E+102, 1.0E+103, 1.0E+104, 1.0E+105, 1.0E+106, 1.0E+107, 1.0E+108, 1.0E+109, 1.0E+110, | 1775 | 596 | 1.0E+111, 1.0E+112, 1.0E+113, 1.0E+114, 1.0E+115, 1.0E+116, 1.0E+117, 1.0E+118, 1.0E+119, 1.0E+120, | 1776 | 596 | 1.0E+121, 1.0E+122, 1.0E+123, 1.0E+124, 1.0E+125, 1.0E+126, 1.0E+127, 1.0E+128, 1.0E+129, 1.0E+130, | 1777 | 596 | 1.0E+131, 1.0E+132, 1.0E+133, 1.0E+134, 1.0E+135, 1.0E+136, 1.0E+137, 1.0E+138, 1.0E+139, 1.0E+140, | 1778 | 596 | 1.0E+141, 1.0E+142, 1.0E+143, 1.0E+144, 1.0E+145, 1.0E+146, 1.0E+147, 1.0E+148, 1.0E+149, 1.0E+150, | 1779 | 596 | 1.0E+151, 1.0E+152, 1.0E+153, 1.0E+154, 1.0E+155, 1.0E+156, 1.0E+157, 1.0E+158, 1.0E+159, 1.0E+160, | 1780 | 596 | 1.0E+161, 1.0E+162, 1.0E+163, 1.0E+164, 1.0E+165, 1.0E+166, 1.0E+167, 1.0E+168, 1.0E+169, 1.0E+170, | 1781 | 596 | 1.0E+171, 1.0E+172, 1.0E+173, 1.0E+174, 1.0E+175, 1.0E+176, 1.0E+177, 1.0E+178, 1.0E+179, 1.0E+180, | 1782 | 596 | 1.0E+181, 1.0E+182, 1.0E+183, 1.0E+184, 1.0E+185, 1.0E+186, 1.0E+187, 1.0E+188, 1.0E+189, 1.0E+190, | 1783 | 596 | 1.0E+191, 1.0E+192, 1.0E+193, 1.0E+194, 1.0E+195, 1.0E+196, 1.0E+197, 1.0E+198, 1.0E+199, 1.0E+200, | 1784 | 596 | 1.0E+201, 1.0E+202, 1.0E+203, 1.0E+204, 1.0E+205, 1.0E+206, 1.0E+207, 1.0E+208, 1.0E+209, 1.0E+210, | 1785 | 596 | 1.0E+211, 1.0E+212, 1.0E+213, 1.0E+214, 1.0E+215, 1.0E+216, 1.0E+217, 1.0E+218, 1.0E+219, 1.0E+220, | 1786 | 596 | 1.0E+221, 1.0E+222, 1.0E+223, 1.0E+224, 1.0E+225, 1.0E+226, 1.0E+227, 1.0E+228, 1.0E+229, 1.0E+230, | 1787 | 596 | 1.0E+231, 1.0E+232, 1.0E+233, 1.0E+234, 1.0E+235, 1.0E+236, 1.0E+237, 1.0E+238, 1.0E+239, 1.0E+240, | 1788 | 596 | 1.0E+241, 1.0E+242, 1.0E+243, 1.0E+244, 1.0E+245, 1.0E+246, 1.0E+247, 1.0E+248, 1.0E+249, 1.0E+250, | 1789 | 596 | 1.0E+251, 1.0E+252, 1.0E+253, 1.0E+254, 1.0E+255, 1.0E+256, 1.0E+257, 1.0E+258, 1.0E+259, 1.0E+260, | 1790 | 596 | 1.0E+261, 1.0E+262, 1.0E+263, 1.0E+264, 1.0E+265, 1.0E+266, 1.0E+267, 1.0E+268, 1.0E+269, 1.0E+270, | 1791 | 596 | 1.0E+271, 1.0E+272, 1.0E+273, 1.0E+274, 1.0E+275, 1.0E+276, 1.0E+277, 1.0E+278, 1.0E+279, 1.0E+280, | 1792 | 596 | 1.0E+281, 1.0E+282, 1.0E+283, 1.0E+284, 1.0E+285, 1.0E+286, 1.0E+287, 1.0E+288, 1.0E+289, 1.0E+290, | 1793 | 596 | 1.0E+291, 1.0E+292, 1.0E+293, 1.0E+294, 1.0E+295, 1.0E+296, 1.0E+297, 1.0E+298, 1.0E+299, 1.0E+300, | 1794 | 596 | 1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308 | 1795 | 596 | }; | 1796 | | | 1797 | 596 | static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double)); | 1798 | | | 1799 | 596 | const int e = std::abs(exponent); | 1800 | | | 1801 | 596 | if (exponent >= std::numeric_limits<T>::min_exponent10) | 1802 | 593 | { | 1803 | 593 | if (e < fract10_size) | 1804 | 593 | { | 1805 | 593 | if (exponent > 0) | 1806 | 230 | return T(d * fract10[e]); | 1807 | 363 | else | 1808 | 363 | return T(d / fract10[e]); | 1809 | 593 | } | 1810 | 0 | else | 1811 | 0 | return T(d * std::pow(10.0, 10.0 * exponent)); | 1812 | 593 | } | 1813 | 3 | else | 1814 | 3 | { | 1815 | 3 | d /= T(fract10[ -std::numeric_limits<T>::min_exponent10]); | 1816 | 3 | return T(d / fract10[-exponent + std::numeric_limits<T>::min_exponent10]); | 1817 | 3 | } | 1818 | 596 | } |
|
1819 | | |
1820 | | template <typename Iterator, typename T> |
1821 | | inline bool string_to_type_converter_impl_ref(Iterator& itr, const Iterator end, T& result) |
1822 | 1.30k | { |
1823 | 1.30k | if (itr == end) |
1824 | 0 | return false; |
1825 | | |
1826 | 1.30k | const bool negative = ('-' == (*itr)); |
1827 | | |
1828 | 1.30k | if (negative || ('+' == (*itr))) |
1829 | 577 | { |
1830 | 577 | if (end == ++itr) |
1831 | 208 | return false; |
1832 | 577 | } |
1833 | | |
1834 | 1.09k | static const uchar_t zero = static_cast<uchar_t>('0'); |
1835 | | |
1836 | 1.98k | while ((end != itr) && (zero == (*itr))) ++itr; |
1837 | | |
1838 | 1.09k | bool return_result = true; |
1839 | 1.09k | unsigned int digit = 0; |
1840 | 1.09k | const std::size_t length = static_cast<std::size_t>(std::distance(itr,end)); |
1841 | | |
1842 | 1.09k | if (length <= 4) |
1843 | 991 | { |
1844 | 991 | switch (length) |
1845 | 991 | { |
1846 | | #ifdef exprtk_use_lut |
1847 | | |
1848 | | #define exprtk_process_digit \ |
1849 | | if ((digit = details::digit_table[(int)*itr++]) < 10) \ |
1850 | | result = result * 10 + (digit); \ |
1851 | | else \ |
1852 | | { \ |
1853 | | return_result = false; \ |
1854 | | break; \ |
1855 | | } \ |
1856 | | exprtk_fallthrough \ |
1857 | | |
1858 | | #else |
1859 | | |
1860 | 0 | #define exprtk_process_digit \ |
1861 | 476 | if ((digit = (*itr++ - zero)) < 10) \ |
1862 | 476 | result = result * T(10) + digit; \ |
1863 | 476 | else \ |
1864 | 476 | { \ |
1865 | 32 | return_result = false; \ |
1866 | 32 | break; \ |
1867 | 32 | } \ |
1868 | 476 | exprtk_fallthrough \ |
1869 | 0 | |
1870 | 0 | #endif |
1871 | | |
1872 | 24 | case 4 : exprtk_process_digit |
1873 | 80 | case 3 : exprtk_process_digit |
1874 | 372 | case 2 : exprtk_process_digit |
1875 | 891 | case 1 : if ((digit = (*itr - zero))>= 10) |
1876 | 182 | { |
1877 | 182 | digit = 0; |
1878 | 182 | return_result = false; |
1879 | 182 | } |
1880 | | |
1881 | 991 | #undef exprtk_process_digit |
1882 | 991 | } |
1883 | 991 | } |
1884 | 102 | else |
1885 | 102 | return_result = false; |
1886 | | |
1887 | 1.09k | if (length && return_result) |
1888 | 709 | { |
1889 | 709 | result = result * 10 + static_cast<T>(digit); |
1890 | 709 | ++itr; |
1891 | 709 | } |
1892 | | |
1893 | 1.09k | result = negative ? -result : result; |
1894 | 1.09k | return return_result; |
1895 | 1.09k | } |
1896 | | |
1897 | | template <typename Iterator, typename T> |
1898 | | static inline bool parse_nan(Iterator& itr, const Iterator end, T& t) |
1899 | 0 | { |
1900 | 0 | typedef typename std::iterator_traits<Iterator>::value_type type; |
1901 | |
|
1902 | 0 | static const std::size_t nan_length = 3; |
1903 | |
|
1904 | 0 | if (std::distance(itr,end) != static_cast<int>(nan_length)) |
1905 | 0 | return false; |
1906 | | |
1907 | 0 | if (static_cast<type>('n') == (*itr)) |
1908 | 0 | { |
1909 | 0 | if ( |
1910 | 0 | (static_cast<type>('a') != *(itr + 1)) || |
1911 | 0 | (static_cast<type>('n') != *(itr + 2)) |
1912 | 0 | ) |
1913 | 0 | { |
1914 | 0 | return false; |
1915 | 0 | } |
1916 | 0 | } |
1917 | 0 | else if ( |
1918 | 0 | (static_cast<type>('A') != *(itr + 1)) || |
1919 | 0 | (static_cast<type>('N') != *(itr + 2)) |
1920 | 0 | ) |
1921 | 0 | { |
1922 | 0 | return false; |
1923 | 0 | } |
1924 | | |
1925 | 0 | t = std::numeric_limits<T>::quiet_NaN(); |
1926 | |
|
1927 | 0 | return true; |
1928 | 0 | } Unexecuted instantiation: exprtk_fuzzer.cpp:bool exprtk::details::parse_nan<char const*, double>(char const*&, char const*, double&) Unexecuted instantiation: exprtk_fuzzer.cpp:bool exprtk::details::parse_nan<char const*, float>(char const*&, char const*, float&) |
1929 | | |
1930 | | template <typename Iterator, typename T> |
1931 | | static inline bool parse_inf(Iterator& itr, const Iterator end, T& t, const bool negative) |
1932 | 0 | { |
1933 | 0 | static const char_t inf_uc[] = "INFINITY"; |
1934 | 0 | static const char_t inf_lc[] = "infinity"; |
1935 | 0 | static const std::size_t inf_length = 8; |
1936 | |
|
1937 | 0 | const std::size_t length = static_cast<std::size_t>(std::distance(itr,end)); |
1938 | |
|
1939 | 0 | if ((3 != length) && (inf_length != length)) |
1940 | 0 | return false; |
1941 | | |
1942 | 0 | char_cptr inf_itr = ('i' == (*itr)) ? inf_lc : inf_uc; |
1943 | |
|
1944 | 0 | while (end != itr) |
1945 | 0 | { |
1946 | 0 | if (*inf_itr == static_cast<char_t>(*itr)) |
1947 | 0 | { |
1948 | 0 | ++itr; |
1949 | 0 | ++inf_itr; |
1950 | 0 | continue; |
1951 | 0 | } |
1952 | 0 | else |
1953 | 0 | return false; |
1954 | 0 | } |
1955 | | |
1956 | 0 | if (negative) |
1957 | 0 | t = -std::numeric_limits<T>::infinity(); |
1958 | 0 | else |
1959 | 0 | t = std::numeric_limits<T>::infinity(); |
1960 | |
|
1961 | 0 | return true; |
1962 | 0 | } Unexecuted instantiation: exprtk_fuzzer.cpp:bool exprtk::details::parse_inf<char const*, double>(char const*&, char const*, double&, bool) Unexecuted instantiation: exprtk_fuzzer.cpp:bool exprtk::details::parse_inf<char const*, float>(char const*&, char const*, float&, bool) |
1963 | | |
1964 | | template <typename T> |
1965 | | inline bool valid_exponent(const int exponent, numeric::details::real_type_tag) |
1966 | 608k | { |
1967 | 608k | using namespace details::numeric; |
1968 | 608k | return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp); |
1969 | 608k | } bool exprtk::details::valid_exponent<double>(int, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1966 | 378k | { | 1967 | 378k | using namespace details::numeric; | 1968 | 378k | return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp); | 1969 | 378k | } |
bool exprtk::details::valid_exponent<float>(int, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1966 | 230k | { | 1967 | 230k | using namespace details::numeric; | 1968 | 230k | return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp); | 1969 | 230k | } |
|
1970 | | |
1971 | | template <typename Iterator, typename T> |
1972 | | inline bool string_to_real(Iterator& itr_external, const Iterator end, T& t, numeric::details::real_type_tag) |
1973 | 608k | { |
1974 | 608k | if (end == itr_external) return false; |
1975 | | |
1976 | 608k | Iterator itr = itr_external; |
1977 | | |
1978 | 608k | T d = T(0); |
1979 | | |
1980 | 608k | const bool negative = ('-' == (*itr)); |
1981 | | |
1982 | 608k | if (negative || '+' == (*itr)) |
1983 | 0 | { |
1984 | 0 | if (end == ++itr) |
1985 | 0 | return false; |
1986 | 0 | } |
1987 | | |
1988 | 608k | bool instate = false; |
1989 | | |
1990 | 608k | static const char_t zero = static_cast<uchar_t>('0'); |
1991 | | |
1992 | 608k | #define parse_digit_1(d) \ |
1993 | 1.24M | if ((digit = (*itr - zero)) < 10) \ |
1994 | 1.24M | { d = d * T(10) + digit; } \ |
1995 | 1.24M | else \ |
1996 | 1.24M | { break; } \ |
1997 | 1.24M | if (end == ++itr) break; \ |
1998 | 608k | |
1999 | 608k | #define parse_digit_2(d) \ |
2000 | 608k | if ((digit = (*itr - zero)) < 10) \ |
2001 | 469k | { d = d * T(10) + digit; } \ |
2002 | 469k | else \ |
2003 | 469k | { break; } \ |
2004 | 469k | ++itr; \ |
2005 | 608k | |
2006 | 608k | if ('.' != (*itr)) |
2007 | 608k | { |
2008 | 608k | const Iterator curr = itr; |
2009 | | |
2010 | 2.10M | while ((end != itr) && (zero == (*itr))) ++itr; |
2011 | | |
2012 | 1.07M | while (end != itr) |
2013 | 707k | { |
2014 | 707k | unsigned int digit; |
2015 | 707k | parse_digit_1(d) |
2016 | 1.05M | parse_digit_1(d) |
2017 | 929k | parse_digit_2(d) |
2018 | 929k | } |
2019 | | |
2020 | 608k | if (curr != itr) instate = true; |
2021 | 608k | } |
2022 | | |
2023 | 608k | int exponent = 0; |
2024 | | |
2025 | 608k | if (end != itr) |
2026 | 2.13k | { |
2027 | 2.13k | if ('.' == (*itr)) |
2028 | 871 | { |
2029 | 871 | const Iterator curr = ++itr; |
2030 | 871 | T tmp_d = T(0); |
2031 | | |
2032 | 5.45k | while (end != itr) |
2033 | 5.18k | { |
2034 | 5.18k | unsigned int digit; |
2035 | 5.18k | parse_digit_1(tmp_d) |
2036 | 9.67k | parse_digit_1(tmp_d) |
2037 | 9.17k | parse_digit_2(tmp_d) |
2038 | 9.17k | } |
2039 | | |
2040 | 871 | if (curr != itr) |
2041 | 649 | { |
2042 | 649 | instate = true; |
2043 | | |
2044 | 649 | const int frac_exponent = static_cast<int>(-std::distance(curr, itr)); |
2045 | | |
2046 | 649 | if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag())) |
2047 | 14 | return false; |
2048 | | |
2049 | 635 | d += compute_pow10(tmp_d, frac_exponent); |
2050 | 635 | } |
2051 | | |
2052 | 871 | #undef parse_digit_1 |
2053 | 871 | #undef parse_digit_2 |
2054 | 871 | } |
2055 | | |
2056 | 2.12k | if (end != itr) |
2057 | 1.30k | { |
2058 | 1.30k | typename std::iterator_traits<Iterator>::value_type c = (*itr); |
2059 | | |
2060 | 1.30k | if (('e' == c) || ('E' == c)) |
2061 | 1.30k | { |
2062 | 1.30k | int exp = 0; |
2063 | | |
2064 | 1.30k | if (!details::string_to_type_converter_impl_ref(++itr, end, exp)) |
2065 | 524 | { |
2066 | 524 | if (end == itr) |
2067 | 208 | return false; |
2068 | 316 | else |
2069 | 316 | c = (*itr); |
2070 | 524 | } |
2071 | | |
2072 | 1.09k | exponent += exp; |
2073 | 1.09k | } |
2074 | | |
2075 | 1.09k | if (end != itr) |
2076 | 316 | { |
2077 | 316 | if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c)) |
2078 | 0 | ++itr; |
2079 | 316 | else if ('#' == c) |
2080 | 0 | { |
2081 | 0 | if (end == ++itr) |
2082 | 0 | return false; |
2083 | 0 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) |
2084 | 0 | { |
2085 | 0 | if (('i' == (*itr)) || ('I' == (*itr))) |
2086 | 0 | { |
2087 | 0 | return parse_inf(itr, end, t, negative); |
2088 | 0 | } |
2089 | 0 | else if (('n' == (*itr)) || ('N' == (*itr))) |
2090 | 0 | { |
2091 | 0 | return parse_nan(itr, end, t); |
2092 | 0 | } |
2093 | 0 | else |
2094 | 0 | return false; |
2095 | 0 | } |
2096 | 0 | else |
2097 | 0 | return false; |
2098 | 0 | } |
2099 | 316 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) |
2100 | 130 | { |
2101 | 130 | if (('i' == (*itr)) || ('I' == (*itr))) |
2102 | 0 | { |
2103 | 0 | return parse_inf(itr, end, t, negative); |
2104 | 0 | } |
2105 | 130 | else if (('n' == (*itr)) || ('N' == (*itr))) |
2106 | 0 | { |
2107 | 0 | return parse_nan(itr, end, t); |
2108 | 0 | } |
2109 | 130 | else |
2110 | 130 | return false; |
2111 | 130 | } |
2112 | 186 | else |
2113 | 186 | return false; |
2114 | 316 | } |
2115 | 1.09k | } |
2116 | 2.12k | } |
2117 | | |
2118 | 608k | if ((end != itr) || (!instate)) |
2119 | 0 | return false; |
2120 | 608k | else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag())) |
2121 | 69 | return false; |
2122 | 608k | else if (exponent) |
2123 | 640 | d = compute_pow10(d,exponent); |
2124 | | |
2125 | 608k | t = static_cast<T>((negative) ? -d : d); |
2126 | 608k | return true; |
2127 | 608k | } bool exprtk::details::string_to_real<char const*, double>(char const*&, char const*, double&, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1973 | 378k | { | 1974 | 378k | if (end == itr_external) return false; | 1975 | | | 1976 | 378k | Iterator itr = itr_external; | 1977 | | | 1978 | 378k | T d = T(0); | 1979 | | | 1980 | 378k | const bool negative = ('-' == (*itr)); | 1981 | | | 1982 | 378k | if (negative || '+' == (*itr)) | 1983 | 0 | { | 1984 | 0 | if (end == ++itr) | 1985 | 0 | return false; | 1986 | 0 | } | 1987 | | | 1988 | 378k | bool instate = false; | 1989 | | | 1990 | 378k | static const char_t zero = static_cast<uchar_t>('0'); | 1991 | | | 1992 | 378k | #define parse_digit_1(d) \ | 1993 | 378k | if ((digit = (*itr - zero)) < 10) \ | 1994 | 378k | { d = d * T(10) + digit; } \ | 1995 | 378k | else \ | 1996 | 378k | { break; } \ | 1997 | 378k | if (end == ++itr) break; \ | 1998 | 378k | | 1999 | 378k | #define parse_digit_2(d) \ | 2000 | 378k | if ((digit = (*itr - zero)) < 10) \ | 2001 | 378k | { d = d * T(10) + digit; } \ | 2002 | 378k | else \ | 2003 | 378k | { break; } \ | 2004 | 378k | ++itr; \ | 2005 | 378k | | 2006 | 378k | if ('.' != (*itr)) | 2007 | 378k | { | 2008 | 378k | const Iterator curr = itr; | 2009 | | | 2010 | 1.14M | while ((end != itr) && (zero == (*itr))) ++itr; | 2011 | | | 2012 | 615k | while (end != itr) | 2013 | 411k | { | 2014 | 411k | unsigned int digit; | 2015 | 411k | parse_digit_1(d) | 2016 | 572k | parse_digit_1(d) | 2017 | 475k | parse_digit_2(d) | 2018 | 475k | } | 2019 | | | 2020 | 378k | if (curr != itr) instate = true; | 2021 | 378k | } | 2022 | | | 2023 | 378k | int exponent = 0; | 2024 | | | 2025 | 378k | if (end != itr) | 2026 | 1.08k | { | 2027 | 1.08k | if ('.' == (*itr)) | 2028 | 437 | { | 2029 | 437 | const Iterator curr = ++itr; | 2030 | 437 | T tmp_d = T(0); | 2031 | | | 2032 | 2.76k | while (end != itr) | 2033 | 2.62k | { | 2034 | 2.62k | unsigned int digit; | 2035 | 2.62k | parse_digit_1(tmp_d) | 2036 | 4.89k | parse_digit_1(tmp_d) | 2037 | 4.65k | parse_digit_2(tmp_d) | 2038 | 4.65k | } | 2039 | | | 2040 | 437 | if (curr != itr) | 2041 | 326 | { | 2042 | 326 | instate = true; | 2043 | | | 2044 | 326 | const int frac_exponent = static_cast<int>(-std::distance(curr, itr)); | 2045 | | | 2046 | 326 | if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag())) | 2047 | 3 | return false; | 2048 | | | 2049 | 323 | d += compute_pow10(tmp_d, frac_exponent); | 2050 | 323 | } | 2051 | | | 2052 | 437 | #undef parse_digit_1 | 2053 | 437 | #undef parse_digit_2 | 2054 | 437 | } | 2055 | | | 2056 | 1.07k | if (end != itr) | 2057 | 662 | { | 2058 | 662 | typename std::iterator_traits<Iterator>::value_type c = (*itr); | 2059 | | | 2060 | 662 | if (('e' == c) || ('E' == c)) | 2061 | 662 | { | 2062 | 662 | int exp = 0; | 2063 | | | 2064 | 662 | if (!details::string_to_type_converter_impl_ref(++itr, end, exp)) | 2065 | 262 | { | 2066 | 262 | if (end == itr) | 2067 | 104 | return false; | 2068 | 158 | else | 2069 | 158 | c = (*itr); | 2070 | 262 | } | 2071 | | | 2072 | 558 | exponent += exp; | 2073 | 558 | } | 2074 | | | 2075 | 558 | if (end != itr) | 2076 | 158 | { | 2077 | 158 | if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c)) | 2078 | 0 | ++itr; | 2079 | 158 | else if ('#' == c) | 2080 | 0 | { | 2081 | 0 | if (end == ++itr) | 2082 | 0 | return false; | 2083 | 0 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) | 2084 | 0 | { | 2085 | 0 | if (('i' == (*itr)) || ('I' == (*itr))) | 2086 | 0 | { | 2087 | 0 | return parse_inf(itr, end, t, negative); | 2088 | 0 | } | 2089 | 0 | else if (('n' == (*itr)) || ('N' == (*itr))) | 2090 | 0 | { | 2091 | 0 | return parse_nan(itr, end, t); | 2092 | 0 | } | 2093 | 0 | else | 2094 | 0 | return false; | 2095 | 0 | } | 2096 | 0 | else | 2097 | 0 | return false; | 2098 | 0 | } | 2099 | 158 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) | 2100 | 65 | { | 2101 | 65 | if (('i' == (*itr)) || ('I' == (*itr))) | 2102 | 0 | { | 2103 | 0 | return parse_inf(itr, end, t, negative); | 2104 | 0 | } | 2105 | 65 | else if (('n' == (*itr)) || ('N' == (*itr))) | 2106 | 0 | { | 2107 | 0 | return parse_nan(itr, end, t); | 2108 | 0 | } | 2109 | 65 | else | 2110 | 65 | return false; | 2111 | 65 | } | 2112 | 93 | else | 2113 | 93 | return false; | 2114 | 158 | } | 2115 | 558 | } | 2116 | 1.07k | } | 2117 | | | 2118 | 378k | if ((end != itr) || (!instate)) | 2119 | 0 | return false; | 2120 | 378k | else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag())) | 2121 | 10 | return false; | 2122 | 378k | else if (exponent) | 2123 | 356 | d = compute_pow10(d,exponent); | 2124 | | | 2125 | 378k | t = static_cast<T>((negative) ? -d : d); | 2126 | 378k | return true; | 2127 | 378k | } |
bool exprtk::details::string_to_real<char const*, float>(char const*&, char const*, float&, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1973 | 230k | { | 1974 | 230k | if (end == itr_external) return false; | 1975 | | | 1976 | 230k | Iterator itr = itr_external; | 1977 | | | 1978 | 230k | T d = T(0); | 1979 | | | 1980 | 230k | const bool negative = ('-' == (*itr)); | 1981 | | | 1982 | 230k | if (negative || '+' == (*itr)) | 1983 | 0 | { | 1984 | 0 | if (end == ++itr) | 1985 | 0 | return false; | 1986 | 0 | } | 1987 | | | 1988 | 230k | bool instate = false; | 1989 | | | 1990 | 230k | static const char_t zero = static_cast<uchar_t>('0'); | 1991 | | | 1992 | 230k | #define parse_digit_1(d) \ | 1993 | 230k | if ((digit = (*itr - zero)) < 10) \ | 1994 | 230k | { d = d * T(10) + digit; } \ | 1995 | 230k | else \ | 1996 | 230k | { break; } \ | 1997 | 230k | if (end == ++itr) break; \ | 1998 | 230k | | 1999 | 230k | #define parse_digit_2(d) \ | 2000 | 230k | if ((digit = (*itr - zero)) < 10) \ | 2001 | 230k | { d = d * T(10) + digit; } \ | 2002 | 230k | else \ | 2003 | 230k | { break; } \ | 2004 | 230k | ++itr; \ | 2005 | 230k | | 2006 | 230k | if ('.' != (*itr)) | 2007 | 230k | { | 2008 | 230k | const Iterator curr = itr; | 2009 | | | 2010 | 962k | while ((end != itr) && (zero == (*itr))) ++itr; | 2011 | | | 2012 | 457k | while (end != itr) | 2013 | 295k | { | 2014 | 295k | unsigned int digit; | 2015 | 295k | parse_digit_1(d) | 2016 | 481k | parse_digit_1(d) | 2017 | 454k | parse_digit_2(d) | 2018 | 454k | } | 2019 | | | 2020 | 230k | if (curr != itr) instate = true; | 2021 | 230k | } | 2022 | | | 2023 | 230k | int exponent = 0; | 2024 | | | 2025 | 230k | if (end != itr) | 2026 | 1.05k | { | 2027 | 1.05k | if ('.' == (*itr)) | 2028 | 434 | { | 2029 | 434 | const Iterator curr = ++itr; | 2030 | 434 | T tmp_d = T(0); | 2031 | | | 2032 | 2.69k | while (end != itr) | 2033 | 2.56k | { | 2034 | 2.56k | unsigned int digit; | 2035 | 2.56k | parse_digit_1(tmp_d) | 2036 | 4.77k | parse_digit_1(tmp_d) | 2037 | 4.52k | parse_digit_2(tmp_d) | 2038 | 4.52k | } | 2039 | | | 2040 | 434 | if (curr != itr) | 2041 | 323 | { | 2042 | 323 | instate = true; | 2043 | | | 2044 | 323 | const int frac_exponent = static_cast<int>(-std::distance(curr, itr)); | 2045 | | | 2046 | 323 | if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag())) | 2047 | 11 | return false; | 2048 | | | 2049 | 312 | d += compute_pow10(tmp_d, frac_exponent); | 2050 | 312 | } | 2051 | | | 2052 | 434 | #undef parse_digit_1 | 2053 | 434 | #undef parse_digit_2 | 2054 | 434 | } | 2055 | | | 2056 | 1.04k | if (end != itr) | 2057 | 639 | { | 2058 | 639 | typename std::iterator_traits<Iterator>::value_type c = (*itr); | 2059 | | | 2060 | 639 | if (('e' == c) || ('E' == c)) | 2061 | 639 | { | 2062 | 639 | int exp = 0; | 2063 | | | 2064 | 639 | if (!details::string_to_type_converter_impl_ref(++itr, end, exp)) | 2065 | 262 | { | 2066 | 262 | if (end == itr) | 2067 | 104 | return false; | 2068 | 158 | else | 2069 | 158 | c = (*itr); | 2070 | 262 | } | 2071 | | | 2072 | 535 | exponent += exp; | 2073 | 535 | } | 2074 | | | 2075 | 535 | if (end != itr) | 2076 | 158 | { | 2077 | 158 | if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c)) | 2078 | 0 | ++itr; | 2079 | 158 | else if ('#' == c) | 2080 | 0 | { | 2081 | 0 | if (end == ++itr) | 2082 | 0 | return false; | 2083 | 0 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) | 2084 | 0 | { | 2085 | 0 | if (('i' == (*itr)) || ('I' == (*itr))) | 2086 | 0 | { | 2087 | 0 | return parse_inf(itr, end, t, negative); | 2088 | 0 | } | 2089 | 0 | else if (('n' == (*itr)) || ('N' == (*itr))) | 2090 | 0 | { | 2091 | 0 | return parse_nan(itr, end, t); | 2092 | 0 | } | 2093 | 0 | else | 2094 | 0 | return false; | 2095 | 0 | } | 2096 | 0 | else | 2097 | 0 | return false; | 2098 | 0 | } | 2099 | 158 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) | 2100 | 65 | { | 2101 | 65 | if (('i' == (*itr)) || ('I' == (*itr))) | 2102 | 0 | { | 2103 | 0 | return parse_inf(itr, end, t, negative); | 2104 | 0 | } | 2105 | 65 | else if (('n' == (*itr)) || ('N' == (*itr))) | 2106 | 0 | { | 2107 | 0 | return parse_nan(itr, end, t); | 2108 | 0 | } | 2109 | 65 | else | 2110 | 65 | return false; | 2111 | 65 | } | 2112 | 93 | else | 2113 | 93 | return false; | 2114 | 158 | } | 2115 | 535 | } | 2116 | 1.04k | } | 2117 | | | 2118 | 230k | if ((end != itr) || (!instate)) | 2119 | 0 | return false; | 2120 | 230k | else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag())) | 2121 | 59 | return false; | 2122 | 230k | else if (exponent) | 2123 | 284 | d = compute_pow10(d,exponent); | 2124 | | | 2125 | 230k | t = static_cast<T>((negative) ? -d : d); | 2126 | 230k | return true; | 2127 | 230k | } |
|
2128 | | |
2129 | | template <typename T> |
2130 | | inline bool string_to_real(const std::string& s, T& t) |
2131 | 608k | { |
2132 | 608k | const typename numeric::details::number_type<T>::type num_type; |
2133 | | |
2134 | 608k | char_cptr begin = s.data(); |
2135 | 608k | char_cptr end = s.data() + s.size(); |
2136 | | |
2137 | 608k | return string_to_real(begin, end, t, num_type); |
2138 | 608k | } bool exprtk::details::string_to_real<double>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, double&) Line | Count | Source | 2131 | 378k | { | 2132 | 378k | const typename numeric::details::number_type<T>::type num_type; | 2133 | | | 2134 | 378k | char_cptr begin = s.data(); | 2135 | 378k | char_cptr end = s.data() + s.size(); | 2136 | | | 2137 | 378k | return string_to_real(begin, end, t, num_type); | 2138 | 378k | } |
bool exprtk::details::string_to_real<float>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, float&) Line | Count | Source | 2131 | 230k | { | 2132 | 230k | const typename numeric::details::number_type<T>::type num_type; | 2133 | | | 2134 | 230k | char_cptr begin = s.data(); | 2135 | 230k | char_cptr end = s.data() + s.size(); | 2136 | | | 2137 | 230k | return string_to_real(begin, end, t, num_type); | 2138 | 230k | } |
|
2139 | | |
2140 | | template <typename T> |
2141 | | struct functor_t |
2142 | | { |
2143 | | /* |
2144 | | Note: The following definitions for Type, may require tweaking |
2145 | | based on the compiler and target architecture. The benchmark |
2146 | | should provide enough information to make the right choice. |
2147 | | */ |
2148 | | //typedef T Type; |
2149 | | //typedef const T Type; |
2150 | | typedef const T& Type; |
2151 | | typedef T& RefType; |
2152 | | typedef T (*qfunc_t)(Type t0, Type t1, Type t2, Type t3); |
2153 | | typedef T (*tfunc_t)(Type t0, Type t1, Type t2); |
2154 | | typedef T (*bfunc_t)(Type t0, Type t1); |
2155 | | typedef T (*ufunc_t)(Type t0); |
2156 | | }; |
2157 | | |
2158 | | } // namespace details |
2159 | | |
2160 | | struct loop_runtime_check |
2161 | | { |
2162 | | enum loop_types |
2163 | | { |
2164 | | e_invalid = 0, |
2165 | | e_for_loop = 1, |
2166 | | e_while_loop = 2, |
2167 | | e_repeat_until_loop = 4, |
2168 | | e_all_loops = 7 |
2169 | | }; |
2170 | | |
2171 | | enum violation_type |
2172 | | { |
2173 | | e_unknown = 0, |
2174 | | e_iteration_count = 1, |
2175 | | e_timeout = 2 |
2176 | | }; |
2177 | | |
2178 | | loop_types loop_set; |
2179 | | |
2180 | | loop_runtime_check() |
2181 | 10.1k | : loop_set(e_invalid) |
2182 | 10.1k | , max_loop_iterations(0) |
2183 | 10.1k | {} |
2184 | | |
2185 | | details::_uint64_t max_loop_iterations; |
2186 | | |
2187 | | struct violation_context |
2188 | | { |
2189 | | loop_types loop; |
2190 | | violation_type violation; |
2191 | | details::_uint64_t iteration_count; |
2192 | | }; |
2193 | | |
2194 | | virtual bool check() |
2195 | 0 | { |
2196 | 0 | return true; |
2197 | 0 | } |
2198 | | |
2199 | | virtual void handle_runtime_violation(const violation_context&) |
2200 | 0 | { |
2201 | 0 | throw std::runtime_error("ExprTk Loop runtime violation."); |
2202 | 0 | } |
2203 | | |
2204 | | virtual ~loop_runtime_check() |
2205 | 10.1k | {} |
2206 | | }; |
2207 | | |
2208 | | typedef loop_runtime_check* loop_runtime_check_ptr; |
2209 | | |
2210 | | struct vector_access_runtime_check |
2211 | | { |
2212 | | struct violation_context |
2213 | | { |
2214 | | void* base_ptr; |
2215 | | void* end_ptr; |
2216 | | void* access_ptr; |
2217 | | std::size_t type_size; |
2218 | | }; |
2219 | | |
2220 | | virtual ~vector_access_runtime_check() |
2221 | 10.1k | {} |
2222 | | |
2223 | | virtual bool handle_runtime_violation(violation_context& /*context*/) |
2224 | 0 | { |
2225 | 0 | throw std::runtime_error("ExprTk runtime vector access violation."); |
2226 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
2227 | 0 | return false; |
2228 | 0 | #endif |
2229 | 0 | } |
2230 | | }; |
2231 | | |
2232 | | typedef vector_access_runtime_check* vector_access_runtime_check_ptr; |
2233 | | |
2234 | | struct assert_check |
2235 | | { |
2236 | | struct assert_context |
2237 | | { |
2238 | | std::string condition; |
2239 | | std::string message; |
2240 | | std::string id; |
2241 | | std::size_t offet; |
2242 | | }; |
2243 | | |
2244 | | virtual ~assert_check() |
2245 | 10.1k | {} |
2246 | | |
2247 | | virtual void handle_assert(const assert_context& /*context*/) |
2248 | 0 | {} |
2249 | | }; |
2250 | | |
2251 | | typedef assert_check* assert_check_ptr; |
2252 | | |
2253 | | struct compilation_check |
2254 | | { |
2255 | | struct compilation_context |
2256 | | { |
2257 | | std::string error_message; |
2258 | | }; |
2259 | | |
2260 | | virtual bool continue_compilation(compilation_context& /*context*/) = 0; |
2261 | | |
2262 | | virtual ~compilation_check() |
2263 | 10.1k | {} |
2264 | | }; |
2265 | | |
2266 | | typedef compilation_check* compilation_check_ptr; |
2267 | | |
2268 | | namespace lexer |
2269 | | { |
2270 | | struct token |
2271 | | { |
2272 | | enum token_type |
2273 | | { |
2274 | | e_none = 0, e_error = 1, e_err_symbol = 2, |
2275 | | e_err_number = 3, e_err_string = 4, e_err_sfunc = 5, |
2276 | | e_eof = 6, e_number = 7, e_symbol = 8, |
2277 | | e_string = 9, e_assign = 10, e_addass = 11, |
2278 | | e_subass = 12, e_mulass = 13, e_divass = 14, |
2279 | | e_modass = 15, e_shr = 16, e_shl = 17, |
2280 | | e_lte = 18, e_ne = 19, e_gte = 20, |
2281 | | e_swap = 21, e_lt = '<', e_gt = '>', |
2282 | | e_eq = '=', e_rbracket = ')', e_lbracket = '(', |
2283 | | e_rsqrbracket = ']', e_lsqrbracket = '[', e_rcrlbracket = '}', |
2284 | | e_lcrlbracket = '{', e_comma = ',', e_add = '+', |
2285 | | e_sub = '-', e_div = '/', e_mul = '*', |
2286 | | e_mod = '%', e_pow = '^', e_colon = ':', |
2287 | | e_ternary = '?' |
2288 | | }; |
2289 | | |
2290 | | token() |
2291 | 30.4M | : type(e_none) |
2292 | 30.4M | , value("") |
2293 | 30.4M | , position(std::numeric_limits<std::size_t>::max()) |
2294 | 30.4M | {} |
2295 | | |
2296 | | void clear() |
2297 | 8.29k | { |
2298 | 8.29k | type = e_none; |
2299 | 8.29k | value = ""; |
2300 | 8.29k | position = std::numeric_limits<std::size_t>::max(); |
2301 | 8.29k | } |
2302 | | |
2303 | | template <typename Iterator> |
2304 | | inline token& set_operator(const token_type tt, |
2305 | | const Iterator begin, const Iterator end, |
2306 | | const Iterator base_begin = Iterator(0)) |
2307 | 3.30M | { |
2308 | 3.30M | type = tt; |
2309 | 3.30M | value.assign(begin,end); |
2310 | 3.30M | if (base_begin) |
2311 | 3.30M | position = static_cast<std::size_t>(std::distance(base_begin,begin)); |
2312 | 3.30M | return (*this); |
2313 | 3.30M | } |
2314 | | |
2315 | | template <typename Iterator> |
2316 | | inline token& set_symbol(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0)) |
2317 | 975k | { |
2318 | 975k | type = e_symbol; |
2319 | 975k | value.assign(begin,end); |
2320 | 975k | if (base_begin) |
2321 | 975k | position = static_cast<std::size_t>(std::distance(base_begin,begin)); |
2322 | 975k | return (*this); |
2323 | 975k | } |
2324 | | |
2325 | | template <typename Iterator> |
2326 | | inline token& set_numeric(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0)) |
2327 | 661k | { |
2328 | 661k | type = e_number; |
2329 | 661k | value.assign(begin,end); |
2330 | 661k | if (base_begin) |
2331 | 661k | position = static_cast<std::size_t>(std::distance(base_begin,begin)); |
2332 | 661k | return (*this); |
2333 | 661k | } |
2334 | | |
2335 | | template <typename Iterator> |
2336 | | inline token& set_string(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0)) |
2337 | 138k | { |
2338 | 138k | type = e_string; |
2339 | 138k | value.assign(begin,end); |
2340 | 138k | if (base_begin) |
2341 | 138k | position = static_cast<std::size_t>(std::distance(base_begin,begin)); |
2342 | 138k | return (*this); |
2343 | 138k | } |
2344 | | |
2345 | | inline token& set_string(const std::string& s, const std::size_t p) |
2346 | 5.65k | { |
2347 | 5.65k | type = e_string; |
2348 | 5.65k | value = s; |
2349 | 5.65k | position = p; |
2350 | 5.65k | return (*this); |
2351 | 5.65k | } |
2352 | | |
2353 | | template <typename Iterator> |
2354 | | inline token& set_error(const token_type et, |
2355 | | const Iterator begin, const Iterator end, |
2356 | | const Iterator base_begin = Iterator(0)) |
2357 | 1.52k | { |
2358 | 1.52k | if ( |
2359 | 1.52k | (e_error == et) || |
2360 | 1.52k | (e_err_symbol == et) || |
2361 | 1.52k | (e_err_number == et) || |
2362 | 1.52k | (e_err_string == et) || |
2363 | 1.52k | (e_err_sfunc == et) |
2364 | 1.52k | ) |
2365 | 1.52k | { |
2366 | 1.52k | type = et; |
2367 | 1.52k | } |
2368 | 0 | else |
2369 | 0 | type = e_error; |
2370 | | |
2371 | 1.52k | value.assign(begin,end); |
2372 | | |
2373 | 1.52k | if (base_begin) |
2374 | 1.52k | position = static_cast<std::size_t>(std::distance(base_begin,begin)); |
2375 | | |
2376 | 1.52k | return (*this); |
2377 | 1.52k | } |
2378 | | |
2379 | | static inline std::string to_str(token_type t) |
2380 | 82 | { |
2381 | 82 | switch (t) |
2382 | 82 | { |
2383 | 0 | case e_none : return "NONE"; |
2384 | 0 | case e_error : return "ERROR"; |
2385 | 0 | case e_err_symbol : return "ERROR_SYMBOL"; |
2386 | 0 | case e_err_number : return "ERROR_NUMBER"; |
2387 | 0 | case e_err_string : return "ERROR_STRING"; |
2388 | 0 | case e_eof : return "EOF"; |
2389 | 0 | case e_number : return "NUMBER"; |
2390 | 0 | case e_symbol : return "SYMBOL"; |
2391 | 0 | case e_string : return "STRING"; |
2392 | 0 | case e_assign : return ":="; |
2393 | 0 | case e_addass : return "+="; |
2394 | 0 | case e_subass : return "-="; |
2395 | 0 | case e_mulass : return "*="; |
2396 | 0 | case e_divass : return "/="; |
2397 | 0 | case e_modass : return "%="; |
2398 | 0 | case e_shr : return ">>"; |
2399 | 0 | case e_shl : return "<<"; |
2400 | 0 | case e_lte : return "<="; |
2401 | 0 | case e_ne : return "!="; |
2402 | 0 | case e_gte : return ">="; |
2403 | 0 | case e_lt : return "<"; |
2404 | 0 | case e_gt : return ">"; |
2405 | 0 | case e_eq : return "="; |
2406 | 0 | case e_rbracket : return ")"; |
2407 | 0 | case e_lbracket : return "("; |
2408 | 0 | case e_rsqrbracket : return "]"; |
2409 | 0 | case e_lsqrbracket : return "["; |
2410 | 0 | case e_rcrlbracket : return "}"; |
2411 | 82 | case e_lcrlbracket : return "{"; |
2412 | 0 | case e_comma : return ","; |
2413 | 0 | case e_add : return "+"; |
2414 | 0 | case e_sub : return "-"; |
2415 | 0 | case e_div : return "/"; |
2416 | 0 | case e_mul : return "*"; |
2417 | 0 | case e_mod : return "%"; |
2418 | 0 | case e_pow : return "^"; |
2419 | 0 | case e_colon : return ":"; |
2420 | 0 | case e_ternary : return "?"; |
2421 | 0 | case e_swap : return "<=>"; |
2422 | 0 | default : return "UNKNOWN"; |
2423 | 82 | } |
2424 | 82 | } |
2425 | | |
2426 | | static inline std::string seperator_to_str(const token_type t) |
2427 | 0 | { |
2428 | 0 | switch (t) |
2429 | 0 | { |
2430 | 0 | case e_comma : return ","; |
2431 | 0 | case e_colon : return ":"; |
2432 | 0 | case e_eof : return ";"; |
2433 | 0 | default : return "UNKNOWN"; |
2434 | 0 | } |
2435 | | |
2436 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
2437 | 0 | return "UNKNOWN"; |
2438 | 0 | #endif |
2439 | 0 | } |
2440 | | |
2441 | | inline bool is_error() const |
2442 | 6.11M | { |
2443 | 6.11M | return (e_error == type) || |
2444 | 6.11M | (e_err_symbol == type) || |
2445 | 6.11M | (e_err_number == type) || |
2446 | 6.11M | (e_err_string == type) || |
2447 | 6.11M | (e_err_sfunc == type) ; |
2448 | 6.11M | } |
2449 | | |
2450 | | token_type type; |
2451 | | std::string value; |
2452 | | std::size_t position; |
2453 | | }; |
2454 | | |
2455 | | class generator |
2456 | | { |
2457 | | public: |
2458 | | |
2459 | | typedef token token_t; |
2460 | | typedef std::vector<token_t> token_list_t; |
2461 | | typedef token_list_t::iterator token_list_itr_t; |
2462 | | typedef details::char_t char_t; |
2463 | | |
2464 | | generator() |
2465 | 10.1k | : base_itr_(0) |
2466 | 10.1k | , s_itr_ (0) |
2467 | 10.1k | , s_end_ (0) |
2468 | 10.1k | { |
2469 | 10.1k | clear(); |
2470 | 10.1k | } |
2471 | | |
2472 | | inline void clear() |
2473 | 10.1k | { |
2474 | 10.1k | base_itr_ = 0; |
2475 | 10.1k | s_itr_ = 0; |
2476 | 10.1k | s_end_ = 0; |
2477 | 10.1k | token_list_.clear(); |
2478 | 10.1k | token_itr_ = token_list_.end(); |
2479 | 10.1k | store_token_itr_ = token_list_.end(); |
2480 | 10.1k | } |
2481 | | |
2482 | | inline bool process(const std::string& str) |
2483 | 10.1k | { |
2484 | 10.1k | base_itr_ = str.data(); |
2485 | 10.1k | s_itr_ = str.data(); |
2486 | 10.1k | s_end_ = str.data() + str.size(); |
2487 | | |
2488 | 10.1k | eof_token_.set_operator(token_t::e_eof, s_end_, s_end_, base_itr_); |
2489 | 10.1k | token_list_.clear(); |
2490 | | |
2491 | 5.65M | while (!is_end(s_itr_)) |
2492 | 5.64M | { |
2493 | 5.64M | scan_token(); |
2494 | | |
2495 | 5.64M | if (!token_list_.empty() && token_list_.back().is_error()) |
2496 | 1.52k | return false; |
2497 | 5.64M | } |
2498 | | |
2499 | 8.60k | return true; |
2500 | 10.1k | } |
2501 | | |
2502 | | inline bool empty() const |
2503 | 8.60k | { |
2504 | 8.60k | return token_list_.empty(); |
2505 | 8.60k | } |
2506 | | |
2507 | | inline std::size_t size() const |
2508 | 474k | { |
2509 | 474k | return token_list_.size(); |
2510 | 474k | } |
2511 | | |
2512 | | inline void begin() |
2513 | 16.0k | { |
2514 | 16.0k | token_itr_ = token_list_.begin(); |
2515 | 16.0k | store_token_itr_ = token_list_.begin(); |
2516 | 16.0k | } |
2517 | | |
2518 | | inline void store() |
2519 | 0 | { |
2520 | 0 | store_token_itr_ = token_itr_; |
2521 | 0 | } |
2522 | | |
2523 | | inline void restore() |
2524 | 0 | { |
2525 | 0 | token_itr_ = store_token_itr_; |
2526 | 0 | } |
2527 | | |
2528 | | inline token_t& next_token() |
2529 | 454k | { |
2530 | 454k | if (token_list_.end() != token_itr_) |
2531 | 448k | { |
2532 | 448k | return *token_itr_++; |
2533 | 448k | } |
2534 | 6.18k | else |
2535 | 6.18k | return eof_token_; |
2536 | 454k | } |
2537 | | |
2538 | | inline token_t& peek_next_token() |
2539 | 380k | { |
2540 | 380k | if (token_list_.end() != token_itr_) |
2541 | 374k | { |
2542 | 374k | return *token_itr_; |
2543 | 374k | } |
2544 | 5.51k | else |
2545 | 5.51k | return eof_token_; |
2546 | 380k | } |
2547 | | |
2548 | | inline token_t& operator[](const std::size_t& index) |
2549 | 30.6M | { |
2550 | 30.6M | if (index < token_list_.size()) |
2551 | 30.6M | { |
2552 | 30.6M | return token_list_[index]; |
2553 | 30.6M | } |
2554 | 0 | else |
2555 | 0 | return eof_token_; |
2556 | 30.6M | } |
2557 | | |
2558 | | inline token_t operator[](const std::size_t& index) const |
2559 | 0 | { |
2560 | 0 | if (index < token_list_.size()) |
2561 | 0 | { |
2562 | 0 | return token_list_[index]; |
2563 | 0 | } |
2564 | 0 | else |
2565 | 0 | return eof_token_; |
2566 | 0 | } |
2567 | | |
2568 | | inline bool finished() const |
2569 | 5.20k | { |
2570 | 5.20k | return (token_list_.end() == token_itr_); |
2571 | 5.20k | } |
2572 | | |
2573 | | inline void insert_front(token_t::token_type tk_type) |
2574 | 910 | { |
2575 | 910 | if ( |
2576 | 910 | !token_list_.empty() && |
2577 | 910 | (token_list_.end() != token_itr_) |
2578 | 910 | ) |
2579 | 910 | { |
2580 | 910 | token_t t = *token_itr_; |
2581 | | |
2582 | 910 | t.type = tk_type; |
2583 | 910 | token_itr_ = token_list_.insert(token_itr_,t); |
2584 | 910 | } |
2585 | 910 | } |
2586 | | |
2587 | | inline std::string substr(const std::size_t& begin, const std::size_t& end) const |
2588 | 5.55k | { |
2589 | 5.55k | const details::char_cptr begin_itr = ((base_itr_ + begin) < s_end_) ? (base_itr_ + begin) : s_end_; |
2590 | 5.55k | const details::char_cptr end_itr = ((base_itr_ + end ) < s_end_) ? (base_itr_ + end ) : s_end_; |
2591 | | |
2592 | 5.55k | return std::string(begin_itr,end_itr); |
2593 | 5.55k | } |
2594 | | |
2595 | | inline std::string remaining() const |
2596 | 0 | { |
2597 | 0 | if (finished()) |
2598 | 0 | return ""; |
2599 | 0 | else if (token_list_.begin() != token_itr_) |
2600 | 0 | return std::string(base_itr_ + (token_itr_ - 1)->position, s_end_); |
2601 | 0 | else |
2602 | 0 | return std::string(base_itr_ + token_itr_->position, s_end_); |
2603 | 0 | } |
2604 | | |
2605 | | private: |
2606 | | |
2607 | | inline bool is_end(details::char_cptr itr) const |
2608 | 85.5M | { |
2609 | 85.5M | return (s_end_ == itr); |
2610 | 85.5M | } |
2611 | | |
2612 | | #ifndef exprtk_disable_comments |
2613 | | inline bool is_comment_start(details::char_cptr itr) const |
2614 | 5.15M | { |
2615 | 5.15M | const char_t c0 = *(itr + 0); |
2616 | 5.15M | const char_t c1 = *(itr + 1); |
2617 | | |
2618 | 5.15M | if ('#' == c0) |
2619 | 78.3k | return true; |
2620 | 5.08M | else if (!is_end(itr + 1)) |
2621 | 5.07M | { |
2622 | 5.07M | if (('/' == c0) && ('/' == c1)) return true; |
2623 | 5.07M | if (('/' == c0) && ('*' == c1)) return true; |
2624 | 5.07M | } |
2625 | 5.07M | return false; |
2626 | 5.15M | } |
2627 | | #else |
2628 | | inline bool is_comment_start(details::char_cptr) const |
2629 | | { |
2630 | | return false; |
2631 | | } |
2632 | | #endif |
2633 | | |
2634 | | inline void skip_whitespace() |
2635 | 485k | { |
2636 | 1.12M | while (!is_end(s_itr_) && details::is_whitespace(*s_itr_)) |
2637 | 643k | { |
2638 | 643k | ++s_itr_; |
2639 | 643k | } |
2640 | 485k | } |
2641 | | |
2642 | | inline void skip_comments() |
2643 | 80.3k | { |
2644 | 80.3k | #ifndef exprtk_disable_comments |
2645 | | // The following comment styles are supported: |
2646 | | // 1. // .... \n |
2647 | | // 2. # .... \n |
2648 | | // 3. /* .... */ |
2649 | 80.3k | struct test |
2650 | 80.3k | { |
2651 | 80.3k | static inline bool comment_start(const char_t c0, const char_t c1, int& mode, int& incr) |
2652 | 80.3k | { |
2653 | 80.3k | mode = 0; |
2654 | 80.3k | if ('#' == c0) { mode = 1; incr = 1; } |
2655 | 1.94k | else if ('/' == c0) |
2656 | 1.94k | { |
2657 | 1.94k | if ('/' == c1) { mode = 1; incr = 2; } |
2658 | 246 | else if ('*' == c1) { mode = 2; incr = 2; } |
2659 | 1.94k | } |
2660 | 80.3k | return (0 != mode); |
2661 | 80.3k | } |
2662 | | |
2663 | 80.3k | static inline bool comment_end(const char_t c0, const char_t c1, int& mode) |
2664 | 3.88M | { |
2665 | 3.88M | if ( |
2666 | 3.88M | ((1 == mode) && ('\n' == c0)) || |
2667 | 3.88M | ((2 == mode) && ( '*' == c0) && ('/' == c1)) |
2668 | 3.88M | ) |
2669 | 80.1k | { |
2670 | 80.1k | mode = 0; |
2671 | 80.1k | return true; |
2672 | 80.1k | } |
2673 | 3.80M | else |
2674 | 3.80M | return false; |
2675 | 3.88M | } |
2676 | 80.3k | }; |
2677 | | |
2678 | 80.3k | int mode = 0; |
2679 | 80.3k | int increment = 0; |
2680 | | |
2681 | 80.3k | if (is_end(s_itr_)) |
2682 | 0 | return; |
2683 | 80.3k | else if (!test::comment_start(*s_itr_, *(s_itr_ + 1), mode, increment)) |
2684 | 0 | return; |
2685 | | |
2686 | 80.3k | details::char_cptr cmt_start = s_itr_; |
2687 | | |
2688 | 80.3k | s_itr_ += increment; |
2689 | | |
2690 | 3.88M | while (!is_end(s_itr_)) |
2691 | 3.88M | { |
2692 | 3.88M | if ((1 == mode) && test::comment_end(*s_itr_, 0, mode)) |
2693 | 79.9k | { |
2694 | 79.9k | ++s_itr_; |
2695 | 79.9k | return; |
2696 | 79.9k | } |
2697 | | |
2698 | 3.80M | if ((2 == mode)) |
2699 | 770 | { |
2700 | 770 | if (!is_end((s_itr_ + 1)) && test::comment_end(*s_itr_, *(s_itr_ + 1), mode)) |
2701 | 200 | { |
2702 | 200 | s_itr_ += 2; |
2703 | 200 | return; |
2704 | 200 | } |
2705 | 770 | } |
2706 | | |
2707 | 3.80M | ++s_itr_; |
2708 | 3.80M | } |
2709 | | |
2710 | 168 | if (2 == mode) |
2711 | 46 | { |
2712 | 46 | token_t t; |
2713 | 46 | t.set_error(token::e_error, cmt_start, cmt_start + mode, base_itr_); |
2714 | 46 | token_list_.push_back(t); |
2715 | 46 | } |
2716 | 168 | #endif |
2717 | 168 | } |
2718 | | |
2719 | | inline bool next_is_digit(const details::char_cptr itr) const |
2720 | 4.65k | { |
2721 | 4.65k | return ((itr + 1) != s_end_) && |
2722 | 4.65k | details::is_digit(*(itr + 1)); |
2723 | 4.65k | } |
2724 | | |
2725 | | inline void scan_token() |
2726 | 5.64M | { |
2727 | 5.64M | const char_t c = *s_itr_; |
2728 | | |
2729 | 5.64M | if (details::is_whitespace(c)) |
2730 | 485k | { |
2731 | 485k | skip_whitespace(); |
2732 | 485k | return; |
2733 | 485k | } |
2734 | 5.15M | else if (is_comment_start(s_itr_)) |
2735 | 80.3k | { |
2736 | 80.3k | skip_comments(); |
2737 | 80.3k | return; |
2738 | 80.3k | } |
2739 | 5.07M | else if (details::is_operator_char(c)) |
2740 | 3.31M | { |
2741 | 3.31M | scan_operator(); |
2742 | 3.31M | return; |
2743 | 3.31M | } |
2744 | 1.76M | else if (details::is_letter(c)) |
2745 | 912k | { |
2746 | 912k | scan_symbol(); |
2747 | 912k | return; |
2748 | 912k | } |
2749 | 853k | else if (('.' == c) && !next_is_digit(s_itr_)) |
2750 | 2.74k | { |
2751 | 2.74k | scan_operator(); |
2752 | 2.74k | return; |
2753 | 2.74k | } |
2754 | 850k | else if (details::is_digit(c) || ('.' == c)) |
2755 | 661k | { |
2756 | 661k | scan_number(); |
2757 | 661k | return; |
2758 | 661k | } |
2759 | 188k | else if ('$' == c) |
2760 | 1.34k | { |
2761 | 1.34k | scan_special_function(); |
2762 | 1.34k | return; |
2763 | 1.34k | } |
2764 | 187k | #ifndef exprtk_disable_string_capabilities |
2765 | 187k | else if ('\'' == c) |
2766 | 145k | { |
2767 | 145k | scan_string(); |
2768 | 145k | return; |
2769 | 145k | } |
2770 | 42.3k | #endif |
2771 | 42.3k | else if ('~' == c) |
2772 | 41.9k | { |
2773 | 41.9k | token_t t; |
2774 | 41.9k | t.set_symbol(s_itr_, s_itr_ + 1, base_itr_); |
2775 | 41.9k | token_list_.push_back(t); |
2776 | 41.9k | ++s_itr_; |
2777 | 41.9k | return; |
2778 | 41.9k | } |
2779 | 380 | else |
2780 | 380 | { |
2781 | 380 | token_t t; |
2782 | 380 | t.set_error(token::e_error, s_itr_, s_itr_ + 2, base_itr_); |
2783 | 380 | token_list_.push_back(t); |
2784 | 380 | ++s_itr_; |
2785 | 380 | } |
2786 | 5.64M | } |
2787 | | |
2788 | | inline void scan_operator() |
2789 | 3.31M | { |
2790 | 3.31M | token_t t; |
2791 | | |
2792 | 3.31M | const char_t c0 = s_itr_[0]; |
2793 | | |
2794 | 3.31M | if (!is_end(s_itr_ + 1)) |
2795 | 3.31M | { |
2796 | 3.31M | const char_t c1 = s_itr_[1]; |
2797 | | |
2798 | 3.31M | if (!is_end(s_itr_ + 2)) |
2799 | 3.30M | { |
2800 | 3.30M | const char_t c2 = s_itr_[2]; |
2801 | | |
2802 | 3.30M | if ((c0 == '<') && (c1 == '=') && (c2 == '>')) |
2803 | 454 | { |
2804 | 454 | t.set_operator(token_t::e_swap, s_itr_, s_itr_ + 3, base_itr_); |
2805 | 454 | token_list_.push_back(t); |
2806 | 454 | s_itr_ += 3; |
2807 | 454 | return; |
2808 | 454 | } |
2809 | 3.30M | } |
2810 | | |
2811 | 3.31M | token_t::token_type ttype = token_t::e_none; |
2812 | | |
2813 | 3.31M | if ((c0 == '<') && (c1 == '=')) ttype = token_t::e_lte; |
2814 | 3.31M | else if ((c0 == '>') && (c1 == '=')) ttype = token_t::e_gte; |
2815 | 3.30M | else if ((c0 == '<') && (c1 == '>')) ttype = token_t::e_ne; |
2816 | 3.29M | else if ((c0 == '!') && (c1 == '=')) ttype = token_t::e_ne; |
2817 | 3.29M | else if ((c0 == '=') && (c1 == '=')) ttype = token_t::e_eq; |
2818 | 3.29M | else if ((c0 == ':') && (c1 == '=')) ttype = token_t::e_assign; |
2819 | 3.29M | else if ((c0 == '<') && (c1 == '<')) ttype = token_t::e_shl; |
2820 | 3.26M | else if ((c0 == '>') && (c1 == '>')) ttype = token_t::e_shr; |
2821 | 3.26M | else if ((c0 == '+') && (c1 == '=')) ttype = token_t::e_addass; |
2822 | 3.12M | else if ((c0 == '-') && (c1 == '=')) ttype = token_t::e_subass; |
2823 | 3.12M | else if ((c0 == '*') && (c1 == '=')) ttype = token_t::e_mulass; |
2824 | 3.12M | else if ((c0 == '/') && (c1 == '=')) ttype = token_t::e_divass; |
2825 | 3.12M | else if ((c0 == '%') && (c1 == '=')) ttype = token_t::e_modass; |
2826 | | |
2827 | 3.31M | if (token_t::e_none != ttype) |
2828 | 189k | { |
2829 | 189k | t.set_operator(ttype, s_itr_, s_itr_ + 2, base_itr_); |
2830 | 189k | token_list_.push_back(t); |
2831 | 189k | s_itr_ += 2; |
2832 | 189k | return; |
2833 | 189k | } |
2834 | 3.31M | } |
2835 | | |
2836 | 3.12M | if ('<' == c0) |
2837 | 91.3k | t.set_operator(token_t::e_lt , s_itr_, s_itr_ + 1, base_itr_); |
2838 | 3.03M | else if ('>' == c0) |
2839 | 76.3k | t.set_operator(token_t::e_gt , s_itr_, s_itr_ + 1, base_itr_); |
2840 | 2.95M | else if (';' == c0) |
2841 | 1.90k | t.set_operator(token_t::e_eof, s_itr_, s_itr_ + 1, base_itr_); |
2842 | 2.95M | else if ('&' == c0) |
2843 | 14.0k | t.set_symbol(s_itr_, s_itr_ + 1, base_itr_); |
2844 | 2.94M | else if ('|' == c0) |
2845 | 5.00k | t.set_symbol(s_itr_, s_itr_ + 1, base_itr_); |
2846 | 2.93M | else |
2847 | 2.93M | t.set_operator(token_t::token_type(c0), s_itr_, s_itr_ + 1, base_itr_); |
2848 | | |
2849 | 3.12M | token_list_.push_back(t); |
2850 | 3.12M | ++s_itr_; |
2851 | 3.12M | } |
2852 | | |
2853 | | inline void scan_symbol() |
2854 | 912k | { |
2855 | 912k | details::char_cptr initial_itr = s_itr_; |
2856 | | |
2857 | 13.4M | while (!is_end(s_itr_)) |
2858 | 13.4M | { |
2859 | 13.4M | if (!details::is_letter_or_digit(*s_itr_) && ('_' != (*s_itr_))) |
2860 | 912k | { |
2861 | 912k | if ('.' != (*s_itr_)) |
2862 | 909k | break; |
2863 | | /* |
2864 | | Permit symbols that contain a 'dot' |
2865 | | Allowed : abc.xyz, a123.xyz, abc.123, abc_.xyz a123_.xyz abc._123 |
2866 | | Disallowed: .abc, abc.<white-space>, abc.<eof>, abc.<operator +,-,*,/...> |
2867 | | */ |
2868 | 2.65k | if ( |
2869 | 2.65k | (s_itr_ != initial_itr) && |
2870 | 2.65k | !is_end(s_itr_ + 1) && |
2871 | 2.65k | !details::is_letter_or_digit(*(s_itr_ + 1)) && |
2872 | 2.65k | ('_' != (*(s_itr_ + 1))) |
2873 | 2.65k | ) |
2874 | 924 | break; |
2875 | 2.65k | } |
2876 | | |
2877 | 12.5M | ++s_itr_; |
2878 | 12.5M | } |
2879 | | |
2880 | 912k | token_t t; |
2881 | 912k | t.set_symbol(initial_itr, s_itr_, base_itr_); |
2882 | 912k | token_list_.push_back(t); |
2883 | 912k | } |
2884 | | |
2885 | | inline void scan_number() |
2886 | 661k | { |
2887 | | /* |
2888 | | Attempt to match a valid numeric value in one of the following formats: |
2889 | | (01) 123456 |
2890 | | (02) 123456. |
2891 | | (03) 123.456 |
2892 | | (04) 123.456e3 |
2893 | | (05) 123.456E3 |
2894 | | (06) 123.456e+3 |
2895 | | (07) 123.456E+3 |
2896 | | (08) 123.456e-3 |
2897 | | (09) 123.456E-3 |
2898 | | (00) .1234 |
2899 | | (11) .1234e3 |
2900 | | (12) .1234E+3 |
2901 | | (13) .1234e+3 |
2902 | | (14) .1234E-3 |
2903 | | (15) .1234e-3 |
2904 | | */ |
2905 | | |
2906 | 661k | details::char_cptr initial_itr = s_itr_; |
2907 | 661k | bool dot_found = false; |
2908 | 661k | bool e_found = false; |
2909 | 661k | bool post_e_sign_found = false; |
2910 | 661k | bool post_e_digit_found = false; |
2911 | 661k | token_t t; |
2912 | | |
2913 | 12.9M | while (!is_end(s_itr_)) |
2914 | 12.9M | { |
2915 | 12.9M | if ('.' == (*s_itr_)) |
2916 | 2.57k | { |
2917 | 2.57k | if (dot_found) |
2918 | 76 | { |
2919 | 76 | t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); |
2920 | 76 | token_list_.push_back(t); |
2921 | | |
2922 | 76 | return; |
2923 | 76 | } |
2924 | | |
2925 | 2.50k | dot_found = true; |
2926 | 2.50k | ++s_itr_; |
2927 | | |
2928 | 2.50k | continue; |
2929 | 2.57k | } |
2930 | 12.9M | else if ('e' == std::tolower(*s_itr_)) |
2931 | 5.25k | { |
2932 | 5.25k | const char_t& c = *(s_itr_ + 1); |
2933 | | |
2934 | 5.25k | if (is_end(s_itr_ + 1)) |
2935 | 102 | { |
2936 | 102 | t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); |
2937 | 102 | token_list_.push_back(t); |
2938 | | |
2939 | 102 | return; |
2940 | 102 | } |
2941 | 5.15k | else if ( |
2942 | 5.15k | ('+' != c) && |
2943 | 5.15k | ('-' != c) && |
2944 | 5.15k | !details::is_digit(c) |
2945 | 5.15k | ) |
2946 | 130 | { |
2947 | 130 | t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); |
2948 | 130 | token_list_.push_back(t); |
2949 | | |
2950 | 130 | return; |
2951 | 130 | } |
2952 | | |
2953 | 5.02k | e_found = true; |
2954 | 5.02k | ++s_itr_; |
2955 | | |
2956 | 5.02k | continue; |
2957 | 5.25k | } |
2958 | 12.8M | else if (e_found && details::is_sign(*s_itr_) && !post_e_digit_found) |
2959 | 2.03k | { |
2960 | 2.03k | if (post_e_sign_found) |
2961 | 116 | { |
2962 | 116 | t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); |
2963 | 116 | token_list_.push_back(t); |
2964 | | |
2965 | 116 | return; |
2966 | 116 | } |
2967 | | |
2968 | 1.92k | post_e_sign_found = true; |
2969 | 1.92k | ++s_itr_; |
2970 | | |
2971 | 1.92k | continue; |
2972 | 2.03k | } |
2973 | 12.8M | else if (e_found && details::is_digit(*s_itr_)) |
2974 | 2.02M | { |
2975 | 2.02M | post_e_digit_found = true; |
2976 | 2.02M | ++s_itr_; |
2977 | | |
2978 | 2.02M | continue; |
2979 | 2.02M | } |
2980 | 10.8M | else if (('.' != (*s_itr_)) && !details::is_digit(*s_itr_)) |
2981 | 658k | break; |
2982 | 10.2M | else |
2983 | 10.2M | ++s_itr_; |
2984 | 12.9M | } |
2985 | | |
2986 | 661k | t.set_numeric(initial_itr, s_itr_, base_itr_); |
2987 | 661k | token_list_.push_back(t); |
2988 | | |
2989 | 661k | return; |
2990 | 661k | } |
2991 | | |
2992 | | inline void scan_special_function() |
2993 | 1.34k | { |
2994 | 1.34k | details::char_cptr initial_itr = s_itr_; |
2995 | 1.34k | token_t t; |
2996 | | |
2997 | | // $fdd(x,x,x) = at least 11 chars |
2998 | 1.34k | if (std::distance(s_itr_,s_end_) < 11) |
2999 | 38 | { |
3000 | 38 | t.set_error( |
3001 | 38 | token::e_err_sfunc, |
3002 | 38 | initial_itr, std::min(initial_itr + 11, s_end_), |
3003 | 38 | base_itr_); |
3004 | 38 | token_list_.push_back(t); |
3005 | | |
3006 | 38 | return; |
3007 | 38 | } |
3008 | | |
3009 | 1.31k | if ( |
3010 | 1.31k | !(('$' == *s_itr_) && |
3011 | 1.31k | (details::imatch ('f',*(s_itr_ + 1))) && |
3012 | 1.31k | (details::is_digit(*(s_itr_ + 2))) && |
3013 | 1.31k | (details::is_digit(*(s_itr_ + 3)))) |
3014 | 1.31k | ) |
3015 | 24 | { |
3016 | 24 | t.set_error( |
3017 | 24 | token::e_err_sfunc, |
3018 | 24 | initial_itr, std::min(initial_itr + 4, s_end_), |
3019 | 24 | base_itr_); |
3020 | 24 | token_list_.push_back(t); |
3021 | | |
3022 | 24 | return; |
3023 | 24 | } |
3024 | | |
3025 | 1.28k | s_itr_ += 4; // $fdd = 4chars |
3026 | | |
3027 | 1.28k | t.set_symbol(initial_itr, s_itr_, base_itr_); |
3028 | 1.28k | token_list_.push_back(t); |
3029 | | |
3030 | 1.28k | return; |
3031 | 1.31k | } |
3032 | | |
3033 | | #ifndef exprtk_disable_string_capabilities |
3034 | | inline void scan_string() |
3035 | 145k | { |
3036 | 145k | details::char_cptr initial_itr = s_itr_ + 1; |
3037 | 145k | token_t t; |
3038 | | |
3039 | 145k | if (std::distance(s_itr_,s_end_) < 2) |
3040 | 18 | { |
3041 | 18 | t.set_error(token::e_err_string, s_itr_, s_end_, base_itr_); |
3042 | 18 | token_list_.push_back(t); |
3043 | | |
3044 | 18 | return; |
3045 | 18 | } |
3046 | | |
3047 | 145k | ++s_itr_; |
3048 | | |
3049 | 145k | bool escaped_found = false; |
3050 | 145k | bool escaped = false; |
3051 | | |
3052 | 36.4M | while (!is_end(s_itr_)) |
3053 | 36.4M | { |
3054 | 36.4M | if (!details::is_valid_string_char(*s_itr_)) |
3055 | 150 | { |
3056 | 150 | t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_); |
3057 | 150 | token_list_.push_back(t); |
3058 | | |
3059 | 150 | return; |
3060 | 150 | } |
3061 | 36.4M | else if (!escaped && ('\\' == *s_itr_)) |
3062 | 83.9k | { |
3063 | 83.9k | escaped_found = true; |
3064 | 83.9k | escaped = true; |
3065 | 83.9k | ++s_itr_; |
3066 | | |
3067 | 83.9k | continue; |
3068 | 83.9k | } |
3069 | 36.3M | else if (!escaped) |
3070 | 36.3M | { |
3071 | 36.3M | if ('\'' == *s_itr_) |
3072 | 144k | break; |
3073 | 36.3M | } |
3074 | 83.9k | else if (escaped) |
3075 | 83.9k | { |
3076 | 83.9k | if ( |
3077 | 83.9k | !is_end(s_itr_) && ('0' == *(s_itr_)) && |
3078 | 83.9k | ((s_itr_ + 4) <= s_end_) |
3079 | 83.9k | ) |
3080 | 4.96k | { |
3081 | 4.96k | const bool x_separator = ('X' == std::toupper(*(s_itr_ + 1))); |
3082 | | |
3083 | 4.96k | const bool both_digits = details::is_hex_digit(*(s_itr_ + 2)) && |
3084 | 4.96k | details::is_hex_digit(*(s_itr_ + 3)) ; |
3085 | | |
3086 | 4.96k | if (!(x_separator && both_digits)) |
3087 | 162 | { |
3088 | 162 | t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_); |
3089 | 162 | token_list_.push_back(t); |
3090 | | |
3091 | 162 | return; |
3092 | 162 | } |
3093 | 4.79k | else |
3094 | 4.79k | s_itr_ += 3; |
3095 | 4.96k | } |
3096 | | |
3097 | 83.8k | escaped = false; |
3098 | 83.8k | } |
3099 | | |
3100 | 36.2M | ++s_itr_; |
3101 | 36.2M | } |
3102 | | |
3103 | 144k | if (is_end(s_itr_)) |
3104 | 278 | { |
3105 | 278 | t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_); |
3106 | 278 | token_list_.push_back(t); |
3107 | | |
3108 | 278 | return; |
3109 | 278 | } |
3110 | | |
3111 | 144k | if (!escaped_found) |
3112 | 138k | t.set_string(initial_itr, s_itr_, base_itr_); |
3113 | 5.65k | else |
3114 | 5.65k | { |
3115 | 5.65k | std::string parsed_string(initial_itr,s_itr_); |
3116 | | |
3117 | 5.65k | if (!details::cleanup_escapes(parsed_string)) |
3118 | 0 | { |
3119 | 0 | t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_); |
3120 | 0 | token_list_.push_back(t); |
3121 | |
|
3122 | 0 | return; |
3123 | 0 | } |
3124 | | |
3125 | 5.65k | t.set_string( |
3126 | 5.65k | parsed_string, |
3127 | 5.65k | static_cast<std::size_t>(std::distance(base_itr_,initial_itr))); |
3128 | 5.65k | } |
3129 | | |
3130 | 144k | token_list_.push_back(t); |
3131 | 144k | ++s_itr_; |
3132 | | |
3133 | 144k | return; |
3134 | 144k | } |
3135 | | #endif |
3136 | | |
3137 | | private: |
3138 | | |
3139 | | token_list_t token_list_; |
3140 | | token_list_itr_t token_itr_; |
3141 | | token_list_itr_t store_token_itr_; |
3142 | | token_t eof_token_; |
3143 | | details::char_cptr base_itr_; |
3144 | | details::char_cptr s_itr_; |
3145 | | details::char_cptr s_end_; |
3146 | | |
3147 | | friend class token_scanner; |
3148 | | friend class token_modifier; |
3149 | | friend class token_inserter; |
3150 | | friend class token_joiner; |
3151 | | }; // class generator |
3152 | | |
3153 | | class helper_interface |
3154 | | { |
3155 | | public: |
3156 | | |
3157 | 0 | virtual void init() { } |
3158 | 49.2k | virtual void reset() { } |
3159 | 33.7k | virtual bool result() { return true; } |
3160 | 0 | virtual std::size_t process(generator&) { return 0; } |
3161 | 80.9k | virtual ~helper_interface() { } |
3162 | | }; |
3163 | | |
3164 | | class token_scanner : public helper_interface |
3165 | | { |
3166 | | public: |
3167 | | |
3168 | | virtual ~token_scanner() exprtk_override |
3169 | 0 | {} |
3170 | | |
3171 | | explicit token_scanner(const std::size_t& stride) |
3172 | 40.4k | : stride_(stride) |
3173 | 40.4k | { |
3174 | 40.4k | if (stride > 4) |
3175 | 0 | { |
3176 | 0 | throw std::invalid_argument("token_scanner() - Invalid stride value"); |
3177 | 0 | } |
3178 | 40.4k | } |
3179 | | |
3180 | | inline std::size_t process(generator& g) exprtk_override |
3181 | 32.1k | { |
3182 | 32.1k | if (g.token_list_.size() >= stride_) |
3183 | 30.1k | { |
3184 | 12.3M | for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i) |
3185 | 12.3M | { |
3186 | 12.3M | token t; |
3187 | | |
3188 | 12.3M | switch (stride_) |
3189 | 12.3M | { |
3190 | 7.38M | case 1 : |
3191 | 7.38M | { |
3192 | 7.38M | const token& t0 = g.token_list_[i]; |
3193 | | |
3194 | 7.38M | if (!operator()(t0)) |
3195 | 161 | { |
3196 | 161 | return 0; |
3197 | 161 | } |
3198 | 7.38M | } |
3199 | 7.38M | break; |
3200 | | |
3201 | 7.38M | case 2 : |
3202 | 2.82M | { |
3203 | 2.82M | const token& t0 = g.token_list_[i ]; |
3204 | 2.82M | const token& t1 = g.token_list_[i + 1]; |
3205 | | |
3206 | 2.82M | if (!operator()(t0, t1)) |
3207 | 0 | { |
3208 | 0 | return 0; |
3209 | 0 | } |
3210 | 2.82M | } |
3211 | 2.82M | break; |
3212 | | |
3213 | 2.82M | case 3 : |
3214 | 2.13M | { |
3215 | 2.13M | const token& t0 = g.token_list_[i ]; |
3216 | 2.13M | const token& t1 = g.token_list_[i + 1]; |
3217 | 2.13M | const token& t2 = g.token_list_[i + 2]; |
3218 | | |
3219 | 2.13M | if (!operator()(t0, t1, t2)) |
3220 | 0 | { |
3221 | 0 | return 0; |
3222 | 0 | } |
3223 | 2.13M | } |
3224 | 2.13M | break; |
3225 | | |
3226 | 2.13M | case 4 : |
3227 | 0 | { |
3228 | 0 | const token& t0 = g.token_list_[i ]; |
3229 | 0 | const token& t1 = g.token_list_[i + 1]; |
3230 | 0 | const token& t2 = g.token_list_[i + 2]; |
3231 | 0 | const token& t3 = g.token_list_[i + 3]; |
3232 | |
|
3233 | 0 | if (!operator()(t0, t1, t2, t3)) |
3234 | 0 | { |
3235 | 0 | return 0; |
3236 | 0 | } |
3237 | 0 | } |
3238 | 0 | break; |
3239 | 12.3M | } |
3240 | 12.3M | } |
3241 | 30.1k | } |
3242 | | |
3243 | 32.0k | return 0; |
3244 | 32.1k | } |
3245 | | |
3246 | | virtual bool operator() (const token&) |
3247 | 0 | { |
3248 | 0 | return false; |
3249 | 0 | } |
3250 | | |
3251 | | virtual bool operator() (const token&, const token&) |
3252 | 0 | { |
3253 | 0 | return false; |
3254 | 0 | } |
3255 | | |
3256 | | virtual bool operator() (const token&, const token&, const token&) |
3257 | 0 | { |
3258 | 0 | return false; |
3259 | 0 | } |
3260 | | |
3261 | | virtual bool operator() (const token&, const token&, const token&, const token&) |
3262 | 0 | { |
3263 | 0 | return false; |
3264 | 0 | } |
3265 | | |
3266 | | private: |
3267 | | |
3268 | | const std::size_t stride_; |
3269 | | }; // class token_scanner |
3270 | | |
3271 | | class token_modifier : public helper_interface |
3272 | | { |
3273 | | public: |
3274 | | |
3275 | | inline std::size_t process(generator& g) exprtk_override |
3276 | 8.44k | { |
3277 | 8.44k | std::size_t changes = 0; |
3278 | | |
3279 | 4.33M | for (std::size_t i = 0; i < g.token_list_.size(); ++i) |
3280 | 4.32M | { |
3281 | 4.32M | if (modify(g.token_list_[i])) changes++; |
3282 | 4.32M | } |
3283 | | |
3284 | 8.44k | return changes; |
3285 | 8.44k | } |
3286 | | |
3287 | | virtual bool modify(token& t) = 0; |
3288 | | }; |
3289 | | |
3290 | | class token_inserter : public helper_interface |
3291 | | { |
3292 | | public: |
3293 | | |
3294 | | explicit token_inserter(const std::size_t& stride) |
3295 | 10.1k | : stride_(stride) |
3296 | 10.1k | { |
3297 | 10.1k | if (stride > 5) |
3298 | 0 | { |
3299 | 0 | throw std::invalid_argument("token_inserter() - Invalid stride value"); |
3300 | 0 | } |
3301 | 10.1k | } |
3302 | | |
3303 | | inline std::size_t process(generator& g) exprtk_override |
3304 | 8.44k | { |
3305 | 8.44k | if (g.token_list_.empty()) |
3306 | 0 | return 0; |
3307 | 8.44k | else if (g.token_list_.size() < stride_) |
3308 | 988 | return 0; |
3309 | | |
3310 | 7.46k | std::size_t changes = 0; |
3311 | | |
3312 | 7.46k | typedef std::pair<std::size_t, token> insert_t; |
3313 | 7.46k | std::vector<insert_t> insert_list; |
3314 | 7.46k | insert_list.reserve(10000); |
3315 | | |
3316 | 4.07M | for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i) |
3317 | 4.06M | { |
3318 | 4.06M | int insert_index = -1; |
3319 | 4.06M | token t; |
3320 | | |
3321 | 4.06M | switch (stride_) |
3322 | 4.06M | { |
3323 | 0 | case 1 : insert_index = insert(g.token_list_[i],t); |
3324 | 0 | break; |
3325 | | |
3326 | 4.06M | case 2 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], t); |
3327 | 4.06M | break; |
3328 | | |
3329 | 0 | case 3 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], t); |
3330 | 0 | break; |
3331 | | |
3332 | 0 | case 4 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], g.token_list_[i + 3], t); |
3333 | 0 | break; |
3334 | | |
3335 | 0 | case 5 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], g.token_list_[i + 3], g.token_list_[i + 4], t); |
3336 | 0 | break; |
3337 | 4.06M | } |
3338 | | |
3339 | 4.06M | if ((insert_index >= 0) && (insert_index <= (static_cast<int>(stride_) + 1))) |
3340 | 283k | { |
3341 | 283k | insert_list.push_back(insert_t(i, t)); |
3342 | 283k | changes++; |
3343 | 283k | } |
3344 | 4.06M | } |
3345 | | |
3346 | 7.46k | if (!insert_list.empty()) |
3347 | 2.31k | { |
3348 | 2.31k | generator::token_list_t token_list; |
3349 | | |
3350 | 2.31k | std::size_t insert_index = 0; |
3351 | | |
3352 | 3.99M | for (std::size_t i = 0; i < g.token_list_.size(); ++i) |
3353 | 3.99M | { |
3354 | 3.99M | token_list.push_back(g.token_list_[i]); |
3355 | | |
3356 | 3.99M | if ( |
3357 | 3.99M | (insert_index < insert_list.size()) && |
3358 | 3.99M | (insert_list[insert_index].first == i) |
3359 | 3.99M | ) |
3360 | 283k | { |
3361 | 283k | token_list.push_back(insert_list[insert_index].second); |
3362 | 283k | insert_index++; |
3363 | 283k | } |
3364 | 3.99M | } |
3365 | | |
3366 | 2.31k | std::swap(g.token_list_,token_list); |
3367 | 2.31k | } |
3368 | | |
3369 | 7.46k | return changes; |
3370 | 7.46k | } |
3371 | | |
3372 | | #define token_inserter_empty_body \ |
3373 | 0 | { \ |
3374 | 0 | return -1; \ |
3375 | 0 | } \ Unexecuted instantiation: exprtk::lexer::token_inserter::insert(exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token&) Unexecuted instantiation: exprtk::lexer::token_inserter::insert(exprtk::lexer::token const&, exprtk::lexer::token&) Unexecuted instantiation: exprtk::lexer::token_inserter::insert(exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token&) Unexecuted instantiation: exprtk::lexer::token_inserter::insert(exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token&) Unexecuted instantiation: exprtk::lexer::token_inserter::insert(exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token&) |
3376 | | |
3377 | | inline virtual int insert(const token&, token&) |
3378 | | token_inserter_empty_body |
3379 | | |
3380 | | inline virtual int insert(const token&, const token&, token&) |
3381 | | token_inserter_empty_body |
3382 | | |
3383 | | inline virtual int insert(const token&, const token&, const token&, token&) |
3384 | | token_inserter_empty_body |
3385 | | |
3386 | | inline virtual int insert(const token&, const token&, const token&, const token&, token&) |
3387 | | token_inserter_empty_body |
3388 | | |
3389 | | inline virtual int insert(const token&, const token&, const token&, const token&, const token&, token&) |
3390 | | token_inserter_empty_body |
3391 | | |
3392 | | #undef token_inserter_empty_body |
3393 | | |
3394 | | private: |
3395 | | |
3396 | | const std::size_t stride_; |
3397 | | }; |
3398 | | |
3399 | | class token_joiner : public helper_interface |
3400 | | { |
3401 | | public: |
3402 | | |
3403 | | explicit token_joiner(const std::size_t& stride) |
3404 | 20.2k | : stride_(stride) |
3405 | 20.2k | {} |
3406 | | |
3407 | | inline std::size_t process(generator& g) exprtk_override |
3408 | 16.8k | { |
3409 | 16.8k | if (g.token_list_.empty()) |
3410 | 0 | return 0; |
3411 | | |
3412 | 16.8k | switch (stride_) |
3413 | 16.8k | { |
3414 | 8.44k | case 2 : return process_stride_2(g); |
3415 | 8.44k | case 3 : return process_stride_3(g); |
3416 | 0 | default : return 0; |
3417 | 16.8k | } |
3418 | 16.8k | } |
3419 | | |
3420 | 0 | virtual bool join(const token&, const token&, token&) { return false; } |
3421 | 0 | virtual bool join(const token&, const token&, const token&, token&) { return false; } |
3422 | | |
3423 | | private: |
3424 | | |
3425 | | inline std::size_t process_stride_2(generator& g) |
3426 | 8.44k | { |
3427 | 8.44k | if (g.token_list_.size() < 2) |
3428 | 988 | return 0; |
3429 | | |
3430 | 7.46k | std::size_t changes = 0; |
3431 | | |
3432 | 7.46k | generator::token_list_t token_list; |
3433 | 7.46k | token_list.reserve(10000); |
3434 | | |
3435 | 4.29M | for (int i = 0; i < static_cast<int>(g.token_list_.size() - 1); ++i) |
3436 | 4.28M | { |
3437 | 4.28M | token t; |
3438 | | |
3439 | 4.28M | for ( ; ; ) |
3440 | 4.31M | { |
3441 | 4.31M | if (!join(g[i], g[i + 1], t)) |
3442 | 4.28M | { |
3443 | 4.28M | token_list.push_back(g[i]); |
3444 | 4.28M | break; |
3445 | 4.28M | } |
3446 | | |
3447 | 34.4k | token_list.push_back(t); |
3448 | | |
3449 | 34.4k | ++changes; |
3450 | | |
3451 | 34.4k | i += 2; |
3452 | | |
3453 | 34.4k | if (static_cast<std::size_t>(i) >= (g.token_list_.size() - 1)) |
3454 | 118 | break; |
3455 | 34.4k | } |
3456 | 4.28M | } |
3457 | | |
3458 | 7.46k | token_list.push_back(g.token_list_.back()); |
3459 | | |
3460 | 7.46k | assert(token_list.size() <= g.token_list_.size()); |
3461 | | |
3462 | 7.46k | std::swap(token_list, g.token_list_); |
3463 | | |
3464 | 7.46k | return changes; |
3465 | 7.46k | } |
3466 | | |
3467 | | inline std::size_t process_stride_3(generator& g) |
3468 | 8.44k | { |
3469 | 8.44k | if (g.token_list_.size() < 3) |
3470 | 1.38k | return 0; |
3471 | | |
3472 | 7.06k | std::size_t changes = 0; |
3473 | | |
3474 | 7.06k | generator::token_list_t token_list; |
3475 | 7.06k | token_list.reserve(10000); |
3476 | | |
3477 | 4.31M | for (int i = 0; i < static_cast<int>(g.token_list_.size() - 2); ++i) |
3478 | 4.31M | { |
3479 | 4.31M | token t; |
3480 | | |
3481 | 4.31M | for ( ; ; ) |
3482 | 4.31M | { |
3483 | 4.31M | if (!join(g[i], g[i + 1], g[i + 2], t)) |
3484 | 4.31M | { |
3485 | 4.31M | token_list.push_back(g[i]); |
3486 | 4.31M | break; |
3487 | 4.31M | } |
3488 | | |
3489 | 4 | token_list.push_back(t); |
3490 | | |
3491 | 4 | ++changes; |
3492 | | |
3493 | 4 | i += 3; |
3494 | | |
3495 | 4 | if (static_cast<std::size_t>(i) >= (g.token_list_.size() - 2)) |
3496 | 4 | break; |
3497 | 4 | } |
3498 | 4.31M | } |
3499 | | |
3500 | 7.06k | token_list.push_back(*(g.token_list_.begin() + g.token_list_.size() - 2)); |
3501 | 7.06k | token_list.push_back(*(g.token_list_.begin() + g.token_list_.size() - 1)); |
3502 | | |
3503 | 7.06k | assert(token_list.size() <= g.token_list_.size()); |
3504 | | |
3505 | 7.06k | std::swap(token_list, g.token_list_); |
3506 | | |
3507 | 7.06k | return changes; |
3508 | 7.06k | } |
3509 | | |
3510 | | const std::size_t stride_; |
3511 | | }; |
3512 | | |
3513 | | namespace helper |
3514 | | { |
3515 | | |
3516 | | inline void dump(const lexer::generator& generator) |
3517 | 0 | { |
3518 | 0 | for (std::size_t i = 0; i < generator.size(); ++i) |
3519 | 0 | { |
3520 | 0 | const lexer::token& t = generator[i]; |
3521 | 0 | printf("Token[%02d] @ %03d %6s --> '%s'\n", |
3522 | 0 | static_cast<int>(i), |
3523 | 0 | static_cast<int>(t.position), |
3524 | 0 | t.to_str(t.type).c_str(), |
3525 | 0 | t.value.c_str()); |
3526 | 0 | } |
3527 | 0 | } |
3528 | | |
3529 | | class commutative_inserter : public lexer::token_inserter |
3530 | | { |
3531 | | public: |
3532 | | |
3533 | | using lexer::token_inserter::insert; |
3534 | | |
3535 | | commutative_inserter() |
3536 | 10.1k | : lexer::token_inserter(2) |
3537 | 10.1k | {} |
3538 | | |
3539 | | inline void ignore_symbol(const std::string& symbol) |
3540 | 334k | { |
3541 | 334k | ignore_set_.insert(symbol); |
3542 | 334k | } |
3543 | | |
3544 | | inline int insert(const lexer::token& t0, const lexer::token& t1, lexer::token& new_token) exprtk_override |
3545 | 4.06M | { |
3546 | 4.06M | bool match = false; |
3547 | 4.06M | new_token.type = lexer::token::e_mul; |
3548 | 4.06M | new_token.value = "*"; |
3549 | 4.06M | new_token.position = t1.position; |
3550 | | |
3551 | 4.06M | if (t0.type == lexer::token::e_symbol) |
3552 | 742k | { |
3553 | 742k | if (ignore_set_.end() != ignore_set_.find(t0.value)) |
3554 | 20.5k | { |
3555 | 20.5k | return -1; |
3556 | 20.5k | } |
3557 | 722k | else if (!t0.value.empty() && ('$' == t0.value[0])) |
3558 | 248 | { |
3559 | 248 | return -1; |
3560 | 248 | } |
3561 | 742k | } |
3562 | | |
3563 | 4.04M | if (t1.type == lexer::token::e_symbol) |
3564 | 727k | { |
3565 | 727k | if (ignore_set_.end() != ignore_set_.find(t1.value)) |
3566 | 19.4k | { |
3567 | 19.4k | return -1; |
3568 | 19.4k | } |
3569 | 727k | } |
3570 | 4.02M | if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_symbol )) match = true; |
3571 | 3.82M | else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lbracket )) match = true; |
3572 | 3.82M | else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lcrlbracket)) match = true; |
3573 | 3.82M | else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lsqrbracket)) match = true; |
3574 | 3.82M | else if ((t0.type == lexer::token::e_symbol ) && (t1.type == lexer::token::e_number )) match = true; |
3575 | 3.80M | else if ((t0.type == lexer::token::e_rbracket ) && (t1.type == lexer::token::e_number )) match = true; |
3576 | 3.80M | else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_number )) match = true; |
3577 | 3.80M | else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_number )) match = true; |
3578 | 3.80M | else if ((t0.type == lexer::token::e_rbracket ) && (t1.type == lexer::token::e_symbol )) match = true; |
3579 | 3.79M | else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_symbol )) match = true; |
3580 | 3.79M | else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_symbol )) match = true; |
3581 | 3.79M | else if ((t0.type == lexer::token::e_symbol ) && (t1.type == lexer::token::e_symbol )) match = true; |
3582 | | |
3583 | 4.02M | return (match) ? 1 : -1; |
3584 | 4.04M | } |
3585 | | |
3586 | | private: |
3587 | | |
3588 | | std::set<std::string,details::ilesscompare> ignore_set_; |
3589 | | }; |
3590 | | |
3591 | | class operator_joiner exprtk_final : public token_joiner |
3592 | | { |
3593 | | public: |
3594 | | |
3595 | | explicit operator_joiner(const std::size_t& stride) |
3596 | 20.2k | : token_joiner(stride) |
3597 | 20.2k | {} |
3598 | | |
3599 | | inline bool join(const lexer::token& t0, const lexer::token& t1, lexer::token& t) exprtk_override |
3600 | 4.31M | { |
3601 | | // ': =' --> ':=' |
3602 | 4.31M | if ((t0.type == lexer::token::e_colon) && (t1.type == lexer::token::e_eq)) |
3603 | 6 | { |
3604 | 6 | t.type = lexer::token::e_assign; |
3605 | 6 | t.value = ":="; |
3606 | 6 | t.position = t0.position; |
3607 | | |
3608 | 6 | return true; |
3609 | 6 | } |
3610 | | // '+ =' --> '+=' |
3611 | 4.31M | else if ((t0.type == lexer::token::e_add) && (t1.type == lexer::token::e_eq)) |
3612 | 2 | { |
3613 | 2 | t.type = lexer::token::e_addass; |
3614 | 2 | t.value = "+="; |
3615 | 2 | t.position = t0.position; |
3616 | | |
3617 | 2 | return true; |
3618 | 2 | } |
3619 | | // '- =' --> '-=' |
3620 | 4.31M | else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_eq)) |
3621 | 4.79k | { |
3622 | 4.79k | t.type = lexer::token::e_subass; |
3623 | 4.79k | t.value = "-="; |
3624 | 4.79k | t.position = t0.position; |
3625 | | |
3626 | 4.79k | return true; |
3627 | 4.79k | } |
3628 | | // '* =' --> '*=' |
3629 | 4.31M | else if ((t0.type == lexer::token::e_mul) && (t1.type == lexer::token::e_eq)) |
3630 | 2 | { |
3631 | 2 | t.type = lexer::token::e_mulass; |
3632 | 2 | t.value = "*="; |
3633 | 2 | t.position = t0.position; |
3634 | | |
3635 | 2 | return true; |
3636 | 2 | } |
3637 | | // '/ =' --> '/=' |
3638 | 4.31M | else if ((t0.type == lexer::token::e_div) && (t1.type == lexer::token::e_eq)) |
3639 | 6 | { |
3640 | 6 | t.type = lexer::token::e_divass; |
3641 | 6 | t.value = "/="; |
3642 | 6 | t.position = t0.position; |
3643 | | |
3644 | 6 | return true; |
3645 | 6 | } |
3646 | | // '% =' --> '%=' |
3647 | 4.31M | else if ((t0.type == lexer::token::e_mod) && (t1.type == lexer::token::e_eq)) |
3648 | 2 | { |
3649 | 2 | t.type = lexer::token::e_modass; |
3650 | 2 | t.value = "%="; |
3651 | 2 | t.position = t0.position; |
3652 | | |
3653 | 2 | return true; |
3654 | 2 | } |
3655 | | // '> =' --> '>=' |
3656 | 4.31M | else if ((t0.type == lexer::token::e_gt) && (t1.type == lexer::token::e_eq)) |
3657 | 4 | { |
3658 | 4 | t.type = lexer::token::e_gte; |
3659 | 4 | t.value = ">="; |
3660 | 4 | t.position = t0.position; |
3661 | | |
3662 | 4 | return true; |
3663 | 4 | } |
3664 | | // '< =' --> '<=' |
3665 | 4.31M | else if ((t0.type == lexer::token::e_lt) && (t1.type == lexer::token::e_eq)) |
3666 | 2 | { |
3667 | 2 | t.type = lexer::token::e_lte; |
3668 | 2 | t.value = "<="; |
3669 | 2 | t.position = t0.position; |
3670 | | |
3671 | 2 | return true; |
3672 | 2 | } |
3673 | | // '= =' --> '==' |
3674 | 4.31M | else if ((t0.type == lexer::token::e_eq) && (t1.type == lexer::token::e_eq)) |
3675 | 194 | { |
3676 | 194 | t.type = lexer::token::e_eq; |
3677 | 194 | t.value = "=="; |
3678 | 194 | t.position = t0.position; |
3679 | | |
3680 | 194 | return true; |
3681 | 194 | } |
3682 | | // '! =' --> '!=' |
3683 | 4.31M | else if ((static_cast<details::char_t>(t0.type) == '!') && (t1.type == lexer::token::e_eq)) |
3684 | 10 | { |
3685 | 10 | t.type = lexer::token::e_ne; |
3686 | 10 | t.value = "!="; |
3687 | 10 | t.position = t0.position; |
3688 | | |
3689 | 10 | return true; |
3690 | 10 | } |
3691 | | // '< >' --> '<>' |
3692 | 4.31M | else if ((t0.type == lexer::token::e_lt) && (t1.type == lexer::token::e_gt)) |
3693 | 2 | { |
3694 | 2 | t.type = lexer::token::e_ne; |
3695 | 2 | t.value = "<>"; |
3696 | 2 | t.position = t0.position; |
3697 | | |
3698 | 2 | return true; |
3699 | 2 | } |
3700 | | // '<= >' --> '<=>' |
3701 | 4.31M | else if ((t0.type == lexer::token::e_lte) && (t1.type == lexer::token::e_gt)) |
3702 | 2 | { |
3703 | 2 | t.type = lexer::token::e_swap; |
3704 | 2 | t.value = "<=>"; |
3705 | 2 | t.position = t0.position; |
3706 | | |
3707 | 2 | return true; |
3708 | 2 | } |
3709 | | // '+ -' --> '-' |
3710 | 4.31M | else if ((t0.type == lexer::token::e_add) && (t1.type == lexer::token::e_sub)) |
3711 | 185 | { |
3712 | 185 | t.type = lexer::token::e_sub; |
3713 | 185 | t.value = "-"; |
3714 | 185 | t.position = t0.position; |
3715 | | |
3716 | 185 | return true; |
3717 | 185 | } |
3718 | | // '- +' --> '-' |
3719 | 4.31M | else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_add)) |
3720 | 156 | { |
3721 | 156 | t.type = lexer::token::e_sub; |
3722 | 156 | t.value = "-"; |
3723 | 156 | t.position = t0.position; |
3724 | | |
3725 | 156 | return true; |
3726 | 156 | } |
3727 | | // '- -' --> '+' |
3728 | 4.31M | else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_sub)) |
3729 | 29.1k | { |
3730 | | /* |
3731 | | Note: May need to reconsider this when wanting to implement |
3732 | | pre/postfix decrement operator |
3733 | | */ |
3734 | 29.1k | t.type = lexer::token::e_add; |
3735 | 29.1k | t.value = "+"; |
3736 | 29.1k | t.position = t0.position; |
3737 | | |
3738 | 29.1k | return true; |
3739 | 29.1k | } |
3740 | 4.28M | else |
3741 | 4.28M | return false; |
3742 | 4.31M | } |
3743 | | |
3744 | | inline bool join(const lexer::token& t0, |
3745 | | const lexer::token& t1, |
3746 | | const lexer::token& t2, |
3747 | | lexer::token& t) exprtk_override |
3748 | 4.31M | { |
3749 | | // '[ * ]' --> '[*]' |
3750 | 4.31M | if ( |
3751 | 4.31M | (t0.type == lexer::token::e_lsqrbracket) && |
3752 | 4.31M | (t1.type == lexer::token::e_mul ) && |
3753 | 4.31M | (t2.type == lexer::token::e_rsqrbracket) |
3754 | 4.31M | ) |
3755 | 4 | { |
3756 | 4 | t.type = lexer::token::e_symbol; |
3757 | 4 | t.value = "[*]"; |
3758 | 4 | t.position = t0.position; |
3759 | | |
3760 | 4 | return true; |
3761 | 4 | } |
3762 | 4.31M | else |
3763 | 4.31M | return false; |
3764 | 4.31M | } |
3765 | | }; |
3766 | | |
3767 | | class bracket_checker exprtk_final : public lexer::token_scanner |
3768 | | { |
3769 | | public: |
3770 | | |
3771 | | using lexer::token_scanner::operator(); |
3772 | | |
3773 | | bracket_checker() |
3774 | 10.1k | : token_scanner(1) |
3775 | 10.1k | , state_(true) |
3776 | 10.1k | {} |
3777 | | |
3778 | | bool result() exprtk_override |
3779 | 8.29k | { |
3780 | 8.29k | if (!stack_.empty()) |
3781 | 204 | { |
3782 | 204 | lexer::token t; |
3783 | 204 | t.value = stack_.top().first; |
3784 | 204 | t.position = stack_.top().second; |
3785 | 204 | error_token_ = t; |
3786 | 204 | state_ = false; |
3787 | | |
3788 | 204 | return false; |
3789 | 204 | } |
3790 | 8.09k | else |
3791 | 8.09k | return state_; |
3792 | 8.29k | } |
3793 | | |
3794 | | lexer::token error_token() const |
3795 | 706 | { |
3796 | 706 | return error_token_; |
3797 | 706 | } |
3798 | | |
3799 | | void reset() exprtk_override |
3800 | 8.29k | { |
3801 | | // Why? because msvc doesn't support swap properly. |
3802 | 8.29k | stack_ = std::stack<std::pair<char,std::size_t> >(); |
3803 | 8.29k | state_ = true; |
3804 | 8.29k | error_token_.clear(); |
3805 | 8.29k | } |
3806 | | |
3807 | | bool operator() (const lexer::token& t) exprtk_override |
3808 | 3.05M | { |
3809 | 3.05M | if ( |
3810 | 3.05M | !t.value.empty() && |
3811 | 3.05M | (lexer::token::e_string != t.type) && |
3812 | 3.05M | (lexer::token::e_symbol != t.type) && |
3813 | 3.05M | exprtk::details::is_bracket(t.value[0]) |
3814 | 3.05M | ) |
3815 | 60.6k | { |
3816 | 60.6k | details::char_t c = t.value[0]; |
3817 | | |
3818 | 60.6k | if (t.type == lexer::token::e_lbracket ) stack_.push(std::make_pair(')',t.position)); |
3819 | 53.3k | else if (t.type == lexer::token::e_lcrlbracket) stack_.push(std::make_pair('}',t.position)); |
3820 | 46.9k | else if (t.type == lexer::token::e_lsqrbracket) stack_.push(std::make_pair(']',t.position)); |
3821 | 13.3k | else if (exprtk::details::is_right_bracket(c)) |
3822 | 13.3k | { |
3823 | 13.3k | if (stack_.empty()) |
3824 | 149 | { |
3825 | 149 | state_ = false; |
3826 | 149 | error_token_ = t; |
3827 | | |
3828 | 149 | return false; |
3829 | 149 | } |
3830 | 13.1k | else if (c != stack_.top().first) |
3831 | 12 | { |
3832 | 12 | state_ = false; |
3833 | 12 | error_token_ = t; |
3834 | | |
3835 | 12 | return false; |
3836 | 12 | } |
3837 | 13.1k | else |
3838 | 13.1k | stack_.pop(); |
3839 | 13.3k | } |
3840 | 60.6k | } |
3841 | | |
3842 | 3.05M | return true; |
3843 | 3.05M | } |
3844 | | |
3845 | | private: |
3846 | | |
3847 | | bool state_; |
3848 | | std::stack<std::pair<char,std::size_t> > stack_; |
3849 | | lexer::token error_token_; |
3850 | | }; |
3851 | | |
3852 | | template <typename T> |
3853 | | class numeric_checker exprtk_final : public lexer::token_scanner |
3854 | | { |
3855 | | public: |
3856 | | |
3857 | | using lexer::token_scanner::operator(); |
3858 | | |
3859 | | numeric_checker() |
3860 | 10.1k | : token_scanner (1) |
3861 | 10.1k | , current_index_(0) |
3862 | 10.1k | {} exprtk::lexer::helper::numeric_checker<double>::numeric_checker() Line | Count | Source | 3860 | 5.06k | : token_scanner (1) | 3861 | 5.06k | , current_index_(0) | 3862 | 5.06k | {} |
exprtk::lexer::helper::numeric_checker<float>::numeric_checker() Line | Count | Source | 3860 | 5.06k | : token_scanner (1) | 3861 | 5.06k | , current_index_(0) | 3862 | 5.06k | {} |
|
3863 | | |
3864 | | bool result() exprtk_override |
3865 | 8.44k | { |
3866 | 8.44k | return error_list_.empty(); |
3867 | 8.44k | } exprtk::lexer::helper::numeric_checker<double>::result() Line | Count | Source | 3865 | 4.22k | { | 3866 | 4.22k | return error_list_.empty(); | 3867 | 4.22k | } |
exprtk::lexer::helper::numeric_checker<float>::result() Line | Count | Source | 3865 | 4.22k | { | 3866 | 4.22k | return error_list_.empty(); | 3867 | 4.22k | } |
|
3868 | | |
3869 | | void reset() exprtk_override |
3870 | 8.44k | { |
3871 | 8.44k | error_list_.clear(); |
3872 | 8.44k | current_index_ = 0; |
3873 | 8.44k | } exprtk::lexer::helper::numeric_checker<double>::reset() Line | Count | Source | 3870 | 4.22k | { | 3871 | 4.22k | error_list_.clear(); | 3872 | 4.22k | current_index_ = 0; | 3873 | 4.22k | } |
exprtk::lexer::helper::numeric_checker<float>::reset() Line | Count | Source | 3870 | 4.22k | { | 3871 | 4.22k | error_list_.clear(); | 3872 | 4.22k | current_index_ = 0; | 3873 | 4.22k | } |
|
3874 | | |
3875 | | bool operator() (const lexer::token& t) exprtk_override |
3876 | 4.32M | { |
3877 | 4.32M | if (token::e_number == t.type) |
3878 | 532k | { |
3879 | 532k | T v; |
3880 | | |
3881 | 532k | if (!exprtk::details::string_to_real(t.value,v)) |
3882 | 607 | { |
3883 | 607 | error_list_.push_back(current_index_); |
3884 | 607 | } |
3885 | 532k | } |
3886 | | |
3887 | 4.32M | ++current_index_; |
3888 | | |
3889 | 4.32M | return true; |
3890 | 4.32M | } exprtk::lexer::helper::numeric_checker<double>::operator()(exprtk::lexer::token const&) Line | Count | Source | 3876 | 2.44M | { | 3877 | 2.44M | if (token::e_number == t.type) | 3878 | 314k | { | 3879 | 314k | T v; | 3880 | | | 3881 | 314k | if (!exprtk::details::string_to_real(t.value,v)) | 3882 | 275 | { | 3883 | 275 | error_list_.push_back(current_index_); | 3884 | 275 | } | 3885 | 314k | } | 3886 | | | 3887 | 2.44M | ++current_index_; | 3888 | | | 3889 | 2.44M | return true; | 3890 | 2.44M | } |
exprtk::lexer::helper::numeric_checker<float>::operator()(exprtk::lexer::token const&) Line | Count | Source | 3876 | 1.88M | { | 3877 | 1.88M | if (token::e_number == t.type) | 3878 | 218k | { | 3879 | 218k | T v; | 3880 | | | 3881 | 218k | if (!exprtk::details::string_to_real(t.value,v)) | 3882 | 332 | { | 3883 | 332 | error_list_.push_back(current_index_); | 3884 | 332 | } | 3885 | 218k | } | 3886 | | | 3887 | 1.88M | ++current_index_; | 3888 | | | 3889 | 1.88M | return true; | 3890 | 1.88M | } |
|
3891 | | |
3892 | | std::size_t error_count() const |
3893 | 917 | { |
3894 | 917 | return error_list_.size(); |
3895 | 917 | } exprtk::lexer::helper::numeric_checker<double>::error_count() const Line | Count | Source | 3893 | 397 | { | 3894 | 397 | return error_list_.size(); | 3895 | 397 | } |
exprtk::lexer::helper::numeric_checker<float>::error_count() const Line | Count | Source | 3893 | 520 | { | 3894 | 520 | return error_list_.size(); | 3895 | 520 | } |
|
3896 | | |
3897 | | std::size_t error_index(const std::size_t& i) const |
3898 | 607 | { |
3899 | 607 | if (i < error_list_.size()) |
3900 | 607 | return error_list_[i]; |
3901 | 0 | else |
3902 | 0 | return std::numeric_limits<std::size_t>::max(); |
3903 | 607 | } exprtk::lexer::helper::numeric_checker<double>::error_index(unsigned long const&) const Line | Count | Source | 3898 | 275 | { | 3899 | 275 | if (i < error_list_.size()) | 3900 | 275 | return error_list_[i]; | 3901 | 0 | else | 3902 | 0 | return std::numeric_limits<std::size_t>::max(); | 3903 | 275 | } |
exprtk::lexer::helper::numeric_checker<float>::error_index(unsigned long const&) const Line | Count | Source | 3898 | 332 | { | 3899 | 332 | if (i < error_list_.size()) | 3900 | 332 | return error_list_[i]; | 3901 | 0 | else | 3902 | 0 | return std::numeric_limits<std::size_t>::max(); | 3903 | 332 | } |
|
3904 | | |
3905 | | void clear_errors() |
3906 | 155 | { |
3907 | 155 | error_list_.clear(); |
3908 | 155 | } exprtk::lexer::helper::numeric_checker<double>::clear_errors() Line | Count | Source | 3906 | 61 | { | 3907 | 61 | error_list_.clear(); | 3908 | 61 | } |
exprtk::lexer::helper::numeric_checker<float>::clear_errors() Line | Count | Source | 3906 | 94 | { | 3907 | 94 | error_list_.clear(); | 3908 | 94 | } |
|
3909 | | |
3910 | | private: |
3911 | | |
3912 | | std::size_t current_index_; |
3913 | | std::vector<std::size_t> error_list_; |
3914 | | }; |
3915 | | |
3916 | | class symbol_replacer exprtk_final : public lexer::token_modifier |
3917 | | { |
3918 | | private: |
3919 | | |
3920 | | typedef std::map<std::string,std::pair<std::string,token::token_type>,details::ilesscompare> replace_map_t; |
3921 | | |
3922 | | public: |
3923 | | |
3924 | | bool remove(const std::string& target_symbol) |
3925 | 0 | { |
3926 | 0 | const replace_map_t::iterator itr = replace_map_.find(target_symbol); |
3927 | 0 |
|
3928 | 0 | if (replace_map_.end() == itr) |
3929 | 0 | return false; |
3930 | 0 |
|
3931 | 0 | replace_map_.erase(itr); |
3932 | 0 |
|
3933 | 0 | return true; |
3934 | 0 | } |
3935 | | |
3936 | | bool add_replace(const std::string& target_symbol, |
3937 | | const std::string& replace_symbol, |
3938 | | const lexer::token::token_type token_type = lexer::token::e_symbol) |
3939 | 20.2k | { |
3940 | 20.2k | const replace_map_t::iterator itr = replace_map_.find(target_symbol); |
3941 | | |
3942 | 20.2k | if (replace_map_.end() != itr) |
3943 | 0 | { |
3944 | 0 | return false; |
3945 | 0 | } |
3946 | | |
3947 | 20.2k | replace_map_[target_symbol] = std::make_pair(replace_symbol,token_type); |
3948 | | |
3949 | 20.2k | return true; |
3950 | 20.2k | } |
3951 | | |
3952 | | void clear() |
3953 | 10.1k | { |
3954 | 10.1k | replace_map_.clear(); |
3955 | 10.1k | } |
3956 | | |
3957 | | private: |
3958 | | |
3959 | | bool modify(lexer::token& t) exprtk_override |
3960 | 4.32M | { |
3961 | 4.32M | if (lexer::token::e_symbol == t.type) |
3962 | 745k | { |
3963 | 745k | if (replace_map_.empty()) |
3964 | 0 | return false; |
3965 | | |
3966 | 745k | const replace_map_t::iterator itr = replace_map_.find(t.value); |
3967 | | |
3968 | 745k | if (replace_map_.end() != itr) |
3969 | 2 | { |
3970 | 2 | t.value = itr->second.first; |
3971 | 2 | t.type = itr->second.second; |
3972 | | |
3973 | 2 | return true; |
3974 | 2 | } |
3975 | 745k | } |
3976 | | |
3977 | 4.32M | return false; |
3978 | 4.32M | } |
3979 | | |
3980 | | replace_map_t replace_map_; |
3981 | | }; |
3982 | | |
3983 | | class sequence_validator exprtk_final : public lexer::token_scanner |
3984 | | { |
3985 | | private: |
3986 | | |
3987 | | typedef std::pair<lexer::token::token_type,lexer::token::token_type> token_pair_t; |
3988 | | typedef std::set<token_pair_t> set_t; |
3989 | | |
3990 | | public: |
3991 | | |
3992 | | using lexer::token_scanner::operator(); |
3993 | | |
3994 | | sequence_validator() |
3995 | 10.1k | : lexer::token_scanner(2) |
3996 | 10.1k | { |
3997 | 10.1k | add_invalid(lexer::token::e_number, lexer::token::e_number); |
3998 | 10.1k | add_invalid(lexer::token::e_string, lexer::token::e_string); |
3999 | 10.1k | add_invalid(lexer::token::e_number, lexer::token::e_string); |
4000 | 10.1k | add_invalid(lexer::token::e_string, lexer::token::e_number); |
4001 | | |
4002 | 10.1k | add_invalid_set1(lexer::token::e_assign ); |
4003 | 10.1k | add_invalid_set1(lexer::token::e_shr ); |
4004 | 10.1k | add_invalid_set1(lexer::token::e_shl ); |
4005 | 10.1k | add_invalid_set1(lexer::token::e_lte ); |
4006 | 10.1k | add_invalid_set1(lexer::token::e_ne ); |
4007 | 10.1k | add_invalid_set1(lexer::token::e_gte ); |
4008 | 10.1k | add_invalid_set1(lexer::token::e_lt ); |
4009 | 10.1k | add_invalid_set1(lexer::token::e_gt ); |
4010 | 10.1k | add_invalid_set1(lexer::token::e_eq ); |
4011 | 10.1k | add_invalid_set1(lexer::token::e_comma ); |
4012 | 10.1k | add_invalid_set1(lexer::token::e_add ); |
4013 | 10.1k | add_invalid_set1(lexer::token::e_sub ); |
4014 | 10.1k | add_invalid_set1(lexer::token::e_div ); |
4015 | 10.1k | add_invalid_set1(lexer::token::e_mul ); |
4016 | 10.1k | add_invalid_set1(lexer::token::e_mod ); |
4017 | 10.1k | add_invalid_set1(lexer::token::e_pow ); |
4018 | 10.1k | add_invalid_set1(lexer::token::e_colon ); |
4019 | 10.1k | add_invalid_set1(lexer::token::e_ternary); |
4020 | 10.1k | } |
4021 | | |
4022 | | bool result() exprtk_override |
4023 | 7.94k | { |
4024 | 7.94k | return error_list_.empty(); |
4025 | 7.94k | } |
4026 | | |
4027 | | bool operator() (const lexer::token& t0, const lexer::token& t1) exprtk_override |
4028 | 2.82M | { |
4029 | 2.82M | const set_t::value_type p = std::make_pair(t0.type,t1.type); |
4030 | | |
4031 | 2.82M | if (invalid_bracket_check(t0.type,t1.type)) |
4032 | 21 | { |
4033 | 21 | error_list_.push_back(std::make_pair(t0,t1)); |
4034 | 21 | } |
4035 | 2.82M | else if (invalid_comb_.find(p) != invalid_comb_.end()) |
4036 | 23.7k | { |
4037 | 23.7k | error_list_.push_back(std::make_pair(t0,t1)); |
4038 | 23.7k | } |
4039 | | |
4040 | 2.82M | return true; |
4041 | 2.82M | } |
4042 | | |
4043 | | std::size_t error_count() const |
4044 | 24.6k | { |
4045 | 24.6k | return error_list_.size(); |
4046 | 24.6k | } |
4047 | | |
4048 | | std::pair<lexer::token,lexer::token> error(const std::size_t index) |
4049 | 23.7k | { |
4050 | 23.7k | if (index < error_list_.size()) |
4051 | 23.7k | { |
4052 | 23.7k | return error_list_[index]; |
4053 | 23.7k | } |
4054 | 0 | else |
4055 | 0 | { |
4056 | 0 | static const lexer::token error_token; |
4057 | 0 | return std::make_pair(error_token,error_token); |
4058 | 0 | } |
4059 | 23.7k | } |
4060 | | |
4061 | | void clear_errors() |
4062 | 435 | { |
4063 | 435 | error_list_.clear(); |
4064 | 435 | } |
4065 | | |
4066 | | private: |
4067 | | |
4068 | | void add_invalid(const lexer::token::token_type base, const lexer::token::token_type t) |
4069 | 2.77M | { |
4070 | 2.77M | invalid_comb_.insert(std::make_pair(base,t)); |
4071 | 2.77M | } |
4072 | | |
4073 | | void add_invalid_set1(const lexer::token::token_type t) |
4074 | 182k | { |
4075 | 182k | add_invalid(t, lexer::token::e_assign); |
4076 | 182k | add_invalid(t, lexer::token::e_shr ); |
4077 | 182k | add_invalid(t, lexer::token::e_shl ); |
4078 | 182k | add_invalid(t, lexer::token::e_lte ); |
4079 | 182k | add_invalid(t, lexer::token::e_ne ); |
4080 | 182k | add_invalid(t, lexer::token::e_gte ); |
4081 | 182k | add_invalid(t, lexer::token::e_lt ); |
4082 | 182k | add_invalid(t, lexer::token::e_gt ); |
4083 | 182k | add_invalid(t, lexer::token::e_eq ); |
4084 | 182k | add_invalid(t, lexer::token::e_comma ); |
4085 | 182k | add_invalid(t, lexer::token::e_div ); |
4086 | 182k | add_invalid(t, lexer::token::e_mul ); |
4087 | 182k | add_invalid(t, lexer::token::e_mod ); |
4088 | 182k | add_invalid(t, lexer::token::e_pow ); |
4089 | 182k | add_invalid(t, lexer::token::e_colon ); |
4090 | 182k | } |
4091 | | |
4092 | | bool invalid_bracket_check(const lexer::token::token_type base, const lexer::token::token_type t) |
4093 | 2.82M | { |
4094 | 2.82M | if (details::is_right_bracket(static_cast<details::char_t>(base))) |
4095 | 6.46k | { |
4096 | 6.46k | switch (t) |
4097 | 6.46k | { |
4098 | 0 | case lexer::token::e_assign : return (']' != base); |
4099 | 0 | case lexer::token::e_string : return (')' != base); |
4100 | 6.46k | default : return false; |
4101 | 6.46k | } |
4102 | 6.46k | } |
4103 | 2.82M | else if (details::is_left_bracket(static_cast<details::char_t>(base))) |
4104 | 6.61k | { |
4105 | 6.61k | if (details::is_right_bracket(static_cast<details::char_t>(t))) |
4106 | 86 | return false; |
4107 | 6.52k | else if (details::is_left_bracket(static_cast<details::char_t>(t))) |
4108 | 19 | return false; |
4109 | 6.50k | else |
4110 | 6.50k | { |
4111 | 6.50k | switch (t) |
4112 | 6.50k | { |
4113 | 427 | case lexer::token::e_number : return false; |
4114 | 5.89k | case lexer::token::e_symbol : return false; |
4115 | 2 | case lexer::token::e_string : return false; |
4116 | 20 | case lexer::token::e_add : return false; |
4117 | 134 | case lexer::token::e_sub : return false; |
4118 | 16 | case lexer::token::e_colon : return false; |
4119 | 2 | case lexer::token::e_ternary : return false; |
4120 | 10 | default : return true ; |
4121 | 6.50k | } |
4122 | 6.50k | } |
4123 | 6.61k | } |
4124 | 2.81M | else if (details::is_right_bracket(static_cast<details::char_t>(t))) |
4125 | 6.51k | { |
4126 | 6.51k | switch (base) |
4127 | 6.51k | { |
4128 | 2.53k | case lexer::token::e_number : return false; |
4129 | 3.92k | case lexer::token::e_symbol : return false; |
4130 | 2 | case lexer::token::e_string : return false; |
4131 | 4 | case lexer::token::e_eof : return false; |
4132 | 30 | case lexer::token::e_colon : return false; |
4133 | 2 | case lexer::token::e_ternary : return false; |
4134 | 11 | default : return true ; |
4135 | 6.51k | } |
4136 | 6.51k | } |
4137 | 2.81M | else if (details::is_left_bracket(static_cast<details::char_t>(t))) |
4138 | 6.18k | { |
4139 | 6.18k | switch (base) |
4140 | 6.18k | { |
4141 | 0 | case lexer::token::e_rbracket : return true; |
4142 | 0 | case lexer::token::e_rsqrbracket : return true; |
4143 | 0 | case lexer::token::e_rcrlbracket : return true; |
4144 | 6.18k | default : return false; |
4145 | 6.18k | } |
4146 | 6.18k | } |
4147 | | |
4148 | 2.80M | return false; |
4149 | 2.82M | } |
4150 | | |
4151 | | set_t invalid_comb_; |
4152 | | std::vector<std::pair<lexer::token,lexer::token> > error_list_; |
4153 | | }; |
4154 | | |
4155 | | class sequence_validator_3tokens exprtk_final : public lexer::token_scanner |
4156 | | { |
4157 | | private: |
4158 | | |
4159 | | typedef lexer::token::token_type token_t; |
4160 | | typedef std::pair<token_t,std::pair<token_t,token_t> > token_triplet_t; |
4161 | | typedef std::set<token_triplet_t> set_t; |
4162 | | |
4163 | | public: |
4164 | | |
4165 | | using lexer::token_scanner::operator(); |
4166 | | |
4167 | | sequence_validator_3tokens() |
4168 | 10.1k | : lexer::token_scanner(3) |
4169 | 10.1k | { |
4170 | 10.1k | add_invalid(lexer::token::e_number , lexer::token::e_number , lexer::token::e_number); |
4171 | 10.1k | add_invalid(lexer::token::e_string , lexer::token::e_string , lexer::token::e_string); |
4172 | 10.1k | add_invalid(lexer::token::e_comma , lexer::token::e_comma , lexer::token::e_comma ); |
4173 | | |
4174 | 10.1k | add_invalid(lexer::token::e_add , lexer::token::e_add , lexer::token::e_add ); |
4175 | 10.1k | add_invalid(lexer::token::e_sub , lexer::token::e_sub , lexer::token::e_sub ); |
4176 | 10.1k | add_invalid(lexer::token::e_div , lexer::token::e_div , lexer::token::e_div ); |
4177 | 10.1k | add_invalid(lexer::token::e_mul , lexer::token::e_mul , lexer::token::e_mul ); |
4178 | 10.1k | add_invalid(lexer::token::e_mod , lexer::token::e_mod , lexer::token::e_mod ); |
4179 | 10.1k | add_invalid(lexer::token::e_pow , lexer::token::e_pow , lexer::token::e_pow ); |
4180 | | |
4181 | 10.1k | add_invalid(lexer::token::e_add , lexer::token::e_sub , lexer::token::e_add ); |
4182 | 10.1k | add_invalid(lexer::token::e_sub , lexer::token::e_add , lexer::token::e_sub ); |
4183 | 10.1k | add_invalid(lexer::token::e_div , lexer::token::e_mul , lexer::token::e_div ); |
4184 | 10.1k | add_invalid(lexer::token::e_mul , lexer::token::e_div , lexer::token::e_mul ); |
4185 | 10.1k | add_invalid(lexer::token::e_mod , lexer::token::e_pow , lexer::token::e_mod ); |
4186 | 10.1k | add_invalid(lexer::token::e_pow , lexer::token::e_mod , lexer::token::e_pow ); |
4187 | 10.1k | } |
4188 | | |
4189 | | bool result() exprtk_override |
4190 | 7.50k | { |
4191 | 7.50k | return error_list_.empty(); |
4192 | 7.50k | } |
4193 | | |
4194 | | bool operator() (const lexer::token& t0, const lexer::token& t1, const lexer::token& t2) exprtk_override |
4195 | 2.13M | { |
4196 | 2.13M | const set_t::value_type p = std::make_pair(t0.type,std::make_pair(t1.type,t2.type)); |
4197 | | |
4198 | 2.13M | if (invalid_comb_.find(p) != invalid_comb_.end()) |
4199 | 532 | { |
4200 | 532 | error_list_.push_back(std::make_pair(t0,t1)); |
4201 | 532 | } |
4202 | | |
4203 | 2.13M | return true; |
4204 | 2.13M | } |
4205 | | |
4206 | | std::size_t error_count() const |
4207 | 604 | { |
4208 | 604 | return error_list_.size(); |
4209 | 604 | } |
4210 | | |
4211 | | std::pair<lexer::token,lexer::token> error(const std::size_t index) |
4212 | 532 | { |
4213 | 532 | if (index < error_list_.size()) |
4214 | 532 | { |
4215 | 532 | return error_list_[index]; |
4216 | 532 | } |
4217 | 0 | else |
4218 | 0 | { |
4219 | 0 | static const lexer::token error_token; |
4220 | 0 | return std::make_pair(error_token,error_token); |
4221 | 0 | } |
4222 | 532 | } |
4223 | | |
4224 | | void clear_errors() |
4225 | 36 | { |
4226 | 36 | error_list_.clear(); |
4227 | 36 | } |
4228 | | |
4229 | | private: |
4230 | | |
4231 | | void add_invalid(const token_t t0, const token_t t1, const token_t t2) |
4232 | 151k | { |
4233 | 151k | invalid_comb_.insert(std::make_pair(t0,std::make_pair(t1,t2))); |
4234 | 151k | } |
4235 | | |
4236 | | set_t invalid_comb_; |
4237 | | std::vector<std::pair<lexer::token,lexer::token> > error_list_; |
4238 | | }; |
4239 | | |
4240 | | struct helper_assembly |
4241 | | { |
4242 | | inline bool register_scanner(lexer::token_scanner* scanner) |
4243 | 40.4k | { |
4244 | 40.4k | if (token_scanner_list.end() != std::find(token_scanner_list.begin(), |
4245 | 40.4k | token_scanner_list.end (), |
4246 | 40.4k | scanner)) |
4247 | 0 | { |
4248 | 0 | return false; |
4249 | 0 | } |
4250 | | |
4251 | 40.4k | token_scanner_list.push_back(scanner); |
4252 | | |
4253 | 40.4k | return true; |
4254 | 40.4k | } |
4255 | | |
4256 | | inline bool register_modifier(lexer::token_modifier* modifier) |
4257 | 10.1k | { |
4258 | 10.1k | if (token_modifier_list.end() != std::find(token_modifier_list.begin(), |
4259 | 10.1k | token_modifier_list.end (), |
4260 | 10.1k | modifier)) |
4261 | 0 | { |
4262 | 0 | return false; |
4263 | 0 | } |
4264 | | |
4265 | 10.1k | token_modifier_list.push_back(modifier); |
4266 | | |
4267 | 10.1k | return true; |
4268 | 10.1k | } |
4269 | | |
4270 | | inline bool register_joiner(lexer::token_joiner* joiner) |
4271 | 20.2k | { |
4272 | 20.2k | if (token_joiner_list.end() != std::find(token_joiner_list.begin(), |
4273 | 20.2k | token_joiner_list.end (), |
4274 | 20.2k | joiner)) |
4275 | 0 | { |
4276 | 0 | return false; |
4277 | 0 | } |
4278 | | |
4279 | 20.2k | token_joiner_list.push_back(joiner); |
4280 | | |
4281 | 20.2k | return true; |
4282 | 20.2k | } |
4283 | | |
4284 | | inline bool register_inserter(lexer::token_inserter* inserter) |
4285 | 10.1k | { |
4286 | 10.1k | if (token_inserter_list.end() != std::find(token_inserter_list.begin(), |
4287 | 10.1k | token_inserter_list.end (), |
4288 | 10.1k | inserter)) |
4289 | 0 | { |
4290 | 0 | return false; |
4291 | 0 | } |
4292 | | |
4293 | 10.1k | token_inserter_list.push_back(inserter); |
4294 | | |
4295 | 10.1k | return true; |
4296 | 10.1k | } |
4297 | | |
4298 | | inline bool run_modifiers(lexer::generator& g) |
4299 | 8.44k | { |
4300 | 8.44k | error_token_modifier = reinterpret_cast<lexer::token_modifier*>(0); |
4301 | | |
4302 | 16.8k | for (std::size_t i = 0; i < token_modifier_list.size(); ++i) |
4303 | 8.44k | { |
4304 | 8.44k | lexer::token_modifier& modifier = (*token_modifier_list[i]); |
4305 | | |
4306 | 8.44k | modifier.reset(); |
4307 | 8.44k | modifier.process(g); |
4308 | | |
4309 | 8.44k | if (!modifier.result()) |
4310 | 0 | { |
4311 | 0 | error_token_modifier = token_modifier_list[i]; |
4312 | |
|
4313 | 0 | return false; |
4314 | 0 | } |
4315 | 8.44k | } |
4316 | | |
4317 | 8.44k | return true; |
4318 | 8.44k | } |
4319 | | |
4320 | | inline bool run_joiners(lexer::generator& g) |
4321 | 8.44k | { |
4322 | 8.44k | error_token_joiner = reinterpret_cast<lexer::token_joiner*>(0); |
4323 | | |
4324 | 25.3k | for (std::size_t i = 0; i < token_joiner_list.size(); ++i) |
4325 | 16.8k | { |
4326 | 16.8k | lexer::token_joiner& joiner = (*token_joiner_list[i]); |
4327 | | |
4328 | 16.8k | joiner.reset(); |
4329 | 16.8k | joiner.process(g); |
4330 | | |
4331 | 16.8k | if (!joiner.result()) |
4332 | 0 | { |
4333 | 0 | error_token_joiner = token_joiner_list[i]; |
4334 | |
|
4335 | 0 | return false; |
4336 | 0 | } |
4337 | 16.8k | } |
4338 | | |
4339 | 8.44k | return true; |
4340 | 8.44k | } |
4341 | | |
4342 | | inline bool run_inserters(lexer::generator& g) |
4343 | 8.44k | { |
4344 | 8.44k | error_token_inserter = reinterpret_cast<lexer::token_inserter*>(0); |
4345 | | |
4346 | 16.8k | for (std::size_t i = 0; i < token_inserter_list.size(); ++i) |
4347 | 8.44k | { |
4348 | 8.44k | lexer::token_inserter& inserter = (*token_inserter_list[i]); |
4349 | | |
4350 | 8.44k | inserter.reset(); |
4351 | 8.44k | inserter.process(g); |
4352 | | |
4353 | 8.44k | if (!inserter.result()) |
4354 | 0 | { |
4355 | 0 | error_token_inserter = token_inserter_list[i]; |
4356 | |
|
4357 | 0 | return false; |
4358 | 0 | } |
4359 | 8.44k | } |
4360 | | |
4361 | 8.44k | return true; |
4362 | 8.44k | } |
4363 | | |
4364 | | inline bool run_scanners(lexer::generator& g) |
4365 | 8.44k | { |
4366 | 8.44k | error_token_scanner = reinterpret_cast<lexer::token_scanner*>(0); |
4367 | | |
4368 | 39.6k | for (std::size_t i = 0; i < token_scanner_list.size(); ++i) |
4369 | 32.1k | { |
4370 | 32.1k | lexer::token_scanner& scanner = (*token_scanner_list[i]); |
4371 | | |
4372 | 32.1k | scanner.reset(); |
4373 | 32.1k | scanner.process(g); |
4374 | | |
4375 | 32.1k | if (!scanner.result()) |
4376 | 979 | { |
4377 | 979 | error_token_scanner = token_scanner_list[i]; |
4378 | | |
4379 | 979 | return false; |
4380 | 979 | } |
4381 | 32.1k | } |
4382 | | |
4383 | 7.47k | return true; |
4384 | 8.44k | } |
4385 | | |
4386 | | std::vector<lexer::token_scanner*> token_scanner_list; |
4387 | | std::vector<lexer::token_modifier*> token_modifier_list; |
4388 | | std::vector<lexer::token_joiner*> token_joiner_list; |
4389 | | std::vector<lexer::token_inserter*> token_inserter_list; |
4390 | | |
4391 | | lexer::token_scanner* error_token_scanner; |
4392 | | lexer::token_modifier* error_token_modifier; |
4393 | | lexer::token_joiner* error_token_joiner; |
4394 | | lexer::token_inserter* error_token_inserter; |
4395 | | }; |
4396 | | } |
4397 | | |
4398 | | class parser_helper |
4399 | | { |
4400 | | public: |
4401 | | |
4402 | | typedef token token_t; |
4403 | | typedef generator generator_t; |
4404 | | |
4405 | | inline bool init(const std::string& str) |
4406 | 10.1k | { |
4407 | 10.1k | if (!lexer_.process(str)) |
4408 | 1.52k | { |
4409 | 1.52k | return false; |
4410 | 1.52k | } |
4411 | | |
4412 | 8.60k | lexer_.begin(); |
4413 | | |
4414 | 8.60k | next_token(); |
4415 | | |
4416 | 8.60k | return true; |
4417 | 10.1k | } |
4418 | | |
4419 | | inline generator_t& lexer() |
4420 | 1.01M | { |
4421 | 1.01M | return lexer_; |
4422 | 1.01M | } |
4423 | | |
4424 | | inline const generator_t& lexer() const |
4425 | 0 | { |
4426 | 0 | return lexer_; |
4427 | 0 | } |
4428 | | |
4429 | | inline void store_token() |
4430 | 0 | { |
4431 | 0 | lexer_.store(); |
4432 | 0 | store_current_token_ = current_token_; |
4433 | 0 | } |
4434 | | |
4435 | | inline void restore_token() |
4436 | 0 | { |
4437 | 0 | lexer_.restore(); |
4438 | 0 | current_token_ = store_current_token_; |
4439 | 0 | } |
4440 | | |
4441 | | inline void next_token() |
4442 | 454k | { |
4443 | 454k | current_token_ = lexer_.next_token(); |
4444 | 454k | } |
4445 | | |
4446 | | inline const token_t& current_token() const |
4447 | 2.46M | { |
4448 | 2.46M | return current_token_; |
4449 | 2.46M | } |
4450 | | |
4451 | | inline const token_t& peek_next_token() |
4452 | 0 | { |
4453 | 0 | return lexer_.peek_next_token(); |
4454 | 0 | } |
4455 | | |
4456 | | enum token_advance_mode |
4457 | | { |
4458 | | e_hold = 0, |
4459 | | e_advance = 1 |
4460 | | }; |
4461 | | |
4462 | | inline void advance_token(const token_advance_mode mode) |
4463 | 18.8k | { |
4464 | 18.8k | if (e_advance == mode) |
4465 | 6.46k | { |
4466 | 6.46k | next_token(); |
4467 | 6.46k | } |
4468 | 18.8k | } |
4469 | | |
4470 | | inline bool token_is(const token_t::token_type& ttype, const token_advance_mode mode = e_advance) |
4471 | 470k | { |
4472 | 470k | if (current_token().type != ttype) |
4473 | 452k | { |
4474 | 452k | return false; |
4475 | 452k | } |
4476 | | |
4477 | 18.8k | advance_token(mode); |
4478 | | |
4479 | 18.8k | return true; |
4480 | 470k | } |
4481 | | |
4482 | | inline bool token_is(const token_t::token_type& ttype, |
4483 | | const std::string& value, |
4484 | | const token_advance_mode mode = e_advance) |
4485 | 0 | { |
4486 | 0 | if ( |
4487 | 0 | (current_token().type != ttype) || |
4488 | 0 | !exprtk::details::imatch(value,current_token().value) |
4489 | 0 | ) |
4490 | 0 | { |
4491 | 0 | return false; |
4492 | 0 | } |
4493 | | |
4494 | 0 | advance_token(mode); |
4495 | |
|
4496 | 0 | return true; |
4497 | 0 | } |
4498 | | |
4499 | | inline bool token_is(const std::string& value, |
4500 | | const token_advance_mode mode = e_advance) |
4501 | 8 | { |
4502 | 8 | if (!exprtk::details::imatch(value,current_token().value)) |
4503 | 2 | { |
4504 | 2 | return false; |
4505 | 2 | } |
4506 | | |
4507 | 6 | advance_token(mode); |
4508 | | |
4509 | 6 | return true; |
4510 | 8 | } |
4511 | | |
4512 | | inline bool token_is_arithmetic_opr(const token_advance_mode mode = e_advance) |
4513 | 0 | { |
4514 | 0 | switch (current_token().type) |
4515 | 0 | { |
4516 | 0 | case token_t::e_add : |
4517 | 0 | case token_t::e_sub : |
4518 | 0 | case token_t::e_div : |
4519 | 0 | case token_t::e_mul : |
4520 | 0 | case token_t::e_mod : |
4521 | 0 | case token_t::e_pow : break; |
4522 | 0 | default : return false; |
4523 | 0 | } |
4524 | | |
4525 | 0 | advance_token(mode); |
4526 | |
|
4527 | 0 | return true; |
4528 | 0 | } |
4529 | | |
4530 | | inline bool token_is_ineq_opr(const token_advance_mode mode = e_advance) |
4531 | 0 | { |
4532 | 0 | switch (current_token().type) |
4533 | 0 | { |
4534 | 0 | case token_t::e_eq : |
4535 | 0 | case token_t::e_lte : |
4536 | 0 | case token_t::e_ne : |
4537 | 0 | case token_t::e_gte : |
4538 | 0 | case token_t::e_lt : |
4539 | 0 | case token_t::e_gt : break; |
4540 | 0 | default : return false; |
4541 | 0 | } |
4542 | | |
4543 | 0 | advance_token(mode); |
4544 | |
|
4545 | 0 | return true; |
4546 | 0 | } |
4547 | | |
4548 | | inline bool token_is_left_bracket(const token_advance_mode mode = e_advance) |
4549 | 0 | { |
4550 | 0 | switch (current_token().type) |
4551 | 0 | { |
4552 | 0 | case token_t::e_lbracket : |
4553 | 0 | case token_t::e_lcrlbracket : |
4554 | 0 | case token_t::e_lsqrbracket : break; |
4555 | 0 | default : return false; |
4556 | 0 | } |
4557 | 0 |
|
4558 | 0 | advance_token(mode); |
4559 | 0 |
|
4560 | 0 | return true; |
4561 | 0 | } |
4562 | | |
4563 | | inline bool token_is_right_bracket(const token_advance_mode mode = e_advance) |
4564 | 0 | { |
4565 | 0 | switch (current_token().type) |
4566 | 0 | { |
4567 | 0 | case token_t::e_rbracket : |
4568 | 0 | case token_t::e_rcrlbracket : |
4569 | 0 | case token_t::e_rsqrbracket : break; |
4570 | 0 | default : return false; |
4571 | 0 | } |
4572 | | |
4573 | 0 | advance_token(mode); |
4574 | |
|
4575 | 0 | return true; |
4576 | 0 | } |
4577 | | |
4578 | | inline bool token_is_bracket(const token_advance_mode mode = e_advance) |
4579 | 0 | { |
4580 | 0 | switch (current_token().type) |
4581 | 0 | { |
4582 | 0 | case token_t::e_rbracket : |
4583 | 0 | case token_t::e_rcrlbracket : |
4584 | 0 | case token_t::e_rsqrbracket : |
4585 | 0 | case token_t::e_lbracket : |
4586 | 0 | case token_t::e_lcrlbracket : |
4587 | 0 | case token_t::e_lsqrbracket : break; |
4588 | 0 | default : return false; |
4589 | 0 | } |
4590 | | |
4591 | 0 | advance_token(mode); |
4592 | |
|
4593 | 0 | return true; |
4594 | 0 | } |
4595 | | |
4596 | | inline bool token_is_loop(const token_advance_mode mode = e_advance) |
4597 | 0 | { |
4598 | 0 | return token_is("for" , mode) || |
4599 | 0 | token_is("while" , mode) || |
4600 | 0 | token_is("repeat", mode) ; |
4601 | 0 | } |
4602 | | |
4603 | | inline bool peek_token_is(const token_t::token_type& ttype) |
4604 | 380k | { |
4605 | 380k | return (lexer_.peek_next_token().type == ttype); |
4606 | 380k | } |
4607 | | |
4608 | | inline bool peek_token_is(const std::string& s) |
4609 | 0 | { |
4610 | 0 | return (exprtk::details::imatch(lexer_.peek_next_token().value,s)); |
4611 | 0 | } |
4612 | | |
4613 | | private: |
4614 | | |
4615 | | generator_t lexer_; |
4616 | | token_t current_token_; |
4617 | | token_t store_current_token_; |
4618 | | }; |
4619 | | } |
4620 | | |
4621 | | template <typename T> |
4622 | | class vector_view |
4623 | | { |
4624 | | public: |
4625 | | |
4626 | | typedef T* data_ptr_t; |
4627 | | |
4628 | | vector_view(data_ptr_t data, const std::size_t& size) |
4629 | | : base_size_(size) |
4630 | | , size_(size) |
4631 | | , data_(data) |
4632 | | , data_ref_(0) |
4633 | | { |
4634 | | assert(size_ > 0); |
4635 | | } |
4636 | | |
4637 | | vector_view(const vector_view<T>& vv) |
4638 | | : base_size_(vv.base_size_) |
4639 | | , size_(vv.size_) |
4640 | | , data_(vv.data_) |
4641 | | , data_ref_(0) |
4642 | | { |
4643 | | assert(size_ > 0); |
4644 | | } |
4645 | | |
4646 | | inline void rebase(data_ptr_t data) |
4647 | | { |
4648 | | data_ = data; |
4649 | | |
4650 | | if (!data_ref_.empty()) |
4651 | | { |
4652 | | for (std::size_t i = 0; i < data_ref_.size(); ++i) |
4653 | | { |
4654 | | (*data_ref_[i]) = data; |
4655 | | } |
4656 | | } |
4657 | | } |
4658 | | |
4659 | | inline data_ptr_t data() const |
4660 | | { |
4661 | | return data_; |
4662 | | } |
4663 | | |
4664 | | inline std::size_t base_size() const |
4665 | 0 | { |
4666 | 0 | return base_size_; |
4667 | 0 | } Unexecuted instantiation: exprtk::vector_view<double>::base_size() const Unexecuted instantiation: exprtk::vector_view<float>::base_size() const |
4668 | | |
4669 | | inline std::size_t size() const |
4670 | 0 | { |
4671 | 0 | return size_; |
4672 | 0 | } Unexecuted instantiation: exprtk::vector_view<double>::size() const Unexecuted instantiation: exprtk::vector_view<float>::size() const |
4673 | | |
4674 | | inline const T& operator[](const std::size_t index) const |
4675 | | { |
4676 | | assert(index < size_); |
4677 | | return data_[index]; |
4678 | | } |
4679 | | |
4680 | | inline T& operator[](const std::size_t index) |
4681 | | { |
4682 | | assert(index < size_); |
4683 | | return data_[index]; |
4684 | | } |
4685 | | |
4686 | | void set_ref(data_ptr_t* data_ref) |
4687 | 0 | { |
4688 | 0 | data_ref_.push_back(data_ref); |
4689 | 0 | exprtk_debug(("vector_view::set_ref() - data_ref: %p data_ref_.size(): %d\n", |
4690 | 0 | reinterpret_cast<void*>(data_ref), |
4691 | 0 | static_cast<int>(data_ref_.size()))); |
4692 | 0 | } Unexecuted instantiation: exprtk::vector_view<double>::set_ref(double**) Unexecuted instantiation: exprtk::vector_view<float>::set_ref(float**) |
4693 | | |
4694 | | void remove_ref(data_ptr_t* data_ref) |
4695 | 0 | { |
4696 | 0 | data_ref_.erase( |
4697 | 0 | std::remove(data_ref_.begin(), data_ref_.end(), data_ref), |
4698 | 0 | data_ref_.end()); |
4699 | 0 | exprtk_debug(("vector_view::remove_ref() - data_ref: %p data_ref_.size(): %d\n", |
4700 | 0 | reinterpret_cast<void*>(data_ref), |
4701 | 0 | static_cast<int>(data_ref_.size()))); |
4702 | 0 | } Unexecuted instantiation: exprtk::vector_view<double>::remove_ref(double**) Unexecuted instantiation: exprtk::vector_view<float>::remove_ref(float**) |
4703 | | |
4704 | | bool set_size(const std::size_t new_size) |
4705 | | { |
4706 | | if ((new_size > 0) && (new_size <= base_size_)) |
4707 | | { |
4708 | | size_ = new_size; |
4709 | | exprtk_debug(("vector_view::set_size() - data_: %p size: %lu\n", |
4710 | | reinterpret_cast<void*>(data_), |
4711 | | size_)); |
4712 | | return true; |
4713 | | } |
4714 | | |
4715 | | exprtk_debug(("vector_view::set_size() - error invalid new_size: %lu base_size: %lu\n", |
4716 | | new_size, |
4717 | | base_size_)); |
4718 | | return false; |
4719 | | } |
4720 | | |
4721 | | private: |
4722 | | |
4723 | | const std::size_t base_size_; |
4724 | | std::size_t size_; |
4725 | | data_ptr_t data_; |
4726 | | std::vector<data_ptr_t*> data_ref_; |
4727 | | }; |
4728 | | |
4729 | | template <typename T> |
4730 | | inline vector_view<T> make_vector_view(T* data, |
4731 | | const std::size_t size, const std::size_t offset = 0) |
4732 | | { |
4733 | | return vector_view<T>(data + offset, size); |
4734 | | } |
4735 | | |
4736 | | template <typename T> |
4737 | | inline vector_view<T> make_vector_view(std::vector<T>& v, |
4738 | | const std::size_t size, const std::size_t offset = 0) |
4739 | | { |
4740 | | return vector_view<T>(v.data() + offset, size); |
4741 | | } |
4742 | | |
4743 | | template <typename T> class results_context; |
4744 | | |
4745 | | template <typename T> |
4746 | | struct type_store |
4747 | | { |
4748 | | enum store_type |
4749 | | { |
4750 | | e_unknown, |
4751 | | e_scalar , |
4752 | | e_vector , |
4753 | | e_string |
4754 | | }; |
4755 | | |
4756 | | type_store() |
4757 | 0 | : data(0) |
4758 | 0 | , size(0) |
4759 | 0 | , type(e_unknown) |
4760 | 0 | {} Unexecuted instantiation: exprtk::type_store<double>::type_store() Unexecuted instantiation: exprtk::type_store<float>::type_store() |
4761 | | |
4762 | | union |
4763 | | { |
4764 | | void* data; |
4765 | | T* vec_data; |
4766 | | }; |
4767 | | |
4768 | | std::size_t size; |
4769 | | store_type type; |
4770 | | |
4771 | | class parameter_list |
4772 | | { |
4773 | | public: |
4774 | | |
4775 | | explicit parameter_list(std::vector<type_store>& pl) |
4776 | 0 | : parameter_list_(pl) |
4777 | 0 | {} Unexecuted instantiation: exprtk::type_store<double>::parameter_list::parameter_list(std::__1::vector<exprtk::type_store<double>, std::__1::allocator<exprtk::type_store<double> > >&) Unexecuted instantiation: exprtk::type_store<float>::parameter_list::parameter_list(std::__1::vector<exprtk::type_store<float>, std::__1::allocator<exprtk::type_store<float> > >&) |
4778 | | |
4779 | | inline bool empty() const |
4780 | | { |
4781 | | return parameter_list_.empty(); |
4782 | | } |
4783 | | |
4784 | | inline std::size_t size() const |
4785 | | { |
4786 | | return parameter_list_.size(); |
4787 | | } |
4788 | | |
4789 | | inline type_store& operator[](const std::size_t& index) |
4790 | | { |
4791 | | return parameter_list_[index]; |
4792 | | } |
4793 | | |
4794 | | inline const type_store& operator[](const std::size_t& index) const |
4795 | | { |
4796 | | return parameter_list_[index]; |
4797 | | } |
4798 | | |
4799 | | inline type_store& front() |
4800 | | { |
4801 | | return parameter_list_[0]; |
4802 | | } |
4803 | | |
4804 | | inline const type_store& front() const |
4805 | | { |
4806 | | return parameter_list_[0]; |
4807 | | } |
4808 | | |
4809 | | inline type_store& back() |
4810 | | { |
4811 | | return parameter_list_.back(); |
4812 | | } |
4813 | | |
4814 | | inline const type_store& back() const |
4815 | | { |
4816 | | return parameter_list_.back(); |
4817 | | } |
4818 | | |
4819 | | private: |
4820 | | |
4821 | | std::vector<type_store>& parameter_list_; |
4822 | | |
4823 | | friend class results_context<T>; |
4824 | | }; |
4825 | | |
4826 | | template <typename ViewType> |
4827 | | struct type_view |
4828 | | { |
4829 | | typedef type_store<T> type_store_t; |
4830 | | typedef ViewType value_t; |
4831 | | |
4832 | | explicit type_view(type_store_t& ts) |
4833 | | : ts_(ts) |
4834 | | , data_(reinterpret_cast<value_t*>(ts_.data)) |
4835 | | {} |
4836 | | |
4837 | | explicit type_view(const type_store_t& ts) |
4838 | | : ts_(const_cast<type_store_t&>(ts)) |
4839 | | , data_(reinterpret_cast<value_t*>(ts_.data)) |
4840 | | {} |
4841 | | |
4842 | | inline std::size_t size() const |
4843 | | { |
4844 | | return ts_.size; |
4845 | | } |
4846 | | |
4847 | | inline value_t& operator[](const std::size_t& i) |
4848 | | { |
4849 | | return data_[i]; |
4850 | | } |
4851 | | |
4852 | | inline const value_t& operator[](const std::size_t& i) const |
4853 | | { |
4854 | | return data_[i]; |
4855 | | } |
4856 | | |
4857 | | inline const value_t* begin() const { return data_; } |
4858 | | inline value_t* begin() { return data_; } |
4859 | | |
4860 | | inline const value_t* end() const |
4861 | | { |
4862 | | return static_cast<value_t*>(data_ + ts_.size); |
4863 | | } |
4864 | | |
4865 | | inline value_t* end() |
4866 | | { |
4867 | | return static_cast<value_t*>(data_ + ts_.size); |
4868 | | } |
4869 | | |
4870 | | type_store_t& ts_; |
4871 | | value_t* data_; |
4872 | | }; |
4873 | | |
4874 | | typedef type_view<T> vector_view; |
4875 | | typedef type_view<char> string_view; |
4876 | | |
4877 | | struct scalar_view |
4878 | | { |
4879 | | typedef type_store<T> type_store_t; |
4880 | | typedef T value_t; |
4881 | | |
4882 | | explicit scalar_view(type_store_t& ts) |
4883 | | : v_(*reinterpret_cast<value_t*>(ts.data)) |
4884 | | {} |
4885 | | |
4886 | | explicit scalar_view(const type_store_t& ts) |
4887 | | : v_(*reinterpret_cast<value_t*>(const_cast<type_store_t&>(ts).data)) |
4888 | | {} |
4889 | | |
4890 | | inline value_t& operator() () |
4891 | | { |
4892 | | return v_; |
4893 | | } |
4894 | | |
4895 | | inline const value_t& operator() () const |
4896 | | { |
4897 | | return v_; |
4898 | | } |
4899 | | |
4900 | | inline operator value_t() const |
4901 | | { |
4902 | | return v_; |
4903 | | } |
4904 | | |
4905 | | inline operator value_t() |
4906 | | { |
4907 | | return v_; |
4908 | | } |
4909 | | |
4910 | | template <typename IntType> |
4911 | | inline bool to_int(IntType& i) const |
4912 | | { |
4913 | | if (!exprtk::details::numeric::is_integer(v_)) |
4914 | | return false; |
4915 | | |
4916 | | i = static_cast<IntType>(v_); |
4917 | | |
4918 | | return true; |
4919 | | } |
4920 | | |
4921 | | template <typename UIntType> |
4922 | | inline bool to_uint(UIntType& u) const |
4923 | | { |
4924 | | if (v_ < T(0)) |
4925 | | return false; |
4926 | | else if (!exprtk::details::numeric::is_integer(v_)) |
4927 | | return false; |
4928 | | |
4929 | | u = static_cast<UIntType>(v_); |
4930 | | |
4931 | | return true; |
4932 | | } |
4933 | | |
4934 | | T& v_; |
4935 | | }; |
4936 | | }; |
4937 | | |
4938 | | template <typename StringView> |
4939 | | inline std::string to_str(const StringView& view) |
4940 | | { |
4941 | | return std::string(view.begin(),view.size()); |
4942 | | } |
4943 | | |
4944 | | #ifndef exprtk_disable_return_statement |
4945 | | namespace details |
4946 | | { |
4947 | | template <typename T> class return_node; |
4948 | | template <typename T> class return_envelope_node; |
4949 | | } |
4950 | | #endif |
4951 | | |
4952 | | template <typename T> |
4953 | | class results_context |
4954 | | { |
4955 | | public: |
4956 | | |
4957 | | typedef type_store<T> type_store_t; |
4958 | | typedef typename type_store_t::scalar_view scalar_t; |
4959 | | typedef typename type_store_t::vector_view vector_t; |
4960 | | typedef typename type_store_t::string_view string_t; |
4961 | | |
4962 | | results_context() |
4963 | 0 | : results_available_(false) |
4964 | 0 | {} Unexecuted instantiation: exprtk::results_context<double>::results_context() Unexecuted instantiation: exprtk::results_context<float>::results_context() |
4965 | | |
4966 | | inline std::size_t count() const |
4967 | | { |
4968 | | if (results_available_) |
4969 | | return parameter_list_.size(); |
4970 | | else |
4971 | | return 0; |
4972 | | } |
4973 | | |
4974 | | inline type_store_t& operator[](const std::size_t& index) |
4975 | | { |
4976 | | return parameter_list_[index]; |
4977 | | } |
4978 | | |
4979 | | inline const type_store_t& operator[](const std::size_t& index) const |
4980 | | { |
4981 | | return parameter_list_[index]; |
4982 | | } |
4983 | | |
4984 | | inline bool get_scalar(const std::size_t& index, T& out) const |
4985 | | { |
4986 | | if ( |
4987 | | (index < parameter_list_.size()) && |
4988 | | (parameter_list_[index].type == type_store_t::e_scalar) |
4989 | | ) |
4990 | | { |
4991 | | const scalar_t scalar(parameter_list_[index]); |
4992 | | out = scalar(); |
4993 | | return true; |
4994 | | } |
4995 | | |
4996 | | return false; |
4997 | | } |
4998 | | |
4999 | | template <typename OutputIterator> |
5000 | | inline bool get_vector(const std::size_t& index, OutputIterator out_itr) const |
5001 | | { |
5002 | | if ( |
5003 | | (index < parameter_list_.size()) && |
5004 | | (parameter_list_[index].type == type_store_t::e_vector) |
5005 | | ) |
5006 | | { |
5007 | | const vector_t vector(parameter_list_[index]); |
5008 | | for (std::size_t i = 0; i < vector.size(); ++i) |
5009 | | { |
5010 | | *(out_itr++) = vector[i]; |
5011 | | } |
5012 | | |
5013 | | return true; |
5014 | | } |
5015 | | |
5016 | | return false; |
5017 | | } |
5018 | | |
5019 | | inline bool get_vector(const std::size_t& index, std::vector<T>& out) const |
5020 | | { |
5021 | | return get_vector(index,std::back_inserter(out)); |
5022 | | } |
5023 | | |
5024 | | inline bool get_string(const std::size_t& index, std::string& out) const |
5025 | | { |
5026 | | if ( |
5027 | | (index < parameter_list_.size()) && |
5028 | | (parameter_list_[index].type == type_store_t::e_string) |
5029 | | ) |
5030 | | { |
5031 | | const string_t str(parameter_list_[index]); |
5032 | | out.assign(str.begin(),str.size()); |
5033 | | return true; |
5034 | | } |
5035 | | |
5036 | | return false; |
5037 | | } |
5038 | | |
5039 | | private: |
5040 | | |
5041 | | inline void clear() |
5042 | 0 | { |
5043 | 0 | results_available_ = false; |
5044 | 0 | } Unexecuted instantiation: exprtk::results_context<double>::clear() Unexecuted instantiation: exprtk::results_context<float>::clear() |
5045 | | |
5046 | | typedef std::vector<type_store_t> ts_list_t; |
5047 | | typedef typename type_store_t::parameter_list parameter_list_t; |
5048 | | |
5049 | | inline void assign(const parameter_list_t& pl) |
5050 | 0 | { |
5051 | 0 | parameter_list_ = pl.parameter_list_; |
5052 | 0 | results_available_ = true; |
5053 | 0 | } Unexecuted instantiation: exprtk::results_context<double>::assign(exprtk::type_store<double>::parameter_list const&) Unexecuted instantiation: exprtk::results_context<float>::assign(exprtk::type_store<float>::parameter_list const&) |
5054 | | |
5055 | | bool results_available_; |
5056 | | ts_list_t parameter_list_; |
5057 | | |
5058 | | #ifndef exprtk_disable_return_statement |
5059 | | friend class details::return_node<T>; |
5060 | | friend class details::return_envelope_node<T>; |
5061 | | #endif |
5062 | | }; |
5063 | | |
5064 | | namespace details |
5065 | | { |
5066 | | enum operator_type |
5067 | | { |
5068 | | e_default , e_null , e_add , e_sub , |
5069 | | e_mul , e_div , e_mod , e_pow , |
5070 | | e_atan2 , e_min , e_max , e_avg , |
5071 | | e_sum , e_prod , e_lt , e_lte , |
5072 | | e_eq , e_equal , e_ne , e_nequal , |
5073 | | e_gte , e_gt , e_and , e_nand , |
5074 | | e_or , e_nor , e_xor , e_xnor , |
5075 | | e_mand , e_mor , e_scand , e_scor , |
5076 | | e_shr , e_shl , e_abs , e_acos , |
5077 | | e_acosh , e_asin , e_asinh , e_atan , |
5078 | | e_atanh , e_ceil , e_cos , e_cosh , |
5079 | | e_exp , e_expm1 , e_floor , e_log , |
5080 | | e_log10 , e_log2 , e_log1p , e_logn , |
5081 | | e_neg , e_pos , e_round , e_roundn , |
5082 | | e_root , e_sqrt , e_sin , e_sinc , |
5083 | | e_sinh , e_sec , e_csc , e_tan , |
5084 | | e_tanh , e_cot , e_clamp , e_iclamp , |
5085 | | e_inrange , e_sgn , e_r2d , e_d2r , |
5086 | | e_d2g , e_g2d , e_hypot , e_notl , |
5087 | | e_erf , e_erfc , e_ncdf , e_frac , |
5088 | | e_trunc , e_assign , e_addass , e_subass , |
5089 | | e_mulass , e_divass , e_modass , e_in , |
5090 | | e_like , e_ilike , e_multi , e_smulti , |
5091 | | e_swap , |
5092 | | |
5093 | | // Do not add new functions/operators after this point. |
5094 | | e_sf00 = 1000, e_sf01 = 1001, e_sf02 = 1002, e_sf03 = 1003, |
5095 | | e_sf04 = 1004, e_sf05 = 1005, e_sf06 = 1006, e_sf07 = 1007, |
5096 | | e_sf08 = 1008, e_sf09 = 1009, e_sf10 = 1010, e_sf11 = 1011, |
5097 | | e_sf12 = 1012, e_sf13 = 1013, e_sf14 = 1014, e_sf15 = 1015, |
5098 | | e_sf16 = 1016, e_sf17 = 1017, e_sf18 = 1018, e_sf19 = 1019, |
5099 | | e_sf20 = 1020, e_sf21 = 1021, e_sf22 = 1022, e_sf23 = 1023, |
5100 | | e_sf24 = 1024, e_sf25 = 1025, e_sf26 = 1026, e_sf27 = 1027, |
5101 | | e_sf28 = 1028, e_sf29 = 1029, e_sf30 = 1030, e_sf31 = 1031, |
5102 | | e_sf32 = 1032, e_sf33 = 1033, e_sf34 = 1034, e_sf35 = 1035, |
5103 | | e_sf36 = 1036, e_sf37 = 1037, e_sf38 = 1038, e_sf39 = 1039, |
5104 | | e_sf40 = 1040, e_sf41 = 1041, e_sf42 = 1042, e_sf43 = 1043, |
5105 | | e_sf44 = 1044, e_sf45 = 1045, e_sf46 = 1046, e_sf47 = 1047, |
5106 | | e_sf48 = 1048, e_sf49 = 1049, e_sf50 = 1050, e_sf51 = 1051, |
5107 | | e_sf52 = 1052, e_sf53 = 1053, e_sf54 = 1054, e_sf55 = 1055, |
5108 | | e_sf56 = 1056, e_sf57 = 1057, e_sf58 = 1058, e_sf59 = 1059, |
5109 | | e_sf60 = 1060, e_sf61 = 1061, e_sf62 = 1062, e_sf63 = 1063, |
5110 | | e_sf64 = 1064, e_sf65 = 1065, e_sf66 = 1066, e_sf67 = 1067, |
5111 | | e_sf68 = 1068, e_sf69 = 1069, e_sf70 = 1070, e_sf71 = 1071, |
5112 | | e_sf72 = 1072, e_sf73 = 1073, e_sf74 = 1074, e_sf75 = 1075, |
5113 | | e_sf76 = 1076, e_sf77 = 1077, e_sf78 = 1078, e_sf79 = 1079, |
5114 | | e_sf80 = 1080, e_sf81 = 1081, e_sf82 = 1082, e_sf83 = 1083, |
5115 | | e_sf84 = 1084, e_sf85 = 1085, e_sf86 = 1086, e_sf87 = 1087, |
5116 | | e_sf88 = 1088, e_sf89 = 1089, e_sf90 = 1090, e_sf91 = 1091, |
5117 | | e_sf92 = 1092, e_sf93 = 1093, e_sf94 = 1094, e_sf95 = 1095, |
5118 | | e_sf96 = 1096, e_sf97 = 1097, e_sf98 = 1098, e_sf99 = 1099, |
5119 | | e_sffinal = 1100, |
5120 | | e_sf4ext00 = 2000, e_sf4ext01 = 2001, e_sf4ext02 = 2002, e_sf4ext03 = 2003, |
5121 | | e_sf4ext04 = 2004, e_sf4ext05 = 2005, e_sf4ext06 = 2006, e_sf4ext07 = 2007, |
5122 | | e_sf4ext08 = 2008, e_sf4ext09 = 2009, e_sf4ext10 = 2010, e_sf4ext11 = 2011, |
5123 | | e_sf4ext12 = 2012, e_sf4ext13 = 2013, e_sf4ext14 = 2014, e_sf4ext15 = 2015, |
5124 | | e_sf4ext16 = 2016, e_sf4ext17 = 2017, e_sf4ext18 = 2018, e_sf4ext19 = 2019, |
5125 | | e_sf4ext20 = 2020, e_sf4ext21 = 2021, e_sf4ext22 = 2022, e_sf4ext23 = 2023, |
5126 | | e_sf4ext24 = 2024, e_sf4ext25 = 2025, e_sf4ext26 = 2026, e_sf4ext27 = 2027, |
5127 | | e_sf4ext28 = 2028, e_sf4ext29 = 2029, e_sf4ext30 = 2030, e_sf4ext31 = 2031, |
5128 | | e_sf4ext32 = 2032, e_sf4ext33 = 2033, e_sf4ext34 = 2034, e_sf4ext35 = 2035, |
5129 | | e_sf4ext36 = 2036, e_sf4ext37 = 2037, e_sf4ext38 = 2038, e_sf4ext39 = 2039, |
5130 | | e_sf4ext40 = 2040, e_sf4ext41 = 2041, e_sf4ext42 = 2042, e_sf4ext43 = 2043, |
5131 | | e_sf4ext44 = 2044, e_sf4ext45 = 2045, e_sf4ext46 = 2046, e_sf4ext47 = 2047, |
5132 | | e_sf4ext48 = 2048, e_sf4ext49 = 2049, e_sf4ext50 = 2050, e_sf4ext51 = 2051, |
5133 | | e_sf4ext52 = 2052, e_sf4ext53 = 2053, e_sf4ext54 = 2054, e_sf4ext55 = 2055, |
5134 | | e_sf4ext56 = 2056, e_sf4ext57 = 2057, e_sf4ext58 = 2058, e_sf4ext59 = 2059, |
5135 | | e_sf4ext60 = 2060, e_sf4ext61 = 2061 |
5136 | | }; |
5137 | | |
5138 | | inline std::string to_str(const operator_type opr) |
5139 | 70 | { |
5140 | 70 | switch (opr) |
5141 | 70 | { |
5142 | 2 | case e_add : return "+" ; |
5143 | 2 | case e_sub : return "-" ; |
5144 | 2 | case e_mul : return "*" ; |
5145 | 2 | case e_div : return "/" ; |
5146 | 2 | case e_mod : return "%" ; |
5147 | 4 | case e_pow : return "^" ; |
5148 | 8 | case e_assign : return ":=" ; |
5149 | 8 | case e_addass : return "+=" ; |
5150 | 12 | case e_subass : return "-=" ; |
5151 | 2 | case e_mulass : return "*=" ; |
5152 | 8 | case e_divass : return "/=" ; |
5153 | 4 | case e_modass : return "%=" ; |
5154 | 4 | case e_lt : return "<" ; |
5155 | 0 | case e_lte : return "<=" ; |
5156 | 2 | case e_eq : return "==" ; |
5157 | 0 | case e_equal : return "=" ; |
5158 | 2 | case e_ne : return "!=" ; |
5159 | 0 | case e_nequal : return "<>" ; |
5160 | 0 | case e_gte : return ">=" ; |
5161 | 2 | case e_gt : return ">" ; |
5162 | 0 | case e_and : return "and" ; |
5163 | 0 | case e_or : return "or" ; |
5164 | 0 | case e_xor : return "xor" ; |
5165 | 0 | case e_nand : return "nand"; |
5166 | 0 | case e_nor : return "nor" ; |
5167 | 0 | case e_xnor : return "xnor"; |
5168 | 4 | default : return "N/A" ; |
5169 | 70 | } |
5170 | 70 | } |
5171 | | |
5172 | | struct base_operation_t |
5173 | | { |
5174 | | base_operation_t(const operator_type t, const unsigned int& np) |
5175 | 526k | : type(t) |
5176 | 526k | , num_params(np) |
5177 | 526k | {} |
5178 | | |
5179 | | operator_type type; |
5180 | | unsigned int num_params; |
5181 | | }; |
5182 | | |
5183 | | namespace loop_unroll |
5184 | | { |
5185 | | const unsigned int global_loop_batch_size = |
5186 | | #ifndef exprtk_disable_superscalar_unroll |
5187 | | 16; |
5188 | | #else |
5189 | | 4; |
5190 | | #endif |
5191 | | |
5192 | | struct details |
5193 | | { |
5194 | | explicit details(const std::size_t& vsize, |
5195 | | const unsigned int loop_batch_size = global_loop_batch_size) |
5196 | 6 | : batch_size(loop_batch_size ) |
5197 | 6 | , remainder (vsize % batch_size) |
5198 | 6 | , upper_bound(static_cast<int>(vsize - (remainder ? loop_batch_size : 0))) |
5199 | 6 | {} |
5200 | | |
5201 | | unsigned int batch_size; |
5202 | | int remainder; |
5203 | | int upper_bound; |
5204 | | }; |
5205 | | } |
5206 | | |
5207 | | #ifdef exprtk_enable_debugging |
5208 | | inline void dump_ptr(const std::string& s, const void* ptr, const std::size_t size = 0) |
5209 | | { |
5210 | | if (size) |
5211 | | exprtk_debug(("%s - addr: %p size: %d\n", |
5212 | | s.c_str(), |
5213 | | ptr, |
5214 | | static_cast<unsigned int>(size))); |
5215 | | else |
5216 | | exprtk_debug(("%s - addr: %p\n", s.c_str(), ptr)); |
5217 | | } |
5218 | | |
5219 | | template <typename T> |
5220 | | inline void dump_vector(const std::string& vec_name, const T* data, const std::size_t size) |
5221 | | { |
5222 | | printf("----- %s (%p) -----\n", |
5223 | | vec_name.c_str(), |
5224 | | static_cast<const void*>(data)); |
5225 | | printf("[ "); |
5226 | | for (std::size_t i = 0; i < size; ++i) |
5227 | | { |
5228 | | printf("%8.3f\t", data[i]); |
5229 | | } |
5230 | | printf(" ]\n"); |
5231 | | printf("---------------------\n"); |
5232 | | } |
5233 | | #else |
5234 | 27.7k | inline void dump_ptr(const std::string&, const void*) {} |
5235 | 0 | inline void dump_ptr(const std::string&, const void*, const std::size_t) {} |
5236 | | template <typename T> |
5237 | | inline void dump_vector(const std::string&, const T*, const std::size_t) {} |
5238 | | #endif |
5239 | | |
5240 | | template <typename T> |
5241 | | class vec_data_store |
5242 | | { |
5243 | | public: |
5244 | | |
5245 | | typedef vec_data_store<T> type; |
5246 | | typedef T* data_t; |
5247 | | |
5248 | | private: |
5249 | | |
5250 | | struct control_block |
5251 | | { |
5252 | | control_block() |
5253 | 0 | : ref_count(1) |
5254 | 0 | , size (0) |
5255 | 0 | , data (0) |
5256 | 0 | , destruct (true) |
5257 | 0 | {} Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::control_block() Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::control_block() |
5258 | | |
5259 | | explicit control_block(const std::size_t& dsize) |
5260 | 0 | : ref_count(1 ) |
5261 | 0 | , size (dsize) |
5262 | 0 | , data (0 ) |
5263 | 0 | , destruct (true ) |
5264 | 0 | { create_data(); } Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::control_block(unsigned long const&) Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::control_block(unsigned long const&) |
5265 | | |
5266 | | control_block(const std::size_t& dsize, data_t dptr, bool dstrct = false) |
5267 | 0 | : ref_count(1 ) |
5268 | 0 | , size (dsize ) |
5269 | 0 | , data (dptr ) |
5270 | 0 | , destruct (dstrct) |
5271 | 0 | {} Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::control_block(unsigned long const&, double*, bool) Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::control_block(unsigned long const&, float*, bool) |
5272 | | |
5273 | | ~control_block() |
5274 | 0 | { |
5275 | 0 | if (data && destruct && (0 == ref_count)) |
5276 | 0 | { |
5277 | 0 | dump_ptr("~vec_data_store::control_block() data",data); |
5278 | 0 | delete[] data; |
5279 | 0 | data = reinterpret_cast<data_t>(0); |
5280 | 0 | } |
5281 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::~control_block() Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::~control_block() |
5282 | | |
5283 | | static inline control_block* create(const std::size_t& dsize, data_t data_ptr = data_t(0), bool dstrct = false) |
5284 | 0 | { |
5285 | 0 | if (dsize) |
5286 | 0 | { |
5287 | 0 | if (0 == data_ptr) |
5288 | 0 | return (new control_block(dsize)); |
5289 | 0 | else |
5290 | 0 | return (new control_block(dsize, data_ptr, dstrct)); |
5291 | 0 | } |
5292 | 0 | else |
5293 | 0 | return (new control_block); |
5294 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::create(unsigned long const&, double*, bool) Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::create(unsigned long const&, float*, bool) |
5295 | | |
5296 | | static inline void destroy(control_block*& cntrl_blck) |
5297 | 0 | { |
5298 | 0 | if (cntrl_blck) |
5299 | 0 | { |
5300 | 0 | if ( |
5301 | 0 | (0 != cntrl_blck->ref_count) && |
5302 | 0 | (0 == --cntrl_blck->ref_count) |
5303 | 0 | ) |
5304 | 0 | { |
5305 | 0 | delete cntrl_blck; |
5306 | 0 | } |
5307 | |
|
5308 | 0 | cntrl_blck = 0; |
5309 | 0 | } |
5310 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::destroy(exprtk::details::vec_data_store<double>::control_block*&) Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::destroy(exprtk::details::vec_data_store<float>::control_block*&) |
5311 | | |
5312 | | std::size_t ref_count; |
5313 | | std::size_t size; |
5314 | | data_t data; |
5315 | | bool destruct; |
5316 | | |
5317 | | private: |
5318 | | |
5319 | | control_block(const control_block&) exprtk_delete; |
5320 | | control_block& operator=(const control_block&) exprtk_delete; |
5321 | | |
5322 | | inline void create_data() |
5323 | 0 | { |
5324 | 0 | destruct = true; |
5325 | 0 | data = new T[size]; |
5326 | 0 | std::fill_n(data, size, T(0)); |
5327 | 0 | dump_ptr("control_block::create_data() - data", data, size); |
5328 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::create_data() Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::create_data() |
5329 | | }; |
5330 | | |
5331 | | public: |
5332 | | |
5333 | | vec_data_store() |
5334 | 0 | : control_block_(control_block::create(0)) |
5335 | 0 | {} Unexecuted instantiation: exprtk::details::vec_data_store<double>::vec_data_store() Unexecuted instantiation: exprtk::details::vec_data_store<float>::vec_data_store() |
5336 | | |
5337 | | explicit vec_data_store(const std::size_t& size) |
5338 | 0 | : control_block_(control_block::create(size,reinterpret_cast<data_t>(0),true)) |
5339 | 0 | {} Unexecuted instantiation: exprtk::details::vec_data_store<double>::vec_data_store(unsigned long const&) Unexecuted instantiation: exprtk::details::vec_data_store<float>::vec_data_store(unsigned long const&) |
5340 | | |
5341 | | vec_data_store(const std::size_t& size, data_t data, bool dstrct = false) |
5342 | 0 | : control_block_(control_block::create(size, data, dstrct)) |
5343 | 0 | {} Unexecuted instantiation: exprtk::details::vec_data_store<double>::vec_data_store(unsigned long const&, double*, bool) Unexecuted instantiation: exprtk::details::vec_data_store<float>::vec_data_store(unsigned long const&, float*, bool) |
5344 | | |
5345 | | vec_data_store(const type& vds) |
5346 | 0 | { |
5347 | 0 | control_block_ = vds.control_block_; |
5348 | 0 | control_block_->ref_count++; |
5349 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::vec_data_store(exprtk::details::vec_data_store<double> const&) Unexecuted instantiation: exprtk::details::vec_data_store<float>::vec_data_store(exprtk::details::vec_data_store<float> const&) |
5350 | | |
5351 | | ~vec_data_store() |
5352 | 0 | { |
5353 | 0 | control_block::destroy(control_block_); |
5354 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::~vec_data_store() Unexecuted instantiation: exprtk::details::vec_data_store<float>::~vec_data_store() |
5355 | | |
5356 | | type& operator=(const type& vds) |
5357 | 0 | { |
5358 | 0 | if (this != &vds) |
5359 | 0 | { |
5360 | 0 | const std::size_t final_size = min_size(control_block_, vds.control_block_); |
5361 | |
|
5362 | 0 | vds.control_block_->size = final_size; |
5363 | 0 | control_block_->size = final_size; |
5364 | |
|
5365 | 0 | if (control_block_->destruct || (0 == control_block_->data)) |
5366 | 0 | { |
5367 | 0 | control_block::destroy(control_block_); |
5368 | |
|
5369 | 0 | control_block_ = vds.control_block_; |
5370 | 0 | control_block_->ref_count++; |
5371 | 0 | } |
5372 | 0 | } |
5373 | |
|
5374 | 0 | return (*this); |
5375 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::operator=(exprtk::details::vec_data_store<double> const&) Unexecuted instantiation: exprtk::details::vec_data_store<float>::operator=(exprtk::details::vec_data_store<float> const&) |
5376 | | |
5377 | | inline data_t data() |
5378 | 0 | { |
5379 | 0 | return control_block_->data; |
5380 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::data() Unexecuted instantiation: exprtk::details::vec_data_store<float>::data() |
5381 | | |
5382 | | inline data_t data() const |
5383 | 0 | { |
5384 | 0 | return control_block_->data; |
5385 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::data() const Unexecuted instantiation: exprtk::details::vec_data_store<float>::data() const |
5386 | | |
5387 | | inline std::size_t size() const |
5388 | 0 | { |
5389 | 0 | return control_block_->size; |
5390 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::size() const Unexecuted instantiation: exprtk::details::vec_data_store<float>::size() const |
5391 | | |
5392 | | inline data_t& ref() |
5393 | 0 | { |
5394 | 0 | return control_block_->data; |
5395 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::ref() Unexecuted instantiation: exprtk::details::vec_data_store<float>::ref() |
5396 | | |
5397 | | inline void dump() const |
5398 | | { |
5399 | | #ifdef exprtk_enable_debugging |
5400 | | exprtk_debug(("size: %d\taddress:%p\tdestruct:%c\n", |
5401 | | size(), |
5402 | | data(), |
5403 | | (control_block_->destruct ? 'T' : 'F'))); |
5404 | | |
5405 | | for (std::size_t i = 0; i < size(); ++i) |
5406 | | { |
5407 | | if (5 == i) |
5408 | | exprtk_debug(("\n")); |
5409 | | |
5410 | | exprtk_debug(("%15.10f ", data()[i])); |
5411 | | } |
5412 | | exprtk_debug(("\n")); |
5413 | | #endif |
5414 | | } |
5415 | | |
5416 | | static inline void match_sizes(type& vds0, type& vds1) |
5417 | 0 | { |
5418 | 0 | const std::size_t size = min_size(vds0.control_block_,vds1.control_block_); |
5419 | 0 | vds0.control_block_->size = size; |
5420 | 0 | vds1.control_block_->size = size; |
5421 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::match_sizes(exprtk::details::vec_data_store<double>&, exprtk::details::vec_data_store<double>&) Unexecuted instantiation: exprtk::details::vec_data_store<float>::match_sizes(exprtk::details::vec_data_store<float>&, exprtk::details::vec_data_store<float>&) |
5422 | | |
5423 | | private: |
5424 | | |
5425 | | static inline std::size_t min_size(const control_block* cb0, const control_block* cb1) |
5426 | 0 | { |
5427 | 0 | const std::size_t size0 = cb0->size; |
5428 | 0 | const std::size_t size1 = cb1->size; |
5429 | |
|
5430 | 0 | if (size0 && size1) |
5431 | 0 | return std::min(size0,size1); |
5432 | 0 | else |
5433 | 0 | return (size0) ? size0 : size1; |
5434 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::min_size(exprtk::details::vec_data_store<double>::control_block const*, exprtk::details::vec_data_store<double>::control_block const*) Unexecuted instantiation: exprtk::details::vec_data_store<float>::min_size(exprtk::details::vec_data_store<float>::control_block const*, exprtk::details::vec_data_store<float>::control_block const*) |
5435 | | |
5436 | | control_block* control_block_; |
5437 | | }; |
5438 | | |
5439 | | namespace numeric |
5440 | | { |
5441 | | namespace details |
5442 | | { |
5443 | | template <typename T> |
5444 | | inline T process_impl(const operator_type operation, const T arg) |
5445 | 15.8k | { |
5446 | 15.8k | switch (operation) |
5447 | 15.8k | { |
5448 | 0 | case e_abs : return numeric::abs (arg); |
5449 | 0 | case e_acos : return numeric::acos (arg); |
5450 | 0 | case e_acosh : return numeric::acosh(arg); |
5451 | 0 | case e_asin : return numeric::asin (arg); |
5452 | 0 | case e_asinh : return numeric::asinh(arg); |
5453 | 0 | case e_atan : return numeric::atan (arg); |
5454 | 0 | case e_atanh : return numeric::atanh(arg); |
5455 | 0 | case e_ceil : return numeric::ceil (arg); |
5456 | 0 | case e_cos : return numeric::cos (arg); |
5457 | 0 | case e_cosh : return numeric::cosh (arg); |
5458 | 0 | case e_exp : return numeric::exp (arg); |
5459 | 0 | case e_expm1 : return numeric::expm1(arg); |
5460 | 0 | case e_floor : return numeric::floor(arg); |
5461 | 0 | case e_log : return numeric::log (arg); |
5462 | 0 | case e_log10 : return numeric::log10(arg); |
5463 | 0 | case e_log2 : return numeric::log2 (arg); |
5464 | 0 | case e_log1p : return numeric::log1p(arg); |
5465 | 15.8k | case e_neg : return numeric::neg (arg); |
5466 | 0 | case e_pos : return numeric::pos (arg); |
5467 | 0 | case e_round : return numeric::round(arg); |
5468 | 0 | case e_sin : return numeric::sin (arg); |
5469 | 0 | case e_sinc : return numeric::sinc (arg); |
5470 | 0 | case e_sinh : return numeric::sinh (arg); |
5471 | 0 | case e_sqrt : return numeric::sqrt (arg); |
5472 | 0 | case e_tan : return numeric::tan (arg); |
5473 | 0 | case e_tanh : return numeric::tanh (arg); |
5474 | 0 | case e_cot : return numeric::cot (arg); |
5475 | 0 | case e_sec : return numeric::sec (arg); |
5476 | 0 | case e_csc : return numeric::csc (arg); |
5477 | 0 | case e_r2d : return numeric::r2d (arg); |
5478 | 0 | case e_d2r : return numeric::d2r (arg); |
5479 | 0 | case e_d2g : return numeric::d2g (arg); |
5480 | 0 | case e_g2d : return numeric::g2d (arg); |
5481 | 0 | case e_notl : return numeric::notl (arg); |
5482 | 0 | case e_sgn : return numeric::sgn (arg); |
5483 | 0 | case e_erf : return numeric::erf (arg); |
5484 | 0 | case e_erfc : return numeric::erfc (arg); |
5485 | 0 | case e_ncdf : return numeric::ncdf (arg); |
5486 | 0 | case e_frac : return numeric::frac (arg); |
5487 | 0 | case e_trunc : return numeric::trunc(arg); |
5488 | | |
5489 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n")); |
5490 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
5491 | 15.8k | } |
5492 | 15.8k | } double exprtk::details::numeric::details::process_impl<double>(exprtk::details::operator_type, double) Line | Count | Source | 5445 | 13.8k | { | 5446 | 13.8k | switch (operation) | 5447 | 13.8k | { | 5448 | 0 | case e_abs : return numeric::abs (arg); | 5449 | 0 | case e_acos : return numeric::acos (arg); | 5450 | 0 | case e_acosh : return numeric::acosh(arg); | 5451 | 0 | case e_asin : return numeric::asin (arg); | 5452 | 0 | case e_asinh : return numeric::asinh(arg); | 5453 | 0 | case e_atan : return numeric::atan (arg); | 5454 | 0 | case e_atanh : return numeric::atanh(arg); | 5455 | 0 | case e_ceil : return numeric::ceil (arg); | 5456 | 0 | case e_cos : return numeric::cos (arg); | 5457 | 0 | case e_cosh : return numeric::cosh (arg); | 5458 | 0 | case e_exp : return numeric::exp (arg); | 5459 | 0 | case e_expm1 : return numeric::expm1(arg); | 5460 | 0 | case e_floor : return numeric::floor(arg); | 5461 | 0 | case e_log : return numeric::log (arg); | 5462 | 0 | case e_log10 : return numeric::log10(arg); | 5463 | 0 | case e_log2 : return numeric::log2 (arg); | 5464 | 0 | case e_log1p : return numeric::log1p(arg); | 5465 | 13.8k | case e_neg : return numeric::neg (arg); | 5466 | 0 | case e_pos : return numeric::pos (arg); | 5467 | 0 | case e_round : return numeric::round(arg); | 5468 | 0 | case e_sin : return numeric::sin (arg); | 5469 | 0 | case e_sinc : return numeric::sinc (arg); | 5470 | 0 | case e_sinh : return numeric::sinh (arg); | 5471 | 0 | case e_sqrt : return numeric::sqrt (arg); | 5472 | 0 | case e_tan : return numeric::tan (arg); | 5473 | 0 | case e_tanh : return numeric::tanh (arg); | 5474 | 0 | case e_cot : return numeric::cot (arg); | 5475 | 0 | case e_sec : return numeric::sec (arg); | 5476 | 0 | case e_csc : return numeric::csc (arg); | 5477 | 0 | case e_r2d : return numeric::r2d (arg); | 5478 | 0 | case e_d2r : return numeric::d2r (arg); | 5479 | 0 | case e_d2g : return numeric::d2g (arg); | 5480 | 0 | case e_g2d : return numeric::g2d (arg); | 5481 | 0 | case e_notl : return numeric::notl (arg); | 5482 | 0 | case e_sgn : return numeric::sgn (arg); | 5483 | 0 | case e_erf : return numeric::erf (arg); | 5484 | 0 | case e_erfc : return numeric::erfc (arg); | 5485 | 0 | case e_ncdf : return numeric::ncdf (arg); | 5486 | 0 | case e_frac : return numeric::frac (arg); | 5487 | 0 | case e_trunc : return numeric::trunc(arg); | 5488 | | | 5489 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n")); | 5490 | 0 | return std::numeric_limits<T>::quiet_NaN(); | 5491 | 13.8k | } | 5492 | 13.8k | } |
float exprtk::details::numeric::details::process_impl<float>(exprtk::details::operator_type, float) Line | Count | Source | 5445 | 1.98k | { | 5446 | 1.98k | switch (operation) | 5447 | 1.98k | { | 5448 | 0 | case e_abs : return numeric::abs (arg); | 5449 | 0 | case e_acos : return numeric::acos (arg); | 5450 | 0 | case e_acosh : return numeric::acosh(arg); | 5451 | 0 | case e_asin : return numeric::asin (arg); | 5452 | 0 | case e_asinh : return numeric::asinh(arg); | 5453 | 0 | case e_atan : return numeric::atan (arg); | 5454 | 0 | case e_atanh : return numeric::atanh(arg); | 5455 | 0 | case e_ceil : return numeric::ceil (arg); | 5456 | 0 | case e_cos : return numeric::cos (arg); | 5457 | 0 | case e_cosh : return numeric::cosh (arg); | 5458 | 0 | case e_exp : return numeric::exp (arg); | 5459 | 0 | case e_expm1 : return numeric::expm1(arg); | 5460 | 0 | case e_floor : return numeric::floor(arg); | 5461 | 0 | case e_log : return numeric::log (arg); | 5462 | 0 | case e_log10 : return numeric::log10(arg); | 5463 | 0 | case e_log2 : return numeric::log2 (arg); | 5464 | 0 | case e_log1p : return numeric::log1p(arg); | 5465 | 1.98k | case e_neg : return numeric::neg (arg); | 5466 | 0 | case e_pos : return numeric::pos (arg); | 5467 | 0 | case e_round : return numeric::round(arg); | 5468 | 0 | case e_sin : return numeric::sin (arg); | 5469 | 0 | case e_sinc : return numeric::sinc (arg); | 5470 | 0 | case e_sinh : return numeric::sinh (arg); | 5471 | 0 | case e_sqrt : return numeric::sqrt (arg); | 5472 | 0 | case e_tan : return numeric::tan (arg); | 5473 | 0 | case e_tanh : return numeric::tanh (arg); | 5474 | 0 | case e_cot : return numeric::cot (arg); | 5475 | 0 | case e_sec : return numeric::sec (arg); | 5476 | 0 | case e_csc : return numeric::csc (arg); | 5477 | 0 | case e_r2d : return numeric::r2d (arg); | 5478 | 0 | case e_d2r : return numeric::d2r (arg); | 5479 | 0 | case e_d2g : return numeric::d2g (arg); | 5480 | 0 | case e_g2d : return numeric::g2d (arg); | 5481 | 0 | case e_notl : return numeric::notl (arg); | 5482 | 0 | case e_sgn : return numeric::sgn (arg); | 5483 | 0 | case e_erf : return numeric::erf (arg); | 5484 | 0 | case e_erfc : return numeric::erfc (arg); | 5485 | 0 | case e_ncdf : return numeric::ncdf (arg); | 5486 | 0 | case e_frac : return numeric::frac (arg); | 5487 | 0 | case e_trunc : return numeric::trunc(arg); | 5488 | | | 5489 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n")); | 5490 | 0 | return std::numeric_limits<T>::quiet_NaN(); | 5491 | 1.98k | } | 5492 | 1.98k | } |
|
5493 | | |
5494 | | template <typename T> |
5495 | | inline T process_impl(const operator_type operation, const T arg0, const T arg1) |
5496 | 10.9k | { |
5497 | 10.9k | switch (operation) |
5498 | 10.9k | { |
5499 | 1.77k | case e_add : return (arg0 + arg1); |
5500 | 177 | case e_sub : return (arg0 - arg1); |
5501 | 136 | case e_mul : return (arg0 * arg1); |
5502 | 338 | case e_div : return (arg0 / arg1); |
5503 | 7.32k | case e_mod : return modulus<T>(arg0,arg1); |
5504 | 909 | case e_pow : return pow<T>(arg0,arg1); |
5505 | 0 | case e_atan2 : return atan2<T>(arg0,arg1); |
5506 | 0 | case e_min : return std::min<T>(arg0,arg1); |
5507 | 0 | case e_max : return std::max<T>(arg0,arg1); |
5508 | 0 | case e_logn : return logn<T>(arg0,arg1); |
5509 | 30 | case e_lt : return (arg0 < arg1) ? T(1) : T(0); |
5510 | 2 | case e_lte : return (arg0 <= arg1) ? T(1) : T(0); |
5511 | 16 | case e_eq : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0); |
5512 | 2 | case e_ne : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0); |
5513 | 20 | case e_gte : return (arg0 >= arg1) ? T(1) : T(0); |
5514 | 176 | case e_gt : return (arg0 > arg1) ? T(1) : T(0); |
5515 | 0 | case e_and : return and_opr <T>(arg0,arg1); |
5516 | 6 | case e_nand : return nand_opr<T>(arg0,arg1); |
5517 | 4 | case e_or : return or_opr <T>(arg0,arg1); |
5518 | 0 | case e_nor : return nor_opr <T>(arg0,arg1); |
5519 | 2 | case e_xor : return xor_opr <T>(arg0,arg1); |
5520 | 0 | case e_xnor : return xnor_opr<T>(arg0,arg1); |
5521 | 0 | case e_root : return root <T>(arg0,arg1); |
5522 | 0 | case e_roundn : return roundn <T>(arg0,arg1); |
5523 | 0 | case e_equal : return equal <T>(arg0,arg1); |
5524 | 0 | case e_nequal : return nequal <T>(arg0,arg1); |
5525 | 0 | case e_hypot : return hypot <T>(arg0,arg1); |
5526 | 0 | case e_shr : return shr <T>(arg0,arg1); |
5527 | 0 | case e_shl : return shl <T>(arg0,arg1); |
5528 | | |
5529 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n")); |
5530 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
5531 | 10.9k | } |
5532 | 10.9k | } double exprtk::details::numeric::details::process_impl<double>(exprtk::details::operator_type, double, double) Line | Count | Source | 5496 | 9.25k | { | 5497 | 9.25k | switch (operation) | 5498 | 9.25k | { | 5499 | 890 | case e_add : return (arg0 + arg1); | 5500 | 90 | case e_sub : return (arg0 - arg1); | 5501 | 95 | case e_mul : return (arg0 * arg1); | 5502 | 265 | case e_div : return (arg0 / arg1); | 5503 | 7.29k | case e_mod : return modulus<T>(arg0,arg1); | 5504 | 492 | case e_pow : return pow<T>(arg0,arg1); | 5505 | 0 | case e_atan2 : return atan2<T>(arg0,arg1); | 5506 | 0 | case e_min : return std::min<T>(arg0,arg1); | 5507 | 0 | case e_max : return std::max<T>(arg0,arg1); | 5508 | 0 | case e_logn : return logn<T>(arg0,arg1); | 5509 | 15 | case e_lt : return (arg0 < arg1) ? T(1) : T(0); | 5510 | 1 | case e_lte : return (arg0 <= arg1) ? T(1) : T(0); | 5511 | 8 | case e_eq : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0); | 5512 | 1 | case e_ne : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0); | 5513 | 10 | case e_gte : return (arg0 >= arg1) ? T(1) : T(0); | 5514 | 88 | case e_gt : return (arg0 > arg1) ? T(1) : T(0); | 5515 | 0 | case e_and : return and_opr <T>(arg0,arg1); | 5516 | 3 | case e_nand : return nand_opr<T>(arg0,arg1); | 5517 | 2 | case e_or : return or_opr <T>(arg0,arg1); | 5518 | 0 | case e_nor : return nor_opr <T>(arg0,arg1); | 5519 | 1 | case e_xor : return xor_opr <T>(arg0,arg1); | 5520 | 0 | case e_xnor : return xnor_opr<T>(arg0,arg1); | 5521 | 0 | case e_root : return root <T>(arg0,arg1); | 5522 | 0 | case e_roundn : return roundn <T>(arg0,arg1); | 5523 | 0 | case e_equal : return equal <T>(arg0,arg1); | 5524 | 0 | case e_nequal : return nequal <T>(arg0,arg1); | 5525 | 0 | case e_hypot : return hypot <T>(arg0,arg1); | 5526 | 0 | case e_shr : return shr <T>(arg0,arg1); | 5527 | 0 | case e_shl : return shl <T>(arg0,arg1); | 5528 | | | 5529 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n")); | 5530 | 0 | return std::numeric_limits<T>::quiet_NaN(); | 5531 | 9.25k | } | 5532 | 9.25k | } |
float exprtk::details::numeric::details::process_impl<float>(exprtk::details::operator_type, float, float) Line | Count | Source | 5496 | 1.66k | { | 5497 | 1.66k | switch (operation) | 5498 | 1.66k | { | 5499 | 886 | case e_add : return (arg0 + arg1); | 5500 | 87 | case e_sub : return (arg0 - arg1); | 5501 | 41 | case e_mul : return (arg0 * arg1); | 5502 | 73 | case e_div : return (arg0 / arg1); | 5503 | 27 | case e_mod : return modulus<T>(arg0,arg1); | 5504 | 417 | case e_pow : return pow<T>(arg0,arg1); | 5505 | 0 | case e_atan2 : return atan2<T>(arg0,arg1); | 5506 | 0 | case e_min : return std::min<T>(arg0,arg1); | 5507 | 0 | case e_max : return std::max<T>(arg0,arg1); | 5508 | 0 | case e_logn : return logn<T>(arg0,arg1); | 5509 | 15 | case e_lt : return (arg0 < arg1) ? T(1) : T(0); | 5510 | 1 | case e_lte : return (arg0 <= arg1) ? T(1) : T(0); | 5511 | 8 | case e_eq : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0); | 5512 | 1 | case e_ne : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0); | 5513 | 10 | case e_gte : return (arg0 >= arg1) ? T(1) : T(0); | 5514 | 88 | case e_gt : return (arg0 > arg1) ? T(1) : T(0); | 5515 | 0 | case e_and : return and_opr <T>(arg0,arg1); | 5516 | 3 | case e_nand : return nand_opr<T>(arg0,arg1); | 5517 | 2 | case e_or : return or_opr <T>(arg0,arg1); | 5518 | 0 | case e_nor : return nor_opr <T>(arg0,arg1); | 5519 | 1 | case e_xor : return xor_opr <T>(arg0,arg1); | 5520 | 0 | case e_xnor : return xnor_opr<T>(arg0,arg1); | 5521 | 0 | case e_root : return root <T>(arg0,arg1); | 5522 | 0 | case e_roundn : return roundn <T>(arg0,arg1); | 5523 | 0 | case e_equal : return equal <T>(arg0,arg1); | 5524 | 0 | case e_nequal : return nequal <T>(arg0,arg1); | 5525 | 0 | case e_hypot : return hypot <T>(arg0,arg1); | 5526 | 0 | case e_shr : return shr <T>(arg0,arg1); | 5527 | 0 | case e_shl : return shl <T>(arg0,arg1); | 5528 | | | 5529 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n")); | 5530 | 0 | return std::numeric_limits<T>::quiet_NaN(); | 5531 | 1.66k | } | 5532 | 1.66k | } |
|
5533 | | |
5534 | | template <typename T> |
5535 | | inline T process_impl(const operator_type operation, const T arg0, const T arg1, int_type_tag) |
5536 | | { |
5537 | | switch (operation) |
5538 | | { |
5539 | | case e_add : return (arg0 + arg1); |
5540 | | case e_sub : return (arg0 - arg1); |
5541 | | case e_mul : return (arg0 * arg1); |
5542 | | case e_div : return (arg0 / arg1); |
5543 | | case e_mod : return arg0 % arg1; |
5544 | | case e_pow : return pow<T>(arg0,arg1); |
5545 | | case e_min : return std::min<T>(arg0,arg1); |
5546 | | case e_max : return std::max<T>(arg0,arg1); |
5547 | | case e_logn : return logn<T>(arg0,arg1); |
5548 | | case e_lt : return (arg0 < arg1) ? T(1) : T(0); |
5549 | | case e_lte : return (arg0 <= arg1) ? T(1) : T(0); |
5550 | | case e_eq : return (arg0 == arg1) ? T(1) : T(0); |
5551 | | case e_ne : return (arg0 != arg1) ? T(1) : T(0); |
5552 | | case e_gte : return (arg0 >= arg1) ? T(1) : T(0); |
5553 | | case e_gt : return (arg0 > arg1) ? T(1) : T(0); |
5554 | | case e_and : return ((arg0 != T(0)) && (arg1 != T(0))) ? T(1) : T(0); |
5555 | | case e_nand : return ((arg0 != T(0)) && (arg1 != T(0))) ? T(0) : T(1); |
5556 | | case e_or : return ((arg0 != T(0)) || (arg1 != T(0))) ? T(1) : T(0); |
5557 | | case e_nor : return ((arg0 != T(0)) || (arg1 != T(0))) ? T(0) : T(1); |
5558 | | case e_xor : return arg0 ^ arg1; |
5559 | | case e_xnor : return !(arg0 ^ arg1); |
5560 | | case e_root : return root<T>(arg0,arg1); |
5561 | | case e_equal : return arg0 == arg1; |
5562 | | case e_nequal : return arg0 != arg1; |
5563 | | case e_hypot : return hypot<T>(arg0,arg1); |
5564 | | case e_shr : return arg0 >> arg1; |
5565 | | case e_shl : return arg0 << arg1; |
5566 | | |
5567 | | default : exprtk_debug(("numeric::details::process_impl<IntType> - Invalid binary operation.\n")); |
5568 | | return std::numeric_limits<T>::quiet_NaN(); |
5569 | | } |
5570 | | } |
5571 | | } |
5572 | | |
5573 | | template <typename T> |
5574 | | inline T process(const operator_type operation, const T arg) |
5575 | 15.8k | { |
5576 | 15.8k | return exprtk::details::numeric::details::process_impl(operation,arg); |
5577 | 15.8k | } double exprtk::details::numeric::process<double>(exprtk::details::operator_type, double) Line | Count | Source | 5575 | 13.8k | { | 5576 | 13.8k | return exprtk::details::numeric::details::process_impl(operation,arg); | 5577 | 13.8k | } |
float exprtk::details::numeric::process<float>(exprtk::details::operator_type, float) Line | Count | Source | 5575 | 1.98k | { | 5576 | 1.98k | return exprtk::details::numeric::details::process_impl(operation,arg); | 5577 | 1.98k | } |
|
5578 | | |
5579 | | template <typename T> |
5580 | | inline T process(const operator_type operation, const T arg0, const T arg1) |
5581 | 10.9k | { |
5582 | 10.9k | return exprtk::details::numeric::details::process_impl(operation, arg0, arg1); |
5583 | 10.9k | } double exprtk::details::numeric::process<double>(exprtk::details::operator_type, double, double) Line | Count | Source | 5581 | 9.25k | { | 5582 | 9.25k | return exprtk::details::numeric::details::process_impl(operation, arg0, arg1); | 5583 | 9.25k | } |
float exprtk::details::numeric::process<float>(exprtk::details::operator_type, float, float) Line | Count | Source | 5581 | 1.66k | { | 5582 | 1.66k | return exprtk::details::numeric::details::process_impl(operation, arg0, arg1); | 5583 | 1.66k | } |
|
5584 | | } |
5585 | | |
5586 | | template <typename Node> |
5587 | | struct node_collector_interface |
5588 | | { |
5589 | | typedef Node* node_ptr_t; |
5590 | | typedef Node** node_pp_t; |
5591 | | typedef std::vector<node_pp_t> noderef_list_t; |
5592 | | |
5593 | | virtual ~node_collector_interface() |
5594 | 390k | {} exprtk::details::node_collector_interface<exprtk::details::expression_node<double> >::~node_collector_interface() Line | Count | Source | 5594 | 307k | {} |
exprtk::details::node_collector_interface<exprtk::details::expression_node<float> >::~node_collector_interface() Line | Count | Source | 5594 | 82.8k | {} |
|
5595 | | |
5596 | | virtual void collect_nodes(noderef_list_t&) |
5597 | 206k | {} exprtk::details::node_collector_interface<exprtk::details::expression_node<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 5597 | 171k | {} |
exprtk::details::node_collector_interface<exprtk::details::expression_node<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 5597 | 34.9k | {} |
|
5598 | | }; |
5599 | | |
5600 | | template <typename Node> |
5601 | | struct node_depth_base; |
5602 | | |
5603 | | template <typename T> |
5604 | | class expression_node : public node_collector_interface<expression_node<T> > |
5605 | | , public node_depth_base<expression_node<T> > |
5606 | | { |
5607 | | public: |
5608 | | |
5609 | | enum node_type |
5610 | | { |
5611 | | e_none , e_null , e_constant , e_unary , |
5612 | | e_binary , e_binary_ext , e_trinary , e_quaternary , |
5613 | | e_vararg , e_conditional , e_while , e_repeat , |
5614 | | e_for , e_switch , e_mswitch , e_return , |
5615 | | e_retenv , e_variable , e_stringvar , e_stringconst , |
5616 | | e_stringvarrng , e_cstringvarrng , e_strgenrange , e_strconcat , |
5617 | | e_stringvarsize , e_strswap , e_stringsize , e_stringvararg , |
5618 | | e_function , e_vafunction , e_genfunction , e_strfunction , |
5619 | | e_strcondition , e_strccondition , e_add , e_sub , |
5620 | | e_mul , e_div , e_mod , e_pow , |
5621 | | e_lt , e_lte , e_gt , e_gte , |
5622 | | e_eq , e_ne , e_and , e_nand , |
5623 | | e_or , e_nor , e_xor , e_xnor , |
5624 | | e_in , e_like , e_ilike , e_inranges , |
5625 | | e_ipow , e_ipowinv , e_abs , e_acos , |
5626 | | e_acosh , e_asin , e_asinh , e_atan , |
5627 | | e_atanh , e_ceil , e_cos , e_cosh , |
5628 | | e_exp , e_expm1 , e_floor , e_log , |
5629 | | e_log10 , e_log2 , e_log1p , e_neg , |
5630 | | e_pos , e_round , e_sin , e_sinc , |
5631 | | e_sinh , e_sqrt , e_tan , e_tanh , |
5632 | | e_cot , e_sec , e_csc , e_r2d , |
5633 | | e_d2r , e_d2g , e_g2d , e_notl , |
5634 | | e_sgn , e_erf , e_erfc , e_ncdf , |
5635 | | e_frac , e_trunc , e_uvouv , e_vov , |
5636 | | e_cov , e_voc , e_vob , e_bov , |
5637 | | e_cob , e_boc , e_vovov , e_vovoc , |
5638 | | e_vocov , e_covov , e_covoc , e_vovovov , |
5639 | | e_vovovoc , e_vovocov , e_vocovov , e_covovov , |
5640 | | e_covocov , e_vocovoc , e_covovoc , e_vococov , |
5641 | | e_sf3ext , e_sf4ext , e_nulleq , e_strass , |
5642 | | e_vector , e_vecsize , e_vecelem , e_veccelem , |
5643 | | e_vecelemrtc , e_veccelemrtc , e_rbvecelem , e_rbvecelemrtc , |
5644 | | e_rbveccelem , e_rbveccelemrtc , e_vecinit , e_vecvalass , |
5645 | | e_vecvecass , e_vecopvalass , e_vecopvecass , e_vecfunc , |
5646 | | e_vecvecswap , e_vecvecineq , e_vecvalineq , e_valvecineq , |
5647 | | e_vecvecarith , e_vecvalarith , e_valvecarith , e_vecunaryop , |
5648 | | e_vecondition , e_break , e_continue , e_swap , |
5649 | | e_assert |
5650 | | }; |
5651 | | |
5652 | | typedef T value_type; |
5653 | | typedef expression_node<T>* expression_ptr; |
5654 | | typedef node_collector_interface<expression_node<T> > nci_t; |
5655 | | typedef typename nci_t::noderef_list_t noderef_list_t; |
5656 | | typedef node_depth_base<expression_node<T> > ndb_t; |
5657 | | |
5658 | | virtual ~expression_node() |
5659 | 390k | {} exprtk::details::expression_node<double>::~expression_node() Line | Count | Source | 5659 | 307k | {} |
exprtk::details::expression_node<float>::~expression_node() Line | Count | Source | 5659 | 82.8k | {} |
|
5660 | | |
5661 | | inline virtual T value() const |
5662 | 0 | { |
5663 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
5664 | 0 | } Unexecuted instantiation: exprtk::details::expression_node<double>::value() const Unexecuted instantiation: exprtk::details::expression_node<float>::value() const |
5665 | | |
5666 | | inline virtual expression_node<T>* branch(const std::size_t& index = 0) const |
5667 | 0 | { |
5668 | 0 | return reinterpret_cast<expression_ptr>(index * 0); |
5669 | 0 | } Unexecuted instantiation: exprtk::details::expression_node<double>::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::expression_node<float>::branch(unsigned long const&) const |
5670 | | |
5671 | | inline virtual node_type type() const |
5672 | 1.50M | { |
5673 | 1.50M | return e_none; |
5674 | 1.50M | } exprtk::details::expression_node<double>::type() const Line | Count | Source | 5672 | 1.35M | { | 5673 | 1.35M | return e_none; | 5674 | 1.35M | } |
exprtk::details::expression_node<float>::type() const Line | Count | Source | 5672 | 146k | { | 5673 | 146k | return e_none; | 5674 | 146k | } |
|
5675 | | |
5676 | | inline virtual bool valid() const |
5677 | 640M | { |
5678 | 640M | return true; |
5679 | 640M | } exprtk::details::expression_node<double>::valid() const Line | Count | Source | 5677 | 639M | { | 5678 | 639M | return true; | 5679 | 639M | } |
exprtk::details::expression_node<float>::valid() const Line | Count | Source | 5677 | 162k | { | 5678 | 162k | return true; | 5679 | 162k | } |
|
5680 | | }; // class expression_node |
5681 | | |
5682 | | template <typename T> |
5683 | | inline bool is_generally_string_node(const expression_node<T>* node); |
5684 | | |
5685 | | inline bool is_true(const double v) |
5686 | 130 | { |
5687 | 130 | return std::not_equal_to<double>()(0.0,v); |
5688 | 130 | } |
5689 | | |
5690 | | inline bool is_true(const long double v) |
5691 | 0 | { |
5692 | 0 | return std::not_equal_to<long double>()(0.0L,v); |
5693 | 0 | } |
5694 | | |
5695 | | inline bool is_true(const float v) |
5696 | 130 | { |
5697 | 130 | return std::not_equal_to<float>()(0.0f,v); |
5698 | 130 | } |
5699 | | |
5700 | | template <typename T> |
5701 | | inline bool is_true(const expression_node<T>* node) |
5702 | 2 | { |
5703 | 2 | return std::not_equal_to<T>()(T(0),node->value()); |
5704 | 2 | } bool exprtk::details::is_true<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5702 | 1 | { | 5703 | 1 | return std::not_equal_to<T>()(T(0),node->value()); | 5704 | 1 | } |
bool exprtk::details::is_true<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5702 | 1 | { | 5703 | 1 | return std::not_equal_to<T>()(T(0),node->value()); | 5704 | 1 | } |
|
5705 | | |
5706 | | template <typename T> |
5707 | | inline bool is_true(const std::pair<expression_node<T>*,bool>& node) |
5708 | 10 | { |
5709 | 10 | return std::not_equal_to<T>()(T(0),node.first->value()); |
5710 | 10 | } bool exprtk::details::is_true<double>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) Line | Count | Source | 5708 | 5 | { | 5709 | 5 | return std::not_equal_to<T>()(T(0),node.first->value()); | 5710 | 5 | } |
bool exprtk::details::is_true<float>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) Line | Count | Source | 5708 | 5 | { | 5709 | 5 | return std::not_equal_to<T>()(T(0),node.first->value()); | 5710 | 5 | } |
|
5711 | | |
5712 | | template <typename T> |
5713 | | inline bool is_false(const expression_node<T>* node) |
5714 | 0 | { |
5715 | 0 | return std::equal_to<T>()(T(0),node->value()); |
5716 | 0 | } Unexecuted instantiation: bool exprtk::details::is_false<double>(exprtk::details::expression_node<double> const*) Unexecuted instantiation: bool exprtk::details::is_false<float>(exprtk::details::expression_node<float> const*) |
5717 | | |
5718 | | template <typename T> |
5719 | | inline bool is_false(const std::pair<expression_node<T>*,bool>& node) |
5720 | | { |
5721 | | return std::equal_to<T>()(T(0),node.first->value()); |
5722 | | } |
5723 | | |
5724 | | template <typename T> |
5725 | | inline bool is_literal_node(const expression_node<T>* node) |
5726 | 186 | { |
5727 | 186 | return node && (details::expression_node<T>::e_constant == node->type()); |
5728 | 186 | } bool exprtk::details::is_literal_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5726 | 93 | { | 5727 | 93 | return node && (details::expression_node<T>::e_constant == node->type()); | 5728 | 93 | } |
bool exprtk::details::is_literal_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5726 | 93 | { | 5727 | 93 | return node && (details::expression_node<T>::e_constant == node->type()); | 5728 | 93 | } |
|
5729 | | |
5730 | | template <typename T> |
5731 | | inline bool is_unary_node(const expression_node<T>* node) |
5732 | | { |
5733 | | return node && (details::expression_node<T>::e_unary == node->type()); |
5734 | | } |
5735 | | |
5736 | | template <typename T> |
5737 | | inline bool is_neg_unary_node(const expression_node<T>* node) |
5738 | 96.0k | { |
5739 | 96.0k | return node && (details::expression_node<T>::e_neg == node->type()); |
5740 | 96.0k | } bool exprtk::details::is_neg_unary_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5738 | 87.2k | { | 5739 | 87.2k | return node && (details::expression_node<T>::e_neg == node->type()); | 5740 | 87.2k | } |
bool exprtk::details::is_neg_unary_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5738 | 8.75k | { | 5739 | 8.75k | return node && (details::expression_node<T>::e_neg == node->type()); | 5740 | 8.75k | } |
|
5741 | | |
5742 | | template <typename T> |
5743 | | inline bool is_binary_node(const expression_node<T>* node) |
5744 | | { |
5745 | | return node && (details::expression_node<T>::e_binary == node->type()); |
5746 | | } |
5747 | | |
5748 | | template <typename T> |
5749 | | inline bool is_variable_node(const expression_node<T>* node) |
5750 | 932k | { |
5751 | 932k | return node && (details::expression_node<T>::e_variable == node->type()); |
5752 | 932k | } bool exprtk::details::is_variable_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5750 | 813k | { | 5751 | 813k | return node && (details::expression_node<T>::e_variable == node->type()); | 5752 | 813k | } |
bool exprtk::details::is_variable_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5750 | 119k | { | 5751 | 119k | return node && (details::expression_node<T>::e_variable == node->type()); | 5752 | 119k | } |
|
5753 | | |
5754 | | template <typename T> |
5755 | | inline bool is_ivariable_node(const expression_node<T>* node) |
5756 | 24 | { |
5757 | 24 | return node && |
5758 | 24 | ( |
5759 | 24 | details::expression_node<T>::e_variable == node->type() || |
5760 | 24 | details::expression_node<T>::e_vecelem == node->type() || |
5761 | 24 | details::expression_node<T>::e_veccelem == node->type() || |
5762 | 24 | details::expression_node<T>::e_vecelemrtc == node->type() || |
5763 | 24 | details::expression_node<T>::e_veccelemrtc == node->type() || |
5764 | 24 | details::expression_node<T>::e_rbvecelem == node->type() || |
5765 | 24 | details::expression_node<T>::e_rbveccelem == node->type() || |
5766 | 24 | details::expression_node<T>::e_rbvecelemrtc == node->type() || |
5767 | 24 | details::expression_node<T>::e_rbveccelemrtc == node->type() |
5768 | 24 | ); |
5769 | 24 | } bool exprtk::details::is_ivariable_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5756 | 12 | { | 5757 | 12 | return node && | 5758 | 12 | ( | 5759 | 12 | details::expression_node<T>::e_variable == node->type() || | 5760 | 12 | details::expression_node<T>::e_vecelem == node->type() || | 5761 | 12 | details::expression_node<T>::e_veccelem == node->type() || | 5762 | 12 | details::expression_node<T>::e_vecelemrtc == node->type() || | 5763 | 12 | details::expression_node<T>::e_veccelemrtc == node->type() || | 5764 | 12 | details::expression_node<T>::e_rbvecelem == node->type() || | 5765 | 12 | details::expression_node<T>::e_rbveccelem == node->type() || | 5766 | 12 | details::expression_node<T>::e_rbvecelemrtc == node->type() || | 5767 | 12 | details::expression_node<T>::e_rbveccelemrtc == node->type() | 5768 | 12 | ); | 5769 | 12 | } |
bool exprtk::details::is_ivariable_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5756 | 12 | { | 5757 | 12 | return node && | 5758 | 12 | ( | 5759 | 12 | details::expression_node<T>::e_variable == node->type() || | 5760 | 12 | details::expression_node<T>::e_vecelem == node->type() || | 5761 | 12 | details::expression_node<T>::e_veccelem == node->type() || | 5762 | 12 | details::expression_node<T>::e_vecelemrtc == node->type() || | 5763 | 12 | details::expression_node<T>::e_veccelemrtc == node->type() || | 5764 | 12 | details::expression_node<T>::e_rbvecelem == node->type() || | 5765 | 12 | details::expression_node<T>::e_rbveccelem == node->type() || | 5766 | 12 | details::expression_node<T>::e_rbvecelemrtc == node->type() || | 5767 | 12 | details::expression_node<T>::e_rbveccelemrtc == node->type() | 5768 | 12 | ); | 5769 | 12 | } |
|
5770 | | |
5771 | | template <typename T> |
5772 | | inline bool is_vector_elem_node(const expression_node<T>* node) |
5773 | 36 | { |
5774 | 36 | return node && (details::expression_node<T>::e_vecelem == node->type()); |
5775 | 36 | } bool exprtk::details::is_vector_elem_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5773 | 18 | { | 5774 | 18 | return node && (details::expression_node<T>::e_vecelem == node->type()); | 5775 | 18 | } |
bool exprtk::details::is_vector_elem_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5773 | 18 | { | 5774 | 18 | return node && (details::expression_node<T>::e_vecelem == node->type()); | 5775 | 18 | } |
|
5776 | | |
5777 | | template <typename T> |
5778 | | inline bool is_vector_celem_node(const expression_node<T>* node) |
5779 | 36 | { |
5780 | 36 | return node && (details::expression_node<T>::e_veccelem == node->type()); |
5781 | 36 | } bool exprtk::details::is_vector_celem_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5779 | 18 | { | 5780 | 18 | return node && (details::expression_node<T>::e_veccelem == node->type()); | 5781 | 18 | } |
bool exprtk::details::is_vector_celem_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5779 | 18 | { | 5780 | 18 | return node && (details::expression_node<T>::e_veccelem == node->type()); | 5781 | 18 | } |
|
5782 | | |
5783 | | template <typename T> |
5784 | | inline bool is_vector_elem_rtc_node(const expression_node<T>* node) |
5785 | 36 | { |
5786 | 36 | return node && (details::expression_node<T>::e_vecelemrtc == node->type()); |
5787 | 36 | } bool exprtk::details::is_vector_elem_rtc_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5785 | 18 | { | 5786 | 18 | return node && (details::expression_node<T>::e_vecelemrtc == node->type()); | 5787 | 18 | } |
bool exprtk::details::is_vector_elem_rtc_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5785 | 18 | { | 5786 | 18 | return node && (details::expression_node<T>::e_vecelemrtc == node->type()); | 5787 | 18 | } |
|
5788 | | |
5789 | | template <typename T> |
5790 | | inline bool is_vector_celem_rtc_node(const expression_node<T>* node) |
5791 | 36 | { |
5792 | 36 | return node && (details::expression_node<T>::e_veccelemrtc == node->type()); |
5793 | 36 | } bool exprtk::details::is_vector_celem_rtc_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5791 | 18 | { | 5792 | 18 | return node && (details::expression_node<T>::e_veccelemrtc == node->type()); | 5793 | 18 | } |
bool exprtk::details::is_vector_celem_rtc_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5791 | 18 | { | 5792 | 18 | return node && (details::expression_node<T>::e_veccelemrtc == node->type()); | 5793 | 18 | } |
|
5794 | | |
5795 | | template <typename T> |
5796 | | inline bool is_rebasevector_elem_node(const expression_node<T>* node) |
5797 | 36 | { |
5798 | 36 | return node && (details::expression_node<T>::e_rbvecelem == node->type()); |
5799 | 36 | } bool exprtk::details::is_rebasevector_elem_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5797 | 18 | { | 5798 | 18 | return node && (details::expression_node<T>::e_rbvecelem == node->type()); | 5799 | 18 | } |
bool exprtk::details::is_rebasevector_elem_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5797 | 18 | { | 5798 | 18 | return node && (details::expression_node<T>::e_rbvecelem == node->type()); | 5799 | 18 | } |
|
5800 | | |
5801 | | template <typename T> |
5802 | | inline bool is_rebasevector_elem_rtc_node(const expression_node<T>* node) |
5803 | 36 | { |
5804 | 36 | return node && (details::expression_node<T>::e_rbvecelemrtc == node->type()); |
5805 | 36 | } bool exprtk::details::is_rebasevector_elem_rtc_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5803 | 18 | { | 5804 | 18 | return node && (details::expression_node<T>::e_rbvecelemrtc == node->type()); | 5805 | 18 | } |
bool exprtk::details::is_rebasevector_elem_rtc_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5803 | 18 | { | 5804 | 18 | return node && (details::expression_node<T>::e_rbvecelemrtc == node->type()); | 5805 | 18 | } |
|
5806 | | |
5807 | | template <typename T> |
5808 | | inline bool is_rebasevector_celem_rtc_node(const expression_node<T>* node) |
5809 | 26 | { |
5810 | 26 | return node && (details::expression_node<T>::e_rbveccelemrtc == node->type()); |
5811 | 26 | } bool exprtk::details::is_rebasevector_celem_rtc_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5809 | 13 | { | 5810 | 13 | return node && (details::expression_node<T>::e_rbveccelemrtc == node->type()); | 5811 | 13 | } |
bool exprtk::details::is_rebasevector_celem_rtc_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5809 | 13 | { | 5810 | 13 | return node && (details::expression_node<T>::e_rbveccelemrtc == node->type()); | 5811 | 13 | } |
|
5812 | | |
5813 | | template <typename T> |
5814 | | inline bool is_rebasevector_celem_node(const expression_node<T>* node) |
5815 | 36 | { |
5816 | 36 | return node && (details::expression_node<T>::e_rbveccelem == node->type()); |
5817 | 36 | } bool exprtk::details::is_rebasevector_celem_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5815 | 18 | { | 5816 | 18 | return node && (details::expression_node<T>::e_rbveccelem == node->type()); | 5817 | 18 | } |
bool exprtk::details::is_rebasevector_celem_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5815 | 18 | { | 5816 | 18 | return node && (details::expression_node<T>::e_rbveccelem == node->type()); | 5817 | 18 | } |
|
5818 | | |
5819 | | template <typename T> |
5820 | | inline bool is_vector_node(const expression_node<T>* node) |
5821 | 13.7k | { |
5822 | 13.7k | return node && (details::expression_node<T>::e_vector == node->type()); |
5823 | 13.7k | } bool exprtk::details::is_vector_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5821 | 11.8k | { | 5822 | 11.8k | return node && (details::expression_node<T>::e_vector == node->type()); | 5823 | 11.8k | } |
bool exprtk::details::is_vector_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5821 | 1.94k | { | 5822 | 1.94k | return node && (details::expression_node<T>::e_vector == node->type()); | 5823 | 1.94k | } |
|
5824 | | |
5825 | | template <typename T> |
5826 | | inline bool is_ivector_node(const expression_node<T>* node) |
5827 | 782k | { |
5828 | 782k | if (node) |
5829 | 782k | { |
5830 | 782k | switch (node->type()) |
5831 | 782k | { |
5832 | 0 | case details::expression_node<T>::e_vector : |
5833 | 0 | case details::expression_node<T>::e_vecvalass : |
5834 | 0 | case details::expression_node<T>::e_vecvecass : |
5835 | 0 | case details::expression_node<T>::e_vecopvalass : |
5836 | 0 | case details::expression_node<T>::e_vecopvecass : |
5837 | 0 | case details::expression_node<T>::e_vecvecswap : |
5838 | 0 | case details::expression_node<T>::e_vecvecarith : |
5839 | 0 | case details::expression_node<T>::e_vecvalarith : |
5840 | 0 | case details::expression_node<T>::e_valvecarith : |
5841 | 0 | case details::expression_node<T>::e_vecunaryop : |
5842 | 0 | case details::expression_node<T>::e_vecondition : return true; |
5843 | 782k | default : return false; |
5844 | 782k | } |
5845 | 782k | } |
5846 | 0 | else |
5847 | 0 | return false; |
5848 | 782k | } bool exprtk::details::is_ivector_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5827 | 681k | { | 5828 | 681k | if (node) | 5829 | 681k | { | 5830 | 681k | switch (node->type()) | 5831 | 681k | { | 5832 | 0 | case details::expression_node<T>::e_vector : | 5833 | 0 | case details::expression_node<T>::e_vecvalass : | 5834 | 0 | case details::expression_node<T>::e_vecvecass : | 5835 | 0 | case details::expression_node<T>::e_vecopvalass : | 5836 | 0 | case details::expression_node<T>::e_vecopvecass : | 5837 | 0 | case details::expression_node<T>::e_vecvecswap : | 5838 | 0 | case details::expression_node<T>::e_vecvecarith : | 5839 | 0 | case details::expression_node<T>::e_vecvalarith : | 5840 | 0 | case details::expression_node<T>::e_valvecarith : | 5841 | 0 | case details::expression_node<T>::e_vecunaryop : | 5842 | 0 | case details::expression_node<T>::e_vecondition : return true; | 5843 | 681k | default : return false; | 5844 | 681k | } | 5845 | 681k | } | 5846 | 0 | else | 5847 | 0 | return false; | 5848 | 681k | } |
bool exprtk::details::is_ivector_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5827 | 100k | { | 5828 | 100k | if (node) | 5829 | 100k | { | 5830 | 100k | switch (node->type()) | 5831 | 100k | { | 5832 | 0 | case details::expression_node<T>::e_vector : | 5833 | 0 | case details::expression_node<T>::e_vecvalass : | 5834 | 0 | case details::expression_node<T>::e_vecvecass : | 5835 | 0 | case details::expression_node<T>::e_vecopvalass : | 5836 | 0 | case details::expression_node<T>::e_vecopvecass : | 5837 | 0 | case details::expression_node<T>::e_vecvecswap : | 5838 | 0 | case details::expression_node<T>::e_vecvecarith : | 5839 | 0 | case details::expression_node<T>::e_vecvalarith : | 5840 | 0 | case details::expression_node<T>::e_valvecarith : | 5841 | 0 | case details::expression_node<T>::e_vecunaryop : | 5842 | 0 | case details::expression_node<T>::e_vecondition : return true; | 5843 | 100k | default : return false; | 5844 | 100k | } | 5845 | 100k | } | 5846 | 0 | else | 5847 | 0 | return false; | 5848 | 100k | } |
|
5849 | | |
5850 | | template <typename T> |
5851 | | inline bool is_constant_node(const expression_node<T>* node) |
5852 | 1.11M | { |
5853 | 1.11M | return node && |
5854 | 1.11M | ( |
5855 | 1.11M | details::expression_node<T>::e_constant == node->type() || |
5856 | 1.11M | details::expression_node<T>::e_stringconst == node->type() |
5857 | 1.11M | ); |
5858 | 1.11M | } bool exprtk::details::is_constant_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5852 | 969k | { | 5853 | 969k | return node && | 5854 | 969k | ( | 5855 | 969k | details::expression_node<T>::e_constant == node->type() || | 5856 | 969k | details::expression_node<T>::e_stringconst == node->type() | 5857 | 969k | ); | 5858 | 969k | } |
bool exprtk::details::is_constant_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5852 | 142k | { | 5853 | 142k | return node && | 5854 | 142k | ( | 5855 | 142k | details::expression_node<T>::e_constant == node->type() || | 5856 | 142k | details::expression_node<T>::e_stringconst == node->type() | 5857 | 142k | ); | 5858 | 142k | } |
|
5859 | | |
5860 | | template <typename T> |
5861 | | inline bool is_null_node(const expression_node<T>* node) |
5862 | 788k | { |
5863 | 788k | return node && (details::expression_node<T>::e_null == node->type()); |
5864 | 788k | } bool exprtk::details::is_null_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5862 | 690k | { | 5863 | 690k | return node && (details::expression_node<T>::e_null == node->type()); | 5864 | 690k | } |
bool exprtk::details::is_null_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5862 | 97.5k | { | 5863 | 97.5k | return node && (details::expression_node<T>::e_null == node->type()); | 5864 | 97.5k | } |
|
5865 | | |
5866 | | template <typename T> |
5867 | | inline bool is_break_node(const expression_node<T>* node) |
5868 | 407k | { |
5869 | 407k | return node && (details::expression_node<T>::e_break == node->type()); |
5870 | 407k | } bool exprtk::details::is_break_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5868 | 355k | { | 5869 | 355k | return node && (details::expression_node<T>::e_break == node->type()); | 5870 | 355k | } |
bool exprtk::details::is_break_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5868 | 51.6k | { | 5869 | 51.6k | return node && (details::expression_node<T>::e_break == node->type()); | 5870 | 51.6k | } |
|
5871 | | |
5872 | | template <typename T> |
5873 | | inline bool is_continue_node(const expression_node<T>* node) |
5874 | 407k | { |
5875 | 407k | return node && (details::expression_node<T>::e_continue == node->type()); |
5876 | 407k | } bool exprtk::details::is_continue_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5874 | 355k | { | 5875 | 355k | return node && (details::expression_node<T>::e_continue == node->type()); | 5876 | 355k | } |
bool exprtk::details::is_continue_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5874 | 51.6k | { | 5875 | 51.6k | return node && (details::expression_node<T>::e_continue == node->type()); | 5876 | 51.6k | } |
|
5877 | | |
5878 | | template <typename T> |
5879 | | inline bool is_swap_node(const expression_node<T>* node) |
5880 | | { |
5881 | | return node && (details::expression_node<T>::e_swap == node->type()); |
5882 | | } |
5883 | | |
5884 | | template <typename T> |
5885 | | inline bool is_function(const expression_node<T>* node) |
5886 | | { |
5887 | | return node && (details::expression_node<T>::e_function == node->type()); |
5888 | | } |
5889 | | |
5890 | | template <typename T> |
5891 | | inline bool is_vararg_node(const expression_node<T>* node) |
5892 | | { |
5893 | | return node && (details::expression_node<T>::e_vararg == node->type()); |
5894 | | } |
5895 | | |
5896 | | template <typename T> |
5897 | | inline bool is_return_node(const expression_node<T>* node) |
5898 | 392k | { |
5899 | 392k | return node && (details::expression_node<T>::e_return == node->type()); |
5900 | 392k | } bool exprtk::details::is_return_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5898 | 340k | { | 5899 | 340k | return node && (details::expression_node<T>::e_return == node->type()); | 5900 | 340k | } |
bool exprtk::details::is_return_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5898 | 51.7k | { | 5899 | 51.7k | return node && (details::expression_node<T>::e_return == node->type()); | 5900 | 51.7k | } |
|
5901 | | |
5902 | | template <typename T> class unary_node; |
5903 | | |
5904 | | template <typename T> |
5905 | | inline bool is_negate_node(const expression_node<T>* node) |
5906 | | { |
5907 | | if (node && is_unary_node(node)) |
5908 | | { |
5909 | | return (details::e_neg == static_cast<const unary_node<T>*>(node)->operation()); |
5910 | | } |
5911 | | else |
5912 | | return false; |
5913 | | } |
5914 | | |
5915 | | template <typename T> |
5916 | | inline bool is_assert_node(const expression_node<T>* node) |
5917 | | { |
5918 | | return node && (details::expression_node<T>::e_assert == node->type()); |
5919 | | } |
5920 | | |
5921 | | template <typename T> |
5922 | | inline bool branch_deletable(const expression_node<T>* node) |
5923 | 178k | { |
5924 | 178k | return (0 != node) && |
5925 | 178k | !is_variable_node(node) && |
5926 | 178k | !is_string_node (node) ; |
5927 | 178k | } bool exprtk::details::branch_deletable<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5923 | 152k | { | 5924 | 152k | return (0 != node) && | 5925 | 152k | !is_variable_node(node) && | 5926 | 152k | !is_string_node (node) ; | 5927 | 152k | } |
bool exprtk::details::branch_deletable<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5923 | 25.4k | { | 5924 | 25.4k | return (0 != node) && | 5925 | 25.4k | !is_variable_node(node) && | 5926 | 25.4k | !is_string_node (node) ; | 5927 | 25.4k | } |
|
5928 | | |
5929 | | template <std::size_t N, typename T> |
5930 | | inline bool all_nodes_valid(expression_node<T>* const (&b)[N]) |
5931 | 27.8k | { |
5932 | 67.8k | for (std::size_t i = 0; i < N; ++i) |
5933 | 39.9k | { |
5934 | 39.9k | if (0 == b[i]) return false; |
5935 | 39.9k | } |
5936 | | |
5937 | 27.8k | return true; |
5938 | 27.8k | } bool exprtk::details::all_nodes_valid<1ul, double>(exprtk::details::expression_node<double>* const (&) [1ul]) Line | Count | Source | 5931 | 13.8k | { | 5932 | 27.7k | for (std::size_t i = 0; i < N; ++i) | 5933 | 13.8k | { | 5934 | 13.8k | if (0 == b[i]) return false; | 5935 | 13.8k | } | 5936 | | | 5937 | 13.8k | return true; | 5938 | 13.8k | } |
bool exprtk::details::all_nodes_valid<2ul, double>(exprtk::details::expression_node<double>* const (&) [2ul]) Line | Count | Source | 5931 | 9.80k | { | 5932 | 29.4k | for (std::size_t i = 0; i < N; ++i) | 5933 | 19.6k | { | 5934 | 19.6k | if (0 == b[i]) return false; | 5935 | 19.6k | } | 5936 | | | 5937 | 9.80k | return true; | 5938 | 9.80k | } |
bool exprtk::details::all_nodes_valid<3ul, double>(exprtk::details::expression_node<double>* const (&) [3ul]) Line | Count | Source | 5931 | 9 | { | 5932 | 36 | for (std::size_t i = 0; i < N; ++i) | 5933 | 27 | { | 5934 | 27 | if (0 == b[i]) return false; | 5935 | 27 | } | 5936 | | | 5937 | 9 | return true; | 5938 | 9 | } |
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<4ul, double>(exprtk::details::expression_node<double>* const (&) [4ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<5ul, double>(exprtk::details::expression_node<double>* const (&) [5ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<6ul, double>(exprtk::details::expression_node<double>* const (&) [6ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<7ul, double>(exprtk::details::expression_node<double>* const (&) [7ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<8ul, double>(exprtk::details::expression_node<double>* const (&) [8ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<9ul, double>(exprtk::details::expression_node<double>* const (&) [9ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<10ul, double>(exprtk::details::expression_node<double>* const (&) [10ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<11ul, double>(exprtk::details::expression_node<double>* const (&) [11ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<12ul, double>(exprtk::details::expression_node<double>* const (&) [12ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<13ul, double>(exprtk::details::expression_node<double>* const (&) [13ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<14ul, double>(exprtk::details::expression_node<double>* const (&) [14ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<15ul, double>(exprtk::details::expression_node<double>* const (&) [15ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<16ul, double>(exprtk::details::expression_node<double>* const (&) [16ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<17ul, double>(exprtk::details::expression_node<double>* const (&) [17ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<18ul, double>(exprtk::details::expression_node<double>* const (&) [18ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<19ul, double>(exprtk::details::expression_node<double>* const (&) [19ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<20ul, double>(exprtk::details::expression_node<double>* const (&) [20ul]) bool exprtk::details::all_nodes_valid<1ul, float>(exprtk::details::expression_node<float>* const (&) [1ul]) Line | Count | Source | 5931 | 1.98k | { | 5932 | 3.97k | for (std::size_t i = 0; i < N; ++i) | 5933 | 1.98k | { | 5934 | 1.98k | if (0 == b[i]) return false; | 5935 | 1.98k | } | 5936 | | | 5937 | 1.98k | return true; | 5938 | 1.98k | } |
bool exprtk::details::all_nodes_valid<2ul, float>(exprtk::details::expression_node<float>* const (&) [2ul]) Line | Count | Source | 5931 | 2.20k | { | 5932 | 6.60k | for (std::size_t i = 0; i < N; ++i) | 5933 | 4.40k | { | 5934 | 4.40k | if (0 == b[i]) return false; | 5935 | 4.40k | } | 5936 | | | 5937 | 2.20k | return true; | 5938 | 2.20k | } |
bool exprtk::details::all_nodes_valid<3ul, float>(exprtk::details::expression_node<float>* const (&) [3ul]) Line | Count | Source | 5931 | 9 | { | 5932 | 36 | for (std::size_t i = 0; i < N; ++i) | 5933 | 27 | { | 5934 | 27 | if (0 == b[i]) return false; | 5935 | 27 | } | 5936 | | | 5937 | 9 | return true; | 5938 | 9 | } |
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<4ul, float>(exprtk::details::expression_node<float>* const (&) [4ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<5ul, float>(exprtk::details::expression_node<float>* const (&) [5ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<6ul, float>(exprtk::details::expression_node<float>* const (&) [6ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<7ul, float>(exprtk::details::expression_node<float>* const (&) [7ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<8ul, float>(exprtk::details::expression_node<float>* const (&) [8ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<9ul, float>(exprtk::details::expression_node<float>* const (&) [9ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<10ul, float>(exprtk::details::expression_node<float>* const (&) [10ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<11ul, float>(exprtk::details::expression_node<float>* const (&) [11ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<12ul, float>(exprtk::details::expression_node<float>* const (&) [12ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<13ul, float>(exprtk::details::expression_node<float>* const (&) [13ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<14ul, float>(exprtk::details::expression_node<float>* const (&) [14ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<15ul, float>(exprtk::details::expression_node<float>* const (&) [15ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<16ul, float>(exprtk::details::expression_node<float>* const (&) [16ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<17ul, float>(exprtk::details::expression_node<float>* const (&) [17ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<18ul, float>(exprtk::details::expression_node<float>* const (&) [18ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<19ul, float>(exprtk::details::expression_node<float>* const (&) [19ul]) Unexecuted instantiation: bool exprtk::details::all_nodes_valid<20ul, float>(exprtk::details::expression_node<float>* const (&) [20ul]) |
5939 | | |
5940 | | template <typename T, |
5941 | | typename Allocator, |
5942 | | template <typename, typename> class Sequence> |
5943 | | inline bool all_nodes_valid(const Sequence<expression_node<T>*,Allocator>& b) |
5944 | 14 | { |
5945 | 66 | for (std::size_t i = 0; i < b.size(); ++i) |
5946 | 52 | { |
5947 | 52 | if (0 == b[i]) return false; |
5948 | 52 | } |
5949 | | |
5950 | 14 | return true; |
5951 | 14 | } bool exprtk::details::all_nodes_valid<double, std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Line | Count | Source | 5944 | 7 | { | 5945 | 33 | for (std::size_t i = 0; i < b.size(); ++i) | 5946 | 26 | { | 5947 | 26 | if (0 == b[i]) return false; | 5948 | 26 | } | 5949 | | | 5950 | 7 | return true; | 5951 | 7 | } |
bool exprtk::details::all_nodes_valid<float, std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Line | Count | Source | 5944 | 7 | { | 5945 | 33 | for (std::size_t i = 0; i < b.size(); ++i) | 5946 | 26 | { | 5947 | 26 | if (0 == b[i]) return false; | 5948 | 26 | } | 5949 | | | 5950 | 7 | return true; | 5951 | 7 | } |
|
5952 | | |
5953 | | template <std::size_t N, typename T> |
5954 | | inline bool all_nodes_variables(expression_node<T>* const (&b)[N]) |
5955 | 18 | { |
5956 | 18 | for (std::size_t i = 0; i < N; ++i) |
5957 | 18 | { |
5958 | 18 | if (0 == b[i]) |
5959 | 0 | return false; |
5960 | 18 | else if (!is_variable_node(b[i])) |
5961 | 18 | return false; |
5962 | 18 | } |
5963 | | |
5964 | 0 | return true; |
5965 | 18 | } bool exprtk::details::all_nodes_variables<3ul, double>(exprtk::details::expression_node<double>* const (&) [3ul]) Line | Count | Source | 5955 | 9 | { | 5956 | 9 | for (std::size_t i = 0; i < N; ++i) | 5957 | 9 | { | 5958 | 9 | if (0 == b[i]) | 5959 | 0 | return false; | 5960 | 9 | else if (!is_variable_node(b[i])) | 5961 | 9 | return false; | 5962 | 9 | } | 5963 | | | 5964 | 0 | return true; | 5965 | 9 | } |
Unexecuted instantiation: bool exprtk::details::all_nodes_variables<4ul, double>(exprtk::details::expression_node<double>* const (&) [4ul]) bool exprtk::details::all_nodes_variables<3ul, float>(exprtk::details::expression_node<float>* const (&) [3ul]) Line | Count | Source | 5955 | 9 | { | 5956 | 9 | for (std::size_t i = 0; i < N; ++i) | 5957 | 9 | { | 5958 | 9 | if (0 == b[i]) | 5959 | 0 | return false; | 5960 | 9 | else if (!is_variable_node(b[i])) | 5961 | 9 | return false; | 5962 | 9 | } | 5963 | | | 5964 | 0 | return true; | 5965 | 9 | } |
Unexecuted instantiation: bool exprtk::details::all_nodes_variables<4ul, float>(exprtk::details::expression_node<float>* const (&) [4ul]) |
5966 | | |
5967 | | template <typename T, |
5968 | | typename Allocator, |
5969 | | template <typename, typename> class Sequence> |
5970 | | inline bool all_nodes_variables(const Sequence<expression_node<T>*,Allocator>& b) |
5971 | 14 | { |
5972 | 14 | for (std::size_t i = 0; i < b.size(); ++i) |
5973 | 14 | { |
5974 | 14 | if (0 == b[i]) |
5975 | 0 | return false; |
5976 | 14 | else if (!is_variable_node(b[i])) |
5977 | 14 | return false; |
5978 | 14 | } |
5979 | | |
5980 | 0 | return true; |
5981 | 14 | } bool exprtk::details::all_nodes_variables<double, std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Line | Count | Source | 5971 | 7 | { | 5972 | 7 | for (std::size_t i = 0; i < b.size(); ++i) | 5973 | 7 | { | 5974 | 7 | if (0 == b[i]) | 5975 | 0 | return false; | 5976 | 7 | else if (!is_variable_node(b[i])) | 5977 | 7 | return false; | 5978 | 7 | } | 5979 | | | 5980 | 0 | return true; | 5981 | 7 | } |
bool exprtk::details::all_nodes_variables<float, std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Line | Count | Source | 5971 | 7 | { | 5972 | 7 | for (std::size_t i = 0; i < b.size(); ++i) | 5973 | 7 | { | 5974 | 7 | if (0 == b[i]) | 5975 | 0 | return false; | 5976 | 7 | else if (!is_variable_node(b[i])) | 5977 | 7 | return false; | 5978 | 7 | } | 5979 | | | 5980 | 0 | return true; | 5981 | 7 | } |
|
5982 | | |
5983 | | template <typename Node> |
5984 | | class node_collection_destructor |
5985 | | { |
5986 | | public: |
5987 | | |
5988 | | typedef node_collector_interface<Node> nci_t; |
5989 | | |
5990 | | typedef typename nci_t::node_ptr_t node_ptr_t; |
5991 | | typedef typename nci_t::node_pp_t node_pp_t; |
5992 | | typedef typename nci_t::noderef_list_t noderef_list_t; |
5993 | | |
5994 | | static void delete_nodes(node_ptr_t& root) |
5995 | 157k | { |
5996 | 157k | std::vector<node_pp_t> node_delete_list; |
5997 | 157k | node_delete_list.reserve(1000); |
5998 | | |
5999 | 157k | collect_nodes(root, node_delete_list); |
6000 | | |
6001 | 476k | for (std::size_t i = 0; i < node_delete_list.size(); ++i) |
6002 | 319k | { |
6003 | 319k | node_ptr_t& node = *node_delete_list[i]; |
6004 | 319k | exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node))); |
6005 | 319k | delete node; |
6006 | 319k | node = reinterpret_cast<node_ptr_t>(0); |
6007 | 319k | } |
6008 | 157k | } exprtk::details::node_collection_destructor<exprtk::details::expression_node<double> >::delete_nodes(exprtk::details::expression_node<double>*&) Line | Count | Source | 5995 | 127k | { | 5996 | 127k | std::vector<node_pp_t> node_delete_list; | 5997 | 127k | node_delete_list.reserve(1000); | 5998 | | | 5999 | 127k | collect_nodes(root, node_delete_list); | 6000 | | | 6001 | 399k | for (std::size_t i = 0; i < node_delete_list.size(); ++i) | 6002 | 272k | { | 6003 | 272k | node_ptr_t& node = *node_delete_list[i]; | 6004 | 272k | exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node))); | 6005 | 272k | delete node; | 6006 | 272k | node = reinterpret_cast<node_ptr_t>(0); | 6007 | 272k | } | 6008 | 127k | } |
exprtk::details::node_collection_destructor<exprtk::details::expression_node<float> >::delete_nodes(exprtk::details::expression_node<float>*&) Line | Count | Source | 5995 | 29.6k | { | 5996 | 29.6k | std::vector<node_pp_t> node_delete_list; | 5997 | 29.6k | node_delete_list.reserve(1000); | 5998 | | | 5999 | 29.6k | collect_nodes(root, node_delete_list); | 6000 | | | 6001 | 76.9k | for (std::size_t i = 0; i < node_delete_list.size(); ++i) | 6002 | 47.2k | { | 6003 | 47.2k | node_ptr_t& node = *node_delete_list[i]; | 6004 | 47.2k | exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node))); | 6005 | 47.2k | delete node; | 6006 | 47.2k | node = reinterpret_cast<node_ptr_t>(0); | 6007 | 47.2k | } | 6008 | 29.6k | } |
|
6009 | | |
6010 | | private: |
6011 | | |
6012 | | static void collect_nodes(node_ptr_t& root, noderef_list_t& node_delete_list) |
6013 | 157k | { |
6014 | 157k | std::deque<node_ptr_t> node_list; |
6015 | 157k | node_list.push_back(root); |
6016 | 157k | node_delete_list.push_back(&root); |
6017 | | |
6018 | 157k | noderef_list_t child_node_delete_list; |
6019 | 157k | child_node_delete_list.reserve(1000); |
6020 | | |
6021 | 476k | while (!node_list.empty()) |
6022 | 319k | { |
6023 | 319k | node_list.front()->collect_nodes(child_node_delete_list); |
6024 | | |
6025 | 319k | if (!child_node_delete_list.empty()) |
6026 | 112k | { |
6027 | 274k | for (std::size_t i = 0; i < child_node_delete_list.size(); ++i) |
6028 | 162k | { |
6029 | 162k | node_pp_t& node = child_node_delete_list[i]; |
6030 | | |
6031 | 162k | if (0 == (*node)) |
6032 | 0 | { |
6033 | 0 | exprtk_debug(("ncd::collect_nodes() - null node encountered.\n")); |
6034 | 0 | } |
6035 | | |
6036 | 162k | node_list.push_back(*node); |
6037 | 162k | } |
6038 | | |
6039 | 112k | node_delete_list.insert( |
6040 | 112k | node_delete_list.end(), |
6041 | 112k | child_node_delete_list.begin(), child_node_delete_list.end()); |
6042 | | |
6043 | 112k | child_node_delete_list.clear(); |
6044 | 112k | } |
6045 | | |
6046 | 319k | node_list.pop_front(); |
6047 | 319k | } |
6048 | | |
6049 | 157k | std::reverse(node_delete_list.begin(), node_delete_list.end()); |
6050 | 157k | } exprtk::details::node_collection_destructor<exprtk::details::expression_node<double> >::collect_nodes(exprtk::details::expression_node<double>*&, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 6013 | 127k | { | 6014 | 127k | std::deque<node_ptr_t> node_list; | 6015 | 127k | node_list.push_back(root); | 6016 | 127k | node_delete_list.push_back(&root); | 6017 | | | 6018 | 127k | noderef_list_t child_node_delete_list; | 6019 | 127k | child_node_delete_list.reserve(1000); | 6020 | | | 6021 | 399k | while (!node_list.empty()) | 6022 | 272k | { | 6023 | 272k | node_list.front()->collect_nodes(child_node_delete_list); | 6024 | | | 6025 | 272k | if (!child_node_delete_list.empty()) | 6026 | 100k | { | 6027 | 245k | for (std::size_t i = 0; i < child_node_delete_list.size(); ++i) | 6028 | 144k | { | 6029 | 144k | node_pp_t& node = child_node_delete_list[i]; | 6030 | | | 6031 | 144k | if (0 == (*node)) | 6032 | 0 | { | 6033 | 0 | exprtk_debug(("ncd::collect_nodes() - null node encountered.\n")); | 6034 | 0 | } | 6035 | | | 6036 | 144k | node_list.push_back(*node); | 6037 | 144k | } | 6038 | | | 6039 | 100k | node_delete_list.insert( | 6040 | 100k | node_delete_list.end(), | 6041 | 100k | child_node_delete_list.begin(), child_node_delete_list.end()); | 6042 | | | 6043 | 100k | child_node_delete_list.clear(); | 6044 | 100k | } | 6045 | | | 6046 | 272k | node_list.pop_front(); | 6047 | 272k | } | 6048 | | | 6049 | 127k | std::reverse(node_delete_list.begin(), node_delete_list.end()); | 6050 | 127k | } |
exprtk::details::node_collection_destructor<exprtk::details::expression_node<float> >::collect_nodes(exprtk::details::expression_node<float>*&, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 6013 | 29.6k | { | 6014 | 29.6k | std::deque<node_ptr_t> node_list; | 6015 | 29.6k | node_list.push_back(root); | 6016 | 29.6k | node_delete_list.push_back(&root); | 6017 | | | 6018 | 29.6k | noderef_list_t child_node_delete_list; | 6019 | 29.6k | child_node_delete_list.reserve(1000); | 6020 | | | 6021 | 76.9k | while (!node_list.empty()) | 6022 | 47.2k | { | 6023 | 47.2k | node_list.front()->collect_nodes(child_node_delete_list); | 6024 | | | 6025 | 47.2k | if (!child_node_delete_list.empty()) | 6026 | 12.3k | { | 6027 | 29.9k | for (std::size_t i = 0; i < child_node_delete_list.size(); ++i) | 6028 | 17.6k | { | 6029 | 17.6k | node_pp_t& node = child_node_delete_list[i]; | 6030 | | | 6031 | 17.6k | if (0 == (*node)) | 6032 | 0 | { | 6033 | 0 | exprtk_debug(("ncd::collect_nodes() - null node encountered.\n")); | 6034 | 0 | } | 6035 | | | 6036 | 17.6k | node_list.push_back(*node); | 6037 | 17.6k | } | 6038 | | | 6039 | 12.3k | node_delete_list.insert( | 6040 | 12.3k | node_delete_list.end(), | 6041 | 12.3k | child_node_delete_list.begin(), child_node_delete_list.end()); | 6042 | | | 6043 | 12.3k | child_node_delete_list.clear(); | 6044 | 12.3k | } | 6045 | | | 6046 | 47.2k | node_list.pop_front(); | 6047 | 47.2k | } | 6048 | | | 6049 | 29.6k | std::reverse(node_delete_list.begin(), node_delete_list.end()); | 6050 | 29.6k | } |
|
6051 | | }; |
6052 | | |
6053 | | template <typename NodeAllocator, typename T, std::size_t N> |
6054 | | inline void free_all_nodes(NodeAllocator& node_allocator, expression_node<T>* (&b)[N]) |
6055 | 104 | { |
6056 | 312 | for (std::size_t i = 0; i < N; ++i) |
6057 | 208 | { |
6058 | 208 | free_node(node_allocator,b[i]); |
6059 | 208 | } |
6060 | 104 | } Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 1ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [1ul]) void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 2ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [2ul]) Line | Count | Source | 6055 | 52 | { | 6056 | 156 | for (std::size_t i = 0; i < N; ++i) | 6057 | 104 | { | 6058 | 104 | free_node(node_allocator,b[i]); | 6059 | 104 | } | 6060 | 52 | } |
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 3ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [3ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 4ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [4ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 5ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [5ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 6ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [6ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 7ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [7ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 8ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [8ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 9ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [9ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 10ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [10ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 11ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [11ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 12ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [12ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 13ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [13ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 14ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [14ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 15ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [15ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 16ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [16ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 17ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [17ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 18ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [18ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 19ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [19ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 20ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [20ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 1ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [1ul]) void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 2ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [2ul]) Line | Count | Source | 6055 | 52 | { | 6056 | 156 | for (std::size_t i = 0; i < N; ++i) | 6057 | 104 | { | 6058 | 104 | free_node(node_allocator,b[i]); | 6059 | 104 | } | 6060 | 52 | } |
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 3ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [3ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 4ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [4ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 5ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [5ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 6ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [6ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 7ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [7ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 8ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [8ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 9ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [9ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 10ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [10ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 11ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [11ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 12ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [12ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 13ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [13ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 14ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [14ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 15ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [15ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 16ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [16ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 17ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [17ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 18ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [18ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 19ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [19ul]) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 20ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [20ul]) |
6061 | | |
6062 | | template <typename NodeAllocator, |
6063 | | typename T, |
6064 | | typename Allocator, |
6065 | | template <typename, typename> class Sequence> |
6066 | | inline void free_all_nodes(NodeAllocator& node_allocator, Sequence<expression_node<T>*,Allocator>& b) |
6067 | 0 | { |
6068 | 0 | for (std::size_t i = 0; i < b.size(); ++i) |
6069 | 0 | { |
6070 | 0 | free_node(node_allocator,b[i]); |
6071 | 0 | } |
6072 | |
|
6073 | 0 | b.clear(); |
6074 | 0 | } Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(exprtk::details::node_allocator&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> >&) Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(exprtk::details::node_allocator&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> >&) |
6075 | | |
6076 | | template <typename NodeAllocator, typename T> |
6077 | | inline void free_node(NodeAllocator&, expression_node<T>*& node) |
6078 | 147k | { |
6079 | 147k | if ((0 == node) || is_variable_node(node) || is_string_node(node)) |
6080 | 5.16k | { |
6081 | 5.16k | return; |
6082 | 5.16k | } |
6083 | | |
6084 | 142k | node_collection_destructor<expression_node<T> > |
6085 | 142k | ::delete_nodes(node); |
6086 | 142k | } void exprtk::details::free_node<exprtk::details::node_allocator, double>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>*&) Line | Count | Source | 6078 | 122k | { | 6079 | 122k | if ((0 == node) || is_variable_node(node) || is_string_node(node)) | 6080 | 2.59k | { | 6081 | 2.59k | return; | 6082 | 2.59k | } | 6083 | | | 6084 | 119k | node_collection_destructor<expression_node<T> > | 6085 | 119k | ::delete_nodes(node); | 6086 | 119k | } |
void exprtk::details::free_node<exprtk::details::node_allocator, float>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>*&) Line | Count | Source | 6078 | 24.8k | { | 6079 | 24.8k | if ((0 == node) || is_variable_node(node) || is_string_node(node)) | 6080 | 2.57k | { | 6081 | 2.57k | return; | 6082 | 2.57k | } | 6083 | | | 6084 | 22.2k | node_collection_destructor<expression_node<T> > | 6085 | 22.2k | ::delete_nodes(node); | 6086 | 22.2k | } |
|
6087 | | |
6088 | | template <typename T> |
6089 | | inline void destroy_node(expression_node<T>*& node) |
6090 | 14.8k | { |
6091 | 14.8k | if (0 != node) |
6092 | 14.8k | { |
6093 | 14.8k | node_collection_destructor<expression_node<T> > |
6094 | 14.8k | ::delete_nodes(node); |
6095 | 14.8k | } |
6096 | 14.8k | } void exprtk::details::destroy_node<double>(exprtk::details::expression_node<double>*&) Line | Count | Source | 6090 | 7.45k | { | 6091 | 7.45k | if (0 != node) | 6092 | 7.45k | { | 6093 | 7.45k | node_collection_destructor<expression_node<T> > | 6094 | 7.45k | ::delete_nodes(node); | 6095 | 7.45k | } | 6096 | 7.45k | } |
void exprtk::details::destroy_node<float>(exprtk::details::expression_node<float>*&) Line | Count | Source | 6090 | 7.44k | { | 6091 | 7.44k | if (0 != node) | 6092 | 7.44k | { | 6093 | 7.44k | node_collection_destructor<expression_node<T> > | 6094 | 7.44k | ::delete_nodes(node); | 6095 | 7.44k | } | 6096 | 7.44k | } |
|
6097 | | |
6098 | | template <typename Node> |
6099 | | struct node_depth_base |
6100 | | { |
6101 | | typedef Node* node_ptr_t; |
6102 | | typedef std::pair<node_ptr_t,bool> nb_pair_t; |
6103 | | |
6104 | | node_depth_base() |
6105 | 390k | : depth_set(false) |
6106 | 390k | , depth(0) |
6107 | 390k | {} exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::node_depth_base() Line | Count | Source | 6105 | 307k | : depth_set(false) | 6106 | 307k | , depth(0) | 6107 | 307k | {} |
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::node_depth_base() Line | Count | Source | 6105 | 82.8k | : depth_set(false) | 6106 | 82.8k | , depth(0) | 6107 | 82.8k | {} |
|
6108 | | |
6109 | | virtual ~node_depth_base() |
6110 | 390k | {} exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::~node_depth_base() Line | Count | Source | 6110 | 307k | {} |
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::~node_depth_base() Line | Count | Source | 6110 | 82.8k | {} |
|
6111 | | |
6112 | 471k | virtual std::size_t node_depth() const { return 1; } exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::node_depth() const Line | Count | Source | 6112 | 402k | virtual std::size_t node_depth() const { return 1; } |
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::node_depth() const Line | Count | Source | 6112 | 69.0k | virtual std::size_t node_depth() const { return 1; } |
|
6113 | | |
6114 | | std::size_t compute_node_depth(const Node* const& node) const |
6115 | 52 | { |
6116 | 52 | if (!depth_set) |
6117 | 14 | { |
6118 | 14 | depth = 1 + (node ? node->node_depth() : 0); |
6119 | 14 | depth_set = true; |
6120 | 14 | } |
6121 | | |
6122 | 52 | return depth; |
6123 | 52 | } exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth(exprtk::details::expression_node<double> const* const&) const Line | Count | Source | 6115 | 26 | { | 6116 | 26 | if (!depth_set) | 6117 | 7 | { | 6118 | 7 | depth = 1 + (node ? node->node_depth() : 0); | 6119 | 7 | depth_set = true; | 6120 | 7 | } | 6121 | | | 6122 | 26 | return depth; | 6123 | 26 | } |
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth(exprtk::details::expression_node<float> const* const&) const Line | Count | Source | 6115 | 26 | { | 6116 | 26 | if (!depth_set) | 6117 | 7 | { | 6118 | 7 | depth = 1 + (node ? node->node_depth() : 0); | 6119 | 7 | depth_set = true; | 6120 | 7 | } | 6121 | | | 6122 | 26 | return depth; | 6123 | 26 | } |
|
6124 | | |
6125 | | std::size_t compute_node_depth(const nb_pair_t& branch) const |
6126 | 148k | { |
6127 | 148k | if (!depth_set) |
6128 | 62.1k | { |
6129 | 62.1k | depth = 1 + (branch.first ? branch.first->node_depth() : 0); |
6130 | 62.1k | depth_set = true; |
6131 | 62.1k | } |
6132 | | |
6133 | 148k | return depth; |
6134 | 148k | } exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const Line | Count | Source | 6126 | 133k | { | 6127 | 133k | if (!depth_set) | 6128 | 55.3k | { | 6129 | 55.3k | depth = 1 + (branch.first ? branch.first->node_depth() : 0); | 6130 | 55.3k | depth_set = true; | 6131 | 55.3k | } | 6132 | | | 6133 | 133k | return depth; | 6134 | 133k | } |
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const Line | Count | Source | 6126 | 15.3k | { | 6127 | 15.3k | if (!depth_set) | 6128 | 6.85k | { | 6129 | 6.85k | depth = 1 + (branch.first ? branch.first->node_depth() : 0); | 6130 | 6.85k | depth_set = true; | 6131 | 6.85k | } | 6132 | | | 6133 | 15.3k | return depth; | 6134 | 15.3k | } |
|
6135 | | |
6136 | | template <std::size_t N> |
6137 | | std::size_t compute_node_depth(const nb_pair_t (&branch)[N]) const |
6138 | 104k | { |
6139 | 104k | if (!depth_set) |
6140 | 50.3k | { |
6141 | 50.3k | depth = 0; |
6142 | | |
6143 | 151k | for (std::size_t i = 0; i < N; ++i) |
6144 | 100k | { |
6145 | 100k | if (branch[i].first) |
6146 | 100k | { |
6147 | 100k | depth = std::max(depth,branch[i].first->node_depth()); |
6148 | 100k | } |
6149 | 100k | } |
6150 | | |
6151 | 50.3k | depth += 1; |
6152 | 50.3k | depth_set = true; |
6153 | 50.3k | } |
6154 | | |
6155 | 104k | return depth; |
6156 | 104k | } unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<2ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [2ul]) const Line | Count | Source | 6138 | 92.2k | { | 6139 | 92.2k | if (!depth_set) | 6140 | 44.8k | { | 6141 | 44.8k | depth = 0; | 6142 | | | 6143 | 134k | for (std::size_t i = 0; i < N; ++i) | 6144 | 89.7k | { | 6145 | 89.7k | if (branch[i].first) | 6146 | 89.7k | { | 6147 | 89.7k | depth = std::max(depth,branch[i].first->node_depth()); | 6148 | 89.7k | } | 6149 | 89.7k | } | 6150 | | | 6151 | 44.8k | depth += 1; | 6152 | 44.8k | depth_set = true; | 6153 | 44.8k | } | 6154 | | | 6155 | 92.2k | return depth; | 6156 | 92.2k | } |
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<3ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [3ul]) const Line | Count | Source | 6138 | 27 | { | 6139 | 27 | if (!depth_set) | 6140 | 9 | { | 6141 | 9 | depth = 0; | 6142 | | | 6143 | 36 | for (std::size_t i = 0; i < N; ++i) | 6144 | 27 | { | 6145 | 27 | if (branch[i].first) | 6146 | 27 | { | 6147 | 27 | depth = std::max(depth,branch[i].first->node_depth()); | 6148 | 27 | } | 6149 | 27 | } | 6150 | | | 6151 | 9 | depth += 1; | 6152 | 9 | depth_set = true; | 6153 | 9 | } | 6154 | | | 6155 | 27 | return depth; | 6156 | 27 | } |
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<4ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [4ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<1ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [1ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<5ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [5ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<6ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [6ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<7ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [7ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<8ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [8ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<9ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [9ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<10ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [10ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<11ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [11ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<12ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [12ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<13ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [13ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<14ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [14ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<15ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [15ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<16ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [16ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<17ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [17ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<18ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [18ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<19ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [19ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<20ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [20ul]) const unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<2ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [2ul]) const Line | Count | Source | 6138 | 12.4k | { | 6139 | 12.4k | if (!depth_set) | 6140 | 5.49k | { | 6141 | 5.49k | depth = 0; | 6142 | | | 6143 | 16.4k | for (std::size_t i = 0; i < N; ++i) | 6144 | 10.9k | { | 6145 | 10.9k | if (branch[i].first) | 6146 | 10.9k | { | 6147 | 10.9k | depth = std::max(depth,branch[i].first->node_depth()); | 6148 | 10.9k | } | 6149 | 10.9k | } | 6150 | | | 6151 | 5.49k | depth += 1; | 6152 | 5.49k | depth_set = true; | 6153 | 5.49k | } | 6154 | | | 6155 | 12.4k | return depth; | 6156 | 12.4k | } |
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<3ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [3ul]) const Line | Count | Source | 6138 | 27 | { | 6139 | 27 | if (!depth_set) | 6140 | 9 | { | 6141 | 9 | depth = 0; | 6142 | | | 6143 | 36 | for (std::size_t i = 0; i < N; ++i) | 6144 | 27 | { | 6145 | 27 | if (branch[i].first) | 6146 | 27 | { | 6147 | 27 | depth = std::max(depth,branch[i].first->node_depth()); | 6148 | 27 | } | 6149 | 27 | } | 6150 | | | 6151 | 9 | depth += 1; | 6152 | 9 | depth_set = true; | 6153 | 9 | } | 6154 | | | 6155 | 27 | return depth; | 6156 | 27 | } |
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<4ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [4ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<1ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [1ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<5ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [5ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<6ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [6ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<7ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [7ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<8ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [8ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<9ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [9ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<10ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [10ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<11ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [11ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<12ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [12ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<13ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [13ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<14ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [14ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<15ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [15ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<16ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [16ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<17ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [17ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<18ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [18ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<19ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [19ul]) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<20ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [20ul]) const |
6157 | | |
6158 | | template <typename BranchType> |
6159 | | std::size_t max_node_depth(const BranchType& n0, const BranchType& n1) const |
6160 | 0 | { |
6161 | 0 | return std::max(compute_node_depth(n0), compute_node_depth(n1)); |
6162 | 0 | } Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const |
6163 | | |
6164 | | template <typename BranchType> |
6165 | | std::size_t max_node_depth(const BranchType& n0, const BranchType& n1, const BranchType& n2) const |
6166 | 16 | { |
6167 | 16 | return std::max(compute_node_depth(n0), |
6168 | 16 | std::max(compute_node_depth(n1), compute_node_depth(n2))); |
6169 | 16 | } unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const Line | Count | Source | 6166 | 8 | { | 6167 | 8 | return std::max(compute_node_depth(n0), | 6168 | 8 | std::max(compute_node_depth(n1), compute_node_depth(n2))); | 6169 | 8 | } |
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const Line | Count | Source | 6166 | 8 | { | 6167 | 8 | return std::max(compute_node_depth(n0), | 6168 | 8 | std::max(compute_node_depth(n1), compute_node_depth(n2))); | 6169 | 8 | } |
|
6170 | | |
6171 | | template <typename BranchType> |
6172 | | std::size_t max_node_depth(const BranchType& n0, const BranchType& n1, |
6173 | | const BranchType& n2, const BranchType& n3) const |
6174 | 0 | { |
6175 | 0 | return std::max( |
6176 | 0 | std::max(compute_node_depth(n0), compute_node_depth(n1)), |
6177 | 0 | std::max(compute_node_depth(n2), compute_node_depth(n3))); |
6178 | 0 | } Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const |
6179 | | |
6180 | | template <typename BranchType> |
6181 | | std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1) const |
6182 | 0 | { |
6183 | 0 | if (!depth_set) |
6184 | 0 | { |
6185 | 0 | depth = 1 + max_node_depth(n0, n1); |
6186 | 0 | depth_set = true; |
6187 | 0 | } |
6188 | |
|
6189 | 0 | return depth; |
6190 | 0 | } Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const |
6191 | | |
6192 | | template <typename BranchType> |
6193 | | std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1, |
6194 | | const BranchType& n2) const |
6195 | 18 | { |
6196 | 18 | if (!depth_set) |
6197 | 16 | { |
6198 | 16 | depth = 1 + max_node_depth(n0, n1, n2); |
6199 | 16 | depth_set = true; |
6200 | 16 | } |
6201 | | |
6202 | 18 | return depth; |
6203 | 18 | } unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const Line | Count | Source | 6195 | 9 | { | 6196 | 9 | if (!depth_set) | 6197 | 8 | { | 6198 | 8 | depth = 1 + max_node_depth(n0, n1, n2); | 6199 | 8 | depth_set = true; | 6200 | 8 | } | 6201 | | | 6202 | 9 | return depth; | 6203 | 9 | } |
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const Line | Count | Source | 6195 | 9 | { | 6196 | 9 | if (!depth_set) | 6197 | 8 | { | 6198 | 8 | depth = 1 + max_node_depth(n0, n1, n2); | 6199 | 8 | depth_set = true; | 6200 | 8 | } | 6201 | | | 6202 | 9 | return depth; | 6203 | 9 | } |
|
6204 | | |
6205 | | template <typename BranchType> |
6206 | | std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1, |
6207 | | const BranchType& n2, const BranchType& n3) const |
6208 | 0 | { |
6209 | 0 | if (!depth_set) |
6210 | 0 | { |
6211 | 0 | depth = 1 + max_node_depth(n0, n1, n2, n3); |
6212 | 0 | depth_set = true; |
6213 | 0 | } |
6214 | |
|
6215 | 0 | return depth; |
6216 | 0 | } Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const |
6217 | | |
6218 | | template <typename Allocator, |
6219 | | template <typename, typename> class Sequence> |
6220 | | std::size_t compute_node_depth(const Sequence<node_ptr_t, Allocator>& branch_list) const |
6221 | 0 | { |
6222 | 0 | if (!depth_set) |
6223 | 0 | { |
6224 | 0 | for (std::size_t i = 0; i < branch_list.size(); ++i) |
6225 | 0 | { |
6226 | 0 | if (branch_list[i]) |
6227 | 0 | { |
6228 | 0 | depth = std::max(depth, compute_node_depth(branch_list[i])); |
6229 | 0 | } |
6230 | 0 | } |
6231 | |
|
6232 | 0 | depth_set = true; |
6233 | 0 | } |
6234 | |
|
6235 | 0 | return depth; |
6236 | 0 | } Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) const Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) const |
6237 | | |
6238 | | template <typename Allocator, |
6239 | | template <typename, typename> class Sequence> |
6240 | | std::size_t compute_node_depth(const Sequence<nb_pair_t,Allocator>& branch_list) const |
6241 | 14 | { |
6242 | 14 | if (!depth_set) |
6243 | 14 | { |
6244 | 66 | for (std::size_t i = 0; i < branch_list.size(); ++i) |
6245 | 52 | { |
6246 | 52 | if (branch_list[i].first) |
6247 | 52 | { |
6248 | 52 | depth = std::max(depth, compute_node_depth(branch_list[i].first)); |
6249 | 52 | } |
6250 | 52 | } |
6251 | | |
6252 | 14 | depth_set = true; |
6253 | 14 | } |
6254 | | |
6255 | 14 | return depth; |
6256 | 14 | } unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<std::__1::allocator<std::__1::pair<exprtk::details::expression_node<double>*, bool> >, std::__1::vector>(std::__1::vector<std::__1::pair<exprtk::details::expression_node<double>*, bool>, std::__1::allocator<std::__1::pair<exprtk::details::expression_node<double>*, bool> > > const&) const Line | Count | Source | 6241 | 7 | { | 6242 | 7 | if (!depth_set) | 6243 | 7 | { | 6244 | 33 | for (std::size_t i = 0; i < branch_list.size(); ++i) | 6245 | 26 | { | 6246 | 26 | if (branch_list[i].first) | 6247 | 26 | { | 6248 | 26 | depth = std::max(depth, compute_node_depth(branch_list[i].first)); | 6249 | 26 | } | 6250 | 26 | } | 6251 | | | 6252 | 7 | depth_set = true; | 6253 | 7 | } | 6254 | | | 6255 | 7 | return depth; | 6256 | 7 | } |
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<std::__1::allocator<std::__1::pair<exprtk::details::expression_node<float>*, bool> >, std::__1::vector>(std::__1::vector<std::__1::pair<exprtk::details::expression_node<float>*, bool>, std::__1::allocator<std::__1::pair<exprtk::details::expression_node<float>*, bool> > > const&) const Line | Count | Source | 6241 | 7 | { | 6242 | 7 | if (!depth_set) | 6243 | 7 | { | 6244 | 33 | for (std::size_t i = 0; i < branch_list.size(); ++i) | 6245 | 26 | { | 6246 | 26 | if (branch_list[i].first) | 6247 | 26 | { | 6248 | 26 | depth = std::max(depth, compute_node_depth(branch_list[i].first)); | 6249 | 26 | } | 6250 | 26 | } | 6251 | | | 6252 | 7 | depth_set = true; | 6253 | 7 | } | 6254 | | | 6255 | 7 | return depth; | 6256 | 7 | } |
|
6257 | | |
6258 | | mutable bool depth_set; |
6259 | | mutable std::size_t depth; |
6260 | | |
6261 | | template <typename NodeSequence> |
6262 | | void collect(node_ptr_t const& node, |
6263 | | const bool deletable, |
6264 | | NodeSequence& delete_node_list) const |
6265 | 163k | { |
6266 | 163k | if ((0 != node) && deletable) |
6267 | 162k | { |
6268 | 162k | delete_node_list.push_back(const_cast<node_ptr_t*>(&node)); |
6269 | 162k | } |
6270 | 163k | } void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(exprtk::details::expression_node<double>* const&, bool, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Line | Count | Source | 6265 | 145k | { | 6266 | 145k | if ((0 != node) && deletable) | 6267 | 144k | { | 6268 | 144k | delete_node_list.push_back(const_cast<node_ptr_t*>(&node)); | 6269 | 144k | } | 6270 | 145k | } |
void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(exprtk::details::expression_node<float>* const&, bool, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Line | Count | Source | 6265 | 17.9k | { | 6266 | 17.9k | if ((0 != node) && deletable) | 6267 | 17.6k | { | 6268 | 17.6k | delete_node_list.push_back(const_cast<node_ptr_t*>(&node)); | 6269 | 17.6k | } | 6270 | 17.9k | } |
|
6271 | | |
6272 | | template <typename NodeSequence> |
6273 | | void collect(const nb_pair_t& branch, |
6274 | | NodeSequence& delete_node_list) const |
6275 | 62.2k | { |
6276 | 62.2k | collect(branch.first, branch.second, delete_node_list); |
6277 | 62.2k | } void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Line | Count | Source | 6275 | 55.3k | { | 6276 | 55.3k | collect(branch.first, branch.second, delete_node_list); | 6277 | 55.3k | } |
void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Line | Count | Source | 6275 | 6.87k | { | 6276 | 6.87k | collect(branch.first, branch.second, delete_node_list); | 6277 | 6.87k | } |
|
6278 | | |
6279 | | template <typename NodeSequence> |
6280 | | void collect(Node*& node, |
6281 | | NodeSequence& delete_node_list) const |
6282 | | { |
6283 | | collect(node, branch_deletable(node), delete_node_list); |
6284 | | } |
6285 | | |
6286 | | template <std::size_t N, typename NodeSequence> |
6287 | | void collect(const nb_pair_t(&branch)[N], |
6288 | | NodeSequence& delete_node_list) const |
6289 | 50.3k | { |
6290 | 151k | for (std::size_t i = 0; i < N; ++i) |
6291 | 100k | { |
6292 | 100k | collect(branch[i].first, branch[i].second, delete_node_list); |
6293 | 100k | } |
6294 | 50.3k | } void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<2ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [2ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Line | Count | Source | 6289 | 44.8k | { | 6290 | 134k | for (std::size_t i = 0; i < N; ++i) | 6291 | 89.7k | { | 6292 | 89.7k | collect(branch[i].first, branch[i].second, delete_node_list); | 6293 | 89.7k | } | 6294 | 44.8k | } |
void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<3ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [3ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Line | Count | Source | 6289 | 9 | { | 6290 | 36 | for (std::size_t i = 0; i < N; ++i) | 6291 | 27 | { | 6292 | 27 | collect(branch[i].first, branch[i].second, delete_node_list); | 6293 | 27 | } | 6294 | 9 | } |
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<4ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [4ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<1ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [1ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<5ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [5ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<6ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [6ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<7ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [7ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<8ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [8ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<9ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [9ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<10ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [10ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<11ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [11ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<12ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [12ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<13ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [13ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<14ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [14ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<15ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [15ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<16ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [16ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<17ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [17ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<18ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [18ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<19ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [19ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<20ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [20ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<2ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [2ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Line | Count | Source | 6289 | 5.49k | { | 6290 | 16.4k | for (std::size_t i = 0; i < N; ++i) | 6291 | 10.9k | { | 6292 | 10.9k | collect(branch[i].first, branch[i].second, delete_node_list); | 6293 | 10.9k | } | 6294 | 5.49k | } |
void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<3ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [3ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Line | Count | Source | 6289 | 9 | { | 6290 | 36 | for (std::size_t i = 0; i < N; ++i) | 6291 | 27 | { | 6292 | 27 | collect(branch[i].first, branch[i].second, delete_node_list); | 6293 | 27 | } | 6294 | 9 | } |
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<4ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [4ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<1ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [1ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<5ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [5ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<6ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [6ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<7ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [7ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<8ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [8ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<9ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [9ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<10ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [10ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<11ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [11ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<12ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [12ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<13ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [13ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<14ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [14ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<15ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [15ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<16ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [16ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<17ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [17ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<18ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [18ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<19ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [19ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<20ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [20ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const |
6295 | | |
6296 | | template <typename Allocator, |
6297 | | template <typename, typename> class Sequence, |
6298 | | typename NodeSequence> |
6299 | | void collect(const Sequence<nb_pair_t, Allocator>& branch, |
6300 | | NodeSequence& delete_node_list) const |
6301 | 14 | { |
6302 | 66 | for (std::size_t i = 0; i < branch.size(); ++i) |
6303 | 52 | { |
6304 | 52 | collect(branch[i].first, branch[i].second, delete_node_list); |
6305 | 52 | } |
6306 | 14 | } void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<std::__1::allocator<std::__1::pair<exprtk::details::expression_node<double>*, bool> >, std::__1::vector, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::vector<std::__1::pair<exprtk::details::expression_node<double>*, bool>, std::__1::allocator<std::__1::pair<exprtk::details::expression_node<double>*, bool> > > const&, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Line | Count | Source | 6301 | 7 | { | 6302 | 33 | for (std::size_t i = 0; i < branch.size(); ++i) | 6303 | 26 | { | 6304 | 26 | collect(branch[i].first, branch[i].second, delete_node_list); | 6305 | 26 | } | 6306 | 7 | } |
void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<std::__1::allocator<std::__1::pair<exprtk::details::expression_node<float>*, bool> >, std::__1::vector, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::vector<std::__1::pair<exprtk::details::expression_node<float>*, bool>, std::__1::allocator<std::__1::pair<exprtk::details::expression_node<float>*, bool> > > const&, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const Line | Count | Source | 6301 | 7 | { | 6302 | 33 | for (std::size_t i = 0; i < branch.size(); ++i) | 6303 | 26 | { | 6304 | 26 | collect(branch[i].first, branch[i].second, delete_node_list); | 6305 | 26 | } | 6306 | 7 | } |
|
6307 | | |
6308 | | template <typename Allocator, |
6309 | | template <typename, typename> class Sequence, |
6310 | | typename NodeSequence> |
6311 | | void collect(const Sequence<node_ptr_t, Allocator>& branch_list, |
6312 | | NodeSequence& delete_node_list) const |
6313 | 0 | { |
6314 | 0 | for (std::size_t i = 0; i < branch_list.size(); ++i) |
6315 | 0 | { |
6316 | 0 | collect(branch_list[i], branch_deletable(branch_list[i]), delete_node_list); |
6317 | 0 | } |
6318 | 0 | } Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const |
6319 | | |
6320 | | template <typename Boolean, |
6321 | | typename AllocatorT, |
6322 | | typename AllocatorB, |
6323 | | template <typename, typename> class Sequence, |
6324 | | typename NodeSequence> |
6325 | | void collect(const Sequence<node_ptr_t, AllocatorT>& branch_list, |
6326 | | const Sequence<Boolean, AllocatorB>& branch_deletable_list, |
6327 | | NodeSequence& delete_node_list) const |
6328 | | { |
6329 | | for (std::size_t i = 0; i < branch_list.size(); ++i) |
6330 | | { |
6331 | | collect(branch_list[i], branch_deletable_list[i], delete_node_list); |
6332 | | } |
6333 | | } |
6334 | | }; |
6335 | | |
6336 | | template <typename Type> |
6337 | | class vector_holder |
6338 | | { |
6339 | | private: |
6340 | | |
6341 | | typedef Type value_type; |
6342 | | typedef value_type* value_ptr; |
6343 | | typedef const value_ptr const_value_ptr; |
6344 | | typedef vector_holder<Type> vector_holder_t; |
6345 | | |
6346 | | class vector_holder_base |
6347 | | { |
6348 | | public: |
6349 | | |
6350 | | virtual ~vector_holder_base() |
6351 | 0 | {} Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::~vector_holder_base() Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::~vector_holder_base() |
6352 | | |
6353 | | inline value_ptr operator[](const std::size_t& index) const |
6354 | 0 | { |
6355 | 0 | return value_at(index); |
6356 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::operator[](unsigned long const&) const Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::operator[](unsigned long const&) const |
6357 | | |
6358 | | inline std::size_t size() const |
6359 | 0 | { |
6360 | 0 | return vector_size(); |
6361 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::size() const Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::size() const |
6362 | | |
6363 | | inline std::size_t base_size() const |
6364 | 0 | { |
6365 | 0 | return vector_base_size(); |
6366 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::base_size() const Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::base_size() const |
6367 | | |
6368 | | inline value_ptr data() const |
6369 | 0 | { |
6370 | 0 | return value_at(0); |
6371 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::data() const Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::data() const |
6372 | | |
6373 | | virtual inline bool rebaseable() const |
6374 | 0 | { |
6375 | 0 | return false; |
6376 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::rebaseable() const Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::rebaseable() const |
6377 | | |
6378 | | virtual void set_ref(value_ptr*) |
6379 | 0 | {} Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::set_ref(double**) Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::set_ref(float**) |
6380 | | |
6381 | | virtual void remove_ref(value_ptr*) |
6382 | 0 | {} Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::remove_ref(double**) Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::remove_ref(float**) |
6383 | | |
6384 | | virtual vector_view<Type>* rebaseable_instance() |
6385 | 0 | { |
6386 | 0 | return reinterpret_cast<vector_view<Type>*>(0); |
6387 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::rebaseable_instance() Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::rebaseable_instance() |
6388 | | |
6389 | | protected: |
6390 | | |
6391 | | virtual value_ptr value_at(const std::size_t&) const = 0; |
6392 | | virtual std::size_t vector_size() const = 0; |
6393 | | virtual std::size_t vector_base_size() const = 0; |
6394 | | }; |
6395 | | |
6396 | | class array_vector_impl exprtk_final : public vector_holder_base |
6397 | | { |
6398 | | public: |
6399 | | |
6400 | | array_vector_impl(const Type* vec, const std::size_t& vec_size) |
6401 | 0 | : vec_(vec) |
6402 | 0 | , size_(vec_size) |
6403 | 0 | {} Unexecuted instantiation: exprtk::details::vector_holder<double>::array_vector_impl::array_vector_impl(double const*, unsigned long const&) Unexecuted instantiation: exprtk::details::vector_holder<float>::array_vector_impl::array_vector_impl(float const*, unsigned long const&) |
6404 | | |
6405 | | protected: |
6406 | | |
6407 | | value_ptr value_at(const std::size_t& index) const exprtk_override |
6408 | 0 | { |
6409 | 0 | assert(index < size_); |
6410 | 0 | return const_cast<const_value_ptr>(vec_ + index); |
6411 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::array_vector_impl::value_at(unsigned long const&) const Unexecuted instantiation: exprtk::details::vector_holder<float>::array_vector_impl::value_at(unsigned long const&) const |
6412 | | |
6413 | | std::size_t vector_size() const exprtk_override |
6414 | 0 | { |
6415 | 0 | return size_; |
6416 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::array_vector_impl::vector_size() const Unexecuted instantiation: exprtk::details::vector_holder<float>::array_vector_impl::vector_size() const |
6417 | | |
6418 | | std::size_t vector_base_size() const exprtk_override |
6419 | 0 | { |
6420 | 0 | return vector_size(); |
6421 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::array_vector_impl::vector_base_size() const Unexecuted instantiation: exprtk::details::vector_holder<float>::array_vector_impl::vector_base_size() const |
6422 | | |
6423 | | private: |
6424 | | |
6425 | | array_vector_impl(const array_vector_impl&) exprtk_delete; |
6426 | | array_vector_impl& operator=(const array_vector_impl&) exprtk_delete; |
6427 | | |
6428 | | const Type* vec_; |
6429 | | const std::size_t size_; |
6430 | | }; |
6431 | | |
6432 | | template <typename Allocator, |
6433 | | template <typename, typename> class Sequence> |
6434 | | class sequence_vector_impl exprtk_final : public vector_holder_base |
6435 | | { |
6436 | | public: |
6437 | | |
6438 | | typedef Sequence<Type,Allocator> sequence_t; |
6439 | | |
6440 | | explicit sequence_vector_impl(sequence_t& seq) |
6441 | | : sequence_(seq) |
6442 | | {} |
6443 | | |
6444 | | protected: |
6445 | | |
6446 | | value_ptr value_at(const std::size_t& index) const exprtk_override |
6447 | | { |
6448 | | assert(index < sequence_.size()); |
6449 | | return (&sequence_[index]); |
6450 | | } |
6451 | | |
6452 | | std::size_t vector_size() const exprtk_override |
6453 | | { |
6454 | | return sequence_.size(); |
6455 | | } |
6456 | | |
6457 | | std::size_t vector_base_size() const exprtk_override |
6458 | | { |
6459 | | return vector_size(); |
6460 | | } |
6461 | | |
6462 | | private: |
6463 | | |
6464 | | sequence_vector_impl(const sequence_vector_impl&) exprtk_delete; |
6465 | | sequence_vector_impl& operator=(const sequence_vector_impl&) exprtk_delete; |
6466 | | |
6467 | | sequence_t& sequence_; |
6468 | | }; |
6469 | | |
6470 | | class vector_view_impl exprtk_final : public vector_holder_base |
6471 | | { |
6472 | | public: |
6473 | | |
6474 | | typedef exprtk::vector_view<Type> vector_view_t; |
6475 | | |
6476 | | explicit vector_view_impl(vector_view_t& vec_view) |
6477 | | : vec_view_(vec_view) |
6478 | | { |
6479 | | assert(vec_view_.size() > 0); |
6480 | | } |
6481 | | |
6482 | | void set_ref(value_ptr* ref) exprtk_override |
6483 | | { |
6484 | | vec_view_.set_ref(ref); |
6485 | | } |
6486 | | |
6487 | | void remove_ref(value_ptr* ref) exprtk_override |
6488 | | { |
6489 | | vec_view_.remove_ref(ref); |
6490 | | } |
6491 | | |
6492 | | bool rebaseable() const exprtk_override |
6493 | | { |
6494 | | return true; |
6495 | | } |
6496 | | |
6497 | | vector_view<Type>* rebaseable_instance() exprtk_override |
6498 | | { |
6499 | | return &vec_view_; |
6500 | | } |
6501 | | |
6502 | | protected: |
6503 | | |
6504 | | value_ptr value_at(const std::size_t& index) const exprtk_override |
6505 | | { |
6506 | | assert(index < vec_view_.size()); |
6507 | | return (&vec_view_[index]); |
6508 | | } |
6509 | | |
6510 | | std::size_t vector_size() const exprtk_override |
6511 | | { |
6512 | | return vec_view_.size(); |
6513 | | } |
6514 | | |
6515 | | std::size_t vector_base_size() const exprtk_override |
6516 | | { |
6517 | | return vec_view_.base_size(); |
6518 | | } |
6519 | | |
6520 | | private: |
6521 | | |
6522 | | vector_view_impl(const vector_view_impl&) exprtk_delete; |
6523 | | vector_view_impl& operator=(const vector_view_impl&) exprtk_delete; |
6524 | | |
6525 | | vector_view_t& vec_view_; |
6526 | | }; |
6527 | | |
6528 | | class resizable_vector_impl exprtk_final : public vector_holder_base |
6529 | | { |
6530 | | public: |
6531 | | |
6532 | | resizable_vector_impl(vector_holder& vec_view_holder, |
6533 | | const Type* vec, |
6534 | | const std::size_t& vec_size) |
6535 | 0 | : vec_(vec) |
6536 | 0 | , size_(vec_size) |
6537 | 0 | , vec_view_holder_(*vec_view_holder.rebaseable_instance()) |
6538 | 0 | { |
6539 | 0 | assert(vec_view_holder.rebaseable_instance()); |
6540 | 0 | assert(size_ <= vector_base_size()); |
6541 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::resizable_vector_impl(exprtk::details::vector_holder<double>&, double const*, unsigned long const&) Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::resizable_vector_impl(exprtk::details::vector_holder<float>&, float const*, unsigned long const&) |
6542 | | |
6543 | | virtual ~resizable_vector_impl() exprtk_override |
6544 | | {} |
6545 | | |
6546 | | protected: |
6547 | | |
6548 | | value_ptr value_at(const std::size_t& index) const exprtk_override |
6549 | 0 | { |
6550 | 0 | assert(index < vector_size()); |
6551 | 0 | return const_cast<const_value_ptr>(vec_ + index); |
6552 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::value_at(unsigned long const&) const Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::value_at(unsigned long const&) const |
6553 | | |
6554 | | std::size_t vector_size() const exprtk_override |
6555 | 0 | { |
6556 | 0 | return vec_view_holder_.size(); |
6557 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::vector_size() const Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::vector_size() const |
6558 | | |
6559 | | std::size_t vector_base_size() const exprtk_override |
6560 | 0 | { |
6561 | 0 | return vec_view_holder_.base_size(); |
6562 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::vector_base_size() const Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::vector_base_size() const |
6563 | | |
6564 | | bool rebaseable() const exprtk_override |
6565 | 0 | { |
6566 | 0 | return true; |
6567 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::rebaseable() const Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::rebaseable() const |
6568 | | |
6569 | | virtual vector_view<Type>* rebaseable_instance() exprtk_override |
6570 | 0 | { |
6571 | 0 | return &vec_view_holder_; |
6572 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::rebaseable_instance() Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::rebaseable_instance() |
6573 | | |
6574 | | private: |
6575 | | |
6576 | | resizable_vector_impl(const resizable_vector_impl&) exprtk_delete; |
6577 | | resizable_vector_impl& operator=(const resizable_vector_impl&) exprtk_delete; |
6578 | | |
6579 | | const Type* vec_; |
6580 | | const std::size_t size_; |
6581 | | vector_view<Type>& vec_view_holder_; |
6582 | | }; |
6583 | | |
6584 | | public: |
6585 | | |
6586 | | typedef typename details::vec_data_store<Type> vds_t; |
6587 | | |
6588 | | vector_holder(Type* vec, const std::size_t& vec_size) |
6589 | 0 | : vector_holder_base_(new(buffer)array_vector_impl(vec,vec_size)) |
6590 | 0 | {} Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder(double*, unsigned long const&) Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder(float*, unsigned long const&) |
6591 | | |
6592 | | explicit vector_holder(const vds_t& vds) |
6593 | 0 | : vector_holder_base_(new(buffer)array_vector_impl(vds.data(),vds.size())) |
6594 | 0 | {} Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder(exprtk::details::vec_data_store<double> const&) Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder(exprtk::details::vec_data_store<float> const&) |
6595 | | |
6596 | | template <typename Allocator> |
6597 | | explicit vector_holder(std::vector<Type,Allocator>& vec) |
6598 | | : vector_holder_base_(new(buffer)sequence_vector_impl<Allocator,std::vector>(vec)) |
6599 | | {} |
6600 | | |
6601 | | explicit vector_holder(exprtk::vector_view<Type>& vec) |
6602 | | : vector_holder_base_(new(buffer)vector_view_impl(vec)) |
6603 | | {} |
6604 | | |
6605 | | explicit vector_holder(vector_holder_t& vec_holder, const vds_t& vds) |
6606 | 0 | : vector_holder_base_(new(buffer)resizable_vector_impl(vec_holder, vds.data(), vds.size())) |
6607 | 0 | {} Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder(exprtk::details::vector_holder<double>&, exprtk::details::vec_data_store<double> const&) Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder(exprtk::details::vector_holder<float>&, exprtk::details::vec_data_store<float> const&) |
6608 | | |
6609 | | inline value_ptr operator[](const std::size_t& index) const |
6610 | 0 | { |
6611 | 0 | return (*vector_holder_base_)[index]; |
6612 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::operator[](unsigned long const&) const Unexecuted instantiation: exprtk::details::vector_holder<float>::operator[](unsigned long const&) const |
6613 | | |
6614 | | inline std::size_t size() const |
6615 | 0 | { |
6616 | 0 | return vector_holder_base_->size(); |
6617 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::size() const Unexecuted instantiation: exprtk::details::vector_holder<float>::size() const |
6618 | | |
6619 | | inline std::size_t base_size() const |
6620 | 0 | { |
6621 | 0 | return vector_holder_base_->base_size(); |
6622 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::base_size() const Unexecuted instantiation: exprtk::details::vector_holder<float>::base_size() const |
6623 | | |
6624 | | inline value_ptr data() const |
6625 | 0 | { |
6626 | 0 | return vector_holder_base_->data(); |
6627 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::data() const Unexecuted instantiation: exprtk::details::vector_holder<float>::data() const |
6628 | | |
6629 | | void set_ref(value_ptr* ref) |
6630 | 0 | { |
6631 | 0 | if (rebaseable()) |
6632 | 0 | { |
6633 | 0 | vector_holder_base_->set_ref(ref); |
6634 | 0 | } |
6635 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::set_ref(double**) Unexecuted instantiation: exprtk::details::vector_holder<float>::set_ref(float**) |
6636 | | |
6637 | | void remove_ref(value_ptr* ref) |
6638 | 0 | { |
6639 | 0 | if (rebaseable()) |
6640 | 0 | { |
6641 | 0 | vector_holder_base_->remove_ref(ref); |
6642 | 0 | } |
6643 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::remove_ref(double**) Unexecuted instantiation: exprtk::details::vector_holder<float>::remove_ref(float**) |
6644 | | |
6645 | | bool rebaseable() const |
6646 | 0 | { |
6647 | 0 | return vector_holder_base_->rebaseable(); |
6648 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::rebaseable() const Unexecuted instantiation: exprtk::details::vector_holder<float>::rebaseable() const |
6649 | | |
6650 | | vector_view<Type>* rebaseable_instance() |
6651 | 0 | { |
6652 | 0 | return vector_holder_base_->rebaseable_instance(); |
6653 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::rebaseable_instance() Unexecuted instantiation: exprtk::details::vector_holder<float>::rebaseable_instance() |
6654 | | |
6655 | | private: |
6656 | | |
6657 | | vector_holder(const vector_holder<Type>&) exprtk_delete; |
6658 | | vector_holder<Type>& operator=(const vector_holder<Type>&) exprtk_delete; |
6659 | | |
6660 | | mutable vector_holder_base* vector_holder_base_; |
6661 | | uchar_t buffer[64]; |
6662 | | }; |
6663 | | |
6664 | | template <typename T> |
6665 | | class null_node exprtk_final : public expression_node<T> |
6666 | | { |
6667 | | public: |
6668 | | |
6669 | | inline T value() const exprtk_override |
6670 | 4 | { |
6671 | 4 | return std::numeric_limits<T>::quiet_NaN(); |
6672 | 4 | } exprtk::details::null_node<double>::value() const Line | Count | Source | 6670 | 2 | { | 6671 | 2 | return std::numeric_limits<T>::quiet_NaN(); | 6672 | 2 | } |
exprtk::details::null_node<float>::value() const Line | Count | Source | 6670 | 2 | { | 6671 | 2 | return std::numeric_limits<T>::quiet_NaN(); | 6672 | 2 | } |
|
6673 | | |
6674 | | inline typename expression_node<T>::node_type type() const exprtk_override |
6675 | 20.6k | { |
6676 | 20.6k | return expression_node<T>::e_null; |
6677 | 20.6k | } exprtk::details::null_node<double>::type() const Line | Count | Source | 6675 | 10.3k | { | 6676 | 10.3k | return expression_node<T>::e_null; | 6677 | 10.3k | } |
exprtk::details::null_node<float>::type() const Line | Count | Source | 6675 | 10.3k | { | 6676 | 10.3k | return expression_node<T>::e_null; | 6677 | 10.3k | } |
|
6678 | | }; |
6679 | | |
6680 | | template <typename T, std::size_t N> |
6681 | | inline void construct_branch_pair(std::pair<expression_node<T>*,bool> (&branch)[N], |
6682 | | expression_node<T>* b, |
6683 | | const std::size_t& index) |
6684 | 503k | { |
6685 | 503k | if (b && (index < N)) |
6686 | 100k | { |
6687 | 100k | branch[index] = std::make_pair(b,branch_deletable(b)); |
6688 | 100k | } |
6689 | 503k | } void exprtk::details::construct_branch_pair<double, 2ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [2ul], exprtk::details::expression_node<double>*, unsigned long const&) Line | Count | Source | 6684 | 448k | { | 6685 | 448k | if (b && (index < N)) | 6686 | 89.7k | { | 6687 | 89.7k | branch[index] = std::make_pair(b,branch_deletable(b)); | 6688 | 89.7k | } | 6689 | 448k | } |
void exprtk::details::construct_branch_pair<double, 3ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [3ul], exprtk::details::expression_node<double>*, unsigned long const&) Line | Count | Source | 6684 | 90 | { | 6685 | 90 | if (b && (index < N)) | 6686 | 27 | { | 6687 | 27 | branch[index] = std::make_pair(b,branch_deletable(b)); | 6688 | 27 | } | 6689 | 90 | } |
Unexecuted instantiation: void exprtk::details::construct_branch_pair<double, 4ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [4ul], exprtk::details::expression_node<double>*, unsigned long const&) void exprtk::details::construct_branch_pair<float, 2ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [2ul], exprtk::details::expression_node<float>*, unsigned long const&) Line | Count | Source | 6684 | 54.9k | { | 6685 | 54.9k | if (b && (index < N)) | 6686 | 10.9k | { | 6687 | 10.9k | branch[index] = std::make_pair(b,branch_deletable(b)); | 6688 | 10.9k | } | 6689 | 54.9k | } |
void exprtk::details::construct_branch_pair<float, 3ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [3ul], exprtk::details::expression_node<float>*, unsigned long const&) Line | Count | Source | 6684 | 90 | { | 6685 | 90 | if (b && (index < N)) | 6686 | 27 | { | 6687 | 27 | branch[index] = std::make_pair(b,branch_deletable(b)); | 6688 | 27 | } | 6689 | 90 | } |
Unexecuted instantiation: void exprtk::details::construct_branch_pair<float, 4ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [4ul], exprtk::details::expression_node<float>*, unsigned long const&) |
6690 | | |
6691 | | template <typename T> |
6692 | | inline void construct_branch_pair(std::pair<expression_node<T>*,bool>& branch, expression_node<T>* b) |
6693 | 62.2k | { |
6694 | 62.2k | if (b) |
6695 | 62.2k | { |
6696 | 62.2k | branch = std::make_pair(b,branch_deletable(b)); |
6697 | 62.2k | } |
6698 | 62.2k | } void exprtk::details::construct_branch_pair<double>(std::__1::pair<exprtk::details::expression_node<double>*, bool>&, exprtk::details::expression_node<double>*) Line | Count | Source | 6693 | 55.3k | { | 6694 | 55.3k | if (b) | 6695 | 55.3k | { | 6696 | 55.3k | branch = std::make_pair(b,branch_deletable(b)); | 6697 | 55.3k | } | 6698 | 55.3k | } |
void exprtk::details::construct_branch_pair<float>(std::__1::pair<exprtk::details::expression_node<float>*, bool>&, exprtk::details::expression_node<float>*) Line | Count | Source | 6693 | 6.90k | { | 6694 | 6.90k | if (b) | 6695 | 6.90k | { | 6696 | 6.90k | branch = std::make_pair(b,branch_deletable(b)); | 6697 | 6.90k | } | 6698 | 6.90k | } |
|
6699 | | |
6700 | | template <std::size_t N, typename T> |
6701 | | inline void init_branches(std::pair<expression_node<T>*,bool> (&branch)[N], |
6702 | | expression_node<T>* b0, |
6703 | | expression_node<T>* b1 = reinterpret_cast<expression_node<T>*>(0), |
6704 | | expression_node<T>* b2 = reinterpret_cast<expression_node<T>*>(0), |
6705 | | expression_node<T>* b3 = reinterpret_cast<expression_node<T>*>(0), |
6706 | | expression_node<T>* b4 = reinterpret_cast<expression_node<T>*>(0), |
6707 | | expression_node<T>* b5 = reinterpret_cast<expression_node<T>*>(0), |
6708 | | expression_node<T>* b6 = reinterpret_cast<expression_node<T>*>(0), |
6709 | | expression_node<T>* b7 = reinterpret_cast<expression_node<T>*>(0), |
6710 | | expression_node<T>* b8 = reinterpret_cast<expression_node<T>*>(0), |
6711 | | expression_node<T>* b9 = reinterpret_cast<expression_node<T>*>(0)) |
6712 | 50.3k | { |
6713 | 50.3k | construct_branch_pair(branch, b0, 0); |
6714 | 50.3k | construct_branch_pair(branch, b1, 1); |
6715 | 50.3k | construct_branch_pair(branch, b2, 2); |
6716 | 50.3k | construct_branch_pair(branch, b3, 3); |
6717 | 50.3k | construct_branch_pair(branch, b4, 4); |
6718 | 50.3k | construct_branch_pair(branch, b5, 5); |
6719 | 50.3k | construct_branch_pair(branch, b6, 6); |
6720 | 50.3k | construct_branch_pair(branch, b7, 7); |
6721 | 50.3k | construct_branch_pair(branch, b8, 8); |
6722 | 50.3k | construct_branch_pair(branch, b9, 9); |
6723 | 50.3k | } void exprtk::details::init_branches<2ul, double>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [2ul], exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 6712 | 44.8k | { | 6713 | 44.8k | construct_branch_pair(branch, b0, 0); | 6714 | 44.8k | construct_branch_pair(branch, b1, 1); | 6715 | 44.8k | construct_branch_pair(branch, b2, 2); | 6716 | 44.8k | construct_branch_pair(branch, b3, 3); | 6717 | 44.8k | construct_branch_pair(branch, b4, 4); | 6718 | 44.8k | construct_branch_pair(branch, b5, 5); | 6719 | 44.8k | construct_branch_pair(branch, b6, 6); | 6720 | 44.8k | construct_branch_pair(branch, b7, 7); | 6721 | 44.8k | construct_branch_pair(branch, b8, 8); | 6722 | 44.8k | construct_branch_pair(branch, b9, 9); | 6723 | 44.8k | } |
void exprtk::details::init_branches<3ul, double>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [3ul], exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 6712 | 9 | { | 6713 | 9 | construct_branch_pair(branch, b0, 0); | 6714 | 9 | construct_branch_pair(branch, b1, 1); | 6715 | 9 | construct_branch_pair(branch, b2, 2); | 6716 | 9 | construct_branch_pair(branch, b3, 3); | 6717 | 9 | construct_branch_pair(branch, b4, 4); | 6718 | 9 | construct_branch_pair(branch, b5, 5); | 6719 | 9 | construct_branch_pair(branch, b6, 6); | 6720 | 9 | construct_branch_pair(branch, b7, 7); | 6721 | 9 | construct_branch_pair(branch, b8, 8); | 6722 | 9 | construct_branch_pair(branch, b9, 9); | 6723 | 9 | } |
Unexecuted instantiation: void exprtk::details::init_branches<4ul, double>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [4ul], exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) void exprtk::details::init_branches<2ul, float>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [2ul], exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 6712 | 5.49k | { | 6713 | 5.49k | construct_branch_pair(branch, b0, 0); | 6714 | 5.49k | construct_branch_pair(branch, b1, 1); | 6715 | 5.49k | construct_branch_pair(branch, b2, 2); | 6716 | 5.49k | construct_branch_pair(branch, b3, 3); | 6717 | 5.49k | construct_branch_pair(branch, b4, 4); | 6718 | 5.49k | construct_branch_pair(branch, b5, 5); | 6719 | 5.49k | construct_branch_pair(branch, b6, 6); | 6720 | 5.49k | construct_branch_pair(branch, b7, 7); | 6721 | 5.49k | construct_branch_pair(branch, b8, 8); | 6722 | 5.49k | construct_branch_pair(branch, b9, 9); | 6723 | 5.49k | } |
void exprtk::details::init_branches<3ul, float>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [3ul], exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 6712 | 9 | { | 6713 | 9 | construct_branch_pair(branch, b0, 0); | 6714 | 9 | construct_branch_pair(branch, b1, 1); | 6715 | 9 | construct_branch_pair(branch, b2, 2); | 6716 | 9 | construct_branch_pair(branch, b3, 3); | 6717 | 9 | construct_branch_pair(branch, b4, 4); | 6718 | 9 | construct_branch_pair(branch, b5, 5); | 6719 | 9 | construct_branch_pair(branch, b6, 6); | 6720 | 9 | construct_branch_pair(branch, b7, 7); | 6721 | 9 | construct_branch_pair(branch, b8, 8); | 6722 | 9 | construct_branch_pair(branch, b9, 9); | 6723 | 9 | } |
Unexecuted instantiation: void exprtk::details::init_branches<4ul, float>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [4ul], exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
6724 | | |
6725 | | template <typename T> |
6726 | | class null_eq_node exprtk_final : public expression_node<T> |
6727 | | { |
6728 | | public: |
6729 | | |
6730 | | typedef expression_node<T>* expression_ptr; |
6731 | | typedef std::pair<expression_ptr,bool> branch_t; |
6732 | | |
6733 | | explicit null_eq_node(expression_ptr branch, const bool equality = true) |
6734 | 0 | : equality_(equality) |
6735 | 0 | { |
6736 | 0 | construct_branch_pair(branch_, branch); |
6737 | 0 | assert(valid()); |
6738 | 0 | } Unexecuted instantiation: exprtk::details::null_eq_node<double>::null_eq_node(exprtk::details::expression_node<double>*, bool) Unexecuted instantiation: exprtk::details::null_eq_node<float>::null_eq_node(exprtk::details::expression_node<float>*, bool) |
6739 | | |
6740 | | inline T value() const exprtk_override |
6741 | 0 | { |
6742 | 0 | const T v = branch_.first->value(); |
6743 | 0 | const bool result = details::numeric::is_nan(v); |
6744 | |
|
6745 | 0 | if (result) |
6746 | 0 | return equality_ ? T(1) : T(0); |
6747 | 0 | else |
6748 | 0 | return equality_ ? T(0) : T(1); |
6749 | 0 | } Unexecuted instantiation: exprtk::details::null_eq_node<double>::value() const Unexecuted instantiation: exprtk::details::null_eq_node<float>::value() const |
6750 | | |
6751 | | inline typename expression_node<T>::node_type type() const exprtk_override |
6752 | 0 | { |
6753 | 0 | return expression_node<T>::e_nulleq; |
6754 | 0 | } Unexecuted instantiation: exprtk::details::null_eq_node<double>::type() const Unexecuted instantiation: exprtk::details::null_eq_node<float>::type() const |
6755 | | |
6756 | | inline expression_node<T>* branch(const std::size_t&) const exprtk_override |
6757 | 0 | { |
6758 | 0 | return branch_.first; |
6759 | 0 | } Unexecuted instantiation: exprtk::details::null_eq_node<double>::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::null_eq_node<float>::branch(unsigned long const&) const |
6760 | | |
6761 | | inline bool valid() const exprtk_override |
6762 | 0 | { |
6763 | 0 | return branch_.first; |
6764 | 0 | } Unexecuted instantiation: exprtk::details::null_eq_node<double>::valid() const Unexecuted instantiation: exprtk::details::null_eq_node<float>::valid() const |
6765 | | |
6766 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
6767 | 0 | { |
6768 | 0 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
6769 | 0 | } Unexecuted instantiation: exprtk::details::null_eq_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::null_eq_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
6770 | | |
6771 | | std::size_t node_depth() const exprtk_override |
6772 | 0 | { |
6773 | 0 | return expression_node<T>::ndb_t::compute_node_depth(branch_); |
6774 | 0 | } Unexecuted instantiation: exprtk::details::null_eq_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::null_eq_node<float>::node_depth() const |
6775 | | |
6776 | | private: |
6777 | | |
6778 | | bool equality_; |
6779 | | branch_t branch_; |
6780 | | }; |
6781 | | |
6782 | | template <typename T> |
6783 | | class literal_node exprtk_final : public expression_node<T> |
6784 | | { |
6785 | | public: |
6786 | | |
6787 | | explicit literal_node(const T& v) |
6788 | 105k | : value_(v) |
6789 | 105k | {} exprtk::details::literal_node<double>::literal_node(double const&) Line | Count | Source | 6788 | 88.4k | : value_(v) | 6789 | 88.4k | {} |
exprtk::details::literal_node<float>::literal_node(float const&) Line | Count | Source | 6788 | 17.2k | : value_(v) | 6789 | 17.2k | {} |
|
6790 | | |
6791 | | inline T value() const exprtk_override |
6792 | 119k | { |
6793 | 119k | return value_; |
6794 | 119k | } exprtk::details::literal_node<double>::value() const Line | Count | Source | 6792 | 100k | { | 6793 | 100k | return value_; | 6794 | 100k | } |
exprtk::details::literal_node<float>::value() const Line | Count | Source | 6792 | 19.0k | { | 6793 | 19.0k | return value_; | 6794 | 19.0k | } |
|
6795 | | |
6796 | | inline typename expression_node<T>::node_type type() const exprtk_override |
6797 | 1.54M | { |
6798 | 1.54M | return expression_node<T>::e_constant; |
6799 | 1.54M | } exprtk::details::literal_node<double>::type() const Line | Count | Source | 6797 | 1.28M | { | 6798 | 1.28M | return expression_node<T>::e_constant; | 6799 | 1.28M | } |
exprtk::details::literal_node<float>::type() const Line | Count | Source | 6797 | 257k | { | 6798 | 257k | return expression_node<T>::e_constant; | 6799 | 257k | } |
|
6800 | | |
6801 | | inline expression_node<T>* branch(const std::size_t&) const exprtk_override |
6802 | 0 | { |
6803 | 0 | return reinterpret_cast<expression_node<T>*>(0); |
6804 | 0 | } Unexecuted instantiation: exprtk::details::literal_node<double>::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::literal_node<float>::branch(unsigned long const&) const |
6805 | | |
6806 | | private: |
6807 | | |
6808 | | literal_node(const literal_node<T>&) exprtk_delete; |
6809 | | literal_node<T>& operator=(const literal_node<T>&) exprtk_delete; |
6810 | | |
6811 | | const T value_; |
6812 | | }; |
6813 | | |
6814 | | template <typename T> |
6815 | | struct range_pack; |
6816 | | |
6817 | | template <typename T> |
6818 | | struct range_data_type; |
6819 | | |
6820 | | template <typename T> |
6821 | | class range_interface |
6822 | | { |
6823 | | public: |
6824 | | |
6825 | | typedef range_pack<T> range_t; |
6826 | | |
6827 | | virtual ~range_interface() |
6828 | 746 | {} exprtk::details::range_interface<double>::~range_interface() Line | Count | Source | 6828 | 373 | {} |
exprtk::details::range_interface<float>::~range_interface() Line | Count | Source | 6828 | 373 | {} |
|
6829 | | |
6830 | | virtual range_t& range_ref() = 0; |
6831 | | |
6832 | | virtual const range_t& range_ref() const = 0; |
6833 | | }; |
6834 | | |
6835 | | #ifndef exprtk_disable_string_capabilities |
6836 | | template <typename T> |
6837 | | class string_base_node |
6838 | | { |
6839 | | public: |
6840 | | |
6841 | | typedef range_data_type<T> range_data_type_t; |
6842 | | |
6843 | | virtual ~string_base_node() |
6844 | 746 | {} exprtk::details::string_base_node<double>::~string_base_node() Line | Count | Source | 6844 | 373 | {} |
exprtk::details::string_base_node<float>::~string_base_node() Line | Count | Source | 6844 | 373 | {} |
|
6845 | | |
6846 | | virtual std::string str () const = 0; |
6847 | | |
6848 | | virtual char_cptr base() const = 0; |
6849 | | |
6850 | | virtual std::size_t size() const = 0; |
6851 | | }; |
6852 | | |
6853 | | template <typename T> |
6854 | | class string_literal_node exprtk_final |
6855 | | : public expression_node <T> |
6856 | | , public string_base_node<T> |
6857 | | , public range_interface <T> |
6858 | | { |
6859 | | public: |
6860 | | |
6861 | | typedef range_pack<T> range_t; |
6862 | | |
6863 | | explicit string_literal_node(const std::string& v) |
6864 | 720 | : value_(v) |
6865 | 720 | { |
6866 | 720 | rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0); |
6867 | 720 | rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size()); |
6868 | 720 | rp_.cache.first = rp_.n0_c.second; |
6869 | 720 | rp_.cache.second = rp_.n1_c.second; |
6870 | 720 | } exprtk::details::string_literal_node<double>::string_literal_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Line | Count | Source | 6864 | 360 | : value_(v) | 6865 | 360 | { | 6866 | 360 | rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0); | 6867 | 360 | rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size()); | 6868 | 360 | rp_.cache.first = rp_.n0_c.second; | 6869 | 360 | rp_.cache.second = rp_.n1_c.second; | 6870 | 360 | } |
exprtk::details::string_literal_node<float>::string_literal_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Line | Count | Source | 6864 | 360 | : value_(v) | 6865 | 360 | { | 6866 | 360 | rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0); | 6867 | 360 | rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size()); | 6868 | 360 | rp_.cache.first = rp_.n0_c.second; | 6869 | 360 | rp_.cache.second = rp_.n1_c.second; | 6870 | 360 | } |
|
6871 | | |
6872 | | inline T value() const exprtk_override |
6873 | 392 | { |
6874 | 392 | return std::numeric_limits<T>::quiet_NaN(); |
6875 | 392 | } exprtk::details::string_literal_node<double>::value() const Line | Count | Source | 6873 | 196 | { | 6874 | 196 | return std::numeric_limits<T>::quiet_NaN(); | 6875 | 196 | } |
exprtk::details::string_literal_node<float>::value() const Line | Count | Source | 6873 | 196 | { | 6874 | 196 | return std::numeric_limits<T>::quiet_NaN(); | 6875 | 196 | } |
|
6876 | | |
6877 | | inline typename expression_node<T>::node_type type() const exprtk_override |
6878 | 5.03k | { |
6879 | 5.03k | return expression_node<T>::e_stringconst; |
6880 | 5.03k | } exprtk::details::string_literal_node<double>::type() const Line | Count | Source | 6878 | 2.51k | { | 6879 | 2.51k | return expression_node<T>::e_stringconst; | 6880 | 2.51k | } |
exprtk::details::string_literal_node<float>::type() const Line | Count | Source | 6878 | 2.51k | { | 6879 | 2.51k | return expression_node<T>::e_stringconst; | 6880 | 2.51k | } |
|
6881 | | |
6882 | | inline expression_node<T>* branch(const std::size_t&) const exprtk_override |
6883 | 0 | { |
6884 | 0 | return reinterpret_cast<expression_node<T>*>(0); |
6885 | 0 | } Unexecuted instantiation: exprtk::details::string_literal_node<double>::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::string_literal_node<float>::branch(unsigned long const&) const |
6886 | | |
6887 | | std::string str() const exprtk_override |
6888 | 102 | { |
6889 | 102 | return value_; |
6890 | 102 | } exprtk::details::string_literal_node<double>::str() const Line | Count | Source | 6888 | 51 | { | 6889 | 51 | return value_; | 6890 | 51 | } |
exprtk::details::string_literal_node<float>::str() const Line | Count | Source | 6888 | 51 | { | 6889 | 51 | return value_; | 6890 | 51 | } |
|
6891 | | |
6892 | | char_cptr base() const exprtk_override |
6893 | 12 | { |
6894 | 12 | return value_.data(); |
6895 | 12 | } exprtk::details::string_literal_node<double>::base() const Line | Count | Source | 6893 | 6 | { | 6894 | 6 | return value_.data(); | 6895 | 6 | } |
exprtk::details::string_literal_node<float>::base() const Line | Count | Source | 6893 | 6 | { | 6894 | 6 | return value_.data(); | 6895 | 6 | } |
|
6896 | | |
6897 | | std::size_t size() const exprtk_override |
6898 | 12 | { |
6899 | 12 | return value_.size(); |
6900 | 12 | } exprtk::details::string_literal_node<double>::size() const Line | Count | Source | 6898 | 6 | { | 6899 | 6 | return value_.size(); | 6900 | 6 | } |
exprtk::details::string_literal_node<float>::size() const Line | Count | Source | 6898 | 6 | { | 6899 | 6 | return value_.size(); | 6900 | 6 | } |
|
6901 | | |
6902 | | range_t& range_ref() exprtk_override |
6903 | 14 | { |
6904 | 14 | return rp_; |
6905 | 14 | } exprtk::details::string_literal_node<double>::range_ref() Line | Count | Source | 6903 | 7 | { | 6904 | 7 | return rp_; | 6905 | 7 | } |
exprtk::details::string_literal_node<float>::range_ref() Line | Count | Source | 6903 | 7 | { | 6904 | 7 | return rp_; | 6905 | 7 | } |
|
6906 | | |
6907 | | const range_t& range_ref() const exprtk_override |
6908 | 0 | { |
6909 | 0 | return rp_; |
6910 | 0 | } Unexecuted instantiation: exprtk::details::string_literal_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::string_literal_node<float>::range_ref() const |
6911 | | |
6912 | | private: |
6913 | | |
6914 | | string_literal_node(const string_literal_node<T>&) exprtk_delete; |
6915 | | string_literal_node<T>& operator=(const string_literal_node<T>&) exprtk_delete; |
6916 | | |
6917 | | const std::string value_; |
6918 | | range_t rp_; |
6919 | | }; |
6920 | | #endif |
6921 | | |
6922 | | template <typename T> |
6923 | | class unary_node : public expression_node<T> |
6924 | | { |
6925 | | public: |
6926 | | |
6927 | | typedef expression_node<T>* expression_ptr; |
6928 | | typedef std::pair<expression_ptr,bool> branch_t; |
6929 | | |
6930 | | unary_node(const operator_type& opr, expression_ptr branch) |
6931 | 15.8k | : operation_(opr) |
6932 | 15.8k | { |
6933 | 15.8k | construct_branch_pair(branch_,branch); |
6934 | 15.8k | assert(valid()); |
6935 | 15.8k | } exprtk::details::unary_node<double>::unary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*) Line | Count | Source | 6931 | 13.8k | : operation_(opr) | 6932 | 13.8k | { | 6933 | 13.8k | construct_branch_pair(branch_,branch); | 6934 | 13.8k | assert(valid()); | 6935 | 13.8k | } |
exprtk::details::unary_node<float>::unary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*) Line | Count | Source | 6931 | 1.98k | : operation_(opr) | 6932 | 1.98k | { | 6933 | 1.98k | construct_branch_pair(branch_,branch); | 6934 | 1.98k | assert(valid()); | 6935 | 1.98k | } |
|
6936 | | |
6937 | | inline T value() const exprtk_override |
6938 | 15.8k | { |
6939 | 15.8k | return numeric::process<T> |
6940 | 15.8k | (operation_,branch_.first->value()); |
6941 | 15.8k | } exprtk::details::unary_node<double>::value() const Line | Count | Source | 6938 | 13.8k | { | 6939 | 13.8k | return numeric::process<T> | 6940 | 13.8k | (operation_,branch_.first->value()); | 6941 | 13.8k | } |
exprtk::details::unary_node<float>::value() const Line | Count | Source | 6938 | 1.98k | { | 6939 | 1.98k | return numeric::process<T> | 6940 | 1.98k | (operation_,branch_.first->value()); | 6941 | 1.98k | } |
|
6942 | | |
6943 | | inline typename expression_node<T>::node_type type() const exprtk_override |
6944 | 31.7k | { |
6945 | 31.7k | return expression_node<T>::e_unary; |
6946 | 31.7k | } exprtk::details::unary_node<double>::type() const Line | Count | Source | 6944 | 27.7k | { | 6945 | 27.7k | return expression_node<T>::e_unary; | 6946 | 27.7k | } |
exprtk::details::unary_node<float>::type() const Line | Count | Source | 6944 | 3.97k | { | 6945 | 3.97k | return expression_node<T>::e_unary; | 6946 | 3.97k | } |
|
6947 | | |
6948 | | inline operator_type operation() |
6949 | | { |
6950 | | return operation_; |
6951 | | } |
6952 | | |
6953 | | inline expression_node<T>* branch(const std::size_t&) const exprtk_override |
6954 | 0 | { |
6955 | 0 | return branch_.first; |
6956 | 0 | } Unexecuted instantiation: exprtk::details::unary_node<double>::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::unary_node<float>::branch(unsigned long const&) const |
6957 | | |
6958 | | inline bool valid() const exprtk_override |
6959 | 15.8k | { |
6960 | 15.8k | return branch_.first && branch_.first->valid(); |
6961 | 15.8k | } exprtk::details::unary_node<double>::valid() const Line | Count | Source | 6959 | 13.8k | { | 6960 | 13.8k | return branch_.first && branch_.first->valid(); | 6961 | 13.8k | } |
exprtk::details::unary_node<float>::valid() const Line | Count | Source | 6959 | 1.98k | { | 6960 | 1.98k | return branch_.first && branch_.first->valid(); | 6961 | 1.98k | } |
|
6962 | | |
6963 | | inline void release() |
6964 | | { |
6965 | | branch_.second = false; |
6966 | | } |
6967 | | |
6968 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
6969 | 15.8k | { |
6970 | 15.8k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
6971 | 15.8k | } exprtk::details::unary_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 6969 | 13.8k | { | 6970 | 13.8k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 6971 | 13.8k | } |
exprtk::details::unary_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 6969 | 1.98k | { | 6970 | 1.98k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 6971 | 1.98k | } |
|
6972 | | |
6973 | | std::size_t node_depth() const exprtk_final |
6974 | 31.7k | { |
6975 | 31.7k | return expression_node<T>::ndb_t::compute_node_depth(branch_); |
6976 | 31.7k | } exprtk::details::unary_node<double>::node_depth() const Line | Count | Source | 6974 | 27.7k | { | 6975 | 27.7k | return expression_node<T>::ndb_t::compute_node_depth(branch_); | 6976 | 27.7k | } |
exprtk::details::unary_node<float>::node_depth() const Line | Count | Source | 6974 | 3.97k | { | 6975 | 3.97k | return expression_node<T>::ndb_t::compute_node_depth(branch_); | 6976 | 3.97k | } |
|
6977 | | |
6978 | | private: |
6979 | | |
6980 | | operator_type operation_; |
6981 | | branch_t branch_; |
6982 | | }; |
6983 | | |
6984 | | template <typename T> |
6985 | | class binary_node : public expression_node<T> |
6986 | | { |
6987 | | public: |
6988 | | |
6989 | | typedef expression_node<T>* expression_ptr; |
6990 | | typedef std::pair<expression_ptr,bool> branch_t; |
6991 | | |
6992 | | binary_node(const operator_type& opr, |
6993 | | expression_ptr branch0, |
6994 | | expression_ptr branch1) |
6995 | 12.1k | : operation_(opr) |
6996 | 12.1k | { |
6997 | 12.1k | init_branches<2>(branch_, branch0, branch1); |
6998 | 12.1k | assert(valid()); |
6999 | 12.1k | } exprtk::details::binary_node<double>::binary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 6995 | 9.87k | : operation_(opr) | 6996 | 9.87k | { | 6997 | 9.87k | init_branches<2>(branch_, branch0, branch1); | 6998 | 9.87k | assert(valid()); | 6999 | 9.87k | } |
exprtk::details::binary_node<float>::binary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 6995 | 2.27k | : operation_(opr) | 6996 | 2.27k | { | 6997 | 2.27k | init_branches<2>(branch_, branch0, branch1); | 6998 | 2.27k | assert(valid()); | 6999 | 2.27k | } |
|
7000 | | |
7001 | | inline T value() const exprtk_override |
7002 | 10.9k | { |
7003 | 10.9k | return numeric::process<T> |
7004 | 10.9k | ( |
7005 | 10.9k | operation_, |
7006 | 10.9k | branch_[0].first->value(), |
7007 | 10.9k | branch_[1].first->value() |
7008 | 10.9k | ); |
7009 | 10.9k | } exprtk::details::binary_node<double>::value() const Line | Count | Source | 7002 | 9.25k | { | 7003 | 9.25k | return numeric::process<T> | 7004 | 9.25k | ( | 7005 | 9.25k | operation_, | 7006 | 9.25k | branch_[0].first->value(), | 7007 | 9.25k | branch_[1].first->value() | 7008 | 9.25k | ); | 7009 | 9.25k | } |
exprtk::details::binary_node<float>::value() const Line | Count | Source | 7002 | 1.66k | { | 7003 | 1.66k | return numeric::process<T> | 7004 | 1.66k | ( | 7005 | 1.66k | operation_, | 7006 | 1.66k | branch_[0].first->value(), | 7007 | 1.66k | branch_[1].first->value() | 7008 | 1.66k | ); | 7009 | 1.66k | } |
|
7010 | | |
7011 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7012 | 38.0k | { |
7013 | 38.0k | return expression_node<T>::e_binary; |
7014 | 38.0k | } exprtk::details::binary_node<double>::type() const Line | Count | Source | 7012 | 26.6k | { | 7013 | 26.6k | return expression_node<T>::e_binary; | 7014 | 26.6k | } |
exprtk::details::binary_node<float>::type() const Line | Count | Source | 7012 | 11.4k | { | 7013 | 11.4k | return expression_node<T>::e_binary; | 7014 | 11.4k | } |
|
7015 | | |
7016 | | inline operator_type operation() |
7017 | | { |
7018 | | return operation_; |
7019 | | } |
7020 | | |
7021 | | inline expression_node<T>* branch(const std::size_t& index = 0) const exprtk_override |
7022 | 1.02k | { |
7023 | 1.02k | assert(index < 2); |
7024 | 1.02k | return branch_[index].first; |
7025 | 1.02k | } exprtk::details::binary_node<double>::branch(unsigned long const&) const Line | Count | Source | 7022 | 515 | { | 7023 | 515 | assert(index < 2); | 7024 | 515 | return branch_[index].first; | 7025 | 515 | } |
exprtk::details::binary_node<float>::branch(unsigned long const&) const Line | Count | Source | 7022 | 514 | { | 7023 | 514 | assert(index < 2); | 7024 | 514 | return branch_[index].first; | 7025 | 514 | } |
|
7026 | | |
7027 | | inline bool valid() const exprtk_override |
7028 | 43.3k | { |
7029 | 43.3k | return |
7030 | 43.3k | branch_[0].first && branch_[0].first->valid() && |
7031 | 43.3k | branch_[1].first && branch_[1].first->valid() ; |
7032 | 43.3k | } exprtk::details::binary_node<double>::valid() const Line | Count | Source | 7028 | 25.4k | { | 7029 | 25.4k | return | 7030 | 25.4k | branch_[0].first && branch_[0].first->valid() && | 7031 | 25.4k | branch_[1].first && branch_[1].first->valid() ; | 7032 | 25.4k | } |
exprtk::details::binary_node<float>::valid() const Line | Count | Source | 7028 | 17.8k | { | 7029 | 17.8k | return | 7030 | 17.8k | branch_[0].first && branch_[0].first->valid() && | 7031 | 17.8k | branch_[1].first && branch_[1].first->valid() ; | 7032 | 17.8k | } |
|
7033 | | |
7034 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7035 | 12.1k | { |
7036 | 12.1k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
7037 | 12.1k | } exprtk::details::binary_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7035 | 9.87k | { | 7036 | 9.87k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7037 | 9.87k | } |
exprtk::details::binary_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7035 | 2.27k | { | 7036 | 2.27k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7037 | 2.27k | } |
|
7038 | | |
7039 | | std::size_t node_depth() const exprtk_final |
7040 | 25.5k | { |
7041 | 25.5k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); |
7042 | 25.5k | } exprtk::details::binary_node<double>::node_depth() const Line | Count | Source | 7040 | 20.3k | { | 7041 | 20.3k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7042 | 20.3k | } |
exprtk::details::binary_node<float>::node_depth() const Line | Count | Source | 7040 | 5.19k | { | 7041 | 5.19k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7042 | 5.19k | } |
|
7043 | | |
7044 | | private: |
7045 | | |
7046 | | operator_type operation_; |
7047 | | branch_t branch_[2]; |
7048 | | }; |
7049 | | |
7050 | | template <typename T, typename Operation> |
7051 | | class binary_ext_node exprtk_final : public expression_node<T> |
7052 | | { |
7053 | | public: |
7054 | | |
7055 | | typedef expression_node<T>* expression_ptr; |
7056 | | typedef std::pair<expression_ptr,bool> branch_t; |
7057 | | |
7058 | | binary_ext_node(expression_ptr branch0, expression_ptr branch1) |
7059 | 38.2k | { |
7060 | 38.2k | init_branches<2>(branch_, branch0, branch1); |
7061 | 38.2k | assert(valid()); |
7062 | 38.2k | } exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 1.84k | { | 7060 | 1.84k | init_branches<2>(branch_, branch0, branch1); | 7061 | 1.84k | assert(valid()); | 7062 | 1.84k | } |
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 1.16k | { | 7060 | 1.16k | init_branches<2>(branch_, branch0, branch1); | 7061 | 1.16k | assert(valid()); | 7062 | 1.16k | } |
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 1.32k | { | 7060 | 1.32k | init_branches<2>(branch_, branch0, branch1); | 7061 | 1.32k | assert(valid()); | 7062 | 1.32k | } |
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 23 | { | 7060 | 23 | init_branches<2>(branch_, branch0, branch1); | 7061 | 23 | assert(valid()); | 7062 | 23 | } |
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 109 | { | 7060 | 109 | init_branches<2>(branch_, branch0, branch1); | 7061 | 109 | assert(valid()); | 7062 | 109 | } |
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 12 | { | 7060 | 12 | init_branches<2>(branch_, branch0, branch1); | 7061 | 12 | assert(valid()); | 7062 | 12 | } |
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 14.9k | { | 7060 | 14.9k | init_branches<2>(branch_, branch0, branch1); | 7061 | 14.9k | assert(valid()); | 7062 | 14.9k | } |
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 11 | { | 7060 | 11 | init_branches<2>(branch_, branch0, branch1); | 7061 | 11 | assert(valid()); | 7062 | 11 | } |
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 14.2k | { | 7060 | 14.2k | init_branches<2>(branch_, branch0, branch1); | 7061 | 14.2k | assert(valid()); | 7062 | 14.2k | } |
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 2 | { | 7060 | 2 | init_branches<2>(branch_, branch0, branch1); | 7061 | 2 | assert(valid()); | 7062 | 2 | } |
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 1.03k | { | 7060 | 1.03k | init_branches<2>(branch_, branch0, branch1); | 7061 | 1.03k | assert(valid()); | 7062 | 1.03k | } |
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 8 | { | 7060 | 8 | init_branches<2>(branch_, branch0, branch1); | 7061 | 8 | assert(valid()); | 7062 | 8 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 13 | { | 7060 | 13 | init_branches<2>(branch_, branch0, branch1); | 7061 | 13 | assert(valid()); | 7062 | 13 | } |
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 130 | { | 7060 | 130 | init_branches<2>(branch_, branch0, branch1); | 7061 | 130 | assert(valid()); | 7062 | 130 | } |
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 39 | { | 7060 | 39 | init_branches<2>(branch_, branch0, branch1); | 7061 | 39 | assert(valid()); | 7062 | 39 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 20 | { | 7060 | 20 | init_branches<2>(branch_, branch0, branch1); | 7061 | 20 | assert(valid()); | 7062 | 20 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7059 | 6 | { | 7060 | 6 | init_branches<2>(branch_, branch0, branch1); | 7061 | 6 | assert(valid()); | 7062 | 6 | } |
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 476 | { | 7060 | 476 | init_branches<2>(branch_, branch0, branch1); | 7061 | 476 | assert(valid()); | 7062 | 476 | } |
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 270 | { | 7060 | 270 | init_branches<2>(branch_, branch0, branch1); | 7061 | 270 | assert(valid()); | 7062 | 270 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 570 | { | 7060 | 570 | init_branches<2>(branch_, branch0, branch1); | 7061 | 570 | assert(valid()); | 7062 | 570 | } |
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 23 | { | 7060 | 23 | init_branches<2>(branch_, branch0, branch1); | 7061 | 23 | assert(valid()); | 7062 | 23 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 9 | { | 7060 | 9 | init_branches<2>(branch_, branch0, branch1); | 7061 | 9 | assert(valid()); | 7062 | 9 | } |
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 12 | { | 7060 | 12 | init_branches<2>(branch_, branch0, branch1); | 7061 | 12 | assert(valid()); | 7062 | 12 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 478 | { | 7060 | 478 | init_branches<2>(branch_, branch0, branch1); | 7061 | 478 | assert(valid()); | 7062 | 478 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 11 | { | 7060 | 11 | init_branches<2>(branch_, branch0, branch1); | 7061 | 11 | assert(valid()); | 7062 | 11 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 111 | { | 7060 | 111 | init_branches<2>(branch_, branch0, branch1); | 7061 | 111 | assert(valid()); | 7062 | 111 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 2 | { | 7060 | 2 | init_branches<2>(branch_, branch0, branch1); | 7061 | 2 | assert(valid()); | 7062 | 2 | } |
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 1.03k | { | 7060 | 1.03k | init_branches<2>(branch_, branch0, branch1); | 7061 | 1.03k | assert(valid()); | 7062 | 1.03k | } |
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 8 | { | 7060 | 8 | init_branches<2>(branch_, branch0, branch1); | 7061 | 8 | assert(valid()); | 7062 | 8 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 13 | { | 7060 | 13 | init_branches<2>(branch_, branch0, branch1); | 7061 | 13 | assert(valid()); | 7062 | 13 | } |
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 130 | { | 7060 | 130 | init_branches<2>(branch_, branch0, branch1); | 7061 | 130 | assert(valid()); | 7062 | 130 | } |
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 39 | { | 7060 | 39 | init_branches<2>(branch_, branch0, branch1); | 7061 | 39 | assert(valid()); | 7062 | 39 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 20 | { | 7060 | 20 | init_branches<2>(branch_, branch0, branch1); | 7061 | 20 | assert(valid()); | 7062 | 20 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7059 | 6 | { | 7060 | 6 | init_branches<2>(branch_, branch0, branch1); | 7061 | 6 | assert(valid()); | 7062 | 6 | } |
|
7063 | | |
7064 | | inline T value() const exprtk_override |
7065 | 452 | { |
7066 | 452 | const T arg0 = branch_[0].first->value(); |
7067 | 452 | const T arg1 = branch_[1].first->value(); |
7068 | 452 | return Operation::process(arg0,arg1); |
7069 | 452 | } exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::value() const Line | Count | Source | 7065 | 19 | { | 7066 | 19 | const T arg0 = branch_[0].first->value(); | 7067 | 19 | const T arg1 = branch_[1].first->value(); | 7068 | 19 | return Operation::process(arg0,arg1); | 7069 | 19 | } |
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::value() const Line | Count | Source | 7065 | 31 | { | 7066 | 31 | const T arg0 = branch_[0].first->value(); | 7067 | 31 | const T arg1 = branch_[1].first->value(); | 7068 | 31 | return Operation::process(arg0,arg1); | 7069 | 31 | } |
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::value() const Line | Count | Source | 7065 | 54 | { | 7066 | 54 | const T arg0 = branch_[0].first->value(); | 7067 | 54 | const T arg1 = branch_[1].first->value(); | 7068 | 54 | return Operation::process(arg0,arg1); | 7069 | 54 | } |
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::value() const Line | Count | Source | 7065 | 8 | { | 7066 | 8 | const T arg0 = branch_[0].first->value(); | 7067 | 8 | const T arg1 = branch_[1].first->value(); | 7068 | 8 | return Operation::process(arg0,arg1); | 7069 | 8 | } |
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::value() const Line | Count | Source | 7065 | 8 | { | 7066 | 8 | const T arg0 = branch_[0].first->value(); | 7067 | 8 | const T arg1 = branch_[1].first->value(); | 7068 | 8 | return Operation::process(arg0,arg1); | 7069 | 8 | } |
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::value() const Line | Count | Source | 7065 | 1 | { | 7066 | 1 | const T arg0 = branch_[0].first->value(); | 7067 | 1 | const T arg1 = branch_[1].first->value(); | 7068 | 1 | return Operation::process(arg0,arg1); | 7069 | 1 | } |
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::value() const Line | Count | Source | 7065 | 10 | { | 7066 | 10 | const T arg0 = branch_[0].first->value(); | 7067 | 10 | const T arg1 = branch_[1].first->value(); | 7068 | 10 | return Operation::process(arg0,arg1); | 7069 | 10 | } |
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::value() const Line | Count | Source | 7065 | 2 | { | 7066 | 2 | const T arg0 = branch_[0].first->value(); | 7067 | 2 | const T arg1 = branch_[1].first->value(); | 7068 | 2 | return Operation::process(arg0,arg1); | 7069 | 2 | } |
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::value() const Line | Count | Source | 7065 | 11 | { | 7066 | 11 | const T arg0 = branch_[0].first->value(); | 7067 | 11 | const T arg1 = branch_[1].first->value(); | 7068 | 11 | return Operation::process(arg0,arg1); | 7069 | 11 | } |
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::value() const Line | Count | Source | 7065 | 1 | { | 7066 | 1 | const T arg0 = branch_[0].first->value(); | 7067 | 1 | const T arg1 = branch_[1].first->value(); | 7068 | 1 | return Operation::process(arg0,arg1); | 7069 | 1 | } |
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::value() const Line | Count | Source | 7065 | 16 | { | 7066 | 16 | const T arg0 = branch_[0].first->value(); | 7067 | 16 | const T arg1 = branch_[1].first->value(); | 7068 | 16 | return Operation::process(arg0,arg1); | 7069 | 16 | } |
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::value() const Line | Count | Source | 7065 | 2 | { | 7066 | 2 | const T arg0 = branch_[0].first->value(); | 7067 | 2 | const T arg1 = branch_[1].first->value(); | 7068 | 2 | return Operation::process(arg0,arg1); | 7069 | 2 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::value() const exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::value() const Line | Count | Source | 7065 | 6 | { | 7066 | 6 | const T arg0 = branch_[0].first->value(); | 7067 | 6 | const T arg1 = branch_[1].first->value(); | 7068 | 6 | return Operation::process(arg0,arg1); | 7069 | 6 | } |
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::value() const Line | Count | Source | 7065 | 10 | { | 7066 | 10 | const T arg0 = branch_[0].first->value(); | 7067 | 10 | const T arg1 = branch_[1].first->value(); | 7068 | 10 | return Operation::process(arg0,arg1); | 7069 | 10 | } |
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::value() const Line | Count | Source | 7065 | 39 | { | 7066 | 39 | const T arg0 = branch_[0].first->value(); | 7067 | 39 | const T arg1 = branch_[1].first->value(); | 7068 | 39 | return Operation::process(arg0,arg1); | 7069 | 39 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::value() const Line | Count | Source | 7065 | 3 | { | 7066 | 3 | const T arg0 = branch_[0].first->value(); | 7067 | 3 | const T arg1 = branch_[1].first->value(); | 7068 | 3 | return Operation::process(arg0,arg1); | 7069 | 3 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::value() const Line | Count | Source | 7065 | 5 | { | 7066 | 5 | const T arg0 = branch_[0].first->value(); | 7067 | 5 | const T arg1 = branch_[1].first->value(); | 7068 | 5 | return Operation::process(arg0,arg1); | 7069 | 5 | } |
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::value() const Line | Count | Source | 7065 | 19 | { | 7066 | 19 | const T arg0 = branch_[0].first->value(); | 7067 | 19 | const T arg1 = branch_[1].first->value(); | 7068 | 19 | return Operation::process(arg0,arg1); | 7069 | 19 | } |
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::value() const Line | Count | Source | 7065 | 31 | { | 7066 | 31 | const T arg0 = branch_[0].first->value(); | 7067 | 31 | const T arg1 = branch_[1].first->value(); | 7068 | 31 | return Operation::process(arg0,arg1); | 7069 | 31 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::value() const Line | Count | Source | 7065 | 54 | { | 7066 | 54 | const T arg0 = branch_[0].first->value(); | 7067 | 54 | const T arg1 = branch_[1].first->value(); | 7068 | 54 | return Operation::process(arg0,arg1); | 7069 | 54 | } |
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::value() const Line | Count | Source | 7065 | 8 | { | 7066 | 8 | const T arg0 = branch_[0].first->value(); | 7067 | 8 | const T arg1 = branch_[1].first->value(); | 7068 | 8 | return Operation::process(arg0,arg1); | 7069 | 8 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::value() const Line | Count | Source | 7065 | 8 | { | 7066 | 8 | const T arg0 = branch_[0].first->value(); | 7067 | 8 | const T arg1 = branch_[1].first->value(); | 7068 | 8 | return Operation::process(arg0,arg1); | 7069 | 8 | } |
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::value() const Line | Count | Source | 7065 | 1 | { | 7066 | 1 | const T arg0 = branch_[0].first->value(); | 7067 | 1 | const T arg1 = branch_[1].first->value(); | 7068 | 1 | return Operation::process(arg0,arg1); | 7069 | 1 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::value() const Line | Count | Source | 7065 | 10 | { | 7066 | 10 | const T arg0 = branch_[0].first->value(); | 7067 | 10 | const T arg1 = branch_[1].first->value(); | 7068 | 10 | return Operation::process(arg0,arg1); | 7069 | 10 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::value() const Line | Count | Source | 7065 | 2 | { | 7066 | 2 | const T arg0 = branch_[0].first->value(); | 7067 | 2 | const T arg1 = branch_[1].first->value(); | 7068 | 2 | return Operation::process(arg0,arg1); | 7069 | 2 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::value() const Line | Count | Source | 7065 | 11 | { | 7066 | 11 | const T arg0 = branch_[0].first->value(); | 7067 | 11 | const T arg1 = branch_[1].first->value(); | 7068 | 11 | return Operation::process(arg0,arg1); | 7069 | 11 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::value() const Line | Count | Source | 7065 | 1 | { | 7066 | 1 | const T arg0 = branch_[0].first->value(); | 7067 | 1 | const T arg1 = branch_[1].first->value(); | 7068 | 1 | return Operation::process(arg0,arg1); | 7069 | 1 | } |
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::value() const Line | Count | Source | 7065 | 16 | { | 7066 | 16 | const T arg0 = branch_[0].first->value(); | 7067 | 16 | const T arg1 = branch_[1].first->value(); | 7068 | 16 | return Operation::process(arg0,arg1); | 7069 | 16 | } |
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::value() const Line | Count | Source | 7065 | 2 | { | 7066 | 2 | const T arg0 = branch_[0].first->value(); | 7067 | 2 | const T arg1 = branch_[1].first->value(); | 7068 | 2 | return Operation::process(arg0,arg1); | 7069 | 2 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::value() const exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::value() const Line | Count | Source | 7065 | 6 | { | 7066 | 6 | const T arg0 = branch_[0].first->value(); | 7067 | 6 | const T arg1 = branch_[1].first->value(); | 7068 | 6 | return Operation::process(arg0,arg1); | 7069 | 6 | } |
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::value() const Line | Count | Source | 7065 | 10 | { | 7066 | 10 | const T arg0 = branch_[0].first->value(); | 7067 | 10 | const T arg1 = branch_[1].first->value(); | 7068 | 10 | return Operation::process(arg0,arg1); | 7069 | 10 | } |
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::value() const Line | Count | Source | 7065 | 39 | { | 7066 | 39 | const T arg0 = branch_[0].first->value(); | 7067 | 39 | const T arg1 = branch_[1].first->value(); | 7068 | 39 | return Operation::process(arg0,arg1); | 7069 | 39 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::value() const Line | Count | Source | 7065 | 3 | { | 7066 | 3 | const T arg0 = branch_[0].first->value(); | 7067 | 3 | const T arg1 = branch_[1].first->value(); | 7068 | 3 | return Operation::process(arg0,arg1); | 7069 | 3 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::value() const Line | Count | Source | 7065 | 5 | { | 7066 | 5 | const T arg0 = branch_[0].first->value(); | 7067 | 5 | const T arg1 = branch_[1].first->value(); | 7068 | 5 | return Operation::process(arg0,arg1); | 7069 | 5 | } |
|
7070 | | |
7071 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7072 | 1.09M | { |
7073 | 1.09M | return expression_node<T>::e_binary_ext; |
7074 | 1.09M | } exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::type() const Line | Count | Source | 7072 | 48.5k | { | 7073 | 48.5k | return expression_node<T>::e_binary_ext; | 7074 | 48.5k | } |
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::type() const Line | Count | Source | 7072 | 28.5k | { | 7073 | 28.5k | return expression_node<T>::e_binary_ext; | 7074 | 28.5k | } |
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::type() const Line | Count | Source | 7072 | 37.7k | { | 7073 | 37.7k | return expression_node<T>::e_binary_ext; | 7074 | 37.7k | } |
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::type() const Line | Count | Source | 7072 | 488 | { | 7073 | 488 | return expression_node<T>::e_binary_ext; | 7074 | 488 | } |
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::type() const Line | Count | Source | 7072 | 3.22k | { | 7073 | 3.22k | return expression_node<T>::e_binary_ext; | 7074 | 3.22k | } |
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::type() const Line | Count | Source | 7072 | 346 | { | 7073 | 346 | return expression_node<T>::e_binary_ext; | 7074 | 346 | } |
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::type() const Line | Count | Source | 7072 | 437k | { | 7073 | 437k | return expression_node<T>::e_binary_ext; | 7074 | 437k | } |
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::type() const Line | Count | Source | 7072 | 304 | { | 7073 | 304 | return expression_node<T>::e_binary_ext; | 7074 | 304 | } |
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::type() const Line | Count | Source | 7072 | 420k | { | 7073 | 420k | return expression_node<T>::e_binary_ext; | 7074 | 420k | } |
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::type() const Line | Count | Source | 7072 | 35 | { | 7073 | 35 | return expression_node<T>::e_binary_ext; | 7074 | 35 | } |
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::type() const Line | Count | Source | 7072 | 26.3k | { | 7073 | 26.3k | return expression_node<T>::e_binary_ext; | 7074 | 26.3k | } |
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::type() const Line | Count | Source | 7072 | 100 | { | 7073 | 100 | return expression_node<T>::e_binary_ext; | 7074 | 100 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::type() const exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::type() const Line | Count | Source | 7072 | 317 | { | 7073 | 317 | return expression_node<T>::e_binary_ext; | 7074 | 317 | } |
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::type() const Line | Count | Source | 7072 | 3.59k | { | 7073 | 3.59k | return expression_node<T>::e_binary_ext; | 7074 | 3.59k | } |
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::type() const Line | Count | Source | 7072 | 893 | { | 7073 | 893 | return expression_node<T>::e_binary_ext; | 7074 | 893 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::type() const Line | Count | Source | 7072 | 482 | { | 7073 | 482 | return expression_node<T>::e_binary_ext; | 7074 | 482 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::type() const Line | Count | Source | 7072 | 128 | { | 7073 | 128 | return expression_node<T>::e_binary_ext; | 7074 | 128 | } |
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::type() const Line | Count | Source | 7072 | 13.1k | { | 7073 | 13.1k | return expression_node<T>::e_binary_ext; | 7074 | 13.1k | } |
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::type() const Line | Count | Source | 7072 | 6.15k | { | 7073 | 6.15k | return expression_node<T>::e_binary_ext; | 7074 | 6.15k | } |
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::type() const Line | Count | Source | 7072 | 18.2k | { | 7073 | 18.2k | return expression_node<T>::e_binary_ext; | 7074 | 18.2k | } |
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::type() const Line | Count | Source | 7072 | 488 | { | 7073 | 488 | return expression_node<T>::e_binary_ext; | 7074 | 488 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::type() const Line | Count | Source | 7072 | 124 | { | 7073 | 124 | return expression_node<T>::e_binary_ext; | 7074 | 124 | } |
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::type() const Line | Count | Source | 7072 | 346 | { | 7073 | 346 | return expression_node<T>::e_binary_ext; | 7074 | 346 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::type() const Line | Count | Source | 7072 | 8.30k | { | 7073 | 8.30k | return expression_node<T>::e_binary_ext; | 7074 | 8.30k | } |
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::type() const Line | Count | Source | 7072 | 304 | { | 7073 | 304 | return expression_node<T>::e_binary_ext; | 7074 | 304 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::type() const Line | Count | Source | 7072 | 2.63k | { | 7073 | 2.63k | return expression_node<T>::e_binary_ext; | 7074 | 2.63k | } |
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::type() const Line | Count | Source | 7072 | 35 | { | 7073 | 35 | return expression_node<T>::e_binary_ext; | 7074 | 35 | } |
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::type() const Line | Count | Source | 7072 | 26.3k | { | 7073 | 26.3k | return expression_node<T>::e_binary_ext; | 7074 | 26.3k | } |
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::type() const Line | Count | Source | 7072 | 100 | { | 7073 | 100 | return expression_node<T>::e_binary_ext; | 7074 | 100 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::type() const exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::type() const Line | Count | Source | 7072 | 317 | { | 7073 | 317 | return expression_node<T>::e_binary_ext; | 7074 | 317 | } |
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::type() const Line | Count | Source | 7072 | 3.59k | { | 7073 | 3.59k | return expression_node<T>::e_binary_ext; | 7074 | 3.59k | } |
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::type() const Line | Count | Source | 7072 | 893 | { | 7073 | 893 | return expression_node<T>::e_binary_ext; | 7074 | 893 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::type() const Line | Count | Source | 7072 | 482 | { | 7073 | 482 | return expression_node<T>::e_binary_ext; | 7074 | 482 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::type() const Line | Count | Source | 7072 | 128 | { | 7073 | 128 | return expression_node<T>::e_binary_ext; | 7074 | 128 | } |
|
7075 | | |
7076 | | inline operator_type operation() |
7077 | | { |
7078 | | return Operation::operation(); |
7079 | | } |
7080 | | |
7081 | | inline expression_node<T>* branch(const std::size_t& index = 0) const exprtk_override |
7082 | 0 | { |
7083 | 0 | assert(index < 2); |
7084 | 0 | return branch_[index].first; |
7085 | 0 | } Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::branch(unsigned long const&) const Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::branch(unsigned long const&) const |
7086 | | |
7087 | | inline bool valid() const exprtk_override |
7088 | 639M | { |
7089 | 639M | return |
7090 | 639M | branch_[0].first && branch_[0].first->valid() && |
7091 | 639M | branch_[1].first && branch_[1].first->valid() ; |
7092 | 639M | } exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::valid() const Line | Count | Source | 7088 | 27.6M | { | 7089 | 27.6M | return | 7090 | 27.6M | branch_[0].first && branch_[0].first->valid() && | 7091 | 27.6M | branch_[1].first && branch_[1].first->valid() ; | 7092 | 27.6M | } |
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::valid() const Line | Count | Source | 7088 | 18.0M | { | 7089 | 18.0M | return | 7090 | 18.0M | branch_[0].first && branch_[0].first->valid() && | 7091 | 18.0M | branch_[1].first && branch_[1].first->valid() ; | 7092 | 18.0M | } |
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::valid() const Line | Count | Source | 7088 | 15.0M | { | 7089 | 15.0M | return | 7090 | 15.0M | branch_[0].first && branch_[0].first->valid() && | 7091 | 15.0M | branch_[1].first && branch_[1].first->valid() ; | 7092 | 15.0M | } |
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::valid() const Line | Count | Source | 7088 | 342 | { | 7089 | 342 | return | 7090 | 342 | branch_[0].first && branch_[0].first->valid() && | 7091 | 342 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 342 | } |
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::valid() const Line | Count | Source | 7088 | 1.98M | { | 7089 | 1.98M | return | 7090 | 1.98M | branch_[0].first && branch_[0].first->valid() && | 7091 | 1.98M | branch_[1].first && branch_[1].first->valid() ; | 7092 | 1.98M | } |
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::valid() const Line | Count | Source | 7088 | 269 | { | 7089 | 269 | return | 7090 | 269 | branch_[0].first && branch_[0].first->valid() && | 7091 | 269 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 269 | } |
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::valid() const Line | Count | Source | 7088 | 291M | { | 7089 | 291M | return | 7090 | 291M | branch_[0].first && branch_[0].first->valid() && | 7091 | 291M | branch_[1].first && branch_[1].first->valid() ; | 7092 | 291M | } |
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::valid() const Line | Count | Source | 7088 | 104 | { | 7089 | 104 | return | 7090 | 104 | branch_[0].first && branch_[0].first->valid() && | 7091 | 104 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 104 | } |
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::valid() const Line | Count | Source | 7088 | 285M | { | 7089 | 285M | return | 7090 | 285M | branch_[0].first && branch_[0].first->valid() && | 7091 | 285M | branch_[1].first && branch_[1].first->valid() ; | 7092 | 285M | } |
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::valid() const Line | Count | Source | 7088 | 3 | { | 7089 | 3 | return | 7090 | 3 | branch_[0].first && branch_[0].first->valid() && | 7091 | 3 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 3 | } |
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::valid() const Line | Count | Source | 7088 | 48.6k | { | 7089 | 48.6k | return | 7090 | 48.6k | branch_[0].first && branch_[0].first->valid() && | 7091 | 48.6k | branch_[1].first && branch_[1].first->valid() ; | 7092 | 48.6k | } |
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::valid() const Line | Count | Source | 7088 | 51 | { | 7089 | 51 | return | 7090 | 51 | branch_[0].first && branch_[0].first->valid() && | 7091 | 51 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 51 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::valid() const exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::valid() const Line | Count | Source | 7088 | 90 | { | 7089 | 90 | return | 7090 | 90 | branch_[0].first && branch_[0].first->valid() && | 7091 | 90 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 90 | } |
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::valid() const Line | Count | Source | 7088 | 2.42k | { | 7089 | 2.42k | return | 7090 | 2.42k | branch_[0].first && branch_[0].first->valid() && | 7091 | 2.42k | branch_[1].first && branch_[1].first->valid() ; | 7092 | 2.42k | } |
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::valid() const Line | Count | Source | 7088 | 474 | { | 7089 | 474 | return | 7090 | 474 | branch_[0].first && branch_[0].first->valid() && | 7091 | 474 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 474 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::valid() const Line | Count | Source | 7088 | 95 | { | 7089 | 95 | return | 7090 | 95 | branch_[0].first && branch_[0].first->valid() && | 7091 | 95 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 95 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::valid() const Line | Count | Source | 7088 | 18 | { | 7089 | 18 | return | 7090 | 18 | branch_[0].first && branch_[0].first->valid() && | 7091 | 18 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 18 | } |
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::valid() const Line | Count | Source | 7088 | 20.9k | { | 7089 | 20.9k | return | 7090 | 20.9k | branch_[0].first && branch_[0].first->valid() && | 7091 | 20.9k | branch_[1].first && branch_[1].first->valid() ; | 7092 | 20.9k | } |
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::valid() const Line | Count | Source | 7088 | 10.7k | { | 7089 | 10.7k | return | 7090 | 10.7k | branch_[0].first && branch_[0].first->valid() && | 7091 | 10.7k | branch_[1].first && branch_[1].first->valid() ; | 7092 | 10.7k | } |
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::valid() const Line | Count | Source | 7088 | 20.4k | { | 7089 | 20.4k | return | 7090 | 20.4k | branch_[0].first && branch_[0].first->valid() && | 7091 | 20.4k | branch_[1].first && branch_[1].first->valid() ; | 7092 | 20.4k | } |
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::valid() const Line | Count | Source | 7088 | 342 | { | 7089 | 342 | return | 7090 | 342 | branch_[0].first && branch_[0].first->valid() && | 7091 | 342 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 342 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::valid() const Line | Count | Source | 7088 | 12 | { | 7089 | 12 | return | 7090 | 12 | branch_[0].first && branch_[0].first->valid() && | 7091 | 12 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 12 | } |
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::valid() const Line | Count | Source | 7088 | 269 | { | 7089 | 269 | return | 7090 | 269 | branch_[0].first && branch_[0].first->valid() && | 7091 | 269 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 269 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::valid() const Line | Count | Source | 7088 | 20.7k | { | 7089 | 20.7k | return | 7090 | 20.7k | branch_[0].first && branch_[0].first->valid() && | 7091 | 20.7k | branch_[1].first && branch_[1].first->valid() ; | 7092 | 20.7k | } |
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::valid() const Line | Count | Source | 7088 | 104 | { | 7089 | 104 | return | 7090 | 104 | branch_[0].first && branch_[0].first->valid() && | 7091 | 104 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 104 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::valid() const Line | Count | Source | 7088 | 5.36k | { | 7089 | 5.36k | return | 7090 | 5.36k | branch_[0].first && branch_[0].first->valid() && | 7091 | 5.36k | branch_[1].first && branch_[1].first->valid() ; | 7092 | 5.36k | } |
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::valid() const Line | Count | Source | 7088 | 3 | { | 7089 | 3 | return | 7090 | 3 | branch_[0].first && branch_[0].first->valid() && | 7091 | 3 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 3 | } |
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::valid() const Line | Count | Source | 7088 | 48.6k | { | 7089 | 48.6k | return | 7090 | 48.6k | branch_[0].first && branch_[0].first->valid() && | 7091 | 48.6k | branch_[1].first && branch_[1].first->valid() ; | 7092 | 48.6k | } |
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::valid() const Line | Count | Source | 7088 | 51 | { | 7089 | 51 | return | 7090 | 51 | branch_[0].first && branch_[0].first->valid() && | 7091 | 51 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 51 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::valid() const exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::valid() const Line | Count | Source | 7088 | 90 | { | 7089 | 90 | return | 7090 | 90 | branch_[0].first && branch_[0].first->valid() && | 7091 | 90 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 90 | } |
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::valid() const Line | Count | Source | 7088 | 2.42k | { | 7089 | 2.42k | return | 7090 | 2.42k | branch_[0].first && branch_[0].first->valid() && | 7091 | 2.42k | branch_[1].first && branch_[1].first->valid() ; | 7092 | 2.42k | } |
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::valid() const Line | Count | Source | 7088 | 474 | { | 7089 | 474 | return | 7090 | 474 | branch_[0].first && branch_[0].first->valid() && | 7091 | 474 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 474 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::valid() const Line | Count | Source | 7088 | 95 | { | 7089 | 95 | return | 7090 | 95 | branch_[0].first && branch_[0].first->valid() && | 7091 | 95 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 95 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::valid() const Line | Count | Source | 7088 | 18 | { | 7089 | 18 | return | 7090 | 18 | branch_[0].first && branch_[0].first->valid() && | 7091 | 18 | branch_[1].first && branch_[1].first->valid() ; | 7092 | 18 | } |
|
7093 | | |
7094 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7095 | 38.2k | { |
7096 | 38.2k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
7097 | 38.2k | } exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 1.84k | { | 7096 | 1.84k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 1.84k | } |
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 1.16k | { | 7096 | 1.16k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 1.16k | } |
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 1.32k | { | 7096 | 1.32k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 1.32k | } |
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 23 | { | 7096 | 23 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 23 | } |
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 109 | { | 7096 | 109 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 109 | } |
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 12 | { | 7096 | 12 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 12 | } |
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 14.9k | { | 7096 | 14.9k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 14.9k | } |
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 11 | { | 7096 | 11 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 11 | } |
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 14.2k | { | 7096 | 14.2k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 14.2k | } |
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 2 | { | 7096 | 2 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 2 | } |
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 1.03k | { | 7096 | 1.03k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 1.03k | } |
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 8 | { | 7096 | 8 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 8 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 13 | { | 7096 | 13 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 13 | } |
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 130 | { | 7096 | 130 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 130 | } |
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 39 | { | 7096 | 39 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 39 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 20 | { | 7096 | 20 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 20 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7095 | 6 | { | 7096 | 6 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 6 | } |
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 476 | { | 7096 | 476 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 476 | } |
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 270 | { | 7096 | 270 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 270 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 570 | { | 7096 | 570 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 570 | } |
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 23 | { | 7096 | 23 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 23 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 9 | { | 7096 | 9 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 9 | } |
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 12 | { | 7096 | 12 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 12 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 478 | { | 7096 | 478 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 478 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 11 | { | 7096 | 11 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 11 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 111 | { | 7096 | 111 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 111 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 2 | { | 7096 | 2 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 2 | } |
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 1.03k | { | 7096 | 1.03k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 1.03k | } |
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 8 | { | 7096 | 8 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 8 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 13 | { | 7096 | 13 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 13 | } |
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 130 | { | 7096 | 130 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 130 | } |
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 39 | { | 7096 | 39 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 39 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 20 | { | 7096 | 20 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 20 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7095 | 6 | { | 7096 | 6 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7097 | 6 | } |
|
7098 | | |
7099 | | std::size_t node_depth() const exprtk_override |
7100 | 79.0k | { |
7101 | 79.0k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); |
7102 | 79.0k | } exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::node_depth() const Line | Count | Source | 7100 | 4.13k | { | 7101 | 4.13k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 4.13k | } |
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::node_depth() const Line | Count | Source | 7100 | 3.34k | { | 7101 | 3.34k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 3.34k | } |
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::node_depth() const Line | Count | Source | 7100 | 2.74k | { | 7101 | 2.74k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 2.74k | } |
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::node_depth() const Line | Count | Source | 7100 | 49 | { | 7101 | 49 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 49 | } |
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::node_depth() const Line | Count | Source | 7100 | 218 | { | 7101 | 218 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 218 | } |
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::node_depth() const Line | Count | Source | 7100 | 36 | { | 7101 | 36 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 36 | } |
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::node_depth() const Line | Count | Source | 7100 | 30.1k | { | 7101 | 30.1k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 30.1k | } |
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::node_depth() const Line | Count | Source | 7100 | 23 | { | 7101 | 23 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 23 | } |
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::node_depth() const Line | Count | Source | 7100 | 28.5k | { | 7101 | 28.5k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 28.5k | } |
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::node_depth() const Line | Count | Source | 7100 | 4 | { | 7101 | 4 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 4 | } |
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::node_depth() const Line | Count | Source | 7100 | 2.11k | { | 7101 | 2.11k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 2.11k | } |
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::node_depth() const Line | Count | Source | 7100 | 22 | { | 7101 | 22 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 22 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::node_depth() const exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::node_depth() const Line | Count | Source | 7100 | 28 | { | 7101 | 28 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 28 | } |
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::node_depth() const Line | Count | Source | 7100 | 262 | { | 7101 | 262 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 262 | } |
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::node_depth() const Line | Count | Source | 7100 | 79 | { | 7101 | 79 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 79 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::node_depth() const Line | Count | Source | 7100 | 40 | { | 7101 | 40 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 40 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::node_depth() const Line | Count | Source | 7100 | 11 | { | 7101 | 11 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 11 | } |
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::node_depth() const Line | Count | Source | 7100 | 1.25k | { | 7101 | 1.25k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 1.25k | } |
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::node_depth() const Line | Count | Source | 7100 | 690 | { | 7101 | 690 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 690 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::node_depth() const Line | Count | Source | 7100 | 1.24k | { | 7101 | 1.24k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 1.24k | } |
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::node_depth() const Line | Count | Source | 7100 | 49 | { | 7101 | 49 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 49 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::node_depth() const Line | Count | Source | 7100 | 18 | { | 7101 | 18 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 18 | } |
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::node_depth() const Line | Count | Source | 7100 | 36 | { | 7101 | 36 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 36 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::node_depth() const Line | Count | Source | 7100 | 1.13k | { | 7101 | 1.13k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 1.13k | } |
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::node_depth() const Line | Count | Source | 7100 | 23 | { | 7101 | 23 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 23 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::node_depth() const Line | Count | Source | 7100 | 225 | { | 7101 | 225 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 225 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::node_depth() const Line | Count | Source | 7100 | 4 | { | 7101 | 4 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 4 | } |
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::node_depth() const Line | Count | Source | 7100 | 2.11k | { | 7101 | 2.11k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 2.11k | } |
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::node_depth() const Line | Count | Source | 7100 | 22 | { | 7101 | 22 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 22 | } |
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::node_depth() const exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::node_depth() const Line | Count | Source | 7100 | 28 | { | 7101 | 28 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 28 | } |
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::node_depth() const Line | Count | Source | 7100 | 262 | { | 7101 | 262 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 262 | } |
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::node_depth() const Line | Count | Source | 7100 | 79 | { | 7101 | 79 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 79 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::node_depth() const Line | Count | Source | 7100 | 40 | { | 7101 | 40 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 40 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::node_depth() const Line | Count | Source | 7100 | 11 | { | 7101 | 11 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7102 | 11 | } |
|
7103 | | |
7104 | | protected: |
7105 | | |
7106 | | branch_t branch_[2]; |
7107 | | }; |
7108 | | |
7109 | | template <typename T> |
7110 | | class trinary_node : public expression_node<T> |
7111 | | { |
7112 | | public: |
7113 | | |
7114 | | typedef expression_node<T>* expression_ptr; |
7115 | | typedef std::pair<expression_ptr,bool> branch_t; |
7116 | | |
7117 | | trinary_node(const operator_type& opr, |
7118 | | expression_ptr branch0, |
7119 | | expression_ptr branch1, |
7120 | | expression_ptr branch2) |
7121 | 18 | : operation_(opr) |
7122 | 18 | { |
7123 | 18 | init_branches<3>(branch_, branch0, branch1, branch2); |
7124 | 18 | assert(valid()); |
7125 | 18 | } exprtk::details::trinary_node<double>::trinary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7121 | 9 | : operation_(opr) | 7122 | 9 | { | 7123 | 9 | init_branches<3>(branch_, branch0, branch1, branch2); | 7124 | 9 | assert(valid()); | 7125 | 9 | } |
exprtk::details::trinary_node<float>::trinary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7121 | 9 | : operation_(opr) | 7122 | 9 | { | 7123 | 9 | init_branches<3>(branch_, branch0, branch1, branch2); | 7124 | 9 | assert(valid()); | 7125 | 9 | } |
|
7126 | | |
7127 | | inline T value() const exprtk_override |
7128 | 0 | { |
7129 | 0 | const T arg0 = branch_[0].first->value(); |
7130 | 0 | const T arg1 = branch_[1].first->value(); |
7131 | 0 | const T arg2 = branch_[2].first->value(); |
7132 | |
|
7133 | 0 | switch (operation_) |
7134 | 0 | { |
7135 | 0 | case e_inrange : return (arg1 < arg0) ? T(0) : ((arg1 > arg2) ? T(0) : T(1)); |
7136 | | |
7137 | 0 | case e_clamp : return (arg1 < arg0) ? arg0 : (arg1 > arg2 ? arg2 : arg1); |
7138 | | |
7139 | 0 | case e_iclamp : if ((arg1 <= arg0) || (arg1 >= arg2)) |
7140 | 0 | return arg1; |
7141 | 0 | else |
7142 | 0 | return ((T(2) * arg1 <= (arg2 + arg0)) ? arg0 : arg2); |
7143 | | |
7144 | 0 | default : exprtk_debug(("trinary_node::value() - Error: Invalid operation\n")); |
7145 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
7146 | 0 | } |
7147 | 0 | } Unexecuted instantiation: exprtk::details::trinary_node<double>::value() const Unexecuted instantiation: exprtk::details::trinary_node<float>::value() const |
7148 | | |
7149 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7150 | 540 | { |
7151 | 540 | return expression_node<T>::e_trinary; |
7152 | 540 | } exprtk::details::trinary_node<double>::type() const Line | Count | Source | 7150 | 270 | { | 7151 | 270 | return expression_node<T>::e_trinary; | 7152 | 270 | } |
exprtk::details::trinary_node<float>::type() const Line | Count | Source | 7150 | 270 | { | 7151 | 270 | return expression_node<T>::e_trinary; | 7152 | 270 | } |
|
7153 | | |
7154 | | inline bool valid() const exprtk_override |
7155 | 298 | { |
7156 | 298 | return |
7157 | 298 | branch_[0].first && branch_[0].first->valid() && |
7158 | 298 | branch_[1].first && branch_[1].first->valid() && |
7159 | 298 | branch_[2].first && branch_[2].first->valid() ; |
7160 | 298 | } exprtk::details::trinary_node<double>::valid() const Line | Count | Source | 7155 | 149 | { | 7156 | 149 | return | 7157 | 149 | branch_[0].first && branch_[0].first->valid() && | 7158 | 149 | branch_[1].first && branch_[1].first->valid() && | 7159 | 149 | branch_[2].first && branch_[2].first->valid() ; | 7160 | 149 | } |
exprtk::details::trinary_node<float>::valid() const Line | Count | Source | 7155 | 149 | { | 7156 | 149 | return | 7157 | 149 | branch_[0].first && branch_[0].first->valid() && | 7158 | 149 | branch_[1].first && branch_[1].first->valid() && | 7159 | 149 | branch_[2].first && branch_[2].first->valid() ; | 7160 | 149 | } |
|
7161 | | |
7162 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7163 | 18 | { |
7164 | 18 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
7165 | 18 | } exprtk::details::trinary_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7163 | 9 | { | 7164 | 9 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7165 | 9 | } |
exprtk::details::trinary_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7163 | 9 | { | 7164 | 9 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7165 | 9 | } |
|
7166 | | |
7167 | | std::size_t node_depth() const exprtk_override exprtk_final |
7168 | 54 | { |
7169 | 54 | return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_); |
7170 | 54 | } exprtk::details::trinary_node<double>::node_depth() const Line | Count | Source | 7168 | 27 | { | 7169 | 27 | return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_); | 7170 | 27 | } |
exprtk::details::trinary_node<float>::node_depth() const Line | Count | Source | 7168 | 27 | { | 7169 | 27 | return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_); | 7170 | 27 | } |
|
7171 | | |
7172 | | protected: |
7173 | | |
7174 | | operator_type operation_; |
7175 | | branch_t branch_[3]; |
7176 | | }; |
7177 | | |
7178 | | template <typename T> |
7179 | | class quaternary_node : public expression_node<T> |
7180 | | { |
7181 | | public: |
7182 | | |
7183 | | typedef expression_node<T>* expression_ptr; |
7184 | | typedef std::pair<expression_ptr,bool> branch_t; |
7185 | | |
7186 | | quaternary_node(const operator_type& opr, |
7187 | | expression_ptr branch0, |
7188 | | expression_ptr branch1, |
7189 | | expression_ptr branch2, |
7190 | | expression_ptr branch3) |
7191 | 0 | : operation_(opr) |
7192 | 0 | { |
7193 | 0 | init_branches<4>(branch_, branch0, branch1, branch2, branch3); |
7194 | 0 | } Unexecuted instantiation: exprtk::details::quaternary_node<double>::quaternary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::quaternary_node<float>::quaternary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
7195 | | |
7196 | | inline T value() const exprtk_override |
7197 | 0 | { |
7198 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
7199 | 0 | } Unexecuted instantiation: exprtk::details::quaternary_node<double>::value() const Unexecuted instantiation: exprtk::details::quaternary_node<float>::value() const |
7200 | | |
7201 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7202 | 0 | { |
7203 | 0 | return expression_node<T>::e_quaternary; |
7204 | 0 | } Unexecuted instantiation: exprtk::details::quaternary_node<double>::type() const Unexecuted instantiation: exprtk::details::quaternary_node<float>::type() const |
7205 | | |
7206 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7207 | 0 | { |
7208 | 0 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
7209 | 0 | } Unexecuted instantiation: exprtk::details::quaternary_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::quaternary_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
7210 | | |
7211 | | std::size_t node_depth() const exprtk_override exprtk_final |
7212 | 0 | { |
7213 | 0 | return expression_node<T>::ndb_t::template compute_node_depth<4>(branch_); |
7214 | 0 | } Unexecuted instantiation: exprtk::details::quaternary_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::quaternary_node<float>::node_depth() const |
7215 | | |
7216 | | inline bool valid() const exprtk_override |
7217 | 0 | { |
7218 | 0 | return |
7219 | 0 | branch_[0].first && branch_[0].first->valid() && |
7220 | 0 | branch_[1].first && branch_[1].first->valid() && |
7221 | 0 | branch_[2].first && branch_[2].first->valid() && |
7222 | 0 | branch_[3].first && branch_[3].first->valid() ; |
7223 | 0 | } Unexecuted instantiation: exprtk::details::quaternary_node<double>::valid() const Unexecuted instantiation: exprtk::details::quaternary_node<float>::valid() const |
7224 | | |
7225 | | protected: |
7226 | | |
7227 | | operator_type operation_; |
7228 | | branch_t branch_[4]; |
7229 | | }; |
7230 | | |
7231 | | template <typename T> |
7232 | | class conditional_node exprtk_final : public expression_node<T> |
7233 | | { |
7234 | | public: |
7235 | | |
7236 | | typedef expression_node<T>* expression_ptr; |
7237 | | typedef std::pair<expression_ptr,bool> branch_t; |
7238 | | |
7239 | | conditional_node(expression_ptr condition, |
7240 | | expression_ptr consequent, |
7241 | | expression_ptr alternative) |
7242 | 16 | { |
7243 | 16 | construct_branch_pair(condition_ , condition ); |
7244 | 16 | construct_branch_pair(consequent_ , consequent ); |
7245 | 16 | construct_branch_pair(alternative_, alternative); |
7246 | 16 | assert(valid()); |
7247 | 16 | } exprtk::details::conditional_node<double>::conditional_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7242 | 8 | { | 7243 | 8 | construct_branch_pair(condition_ , condition ); | 7244 | 8 | construct_branch_pair(consequent_ , consequent ); | 7245 | 8 | construct_branch_pair(alternative_, alternative); | 7246 | 8 | assert(valid()); | 7247 | 8 | } |
exprtk::details::conditional_node<float>::conditional_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7242 | 8 | { | 7243 | 8 | construct_branch_pair(condition_ , condition ); | 7244 | 8 | construct_branch_pair(consequent_ , consequent ); | 7245 | 8 | construct_branch_pair(alternative_, alternative); | 7246 | 8 | assert(valid()); | 7247 | 8 | } |
|
7248 | | |
7249 | | inline T value() const exprtk_override |
7250 | 10 | { |
7251 | 10 | if (is_true(condition_)) |
7252 | 10 | return consequent_.first->value(); |
7253 | 0 | else |
7254 | 0 | return alternative_.first->value(); |
7255 | 10 | } exprtk::details::conditional_node<double>::value() const Line | Count | Source | 7250 | 5 | { | 7251 | 5 | if (is_true(condition_)) | 7252 | 5 | return consequent_.first->value(); | 7253 | 0 | else | 7254 | 0 | return alternative_.first->value(); | 7255 | 5 | } |
exprtk::details::conditional_node<float>::value() const Line | Count | Source | 7250 | 5 | { | 7251 | 5 | if (is_true(condition_)) | 7252 | 5 | return consequent_.first->value(); | 7253 | 0 | else | 7254 | 0 | return alternative_.first->value(); | 7255 | 5 | } |
|
7256 | | |
7257 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7258 | 64 | { |
7259 | 64 | return expression_node<T>::e_conditional; |
7260 | 64 | } exprtk::details::conditional_node<double>::type() const Line | Count | Source | 7258 | 32 | { | 7259 | 32 | return expression_node<T>::e_conditional; | 7260 | 32 | } |
exprtk::details::conditional_node<float>::type() const Line | Count | Source | 7258 | 32 | { | 7259 | 32 | return expression_node<T>::e_conditional; | 7260 | 32 | } |
|
7261 | | |
7262 | | inline bool valid() const exprtk_override |
7263 | 36 | { |
7264 | 36 | return |
7265 | 36 | condition_ .first && condition_ .first->valid() && |
7266 | 36 | consequent_ .first && consequent_ .first->valid() && |
7267 | 36 | alternative_.first && alternative_.first->valid() ; |
7268 | 36 | } exprtk::details::conditional_node<double>::valid() const Line | Count | Source | 7263 | 18 | { | 7264 | 18 | return | 7265 | 18 | condition_ .first && condition_ .first->valid() && | 7266 | 18 | consequent_ .first && consequent_ .first->valid() && | 7267 | 18 | alternative_.first && alternative_.first->valid() ; | 7268 | 18 | } |
exprtk::details::conditional_node<float>::valid() const Line | Count | Source | 7263 | 18 | { | 7264 | 18 | return | 7265 | 18 | condition_ .first && condition_ .first->valid() && | 7266 | 18 | consequent_ .first && consequent_ .first->valid() && | 7267 | 18 | alternative_.first && alternative_.first->valid() ; | 7268 | 18 | } |
|
7269 | | |
7270 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7271 | 16 | { |
7272 | 16 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); |
7273 | 16 | expression_node<T>::ndb_t::collect(consequent_ , node_delete_list); |
7274 | 16 | expression_node<T>::ndb_t::collect(alternative_ , node_delete_list); |
7275 | 16 | } exprtk::details::conditional_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7271 | 8 | { | 7272 | 8 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); | 7273 | 8 | expression_node<T>::ndb_t::collect(consequent_ , node_delete_list); | 7274 | 8 | expression_node<T>::ndb_t::collect(alternative_ , node_delete_list); | 7275 | 8 | } |
exprtk::details::conditional_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7271 | 8 | { | 7272 | 8 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); | 7273 | 8 | expression_node<T>::ndb_t::collect(consequent_ , node_delete_list); | 7274 | 8 | expression_node<T>::ndb_t::collect(alternative_ , node_delete_list); | 7275 | 8 | } |
|
7276 | | |
7277 | | std::size_t node_depth() const exprtk_override |
7278 | 18 | { |
7279 | 18 | return expression_node<T>::ndb_t::compute_node_depth |
7280 | 18 | (condition_, consequent_, alternative_); |
7281 | 18 | } exprtk::details::conditional_node<double>::node_depth() const Line | Count | Source | 7278 | 9 | { | 7279 | 9 | return expression_node<T>::ndb_t::compute_node_depth | 7280 | 9 | (condition_, consequent_, alternative_); | 7281 | 9 | } |
exprtk::details::conditional_node<float>::node_depth() const Line | Count | Source | 7278 | 9 | { | 7279 | 9 | return expression_node<T>::ndb_t::compute_node_depth | 7280 | 9 | (condition_, consequent_, alternative_); | 7281 | 9 | } |
|
7282 | | |
7283 | | private: |
7284 | | |
7285 | | branch_t condition_; |
7286 | | branch_t consequent_; |
7287 | | branch_t alternative_; |
7288 | | }; |
7289 | | |
7290 | | template <typename T> |
7291 | | class cons_conditional_node exprtk_final : public expression_node<T> |
7292 | | { |
7293 | | public: |
7294 | | |
7295 | | // Consequent only conditional statement node |
7296 | | typedef expression_node<T>* expression_ptr; |
7297 | | typedef std::pair<expression_ptr,bool> branch_t; |
7298 | | |
7299 | | cons_conditional_node(expression_ptr condition, |
7300 | | expression_ptr consequent) |
7301 | 0 | { |
7302 | 0 | construct_branch_pair(condition_ , condition ); |
7303 | 0 | construct_branch_pair(consequent_, consequent); |
7304 | 0 | assert(valid()); |
7305 | 0 | } Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::cons_conditional_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::cons_conditional_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
7306 | | |
7307 | | inline T value() const exprtk_override |
7308 | 0 | { |
7309 | 0 | if (is_true(condition_)) |
7310 | 0 | return consequent_.first->value(); |
7311 | 0 | else |
7312 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
7313 | 0 | } Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::value() const Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::value() const |
7314 | | |
7315 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7316 | 0 | { |
7317 | 0 | return expression_node<T>::e_conditional; |
7318 | 0 | } Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::type() const Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::type() const |
7319 | | |
7320 | | inline bool valid() const exprtk_override |
7321 | 0 | { |
7322 | 0 | return |
7323 | 0 | condition_ .first && condition_ .first->valid() && |
7324 | 0 | consequent_.first && consequent_.first->valid() ; |
7325 | 0 | } Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::valid() const Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::valid() const |
7326 | | |
7327 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7328 | 0 | { |
7329 | 0 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); |
7330 | 0 | expression_node<T>::ndb_t::collect(consequent_ , node_delete_list); |
7331 | 0 | } Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
7332 | | |
7333 | | std::size_t node_depth() const exprtk_override |
7334 | 0 | { |
7335 | 0 | return expression_node<T>::ndb_t:: |
7336 | 0 | compute_node_depth(condition_, consequent_); |
7337 | 0 | } Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::node_depth() const |
7338 | | |
7339 | | private: |
7340 | | |
7341 | | branch_t condition_; |
7342 | | branch_t consequent_; |
7343 | | }; |
7344 | | |
7345 | | #ifndef exprtk_disable_break_continue |
7346 | | template <typename T> |
7347 | | class break_exception |
7348 | | { |
7349 | | public: |
7350 | | |
7351 | | explicit break_exception(const T& v) |
7352 | 0 | : value(v) |
7353 | 0 | {} Unexecuted instantiation: exprtk::details::break_exception<double>::break_exception(double const&) Unexecuted instantiation: exprtk::details::break_exception<float>::break_exception(float const&) |
7354 | | |
7355 | | T value; |
7356 | | }; |
7357 | | |
7358 | | class continue_exception {}; |
7359 | | |
7360 | | template <typename T> |
7361 | | class break_node exprtk_final : public expression_node<T> |
7362 | | { |
7363 | | public: |
7364 | | |
7365 | | typedef expression_node<T>* expression_ptr; |
7366 | | typedef std::pair<expression_ptr,bool> branch_t; |
7367 | | |
7368 | | explicit break_node(expression_ptr ret = expression_ptr(0)) |
7369 | 1 | { |
7370 | 1 | construct_branch_pair(return_, ret); |
7371 | 1 | } exprtk::details::break_node<double>::break_node(exprtk::details::expression_node<double>*) Line | Count | Source | 7369 | 1 | { | 7370 | 1 | construct_branch_pair(return_, ret); | 7371 | 1 | } |
Unexecuted instantiation: exprtk::details::break_node<float>::break_node(exprtk::details::expression_node<float>*) |
7372 | | |
7373 | | inline T value() const exprtk_override |
7374 | 0 | { |
7375 | 0 | const T result = return_.first ? |
7376 | 0 | return_.first->value() : |
7377 | 0 | std::numeric_limits<T>::quiet_NaN(); |
7378 | |
|
7379 | 0 | throw break_exception<T>(result); |
7380 | | |
7381 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
7382 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
7383 | 0 | #endif |
7384 | 0 | } Unexecuted instantiation: exprtk::details::break_node<double>::value() const Unexecuted instantiation: exprtk::details::break_node<float>::value() const |
7385 | | |
7386 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7387 | 6 | { |
7388 | 6 | return expression_node<T>::e_break; |
7389 | 6 | } exprtk::details::break_node<double>::type() const Line | Count | Source | 7387 | 6 | { | 7388 | 6 | return expression_node<T>::e_break; | 7389 | 6 | } |
Unexecuted instantiation: exprtk::details::break_node<float>::type() const |
7390 | | |
7391 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7392 | 1 | { |
7393 | 1 | expression_node<T>::ndb_t::collect(return_, node_delete_list); |
7394 | 1 | } exprtk::details::break_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7392 | 1 | { | 7393 | 1 | expression_node<T>::ndb_t::collect(return_, node_delete_list); | 7394 | 1 | } |
Unexecuted instantiation: exprtk::details::break_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
7395 | | |
7396 | | std::size_t node_depth() const exprtk_override |
7397 | 1 | { |
7398 | 1 | return expression_node<T>::ndb_t::compute_node_depth(return_); |
7399 | 1 | } exprtk::details::break_node<double>::node_depth() const Line | Count | Source | 7397 | 1 | { | 7398 | 1 | return expression_node<T>::ndb_t::compute_node_depth(return_); | 7399 | 1 | } |
Unexecuted instantiation: exprtk::details::break_node<float>::node_depth() const |
7400 | | |
7401 | | private: |
7402 | | |
7403 | | branch_t return_; |
7404 | | }; |
7405 | | |
7406 | | template <typename T> |
7407 | | class continue_node exprtk_final : public expression_node<T> |
7408 | | { |
7409 | | public: |
7410 | | |
7411 | | inline T value() const exprtk_override |
7412 | 0 | { |
7413 | 0 | throw continue_exception(); |
7414 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
7415 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
7416 | 0 | #endif |
7417 | 0 | } Unexecuted instantiation: exprtk::details::continue_node<double>::value() const Unexecuted instantiation: exprtk::details::continue_node<float>::value() const |
7418 | | |
7419 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7420 | 0 | { |
7421 | 0 | return expression_node<T>::e_break; |
7422 | 0 | } Unexecuted instantiation: exprtk::details::continue_node<double>::type() const Unexecuted instantiation: exprtk::details::continue_node<float>::type() const |
7423 | | }; |
7424 | | #endif |
7425 | | |
7426 | | struct loop_runtime_checker |
7427 | | { |
7428 | | loop_runtime_checker(loop_runtime_check_ptr loop_runtime_check, |
7429 | | loop_runtime_check::loop_types lp_typ = loop_runtime_check::e_invalid) |
7430 | 0 | : iteration_count_(0) |
7431 | 0 | , loop_runtime_check_(loop_runtime_check) |
7432 | 0 | , max_loop_iterations_(loop_runtime_check_->max_loop_iterations) |
7433 | 0 | , loop_type_(lp_typ) |
7434 | 0 | { |
7435 | 0 | assert(loop_runtime_check_); |
7436 | 0 | } |
7437 | | |
7438 | | inline void reset(const _uint64_t initial_value = 0) const |
7439 | 0 | { |
7440 | 0 | iteration_count_ = initial_value; |
7441 | 0 | } |
7442 | | |
7443 | | inline bool check() const |
7444 | 0 | { |
7445 | 0 | assert(loop_runtime_check_); |
7446 | | |
7447 | 0 | if ( |
7448 | 0 | (++iteration_count_ <= max_loop_iterations_) && |
7449 | 0 | loop_runtime_check_->check() |
7450 | 0 | ) |
7451 | 0 | { |
7452 | 0 | return true; |
7453 | 0 | } |
7454 | | |
7455 | 0 | loop_runtime_check::violation_context ctxt; |
7456 | 0 | ctxt.loop = loop_type_; |
7457 | 0 | ctxt.violation = loop_runtime_check::e_iteration_count; |
7458 | |
|
7459 | 0 | loop_runtime_check_->handle_runtime_violation(ctxt); |
7460 | |
|
7461 | 0 | return false; |
7462 | 0 | } |
7463 | | |
7464 | | bool valid() const |
7465 | 0 | { |
7466 | 0 | return 0 != loop_runtime_check_; |
7467 | 0 | } |
7468 | | |
7469 | | mutable _uint64_t iteration_count_; |
7470 | | mutable loop_runtime_check_ptr loop_runtime_check_; |
7471 | | const details::_uint64_t& max_loop_iterations_; |
7472 | | loop_runtime_check::loop_types loop_type_; |
7473 | | }; |
7474 | | |
7475 | | template <typename T> |
7476 | | class while_loop_node : public expression_node<T> |
7477 | | { |
7478 | | public: |
7479 | | |
7480 | | typedef expression_node<T>* expression_ptr; |
7481 | | typedef std::pair<expression_ptr,bool> branch_t; |
7482 | | |
7483 | | while_loop_node(expression_ptr condition, |
7484 | | expression_ptr loop_body) |
7485 | 0 | { |
7486 | 0 | construct_branch_pair(condition_, condition); |
7487 | 0 | construct_branch_pair(loop_body_, loop_body); |
7488 | 0 | assert(valid()); |
7489 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_node<double>::while_loop_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::while_loop_node<float>::while_loop_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
7490 | | |
7491 | | inline T value() const exprtk_override |
7492 | 0 | { |
7493 | 0 | T result = T(0); |
7494 | |
|
7495 | 0 | while (is_true(condition_)) |
7496 | 0 | { |
7497 | 0 | result = loop_body_.first->value(); |
7498 | 0 | } |
7499 | |
|
7500 | 0 | return result; |
7501 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_node<double>::value() const Unexecuted instantiation: exprtk::details::while_loop_node<float>::value() const |
7502 | | |
7503 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7504 | 0 | { |
7505 | 0 | return expression_node<T>::e_while; |
7506 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_node<double>::type() const Unexecuted instantiation: exprtk::details::while_loop_node<float>::type() const |
7507 | | |
7508 | | inline bool valid() const exprtk_override |
7509 | 0 | { |
7510 | 0 | return |
7511 | 0 | condition_.first && condition_.first->valid() && |
7512 | 0 | loop_body_.first && loop_body_.first->valid() ; |
7513 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_node<double>::valid() const Unexecuted instantiation: exprtk::details::while_loop_node<float>::valid() const |
7514 | | |
7515 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7516 | 0 | { |
7517 | 0 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); |
7518 | 0 | expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list); |
7519 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::while_loop_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
7520 | | |
7521 | | std::size_t node_depth() const exprtk_override |
7522 | 0 | { |
7523 | 0 | return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_); |
7524 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::while_loop_node<float>::node_depth() const |
7525 | | |
7526 | | protected: |
7527 | | |
7528 | | branch_t condition_; |
7529 | | branch_t loop_body_; |
7530 | | }; |
7531 | | |
7532 | | template <typename T> |
7533 | | class while_loop_rtc_node exprtk_final |
7534 | | : public while_loop_node<T> |
7535 | | , public loop_runtime_checker |
7536 | | { |
7537 | | public: |
7538 | | |
7539 | | typedef while_loop_node<T> parent_t; |
7540 | | typedef expression_node<T>* expression_ptr; |
7541 | | |
7542 | | while_loop_rtc_node(expression_ptr condition, |
7543 | | expression_ptr loop_body, |
7544 | | loop_runtime_check_ptr loop_rt_chk) |
7545 | 0 | : parent_t(condition, loop_body) |
7546 | 0 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop) |
7547 | 0 | { |
7548 | 0 | assert(valid()); |
7549 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_rtc_node<double>::while_loop_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*) Unexecuted instantiation: exprtk::details::while_loop_rtc_node<float>::while_loop_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*) |
7550 | | |
7551 | | inline T value() const exprtk_override |
7552 | 0 | { |
7553 | |
|
7554 | 0 | T result = T(0); |
7555 | |
|
7556 | 0 | loop_runtime_checker::reset(); |
7557 | |
|
7558 | 0 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
7559 | 0 | { |
7560 | 0 | result = parent_t::loop_body_.first->value(); |
7561 | 0 | } |
7562 | |
|
7563 | 0 | return result; |
7564 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::while_loop_rtc_node<float>::value() const |
7565 | | |
7566 | | using parent_t::valid; |
7567 | | |
7568 | | bool valid() const exprtk_override exprtk_final |
7569 | 0 | { |
7570 | 0 | return parent_t::valid() && |
7571 | 0 | loop_runtime_checker::valid(); |
7572 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::while_loop_rtc_node<float>::valid() const |
7573 | | }; |
7574 | | |
7575 | | template <typename T> |
7576 | | class repeat_until_loop_node : public expression_node<T> |
7577 | | { |
7578 | | public: |
7579 | | |
7580 | | typedef expression_node<T>* expression_ptr; |
7581 | | typedef std::pair<expression_ptr,bool> branch_t; |
7582 | | |
7583 | | repeat_until_loop_node(expression_ptr condition, |
7584 | | expression_ptr loop_body) |
7585 | 0 | { |
7586 | 0 | construct_branch_pair(condition_, condition); |
7587 | 0 | construct_branch_pair(loop_body_, loop_body); |
7588 | 0 | assert(valid()); |
7589 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::repeat_until_loop_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::repeat_until_loop_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
7590 | | |
7591 | | inline T value() const exprtk_override |
7592 | 0 | { |
7593 | 0 | T result = T(0); |
7594 | |
|
7595 | 0 | do |
7596 | 0 | { |
7597 | 0 | result = loop_body_.first->value(); |
7598 | 0 | } |
7599 | 0 | while (is_false(condition_.first)); |
7600 | |
|
7601 | 0 | return result; |
7602 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::value() const Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::value() const |
7603 | | |
7604 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7605 | 0 | { |
7606 | 0 | return expression_node<T>::e_repeat; |
7607 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::type() const Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::type() const |
7608 | | |
7609 | | inline bool valid() const exprtk_override |
7610 | 0 | { |
7611 | 0 | return |
7612 | 0 | condition_.first && condition_.first->valid() && |
7613 | 0 | loop_body_.first && loop_body_.first->valid() ; |
7614 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::valid() const Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::valid() const |
7615 | | |
7616 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7617 | 0 | { |
7618 | 0 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); |
7619 | 0 | expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list); |
7620 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
7621 | | |
7622 | | std::size_t node_depth() const exprtk_override |
7623 | 0 | { |
7624 | 0 | return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_); |
7625 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::node_depth() const |
7626 | | |
7627 | | protected: |
7628 | | |
7629 | | branch_t condition_; |
7630 | | branch_t loop_body_; |
7631 | | }; |
7632 | | |
7633 | | template <typename T> |
7634 | | class repeat_until_loop_rtc_node exprtk_final |
7635 | | : public repeat_until_loop_node<T> |
7636 | | , public loop_runtime_checker |
7637 | | { |
7638 | | public: |
7639 | | |
7640 | | typedef repeat_until_loop_node<T> parent_t; |
7641 | | typedef expression_node<T>* expression_ptr; |
7642 | | |
7643 | | repeat_until_loop_rtc_node(expression_ptr condition, |
7644 | | expression_ptr loop_body, |
7645 | | loop_runtime_check_ptr loop_rt_chk) |
7646 | 0 | : parent_t(condition, loop_body) |
7647 | 0 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_repeat_until_loop) |
7648 | 0 | { |
7649 | 0 | assert(valid()); |
7650 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<double>::repeat_until_loop_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*) Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<float>::repeat_until_loop_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*) |
7651 | | |
7652 | | inline T value() const exprtk_override |
7653 | 0 | { |
7654 | 0 | T result = T(0); |
7655 | |
|
7656 | 0 | loop_runtime_checker::reset(1); |
7657 | |
|
7658 | 0 | do |
7659 | 0 | { |
7660 | 0 | result = parent_t::loop_body_.first->value(); |
7661 | 0 | } |
7662 | 0 | while (is_false(parent_t::condition_.first) && loop_runtime_checker::check()); |
7663 | |
|
7664 | 0 | return result; |
7665 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<float>::value() const |
7666 | | |
7667 | | using parent_t::valid; |
7668 | | |
7669 | | inline bool valid() const exprtk_override exprtk_final |
7670 | 0 | { |
7671 | 0 | return parent_t::valid() && |
7672 | 0 | loop_runtime_checker::valid(); |
7673 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<float>::valid() const |
7674 | | }; |
7675 | | |
7676 | | template <typename T> |
7677 | | class for_loop_node : public expression_node<T> |
7678 | | { |
7679 | | public: |
7680 | | |
7681 | | typedef expression_node<T>* expression_ptr; |
7682 | | typedef std::pair<expression_ptr,bool> branch_t; |
7683 | | |
7684 | | for_loop_node(expression_ptr initialiser, |
7685 | | expression_ptr condition, |
7686 | | expression_ptr incrementor, |
7687 | | expression_ptr loop_body) |
7688 | 0 | { |
7689 | 0 | construct_branch_pair(initialiser_, initialiser); |
7690 | 0 | construct_branch_pair(condition_ , condition ); |
7691 | 0 | construct_branch_pair(incrementor_, incrementor); |
7692 | 0 | construct_branch_pair(loop_body_ , loop_body ); |
7693 | 0 | assert(valid()); |
7694 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_node<double>::for_loop_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::for_loop_node<float>::for_loop_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
7695 | | |
7696 | | inline T value() const exprtk_override |
7697 | 0 | { |
7698 | 0 | T result = T(0); |
7699 | |
|
7700 | 0 | if (initialiser_.first) |
7701 | 0 | initialiser_.first->value(); |
7702 | |
|
7703 | 0 | if (incrementor_.first) |
7704 | 0 | { |
7705 | 0 | while (is_true(condition_)) |
7706 | 0 | { |
7707 | 0 | result = loop_body_.first->value(); |
7708 | 0 | incrementor_.first->value(); |
7709 | 0 | } |
7710 | 0 | } |
7711 | 0 | else |
7712 | 0 | { |
7713 | 0 | while (is_true(condition_)) |
7714 | 0 | { |
7715 | 0 | result = loop_body_.first->value(); |
7716 | 0 | } |
7717 | 0 | } |
7718 | |
|
7719 | 0 | return result; |
7720 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_node<double>::value() const Unexecuted instantiation: exprtk::details::for_loop_node<float>::value() const |
7721 | | |
7722 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7723 | 0 | { |
7724 | 0 | return expression_node<T>::e_for; |
7725 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_node<double>::type() const Unexecuted instantiation: exprtk::details::for_loop_node<float>::type() const |
7726 | | |
7727 | | inline bool valid() const exprtk_override |
7728 | 0 | { |
7729 | 0 | return condition_.first && loop_body_.first; |
7730 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_node<double>::valid() const Unexecuted instantiation: exprtk::details::for_loop_node<float>::valid() const |
7731 | | |
7732 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7733 | 0 | { |
7734 | 0 | expression_node<T>::ndb_t::collect(initialiser_ , node_delete_list); |
7735 | 0 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); |
7736 | 0 | expression_node<T>::ndb_t::collect(incrementor_ , node_delete_list); |
7737 | 0 | expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list); |
7738 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::for_loop_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
7739 | | |
7740 | | std::size_t node_depth() const exprtk_override |
7741 | 0 | { |
7742 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
7743 | 0 | (initialiser_, condition_, incrementor_, loop_body_); |
7744 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::for_loop_node<float>::node_depth() const |
7745 | | |
7746 | | protected: |
7747 | | |
7748 | | branch_t initialiser_; |
7749 | | branch_t condition_ ; |
7750 | | branch_t incrementor_; |
7751 | | branch_t loop_body_ ; |
7752 | | }; |
7753 | | |
7754 | | template <typename T> |
7755 | | class for_loop_rtc_node exprtk_final |
7756 | | : public for_loop_node<T> |
7757 | | , public loop_runtime_checker |
7758 | | { |
7759 | | public: |
7760 | | |
7761 | | typedef for_loop_node<T> parent_t; |
7762 | | typedef expression_node<T>* expression_ptr; |
7763 | | |
7764 | | for_loop_rtc_node(expression_ptr initialiser, |
7765 | | expression_ptr condition, |
7766 | | expression_ptr incrementor, |
7767 | | expression_ptr loop_body, |
7768 | | loop_runtime_check_ptr loop_rt_chk) |
7769 | 0 | : parent_t(initialiser, condition, incrementor, loop_body) |
7770 | 0 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_for_loop) |
7771 | 0 | { |
7772 | 0 | assert(valid()); |
7773 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_rtc_node<double>::for_loop_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*) Unexecuted instantiation: exprtk::details::for_loop_rtc_node<float>::for_loop_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*) |
7774 | | |
7775 | | inline T value() const exprtk_override |
7776 | 0 | { |
7777 | 0 | T result = T(0); |
7778 | |
|
7779 | 0 | loop_runtime_checker::reset(); |
7780 | |
|
7781 | 0 | if (parent_t::initialiser_.first) |
7782 | 0 | parent_t::initialiser_.first->value(); |
7783 | |
|
7784 | 0 | if (parent_t::incrementor_.first) |
7785 | 0 | { |
7786 | 0 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
7787 | 0 | { |
7788 | 0 | result = parent_t::loop_body_.first->value(); |
7789 | 0 | parent_t::incrementor_.first->value(); |
7790 | 0 | } |
7791 | 0 | } |
7792 | 0 | else |
7793 | 0 | { |
7794 | 0 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
7795 | 0 | { |
7796 | 0 | result = parent_t::loop_body_.first->value(); |
7797 | 0 | } |
7798 | 0 | } |
7799 | |
|
7800 | 0 | return result; |
7801 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::for_loop_rtc_node<float>::value() const |
7802 | | |
7803 | | using parent_t::valid; |
7804 | | |
7805 | | inline bool valid() const exprtk_override exprtk_final |
7806 | 0 | { |
7807 | 0 | return parent_t::valid() && |
7808 | 0 | loop_runtime_checker::valid(); |
7809 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::for_loop_rtc_node<float>::valid() const |
7810 | | }; |
7811 | | |
7812 | | #ifndef exprtk_disable_break_continue |
7813 | | template <typename T> |
7814 | | class while_loop_bc_node : public while_loop_node<T> |
7815 | | { |
7816 | | public: |
7817 | | |
7818 | | typedef while_loop_node<T> parent_t; |
7819 | | typedef expression_node<T>* expression_ptr; |
7820 | | |
7821 | | while_loop_bc_node(expression_ptr condition, |
7822 | | expression_ptr loop_body) |
7823 | 0 | : parent_t(condition, loop_body) |
7824 | 0 | { |
7825 | 0 | assert(parent_t::valid()); |
7826 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_bc_node<double>::while_loop_bc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::while_loop_bc_node<float>::while_loop_bc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
7827 | | |
7828 | | inline T value() const exprtk_override |
7829 | 0 | { |
7830 | 0 | T result = T(0); |
7831 | |
|
7832 | 0 | while (is_true(parent_t::condition_)) |
7833 | 0 | { |
7834 | 0 | try |
7835 | 0 | { |
7836 | 0 | result = parent_t::loop_body_.first->value(); |
7837 | 0 | } |
7838 | 0 | catch(const break_exception<T>& e) |
7839 | 0 | { |
7840 | 0 | return e.value; |
7841 | 0 | } |
7842 | 0 | catch(const continue_exception&) |
7843 | 0 | {} |
7844 | 0 | } |
7845 | | |
7846 | 0 | return result; |
7847 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_bc_node<double>::value() const Unexecuted instantiation: exprtk::details::while_loop_bc_node<float>::value() const |
7848 | | }; |
7849 | | |
7850 | | template <typename T> |
7851 | | class while_loop_bc_rtc_node exprtk_final |
7852 | | : public while_loop_bc_node<T> |
7853 | | , public loop_runtime_checker |
7854 | | { |
7855 | | public: |
7856 | | |
7857 | | typedef while_loop_bc_node<T> parent_t; |
7858 | | typedef expression_node<T>* expression_ptr; |
7859 | | |
7860 | | while_loop_bc_rtc_node(expression_ptr condition, |
7861 | | expression_ptr loop_body, |
7862 | | loop_runtime_check_ptr loop_rt_chk) |
7863 | 0 | : parent_t(condition, loop_body) |
7864 | 0 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop) |
7865 | 0 | { |
7866 | 0 | assert(valid()); |
7867 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<double>::while_loop_bc_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*) Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<float>::while_loop_bc_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*) |
7868 | | |
7869 | | inline T value() const exprtk_override |
7870 | 0 | { |
7871 | 0 | T result = T(0); |
7872 | |
|
7873 | 0 | loop_runtime_checker::reset(); |
7874 | |
|
7875 | 0 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
7876 | 0 | { |
7877 | 0 | try |
7878 | 0 | { |
7879 | 0 | result = parent_t::loop_body_.first->value(); |
7880 | 0 | } |
7881 | 0 | catch(const break_exception<T>& e) |
7882 | 0 | { |
7883 | 0 | return e.value; |
7884 | 0 | } |
7885 | 0 | catch(const continue_exception&) |
7886 | 0 | {} |
7887 | 0 | } |
7888 | | |
7889 | 0 | return result; |
7890 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<float>::value() const |
7891 | | |
7892 | | using parent_t::valid; |
7893 | | |
7894 | | inline bool valid() const exprtk_override exprtk_final |
7895 | 0 | { |
7896 | 0 | return parent_t::valid() && |
7897 | 0 | loop_runtime_checker::valid(); |
7898 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<float>::valid() const |
7899 | | }; |
7900 | | |
7901 | | template <typename T> |
7902 | | class repeat_until_loop_bc_node : public repeat_until_loop_node<T> |
7903 | | { |
7904 | | public: |
7905 | | |
7906 | | typedef repeat_until_loop_node<T> parent_t; |
7907 | | typedef expression_node<T>* expression_ptr; |
7908 | | |
7909 | | repeat_until_loop_bc_node(expression_ptr condition, |
7910 | | expression_ptr loop_body) |
7911 | 0 | : parent_t(condition, loop_body) |
7912 | 0 | { |
7913 | 0 | assert(parent_t::valid()); |
7914 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_node<double>::repeat_until_loop_bc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_node<float>::repeat_until_loop_bc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
7915 | | |
7916 | | inline T value() const exprtk_override |
7917 | 0 | { |
7918 | 0 | T result = T(0); |
7919 | |
|
7920 | 0 | do |
7921 | 0 | { |
7922 | 0 | try |
7923 | 0 | { |
7924 | 0 | result = parent_t::loop_body_.first->value(); |
7925 | 0 | } |
7926 | 0 | catch(const break_exception<T>& e) |
7927 | 0 | { |
7928 | 0 | return e.value; |
7929 | 0 | } |
7930 | 0 | catch(const continue_exception&) |
7931 | 0 | {} |
7932 | 0 | } |
7933 | 0 | while (is_false(parent_t::condition_.first)); |
7934 | | |
7935 | 0 | return result; |
7936 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_node<double>::value() const Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_node<float>::value() const |
7937 | | }; |
7938 | | |
7939 | | template <typename T> |
7940 | | class repeat_until_loop_bc_rtc_node exprtk_final |
7941 | | : public repeat_until_loop_bc_node<T> |
7942 | | , public loop_runtime_checker |
7943 | | { |
7944 | | public: |
7945 | | |
7946 | | typedef repeat_until_loop_bc_node<T> parent_t; |
7947 | | typedef expression_node<T>* expression_ptr; |
7948 | | |
7949 | | repeat_until_loop_bc_rtc_node(expression_ptr condition, |
7950 | | expression_ptr loop_body, |
7951 | | loop_runtime_check_ptr loop_rt_chk) |
7952 | 0 | : parent_t(condition, loop_body) |
7953 | 0 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_repeat_until_loop) |
7954 | 0 | { |
7955 | 0 | assert(valid()); |
7956 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<double>::repeat_until_loop_bc_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*) Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<float>::repeat_until_loop_bc_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*) |
7957 | | |
7958 | | inline T value() const exprtk_override |
7959 | 0 | { |
7960 | 0 | T result = T(0); |
7961 | |
|
7962 | 0 | loop_runtime_checker::reset(); |
7963 | |
|
7964 | 0 | do |
7965 | 0 | { |
7966 | 0 | try |
7967 | 0 | { |
7968 | 0 | result = parent_t::loop_body_.first->value(); |
7969 | 0 | } |
7970 | 0 | catch(const break_exception<T>& e) |
7971 | 0 | { |
7972 | 0 | return e.value; |
7973 | 0 | } |
7974 | 0 | catch(const continue_exception&) |
7975 | 0 | {} |
7976 | 0 | } |
7977 | 0 | while (is_false(parent_t::condition_.first) && loop_runtime_checker::check()); |
7978 | | |
7979 | 0 | return result; |
7980 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<float>::value() const |
7981 | | |
7982 | | using parent_t::valid; |
7983 | | |
7984 | | inline bool valid() const exprtk_override exprtk_final |
7985 | 0 | { |
7986 | 0 | return parent_t::valid() && |
7987 | 0 | loop_runtime_checker::valid(); |
7988 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<float>::valid() const |
7989 | | }; |
7990 | | |
7991 | | template <typename T> |
7992 | | class for_loop_bc_node : public for_loop_node<T> |
7993 | | { |
7994 | | public: |
7995 | | |
7996 | | typedef for_loop_node<T> parent_t; |
7997 | | typedef expression_node<T>* expression_ptr; |
7998 | | |
7999 | | for_loop_bc_node(expression_ptr initialiser, |
8000 | | expression_ptr condition, |
8001 | | expression_ptr incrementor, |
8002 | | expression_ptr loop_body) |
8003 | 0 | : parent_t(initialiser, condition, incrementor, loop_body) |
8004 | 0 | { |
8005 | 0 | assert(parent_t::valid()); |
8006 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_bc_node<double>::for_loop_bc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::for_loop_bc_node<float>::for_loop_bc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
8007 | | |
8008 | | inline T value() const exprtk_override |
8009 | 0 | { |
8010 | 0 | T result = T(0); |
8011 | |
|
8012 | 0 | if (parent_t::initialiser_.first) |
8013 | 0 | parent_t::initialiser_.first->value(); |
8014 | |
|
8015 | 0 | if (parent_t::incrementor_.first) |
8016 | 0 | { |
8017 | 0 | while (is_true(parent_t::condition_)) |
8018 | 0 | { |
8019 | 0 | try |
8020 | 0 | { |
8021 | 0 | result = parent_t::loop_body_.first->value(); |
8022 | 0 | } |
8023 | 0 | catch(const break_exception<T>& e) |
8024 | 0 | { |
8025 | 0 | return e.value; |
8026 | 0 | } |
8027 | 0 | catch(const continue_exception&) |
8028 | 0 | {} |
8029 | | |
8030 | 0 | parent_t::incrementor_.first->value(); |
8031 | 0 | } |
8032 | 0 | } |
8033 | 0 | else |
8034 | 0 | { |
8035 | 0 | while (is_true(parent_t::condition_)) |
8036 | 0 | { |
8037 | 0 | try |
8038 | 0 | { |
8039 | 0 | result = parent_t::loop_body_.first->value(); |
8040 | 0 | } |
8041 | 0 | catch(const break_exception<T>& e) |
8042 | 0 | { |
8043 | 0 | return e.value; |
8044 | 0 | } |
8045 | 0 | catch(const continue_exception&) |
8046 | 0 | {} |
8047 | 0 | } |
8048 | 0 | } |
8049 | | |
8050 | 0 | return result; |
8051 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_bc_node<double>::value() const Unexecuted instantiation: exprtk::details::for_loop_bc_node<float>::value() const |
8052 | | }; |
8053 | | |
8054 | | template <typename T> |
8055 | | class for_loop_bc_rtc_node exprtk_final |
8056 | | : public for_loop_bc_node<T> |
8057 | | , public loop_runtime_checker |
8058 | | { |
8059 | | public: |
8060 | | |
8061 | | typedef for_loop_bc_node<T> parent_t; |
8062 | | typedef expression_node<T>* expression_ptr; |
8063 | | |
8064 | | for_loop_bc_rtc_node(expression_ptr initialiser, |
8065 | | expression_ptr condition, |
8066 | | expression_ptr incrementor, |
8067 | | expression_ptr loop_body, |
8068 | | loop_runtime_check_ptr loop_rt_chk) |
8069 | 0 | : parent_t(initialiser, condition, incrementor, loop_body) |
8070 | 0 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_for_loop) |
8071 | 0 | { |
8072 | 0 | assert(valid()); |
8073 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<double>::for_loop_bc_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*) Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<float>::for_loop_bc_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*) |
8074 | | |
8075 | | inline T value() const exprtk_override |
8076 | 0 | { |
8077 | 0 | T result = T(0); |
8078 | |
|
8079 | 0 | loop_runtime_checker::reset(); |
8080 | |
|
8081 | 0 | if (parent_t::initialiser_.first) |
8082 | 0 | parent_t::initialiser_.first->value(); |
8083 | |
|
8084 | 0 | if (parent_t::incrementor_.first) |
8085 | 0 | { |
8086 | 0 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
8087 | 0 | { |
8088 | 0 | try |
8089 | 0 | { |
8090 | 0 | result = parent_t::loop_body_.first->value(); |
8091 | 0 | } |
8092 | 0 | catch(const break_exception<T>& e) |
8093 | 0 | { |
8094 | 0 | return e.value; |
8095 | 0 | } |
8096 | 0 | catch(const continue_exception&) |
8097 | 0 | {} |
8098 | | |
8099 | 0 | parent_t::incrementor_.first->value(); |
8100 | 0 | } |
8101 | 0 | } |
8102 | 0 | else |
8103 | 0 | { |
8104 | 0 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
8105 | 0 | { |
8106 | 0 | try |
8107 | 0 | { |
8108 | 0 | result = parent_t::loop_body_.first->value(); |
8109 | 0 | } |
8110 | 0 | catch(const break_exception<T>& e) |
8111 | 0 | { |
8112 | 0 | return e.value; |
8113 | 0 | } |
8114 | 0 | catch(const continue_exception&) |
8115 | 0 | {} |
8116 | 0 | } |
8117 | 0 | } |
8118 | | |
8119 | 0 | return result; |
8120 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<float>::value() const |
8121 | | |
8122 | | using parent_t::valid; |
8123 | | |
8124 | | inline bool valid() const exprtk_override exprtk_final |
8125 | 0 | { |
8126 | 0 | return parent_t::valid() && |
8127 | 0 | loop_runtime_checker::valid(); |
8128 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<float>::valid() const |
8129 | | }; |
8130 | | #endif |
8131 | | |
8132 | | template <typename T> |
8133 | | class switch_node : public expression_node<T> |
8134 | | { |
8135 | | public: |
8136 | | |
8137 | | typedef expression_node<T>* expression_ptr; |
8138 | | typedef std::pair<expression_ptr,bool> branch_t; |
8139 | | |
8140 | | template <typename Allocator, |
8141 | | template <typename, typename> class Sequence> |
8142 | | explicit switch_node(const Sequence<expression_ptr,Allocator>& arg_list) |
8143 | 0 | { |
8144 | 0 | if (1 != (arg_list.size() & 1)) |
8145 | 0 | return; |
8146 | | |
8147 | 0 | arg_list_.resize(arg_list.size()); |
8148 | |
|
8149 | 0 | for (std::size_t i = 0; i < arg_list.size(); ++i) |
8150 | 0 | { |
8151 | 0 | if (arg_list[i] && arg_list[i]->valid()) |
8152 | 0 | { |
8153 | 0 | construct_branch_pair(arg_list_[i], arg_list[i]); |
8154 | 0 | } |
8155 | 0 | else |
8156 | 0 | { |
8157 | 0 | arg_list_.clear(); |
8158 | 0 | return; |
8159 | 0 | } |
8160 | 0 | } |
8161 | | |
8162 | 0 | assert(valid()); |
8163 | 0 | } Unexecuted instantiation: exprtk::details::switch_node<double>::switch_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::switch_node<float>::switch_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
8164 | | |
8165 | | inline T value() const exprtk_override |
8166 | 0 | { |
8167 | 0 | const std::size_t upper_bound = (arg_list_.size() - 1); |
8168 | |
|
8169 | 0 | for (std::size_t i = 0; i < upper_bound; i += 2) |
8170 | 0 | { |
8171 | 0 | expression_ptr condition = arg_list_[i ].first; |
8172 | 0 | expression_ptr consequent = arg_list_[i + 1].first; |
8173 | |
|
8174 | 0 | if (is_true(condition)) |
8175 | 0 | { |
8176 | 0 | return consequent->value(); |
8177 | 0 | } |
8178 | 0 | } |
8179 | | |
8180 | 0 | return arg_list_[upper_bound].first->value(); |
8181 | 0 | } Unexecuted instantiation: exprtk::details::switch_node<double>::value() const Unexecuted instantiation: exprtk::details::switch_node<float>::value() const |
8182 | | |
8183 | | inline typename expression_node<T>::node_type type() const exprtk_override exprtk_final |
8184 | 0 | { |
8185 | 0 | return expression_node<T>::e_switch; |
8186 | 0 | } Unexecuted instantiation: exprtk::details::switch_node<double>::type() const Unexecuted instantiation: exprtk::details::switch_node<float>::type() const |
8187 | | |
8188 | | inline bool valid() const exprtk_override |
8189 | 0 | { |
8190 | 0 | return !arg_list_.empty(); |
8191 | 0 | } Unexecuted instantiation: exprtk::details::switch_node<double>::valid() const Unexecuted instantiation: exprtk::details::switch_node<float>::valid() const |
8192 | | |
8193 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
8194 | 0 | { |
8195 | 0 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); |
8196 | 0 | } Unexecuted instantiation: exprtk::details::switch_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::switch_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
8197 | | |
8198 | | std::size_t node_depth() const exprtk_override exprtk_final |
8199 | 0 | { |
8200 | 0 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); |
8201 | 0 | } Unexecuted instantiation: exprtk::details::switch_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::switch_node<float>::node_depth() const |
8202 | | |
8203 | | protected: |
8204 | | |
8205 | | std::vector<branch_t> arg_list_; |
8206 | | }; |
8207 | | |
8208 | | template <typename T, typename Switch_N> |
8209 | | class switch_n_node exprtk_final : public switch_node<T> |
8210 | | { |
8211 | | public: |
8212 | | |
8213 | | typedef expression_node<T>* expression_ptr; |
8214 | | |
8215 | | template <typename Allocator, |
8216 | | template <typename, typename> class Sequence> |
8217 | | explicit switch_n_node(const Sequence<expression_ptr,Allocator>& arg_list) |
8218 | 0 | : switch_node<T>(arg_list) |
8219 | 0 | {} Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_1>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_2>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_3>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_4>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_5>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_6>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_7>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_1>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_2>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_3>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_4>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_5>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_6>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_7>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
8220 | | |
8221 | | inline T value() const exprtk_override |
8222 | 0 | { |
8223 | 0 | return Switch_N::process(switch_node<T>::arg_list_); |
8224 | 0 | } Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_1>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_2>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_3>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_4>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_5>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_6>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_7>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_1>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_2>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_3>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_4>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_5>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_6>::value() const Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_7>::value() const |
8225 | | }; |
8226 | | |
8227 | | template <typename T> |
8228 | | class multi_switch_node exprtk_final : public expression_node<T> |
8229 | | { |
8230 | | public: |
8231 | | |
8232 | | typedef expression_node<T>* expression_ptr; |
8233 | | typedef std::pair<expression_ptr,bool> branch_t; |
8234 | | |
8235 | | template <typename Allocator, |
8236 | | template <typename, typename> class Sequence> |
8237 | | explicit multi_switch_node(const Sequence<expression_ptr,Allocator>& arg_list) |
8238 | 0 | { |
8239 | 0 | if (0 != (arg_list.size() & 1)) |
8240 | 0 | return; |
8241 | | |
8242 | 0 | arg_list_.resize(arg_list.size()); |
8243 | |
|
8244 | 0 | for (std::size_t i = 0; i < arg_list.size(); ++i) |
8245 | 0 | { |
8246 | 0 | if (arg_list[i] && arg_list[i]->valid()) |
8247 | 0 | { |
8248 | 0 | construct_branch_pair(arg_list_[i], arg_list[i]); |
8249 | 0 | } |
8250 | 0 | else |
8251 | 0 | { |
8252 | 0 | arg_list_.clear(); |
8253 | 0 | return; |
8254 | 0 | } |
8255 | 0 | } |
8256 | | |
8257 | 0 | assert(valid()); |
8258 | 0 | } Unexecuted instantiation: exprtk::details::multi_switch_node<double>::multi_switch_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::multi_switch_node<float>::multi_switch_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
8259 | | |
8260 | | inline T value() const exprtk_override |
8261 | 0 | { |
8262 | 0 | const std::size_t upper_bound = (arg_list_.size() - 1); |
8263 | |
|
8264 | 0 | T result = T(0); |
8265 | |
|
8266 | 0 | for (std::size_t i = 0; i < upper_bound; i += 2) |
8267 | 0 | { |
8268 | 0 | expression_ptr condition = arg_list_[i ].first; |
8269 | 0 | expression_ptr consequent = arg_list_[i + 1].first; |
8270 | |
|
8271 | 0 | if (is_true(condition)) |
8272 | 0 | { |
8273 | 0 | result = consequent->value(); |
8274 | 0 | } |
8275 | 0 | } |
8276 | |
|
8277 | 0 | return result; |
8278 | 0 | } Unexecuted instantiation: exprtk::details::multi_switch_node<double>::value() const Unexecuted instantiation: exprtk::details::multi_switch_node<float>::value() const |
8279 | | |
8280 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8281 | 0 | { |
8282 | 0 | return expression_node<T>::e_mswitch; |
8283 | 0 | } Unexecuted instantiation: exprtk::details::multi_switch_node<double>::type() const Unexecuted instantiation: exprtk::details::multi_switch_node<float>::type() const |
8284 | | |
8285 | | inline bool valid() const exprtk_override |
8286 | 0 | { |
8287 | 0 | return !arg_list_.empty() && (0 == (arg_list_.size() % 2)); |
8288 | 0 | } Unexecuted instantiation: exprtk::details::multi_switch_node<double>::valid() const Unexecuted instantiation: exprtk::details::multi_switch_node<float>::valid() const |
8289 | | |
8290 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
8291 | 0 | { |
8292 | 0 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); |
8293 | 0 | } Unexecuted instantiation: exprtk::details::multi_switch_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::multi_switch_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
8294 | | |
8295 | | std::size_t node_depth() const exprtk_override exprtk_final |
8296 | 0 | { |
8297 | 0 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); |
8298 | 0 | } Unexecuted instantiation: exprtk::details::multi_switch_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::multi_switch_node<float>::node_depth() const |
8299 | | |
8300 | | private: |
8301 | | |
8302 | | std::vector<branch_t> arg_list_; |
8303 | | }; |
8304 | | |
8305 | | template <typename T> |
8306 | | class ivariable |
8307 | | { |
8308 | | public: |
8309 | | |
8310 | | virtual ~ivariable() |
8311 | 70.8k | {} exprtk::details::ivariable<double>::~ivariable() Line | Count | Source | 8311 | 35.4k | {} |
exprtk::details::ivariable<float>::~ivariable() Line | Count | Source | 8311 | 35.4k | {} |
|
8312 | | |
8313 | | virtual T& ref() = 0; |
8314 | | virtual const T& ref() const = 0; |
8315 | | }; |
8316 | | |
8317 | | template <typename T> |
8318 | | class variable_node exprtk_final |
8319 | | : public expression_node<T> |
8320 | | , public ivariable <T> |
8321 | | { |
8322 | | public: |
8323 | | |
8324 | | static T null_value; |
8325 | | |
8326 | | explicit variable_node() |
8327 | | : value_(&null_value) |
8328 | | {} |
8329 | | |
8330 | | explicit variable_node(T& v) |
8331 | 70.8k | : value_(&v) |
8332 | 70.8k | {} exprtk::details::variable_node<double>::variable_node(double&) Line | Count | Source | 8331 | 35.4k | : value_(&v) | 8332 | 35.4k | {} |
exprtk::details::variable_node<float>::variable_node(float&) Line | Count | Source | 8331 | 35.4k | : value_(&v) | 8332 | 35.4k | {} |
|
8333 | | |
8334 | | inline bool operator <(const variable_node<T>& v) const |
8335 | | { |
8336 | | return this < (&v); |
8337 | | } |
8338 | | |
8339 | | inline T value() const exprtk_override |
8340 | 331 | { |
8341 | 331 | return (*value_); |
8342 | 331 | } exprtk::details::variable_node<double>::value() const Line | Count | Source | 8340 | 165 | { | 8341 | 165 | return (*value_); | 8342 | 165 | } |
exprtk::details::variable_node<float>::value() const Line | Count | Source | 8340 | 166 | { | 8341 | 166 | return (*value_); | 8342 | 166 | } |
|
8343 | | |
8344 | | inline T& ref() exprtk_override |
8345 | 131k | { |
8346 | 131k | return (*value_); |
8347 | 131k | } exprtk::details::variable_node<double>::ref() Line | Count | Source | 8345 | 115k | { | 8346 | 115k | return (*value_); | 8347 | 115k | } |
exprtk::details::variable_node<float>::ref() Line | Count | Source | 8345 | 16.7k | { | 8346 | 16.7k | return (*value_); | 8347 | 16.7k | } |
|
8348 | | |
8349 | | inline const T& ref() const exprtk_override |
8350 | 334 | { |
8351 | 334 | return (*value_); |
8352 | 334 | } exprtk::details::variable_node<double>::ref() const Line | Count | Source | 8350 | 167 | { | 8351 | 167 | return (*value_); | 8352 | 167 | } |
exprtk::details::variable_node<float>::ref() const Line | Count | Source | 8350 | 167 | { | 8351 | 167 | return (*value_); | 8352 | 167 | } |
|
8353 | | |
8354 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8355 | 2.01M | { |
8356 | 2.01M | return expression_node<T>::e_variable; |
8357 | 2.01M | } exprtk::details::variable_node<double>::type() const Line | Count | Source | 8355 | 1.76M | { | 8356 | 1.76M | return expression_node<T>::e_variable; | 8357 | 1.76M | } |
exprtk::details::variable_node<float>::type() const Line | Count | Source | 8355 | 258k | { | 8356 | 258k | return expression_node<T>::e_variable; | 8357 | 258k | } |
|
8358 | | |
8359 | | private: |
8360 | | |
8361 | | T* value_; |
8362 | | }; |
8363 | | |
8364 | | template <typename T> |
8365 | | T variable_node<T>::null_value = T(std::numeric_limits<T>::quiet_NaN()); |
8366 | | |
8367 | | template <typename T> |
8368 | | struct range_pack |
8369 | | { |
8370 | | typedef expression_node<T>* expression_node_ptr; |
8371 | | typedef std::pair<std::size_t,std::size_t> cached_range_t; |
8372 | | |
8373 | | range_pack() |
8374 | 780 | : n0_e (std::make_pair(false,expression_node_ptr(0))) |
8375 | 780 | , n1_e (std::make_pair(false,expression_node_ptr(0))) |
8376 | 780 | , n0_c (std::make_pair(false,0)) |
8377 | 780 | , n1_c (std::make_pair(false,0)) |
8378 | 780 | , cache(std::make_pair(0,0)) |
8379 | 780 | {} exprtk::details::range_pack<double>::range_pack() Line | Count | Source | 8374 | 390 | : n0_e (std::make_pair(false,expression_node_ptr(0))) | 8375 | 390 | , n1_e (std::make_pair(false,expression_node_ptr(0))) | 8376 | 390 | , n0_c (std::make_pair(false,0)) | 8377 | 390 | , n1_c (std::make_pair(false,0)) | 8378 | 390 | , cache(std::make_pair(0,0)) | 8379 | 390 | {} |
exprtk::details::range_pack<float>::range_pack() Line | Count | Source | 8374 | 390 | : n0_e (std::make_pair(false,expression_node_ptr(0))) | 8375 | 390 | , n1_e (std::make_pair(false,expression_node_ptr(0))) | 8376 | 390 | , n0_c (std::make_pair(false,0)) | 8377 | 390 | , n1_c (std::make_pair(false,0)) | 8378 | 390 | , cache(std::make_pair(0,0)) | 8379 | 390 | {} |
|
8380 | | |
8381 | | void clear() |
8382 | 78 | { |
8383 | 78 | n0_e = std::make_pair(false,expression_node_ptr(0)); |
8384 | 78 | n1_e = std::make_pair(false,expression_node_ptr(0)); |
8385 | 78 | n0_c = std::make_pair(false,0); |
8386 | 78 | n1_c = std::make_pair(false,0); |
8387 | 78 | cache = std::make_pair(0,0); |
8388 | 78 | } exprtk::details::range_pack<double>::clear() Line | Count | Source | 8382 | 39 | { | 8383 | 39 | n0_e = std::make_pair(false,expression_node_ptr(0)); | 8384 | 39 | n1_e = std::make_pair(false,expression_node_ptr(0)); | 8385 | 39 | n0_c = std::make_pair(false,0); | 8386 | 39 | n1_c = std::make_pair(false,0); | 8387 | 39 | cache = std::make_pair(0,0); | 8388 | 39 | } |
exprtk::details::range_pack<float>::clear() Line | Count | Source | 8382 | 39 | { | 8383 | 39 | n0_e = std::make_pair(false,expression_node_ptr(0)); | 8384 | 39 | n1_e = std::make_pair(false,expression_node_ptr(0)); | 8385 | 39 | n0_c = std::make_pair(false,0); | 8386 | 39 | n1_c = std::make_pair(false,0); | 8387 | 39 | cache = std::make_pair(0,0); | 8388 | 39 | } |
|
8389 | | |
8390 | | void free() |
8391 | 56 | { |
8392 | 56 | if (n0_e.first && n0_e.second) |
8393 | 24 | { |
8394 | 24 | n0_e.first = false; |
8395 | | |
8396 | 24 | if ( |
8397 | 24 | !is_variable_node(n0_e.second) && |
8398 | 24 | !is_string_node (n0_e.second) |
8399 | 24 | ) |
8400 | 12 | { |
8401 | 12 | destroy_node(n0_e.second); |
8402 | 12 | } |
8403 | 24 | } |
8404 | | |
8405 | 56 | if (n1_e.first && n1_e.second) |
8406 | 10 | { |
8407 | 10 | n1_e.first = false; |
8408 | | |
8409 | 10 | if ( |
8410 | 10 | !is_variable_node(n1_e.second) && |
8411 | 10 | !is_string_node (n1_e.second) |
8412 | 10 | ) |
8413 | 4 | { |
8414 | 4 | destroy_node(n1_e.second); |
8415 | 4 | } |
8416 | 10 | } |
8417 | 56 | } |
8418 | | |
8419 | | bool const_range() const |
8420 | 42 | { |
8421 | 42 | return ( n0_c.first && n1_c.first) && |
8422 | 42 | (!n0_e.first && !n1_e.first); |
8423 | 42 | } exprtk::details::range_pack<double>::const_range() const Line | Count | Source | 8420 | 21 | { | 8421 | 21 | return ( n0_c.first && n1_c.first) && | 8422 | 21 | (!n0_e.first && !n1_e.first); | 8423 | 21 | } |
exprtk::details::range_pack<float>::const_range() const Line | Count | Source | 8420 | 21 | { | 8421 | 21 | return ( n0_c.first && n1_c.first) && | 8422 | 21 | (!n0_e.first && !n1_e.first); | 8423 | 21 | } |
|
8424 | | |
8425 | | bool var_range() const |
8426 | | { |
8427 | | return ( n0_e.first && n1_e.first) && |
8428 | | (!n0_c.first && !n1_c.first); |
8429 | | } |
8430 | | |
8431 | | bool operator() (std::size_t& r0, std::size_t& r1, |
8432 | | const std::size_t& size = std::numeric_limits<std::size_t>::max()) const |
8433 | 38 | { |
8434 | 38 | if (n0_c.first) |
8435 | 30 | r0 = n0_c.second; |
8436 | 8 | else if (n0_e.first) |
8437 | 8 | { |
8438 | 8 | r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value())); |
8439 | 8 | } |
8440 | 0 | else |
8441 | 0 | return false; |
8442 | | |
8443 | 38 | if (n1_c.first) |
8444 | 34 | r1 = n1_c.second; |
8445 | 4 | else if (n1_e.first) |
8446 | 4 | { |
8447 | 4 | r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value())); |
8448 | 4 | } |
8449 | 0 | else |
8450 | 0 | return false; |
8451 | | |
8452 | 38 | if ( |
8453 | 38 | (std::numeric_limits<std::size_t>::max() != size) && |
8454 | 38 | (std::numeric_limits<std::size_t>::max() == r1 ) |
8455 | 38 | ) |
8456 | 2 | { |
8457 | 2 | r1 = size; |
8458 | 2 | } |
8459 | | |
8460 | 38 | cache.first = r0; |
8461 | 38 | cache.second = r1; |
8462 | | |
8463 | | #ifndef exprtk_enable_range_runtime_checks |
8464 | | return (r0 <= r1); |
8465 | | #else |
8466 | 38 | return range_runtime_check(r0, r1, size); |
8467 | 38 | #endif |
8468 | 38 | } exprtk::details::range_pack<double>::operator()(unsigned long&, unsigned long&, unsigned long const&) const Line | Count | Source | 8433 | 19 | { | 8434 | 19 | if (n0_c.first) | 8435 | 15 | r0 = n0_c.second; | 8436 | 4 | else if (n0_e.first) | 8437 | 4 | { | 8438 | 4 | r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value())); | 8439 | 4 | } | 8440 | 0 | else | 8441 | 0 | return false; | 8442 | | | 8443 | 19 | if (n1_c.first) | 8444 | 17 | r1 = n1_c.second; | 8445 | 2 | else if (n1_e.first) | 8446 | 2 | { | 8447 | 2 | r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value())); | 8448 | 2 | } | 8449 | 0 | else | 8450 | 0 | return false; | 8451 | | | 8452 | 19 | if ( | 8453 | 19 | (std::numeric_limits<std::size_t>::max() != size) && | 8454 | 19 | (std::numeric_limits<std::size_t>::max() == r1 ) | 8455 | 19 | ) | 8456 | 1 | { | 8457 | 1 | r1 = size; | 8458 | 1 | } | 8459 | | | 8460 | 19 | cache.first = r0; | 8461 | 19 | cache.second = r1; | 8462 | | | 8463 | | #ifndef exprtk_enable_range_runtime_checks | 8464 | | return (r0 <= r1); | 8465 | | #else | 8466 | 19 | return range_runtime_check(r0, r1, size); | 8467 | 19 | #endif | 8468 | 19 | } |
exprtk::details::range_pack<float>::operator()(unsigned long&, unsigned long&, unsigned long const&) const Line | Count | Source | 8433 | 19 | { | 8434 | 19 | if (n0_c.first) | 8435 | 15 | r0 = n0_c.second; | 8436 | 4 | else if (n0_e.first) | 8437 | 4 | { | 8438 | 4 | r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value())); | 8439 | 4 | } | 8440 | 0 | else | 8441 | 0 | return false; | 8442 | | | 8443 | 19 | if (n1_c.first) | 8444 | 17 | r1 = n1_c.second; | 8445 | 2 | else if (n1_e.first) | 8446 | 2 | { | 8447 | 2 | r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value())); | 8448 | 2 | } | 8449 | 0 | else | 8450 | 0 | return false; | 8451 | | | 8452 | 19 | if ( | 8453 | 19 | (std::numeric_limits<std::size_t>::max() != size) && | 8454 | 19 | (std::numeric_limits<std::size_t>::max() == r1 ) | 8455 | 19 | ) | 8456 | 1 | { | 8457 | 1 | r1 = size; | 8458 | 1 | } | 8459 | | | 8460 | 19 | cache.first = r0; | 8461 | 19 | cache.second = r1; | 8462 | | | 8463 | | #ifndef exprtk_enable_range_runtime_checks | 8464 | | return (r0 <= r1); | 8465 | | #else | 8466 | 19 | return range_runtime_check(r0, r1, size); | 8467 | 19 | #endif | 8468 | 19 | } |
|
8469 | | |
8470 | | inline std::size_t const_size() const |
8471 | 0 | { |
8472 | 0 | return (n1_c.second - n0_c.second); |
8473 | 0 | } Unexecuted instantiation: exprtk::details::range_pack<double>::const_size() const Unexecuted instantiation: exprtk::details::range_pack<float>::const_size() const |
8474 | | |
8475 | | inline std::size_t cache_size() const |
8476 | 12 | { |
8477 | 12 | return (cache.second - cache.first); |
8478 | 12 | } exprtk::details::range_pack<double>::cache_size() const Line | Count | Source | 8476 | 6 | { | 8477 | 6 | return (cache.second - cache.first); | 8478 | 6 | } |
exprtk::details::range_pack<float>::cache_size() const Line | Count | Source | 8476 | 6 | { | 8477 | 6 | return (cache.second - cache.first); | 8478 | 6 | } |
|
8479 | | |
8480 | | std::pair<bool,expression_node_ptr> n0_e; |
8481 | | std::pair<bool,expression_node_ptr> n1_e; |
8482 | | std::pair<bool,std::size_t > n0_c; |
8483 | | std::pair<bool,std::size_t > n1_c; |
8484 | | mutable cached_range_t cache; |
8485 | | |
8486 | | #ifdef exprtk_enable_range_runtime_checks |
8487 | | bool range_runtime_check(const std::size_t r0, |
8488 | | const std::size_t r1, |
8489 | | const std::size_t size) const |
8490 | 38 | { |
8491 | 38 | if (r0 > size) |
8492 | 4 | { |
8493 | 4 | throw std::runtime_error("range error: (r0 < 0) || (r0 > size)"); |
8494 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
8495 | 0 | return false; |
8496 | 4 | #endif |
8497 | 4 | } |
8498 | | |
8499 | 34 | if (r1 > size) |
8500 | 0 | { |
8501 | 0 | throw std::runtime_error("range error: (r1 < 0) || (r1 > size)"); |
8502 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
8503 | 0 | return false; |
8504 | 0 | #endif |
8505 | 0 | } |
8506 | | |
8507 | 34 | return (r0 <= r1); |
8508 | 34 | } exprtk::details::range_pack<double>::range_runtime_check(unsigned long, unsigned long, unsigned long) const Line | Count | Source | 8490 | 19 | { | 8491 | 19 | if (r0 > size) | 8492 | 2 | { | 8493 | 2 | throw std::runtime_error("range error: (r0 < 0) || (r0 > size)"); | 8494 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) | 8495 | 0 | return false; | 8496 | 2 | #endif | 8497 | 2 | } | 8498 | | | 8499 | 17 | if (r1 > size) | 8500 | 0 | { | 8501 | 0 | throw std::runtime_error("range error: (r1 < 0) || (r1 > size)"); | 8502 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) | 8503 | 0 | return false; | 8504 | 0 | #endif | 8505 | 0 | } | 8506 | | | 8507 | 17 | return (r0 <= r1); | 8508 | 17 | } |
exprtk::details::range_pack<float>::range_runtime_check(unsigned long, unsigned long, unsigned long) const Line | Count | Source | 8490 | 19 | { | 8491 | 19 | if (r0 > size) | 8492 | 2 | { | 8493 | 2 | throw std::runtime_error("range error: (r0 < 0) || (r0 > size)"); | 8494 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) | 8495 | 0 | return false; | 8496 | 2 | #endif | 8497 | 2 | } | 8498 | | | 8499 | 17 | if (r1 > size) | 8500 | 0 | { | 8501 | 0 | throw std::runtime_error("range error: (r1 < 0) || (r1 > size)"); | 8502 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) | 8503 | 0 | return false; | 8504 | 0 | #endif | 8505 | 0 | } | 8506 | | | 8507 | 17 | return (r0 <= r1); | 8508 | 17 | } |
|
8509 | | #endif |
8510 | | }; |
8511 | | |
8512 | | template <typename T> |
8513 | | class string_base_node; |
8514 | | |
8515 | | template <typename T> |
8516 | | struct range_data_type |
8517 | | { |
8518 | | typedef range_pack<T> range_t; |
8519 | | typedef string_base_node<T>* strbase_ptr_t; |
8520 | | |
8521 | | range_data_type() |
8522 | 0 | : range(0) |
8523 | 0 | , data (0) |
8524 | 0 | , size (0) |
8525 | 0 | , type_size(0) |
8526 | 0 | , str_node (0) |
8527 | 0 | {} Unexecuted instantiation: exprtk::details::range_data_type<double>::range_data_type() Unexecuted instantiation: exprtk::details::range_data_type<float>::range_data_type() |
8528 | | |
8529 | | range_t* range; |
8530 | | void* data; |
8531 | | std::size_t size; |
8532 | | std::size_t type_size; |
8533 | | strbase_ptr_t str_node; |
8534 | | }; |
8535 | | |
8536 | | template <typename T> class vector_node; |
8537 | | |
8538 | | template <typename T> |
8539 | | class vector_interface |
8540 | | { |
8541 | | public: |
8542 | | |
8543 | | typedef vector_node<T>* vector_node_ptr; |
8544 | | typedef vec_data_store<T> vds_t; |
8545 | | |
8546 | | virtual ~vector_interface() |
8547 | 0 | {} Unexecuted instantiation: exprtk::details::vector_interface<double>::~vector_interface() Unexecuted instantiation: exprtk::details::vector_interface<float>::~vector_interface() |
8548 | | |
8549 | | virtual std::size_t size () const = 0; |
8550 | | |
8551 | | virtual std::size_t base_size() const = 0; |
8552 | | |
8553 | | virtual vector_node_ptr vec () const = 0; |
8554 | | |
8555 | | virtual vector_node_ptr vec () = 0; |
8556 | | |
8557 | | virtual vds_t& vds () = 0; |
8558 | | |
8559 | | virtual const vds_t& vds () const = 0; |
8560 | | |
8561 | 0 | virtual bool side_effect () const { return false; } Unexecuted instantiation: exprtk::details::vector_interface<double>::side_effect() const Unexecuted instantiation: exprtk::details::vector_interface<float>::side_effect() const |
8562 | | }; |
8563 | | |
8564 | | template <typename T> |
8565 | | class vector_node exprtk_final |
8566 | | : public expression_node <T> |
8567 | | , public vector_interface<T> |
8568 | | { |
8569 | | public: |
8570 | | |
8571 | | typedef expression_node<T>* expression_ptr; |
8572 | | typedef vector_holder<T> vector_holder_t; |
8573 | | typedef vector_node<T>* vector_node_ptr; |
8574 | | typedef vec_data_store<T> vds_t; |
8575 | | |
8576 | | explicit vector_node(vector_holder_t* vh) |
8577 | 0 | : vector_holder_(vh) |
8578 | 0 | , vds_((*vector_holder_).size(),(*vector_holder_)[0]) |
8579 | 0 | { |
8580 | 0 | vector_holder_->set_ref(&vds_.ref()); |
8581 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vector_node(exprtk::details::vector_holder<double>*) Unexecuted instantiation: exprtk::details::vector_node<float>::vector_node(exprtk::details::vector_holder<float>*) |
8582 | | |
8583 | | vector_node(const vds_t& vds, vector_holder_t* vh) |
8584 | 0 | : vector_holder_(vh) |
8585 | 0 | , vds_(vds) |
8586 | 0 | {} Unexecuted instantiation: exprtk::details::vector_node<double>::vector_node(exprtk::details::vec_data_store<double> const&, exprtk::details::vector_holder<double>*) Unexecuted instantiation: exprtk::details::vector_node<float>::vector_node(exprtk::details::vec_data_store<float> const&, exprtk::details::vector_holder<float>*) |
8587 | | |
8588 | | ~vector_node() exprtk_override |
8589 | 0 | { |
8590 | 0 | assert(valid()); |
8591 | 0 | vector_holder_->remove_ref(&vds_.ref()); |
8592 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::~vector_node() Unexecuted instantiation: exprtk::details::vector_node<float>::~vector_node() |
8593 | | |
8594 | | inline T value() const exprtk_override |
8595 | 0 | { |
8596 | 0 | return vds().data()[0]; |
8597 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_node<float>::value() const |
8598 | | |
8599 | | vector_node_ptr vec() const exprtk_override |
8600 | 0 | { |
8601 | 0 | return const_cast<vector_node_ptr>(this); |
8602 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vec() const Unexecuted instantiation: exprtk::details::vector_node<float>::vec() const |
8603 | | |
8604 | | vector_node_ptr vec() exprtk_override |
8605 | 0 | { |
8606 | 0 | return this; |
8607 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vec() Unexecuted instantiation: exprtk::details::vector_node<float>::vec() |
8608 | | |
8609 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8610 | 0 | { |
8611 | 0 | return expression_node<T>::e_vector; |
8612 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_node<float>::type() const |
8613 | | |
8614 | | inline bool valid() const exprtk_override |
8615 | 0 | { |
8616 | 0 | return vector_holder_; |
8617 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_node<float>::valid() const |
8618 | | |
8619 | | std::size_t size() const exprtk_override |
8620 | 0 | { |
8621 | 0 | return vec_holder().size(); |
8622 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::size() const Unexecuted instantiation: exprtk::details::vector_node<float>::size() const |
8623 | | |
8624 | | std::size_t base_size() const exprtk_override |
8625 | 0 | { |
8626 | 0 | return vec_holder().base_size(); |
8627 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::base_size() const Unexecuted instantiation: exprtk::details::vector_node<float>::base_size() const |
8628 | | |
8629 | | vds_t& vds() exprtk_override |
8630 | 0 | { |
8631 | 0 | return vds_; |
8632 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vds() Unexecuted instantiation: exprtk::details::vector_node<float>::vds() |
8633 | | |
8634 | | const vds_t& vds() const exprtk_override |
8635 | 0 | { |
8636 | 0 | return vds_; |
8637 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vds() const Unexecuted instantiation: exprtk::details::vector_node<float>::vds() const |
8638 | | |
8639 | | inline vector_holder_t& vec_holder() |
8640 | 0 | { |
8641 | 0 | return (*vector_holder_); |
8642 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vec_holder() Unexecuted instantiation: exprtk::details::vector_node<float>::vec_holder() |
8643 | | |
8644 | | inline vector_holder_t& vec_holder() const |
8645 | 0 | { |
8646 | 0 | return (*vector_holder_); |
8647 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vec_holder() const Unexecuted instantiation: exprtk::details::vector_node<float>::vec_holder() const |
8648 | | |
8649 | | private: |
8650 | | |
8651 | | vector_holder_t* vector_holder_; |
8652 | | vds_t vds_; |
8653 | | }; |
8654 | | |
8655 | | template <typename T> |
8656 | | class vector_size_node exprtk_final |
8657 | | : public expression_node <T> |
8658 | | { |
8659 | | public: |
8660 | | |
8661 | | typedef expression_node<T>* expression_ptr; |
8662 | | typedef vector_holder<T> vector_holder_t; |
8663 | | |
8664 | | explicit vector_size_node(vector_holder_t* vh) |
8665 | 0 | : vector_holder_(vh) |
8666 | 0 | {} Unexecuted instantiation: exprtk::details::vector_size_node<double>::vector_size_node(exprtk::details::vector_holder<double>*) Unexecuted instantiation: exprtk::details::vector_size_node<float>::vector_size_node(exprtk::details::vector_holder<float>*) |
8667 | | |
8668 | | ~vector_size_node() exprtk_override |
8669 | 0 | { |
8670 | 0 | assert(valid()); |
8671 | 0 | } Unexecuted instantiation: exprtk::details::vector_size_node<double>::~vector_size_node() Unexecuted instantiation: exprtk::details::vector_size_node<float>::~vector_size_node() |
8672 | | |
8673 | | inline T value() const exprtk_override |
8674 | 0 | { |
8675 | 0 | assert(vector_holder_); |
8676 | 0 | return static_cast<T>(vector_holder_->size()); |
8677 | 0 | } Unexecuted instantiation: exprtk::details::vector_size_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_size_node<float>::value() const |
8678 | | |
8679 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8680 | 0 | { |
8681 | 0 | return expression_node<T>::e_vecsize; |
8682 | 0 | } Unexecuted instantiation: exprtk::details::vector_size_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_size_node<float>::type() const |
8683 | | |
8684 | | inline bool valid() const exprtk_override |
8685 | 0 | { |
8686 | 0 | return vector_holder_ && vector_holder_->size(); |
8687 | 0 | } Unexecuted instantiation: exprtk::details::vector_size_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_size_node<float>::valid() const |
8688 | | |
8689 | | inline vector_holder_t* vec_holder() |
8690 | 0 | { |
8691 | 0 | return vector_holder_; |
8692 | 0 | } Unexecuted instantiation: exprtk::details::vector_size_node<double>::vec_holder() Unexecuted instantiation: exprtk::details::vector_size_node<float>::vec_holder() |
8693 | | |
8694 | | private: |
8695 | | |
8696 | | vector_holder_t* vector_holder_; |
8697 | | }; |
8698 | | |
8699 | | template <typename T> |
8700 | | class vector_elem_node exprtk_final |
8701 | | : public expression_node<T> |
8702 | | , public ivariable <T> |
8703 | | { |
8704 | | public: |
8705 | | |
8706 | | typedef expression_node<T>* expression_ptr; |
8707 | | typedef vector_holder<T> vector_holder_t; |
8708 | | typedef vector_holder_t* vector_holder_ptr; |
8709 | | typedef std::pair<expression_ptr,bool> branch_t; |
8710 | | |
8711 | | vector_elem_node(expression_ptr vec_node, |
8712 | | expression_ptr index, |
8713 | | vector_holder_ptr vec_holder) |
8714 | 0 | : vector_holder_(vec_holder) |
8715 | 0 | , vector_base_((*vec_holder)[0]) |
8716 | 0 | { |
8717 | 0 | construct_branch_pair(vector_node_, vec_node); |
8718 | 0 | construct_branch_pair(index_ , index ); |
8719 | 0 | assert(valid()); |
8720 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::vector_elem_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::vector_holder<double>*) Unexecuted instantiation: exprtk::details::vector_elem_node<float>::vector_elem_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::vector_holder<float>*) |
8721 | | |
8722 | | inline T value() const exprtk_override |
8723 | 0 | { |
8724 | 0 | return *access_vector(); |
8725 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::value() const |
8726 | | |
8727 | | inline T& ref() exprtk_override |
8728 | 0 | { |
8729 | 0 | return *access_vector(); |
8730 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::ref() Unexecuted instantiation: exprtk::details::vector_elem_node<float>::ref() |
8731 | | |
8732 | | inline const T& ref() const exprtk_override |
8733 | 0 | { |
8734 | 0 | return *access_vector(); |
8735 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::ref() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::ref() const |
8736 | | |
8737 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8738 | 0 | { |
8739 | 0 | return expression_node<T>::e_vecelem; |
8740 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::type() const |
8741 | | |
8742 | | inline bool valid() const exprtk_override |
8743 | 0 | { |
8744 | 0 | return |
8745 | 0 | vector_holder_ && |
8746 | 0 | index_.first && |
8747 | 0 | vector_node_.first && |
8748 | 0 | index_.first->valid() && |
8749 | 0 | vector_node_.first->valid(); |
8750 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::valid() const |
8751 | | |
8752 | | inline vector_holder_t& vec_holder() |
8753 | 0 | { |
8754 | 0 | return (*vector_holder_); |
8755 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::vec_holder() Unexecuted instantiation: exprtk::details::vector_elem_node<float>::vec_holder() |
8756 | | |
8757 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
8758 | 0 | { |
8759 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
8760 | 0 | expression_node<T>::ndb_t::collect(index_ , node_delete_list); |
8761 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_elem_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
8762 | | |
8763 | | std::size_t node_depth() const exprtk_override |
8764 | 0 | { |
8765 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
8766 | 0 | (vector_node_, index_); |
8767 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::node_depth() const |
8768 | | |
8769 | | private: |
8770 | | |
8771 | | inline T* access_vector() const |
8772 | 0 | { |
8773 | 0 | vector_node_.first->value(); |
8774 | 0 | return (vector_base_ + details::numeric::to_uint64(index_.first->value())); |
8775 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::access_vector() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::access_vector() const |
8776 | | |
8777 | | vector_holder_ptr vector_holder_; |
8778 | | T* vector_base_; |
8779 | | branch_t vector_node_; |
8780 | | branch_t index_; |
8781 | | }; |
8782 | | |
8783 | | template <typename T> |
8784 | | class vector_celem_node exprtk_final |
8785 | | : public expression_node<T> |
8786 | | , public ivariable <T> |
8787 | | { |
8788 | | public: |
8789 | | |
8790 | | typedef expression_node<T>* expression_ptr; |
8791 | | typedef vector_holder<T> vector_holder_t; |
8792 | | typedef vector_holder_t* vector_holder_ptr; |
8793 | | typedef std::pair<expression_ptr,bool> branch_t; |
8794 | | |
8795 | | vector_celem_node(expression_ptr vec_node, |
8796 | | const std::size_t index, |
8797 | | vector_holder_ptr vec_holder) |
8798 | 0 | : index_(index) |
8799 | 0 | , vector_holder_(vec_holder) |
8800 | 0 | , vector_base_((*vec_holder)[0]) |
8801 | 0 | { |
8802 | 0 | construct_branch_pair(vector_node_, vec_node); |
8803 | 0 | assert(valid()); |
8804 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::vector_celem_node(exprtk::details::expression_node<double>*, unsigned long, exprtk::details::vector_holder<double>*) Unexecuted instantiation: exprtk::details::vector_celem_node<float>::vector_celem_node(exprtk::details::expression_node<float>*, unsigned long, exprtk::details::vector_holder<float>*) |
8805 | | |
8806 | | inline T value() const exprtk_override |
8807 | 0 | { |
8808 | 0 | return *access_vector(); |
8809 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::value() const |
8810 | | |
8811 | | inline T& ref() exprtk_override |
8812 | 0 | { |
8813 | 0 | return *access_vector(); |
8814 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::ref() Unexecuted instantiation: exprtk::details::vector_celem_node<float>::ref() |
8815 | | |
8816 | | inline const T& ref() const exprtk_override |
8817 | 0 | { |
8818 | 0 | return *access_vector(); |
8819 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::ref() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::ref() const |
8820 | | |
8821 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8822 | 0 | { |
8823 | 0 | return expression_node<T>::e_veccelem; |
8824 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::type() const |
8825 | | |
8826 | | inline bool valid() const exprtk_override |
8827 | 0 | { |
8828 | 0 | return |
8829 | 0 | vector_holder_ && |
8830 | 0 | vector_node_.first && |
8831 | 0 | vector_node_.first->valid(); |
8832 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::valid() const |
8833 | | |
8834 | | inline vector_holder_t& vec_holder() |
8835 | | { |
8836 | | return (*vector_holder_); |
8837 | | } |
8838 | | |
8839 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
8840 | 0 | { |
8841 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
8842 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_celem_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
8843 | | |
8844 | | std::size_t node_depth() const exprtk_override |
8845 | 0 | { |
8846 | 0 | return expression_node<T>::ndb_t::compute_node_depth(vector_node_); |
8847 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::node_depth() const |
8848 | | |
8849 | | private: |
8850 | | |
8851 | | inline T* access_vector() const |
8852 | 0 | { |
8853 | 0 | vector_node_.first->value(); |
8854 | 0 | return (vector_base_ + index_); |
8855 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::access_vector() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::access_vector() const |
8856 | | |
8857 | | const std::size_t index_; |
8858 | | vector_holder_ptr vector_holder_; |
8859 | | T* vector_base_; |
8860 | | branch_t vector_node_; |
8861 | | }; |
8862 | | |
8863 | | template <typename T> |
8864 | | class vector_elem_rtc_node exprtk_final |
8865 | | : public expression_node<T> |
8866 | | , public ivariable <T> |
8867 | | { |
8868 | | public: |
8869 | | |
8870 | | typedef expression_node<T>* expression_ptr; |
8871 | | typedef vector_holder<T> vector_holder_t; |
8872 | | typedef vector_holder_t* vector_holder_ptr; |
8873 | | typedef std::pair<expression_ptr,bool> branch_t; |
8874 | | |
8875 | | vector_elem_rtc_node(expression_ptr vec_node, |
8876 | | expression_ptr index, |
8877 | | vector_holder_ptr vec_holder, |
8878 | | vector_access_runtime_check_ptr vec_rt_chk) |
8879 | 0 | : vector_holder_(vec_holder) |
8880 | 0 | , vector_base_((*vec_holder)[0]) |
8881 | 0 | , vec_rt_chk_(vec_rt_chk) |
8882 | 0 | , max_vector_index_(vector_holder_->size() - 1) |
8883 | 0 | { |
8884 | 0 | construct_branch_pair(vector_node_, vec_node); |
8885 | 0 | construct_branch_pair(index_ , index ); |
8886 | 0 | assert(valid()); |
8887 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::vector_elem_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::vector_holder<double>*, exprtk::vector_access_runtime_check*) Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::vector_elem_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::vector_holder<float>*, exprtk::vector_access_runtime_check*) |
8888 | | |
8889 | | inline T value() const exprtk_override |
8890 | 0 | { |
8891 | 0 | return *access_vector(); |
8892 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::value() const |
8893 | | |
8894 | | inline T& ref() exprtk_override |
8895 | 0 | { |
8896 | 0 | return *access_vector(); |
8897 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::ref() Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::ref() |
8898 | | |
8899 | | inline const T& ref() const exprtk_override |
8900 | 0 | { |
8901 | 0 | return *access_vector(); |
8902 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::ref() const Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::ref() const |
8903 | | |
8904 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8905 | 0 | { |
8906 | 0 | return expression_node<T>::e_vecelemrtc; |
8907 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::type() const |
8908 | | |
8909 | | inline bool valid() const exprtk_override |
8910 | 0 | { |
8911 | 0 | return |
8912 | 0 | vector_holder_ && |
8913 | 0 | index_.first && |
8914 | 0 | vector_node_.first && |
8915 | 0 | index_.first->valid() && |
8916 | 0 | vector_node_.first->valid(); |
8917 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::valid() const |
8918 | | |
8919 | | inline vector_holder_t& vec_holder() |
8920 | | { |
8921 | | return (*vector_holder_); |
8922 | | } |
8923 | | |
8924 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
8925 | 0 | { |
8926 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
8927 | 0 | expression_node<T>::ndb_t::collect(index_, node_delete_list); |
8928 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
8929 | | |
8930 | | std::size_t node_depth() const exprtk_override |
8931 | 0 | { |
8932 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
8933 | 0 | (vector_node_, index_); |
8934 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::node_depth() const |
8935 | | |
8936 | | private: |
8937 | | |
8938 | | inline T* access_vector() const |
8939 | 0 | { |
8940 | 0 | const _uint64_t index = details::numeric::to_uint64(index_.first->value()); |
8941 | 0 | vector_node_.first->value(); |
8942 | |
|
8943 | 0 | if (index <= max_vector_index_) |
8944 | 0 | { |
8945 | 0 | return (vector_holder_->data() + index); |
8946 | 0 | } |
8947 | | |
8948 | 0 | assert(vec_rt_chk_); |
8949 | | |
8950 | 0 | vector_access_runtime_check::violation_context context; |
8951 | 0 | context.base_ptr = reinterpret_cast<void*>(vector_base_); |
8952 | 0 | context.end_ptr = reinterpret_cast<void*>(vector_base_ + vector_holder_->size()); |
8953 | 0 | context.access_ptr = reinterpret_cast<void*>(vector_base_ + index); |
8954 | 0 | context.type_size = sizeof(T); |
8955 | |
|
8956 | 0 | return vec_rt_chk_->handle_runtime_violation(context) ? |
8957 | 0 | reinterpret_cast<T*>(context.access_ptr) : |
8958 | 0 | vector_base_ ; |
8959 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::access_vector() const Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::access_vector() const |
8960 | | |
8961 | | vector_holder_ptr vector_holder_; |
8962 | | T* vector_base_; |
8963 | | branch_t vector_node_; |
8964 | | branch_t index_; |
8965 | | vector_access_runtime_check_ptr vec_rt_chk_; |
8966 | | const std::size_t max_vector_index_; |
8967 | | }; |
8968 | | |
8969 | | template <typename T> |
8970 | | class vector_celem_rtc_node exprtk_final |
8971 | | : public expression_node<T> |
8972 | | , public ivariable <T> |
8973 | | { |
8974 | | public: |
8975 | | |
8976 | | typedef expression_node<T>* expression_ptr; |
8977 | | typedef vector_holder<T> vector_holder_t; |
8978 | | typedef vector_holder_t* vector_holder_ptr; |
8979 | | typedef std::pair<expression_ptr,bool> branch_t; |
8980 | | |
8981 | | vector_celem_rtc_node(expression_ptr vec_node, |
8982 | | const std::size_t index, |
8983 | | vector_holder_ptr vec_holder, |
8984 | | vector_access_runtime_check_ptr vec_rt_chk) |
8985 | 0 | : index_(index) |
8986 | 0 | , max_vector_index_(vec_holder->size() - 1) |
8987 | 0 | , vector_holder_(vec_holder) |
8988 | 0 | , vector_base_((*vec_holder)[0]) |
8989 | 0 | , vec_rt_chk_(vec_rt_chk) |
8990 | 0 | { |
8991 | 0 | construct_branch_pair(vector_node_, vec_node); |
8992 | 0 | assert(valid()); |
8993 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::vector_celem_rtc_node(exprtk::details::expression_node<double>*, unsigned long, exprtk::details::vector_holder<double>*, exprtk::vector_access_runtime_check*) Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::vector_celem_rtc_node(exprtk::details::expression_node<float>*, unsigned long, exprtk::details::vector_holder<float>*, exprtk::vector_access_runtime_check*) |
8994 | | |
8995 | | inline T value() const exprtk_override |
8996 | 0 | { |
8997 | 0 | return *access_vector(); |
8998 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::value() const |
8999 | | |
9000 | | inline T& ref() exprtk_override |
9001 | 0 | { |
9002 | 0 | return *access_vector(); |
9003 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::ref() Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::ref() |
9004 | | |
9005 | | inline const T& ref() const exprtk_override |
9006 | 0 | { |
9007 | 0 | return *access_vector(); |
9008 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::ref() const Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::ref() const |
9009 | | |
9010 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9011 | 0 | { |
9012 | 0 | return expression_node<T>::e_veccelemrtc; |
9013 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::type() const |
9014 | | |
9015 | | inline bool valid() const exprtk_override |
9016 | 0 | { |
9017 | 0 | return |
9018 | 0 | vector_holder_ && |
9019 | 0 | vector_node_.first && |
9020 | 0 | vector_node_.first->valid(); |
9021 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::valid() const |
9022 | | |
9023 | | inline vector_holder_t& vec_holder() |
9024 | | { |
9025 | | return (*vector_holder_); |
9026 | | } |
9027 | | |
9028 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9029 | 0 | { |
9030 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
9031 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9032 | | |
9033 | | std::size_t node_depth() const exprtk_override |
9034 | 0 | { |
9035 | 0 | return expression_node<T>::ndb_t::compute_node_depth(vector_node_); |
9036 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::node_depth() const |
9037 | | |
9038 | | private: |
9039 | | |
9040 | | inline T* access_vector() const |
9041 | 0 | { |
9042 | 0 | vector_node_.first->value(); |
9043 | |
|
9044 | 0 | if (index_ <= max_vector_index_) |
9045 | 0 | { |
9046 | 0 | return (vector_holder_->data() + index_); |
9047 | 0 | } |
9048 | | |
9049 | 0 | assert(vec_rt_chk_); |
9050 | | |
9051 | 0 | vector_access_runtime_check::violation_context context; |
9052 | 0 | context.base_ptr = reinterpret_cast<void*>(vector_base_); |
9053 | 0 | context.end_ptr = reinterpret_cast<void*>(vector_base_ + vector_holder_->size()); |
9054 | 0 | context.access_ptr = reinterpret_cast<void*>(vector_base_ + index_); |
9055 | 0 | context.type_size = sizeof(T); |
9056 | |
|
9057 | 0 | return vec_rt_chk_->handle_runtime_violation(context) ? |
9058 | 0 | reinterpret_cast<T*>(context.access_ptr) : |
9059 | 0 | vector_base_ ; |
9060 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::access_vector() const Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::access_vector() const |
9061 | | |
9062 | | const std::size_t index_; |
9063 | | const std::size_t max_vector_index_; |
9064 | | vector_holder_ptr vector_holder_; |
9065 | | T* vector_base_; |
9066 | | branch_t vector_node_; |
9067 | | vector_access_runtime_check_ptr vec_rt_chk_; |
9068 | | }; |
9069 | | |
9070 | | template <typename T> |
9071 | | class rebasevector_elem_node exprtk_final |
9072 | | : public expression_node<T> |
9073 | | , public ivariable <T> |
9074 | | { |
9075 | | public: |
9076 | | |
9077 | | typedef expression_node<T>* expression_ptr; |
9078 | | typedef vector_holder<T> vector_holder_t; |
9079 | | typedef vector_holder_t* vector_holder_ptr; |
9080 | | typedef vec_data_store<T> vds_t; |
9081 | | typedef std::pair<expression_ptr,bool> branch_t; |
9082 | | |
9083 | | rebasevector_elem_node(expression_ptr vec_node, |
9084 | | expression_ptr index, |
9085 | | vector_holder_ptr vec_holder) |
9086 | 0 | : vector_holder_(vec_holder) |
9087 | 0 | { |
9088 | 0 | construct_branch_pair(vector_node_, vec_node); |
9089 | 0 | construct_branch_pair(index_ , index ); |
9090 | 0 | assert(valid()); |
9091 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::rebasevector_elem_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::vector_holder<double>*) Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::rebasevector_elem_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::vector_holder<float>*) |
9092 | | |
9093 | | inline T value() const exprtk_override |
9094 | 0 | { |
9095 | 0 | return *access_vector(); |
9096 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::value() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::value() const |
9097 | | |
9098 | | inline T& ref() exprtk_override |
9099 | 0 | { |
9100 | 0 | return *access_vector(); |
9101 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::ref() Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::ref() |
9102 | | |
9103 | | inline const T& ref() const exprtk_override |
9104 | 0 | { |
9105 | 0 | return *access_vector(); |
9106 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::ref() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::ref() const |
9107 | | |
9108 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9109 | 0 | { |
9110 | 0 | return expression_node<T>::e_rbvecelem; |
9111 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::type() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::type() const |
9112 | | |
9113 | | inline bool valid() const exprtk_override |
9114 | 0 | { |
9115 | 0 | return |
9116 | 0 | vector_holder_ && |
9117 | 0 | index_.first && |
9118 | 0 | vector_node_.first && |
9119 | 0 | index_.first->valid() && |
9120 | 0 | vector_node_.first->valid(); |
9121 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::valid() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::valid() const |
9122 | | |
9123 | | inline vector_holder_t& vec_holder() |
9124 | | { |
9125 | | return (*vector_holder_); |
9126 | | } |
9127 | | |
9128 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9129 | 0 | { |
9130 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
9131 | 0 | expression_node<T>::ndb_t::collect(index_, node_delete_list); |
9132 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9133 | | |
9134 | | std::size_t node_depth() const exprtk_override |
9135 | 0 | { |
9136 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
9137 | 0 | (vector_node_, index_); |
9138 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::node_depth() const |
9139 | | |
9140 | | private: |
9141 | | |
9142 | | inline T* access_vector() const |
9143 | 0 | { |
9144 | 0 | vector_node_.first->value(); |
9145 | 0 | return (vector_holder_->data() + details::numeric::to_uint64(index_.first->value())); |
9146 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::access_vector() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::access_vector() const |
9147 | | |
9148 | | vector_holder_ptr vector_holder_; |
9149 | | branch_t vector_node_; |
9150 | | branch_t index_; |
9151 | | }; |
9152 | | |
9153 | | template <typename T> |
9154 | | class rebasevector_celem_node exprtk_final |
9155 | | : public expression_node<T> |
9156 | | , public ivariable <T> |
9157 | | { |
9158 | | public: |
9159 | | |
9160 | | typedef expression_node<T>* expression_ptr; |
9161 | | typedef vector_holder<T> vector_holder_t; |
9162 | | typedef vector_holder_t* vector_holder_ptr; |
9163 | | typedef std::pair<expression_ptr,bool> branch_t; |
9164 | | |
9165 | | rebasevector_celem_node(expression_ptr vec_node, |
9166 | | const std::size_t index, |
9167 | | vector_holder_ptr vec_holder) |
9168 | 0 | : index_(index) |
9169 | 0 | , vector_holder_(vec_holder) |
9170 | 0 | { |
9171 | 0 | construct_branch_pair(vector_node_, vec_node); |
9172 | 0 | assert(valid()); |
9173 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::rebasevector_celem_node(exprtk::details::expression_node<double>*, unsigned long, exprtk::details::vector_holder<double>*) Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::rebasevector_celem_node(exprtk::details::expression_node<float>*, unsigned long, exprtk::details::vector_holder<float>*) |
9174 | | |
9175 | | inline T value() const exprtk_override |
9176 | 0 | { |
9177 | 0 | vector_node_.first->value(); |
9178 | 0 | return ref(); |
9179 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::value() const Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::value() const |
9180 | | |
9181 | | inline T& ref() exprtk_override |
9182 | 0 | { |
9183 | 0 | return *(vector_holder_->data() + index_); |
9184 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::ref() Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::ref() |
9185 | | |
9186 | | inline const T& ref() const exprtk_override |
9187 | 0 | { |
9188 | 0 | return *(vector_holder_->data() + index_); |
9189 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::ref() const Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::ref() const |
9190 | | |
9191 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9192 | 0 | { |
9193 | 0 | return expression_node<T>::e_rbveccelem; |
9194 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::type() const Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::type() const |
9195 | | |
9196 | | inline bool valid() const exprtk_override |
9197 | 0 | { |
9198 | 0 | return |
9199 | 0 | vector_holder_ && |
9200 | 0 | vector_node_.first && |
9201 | 0 | vector_node_.first->valid(); |
9202 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::valid() const Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::valid() const |
9203 | | |
9204 | | inline vector_holder_t& vec_holder() |
9205 | | { |
9206 | | return (*vector_holder_); |
9207 | | } |
9208 | | |
9209 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9210 | 0 | { |
9211 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
9212 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9213 | | |
9214 | | std::size_t node_depth() const exprtk_override |
9215 | 0 | { |
9216 | 0 | return expression_node<T>::ndb_t::compute_node_depth(vector_node_); |
9217 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::node_depth() const |
9218 | | |
9219 | | private: |
9220 | | |
9221 | | const std::size_t index_; |
9222 | | vector_holder_ptr vector_holder_; |
9223 | | branch_t vector_node_; |
9224 | | }; |
9225 | | |
9226 | | template <typename T> |
9227 | | class rebasevector_elem_rtc_node exprtk_final |
9228 | | : public expression_node<T> |
9229 | | , public ivariable <T> |
9230 | | { |
9231 | | public: |
9232 | | |
9233 | | typedef expression_node<T>* expression_ptr; |
9234 | | typedef vector_holder<T> vector_holder_t; |
9235 | | typedef vector_holder_t* vector_holder_ptr; |
9236 | | typedef std::pair<expression_ptr,bool> branch_t; |
9237 | | |
9238 | | rebasevector_elem_rtc_node(expression_ptr vec_node, |
9239 | | expression_ptr index, |
9240 | | vector_holder_ptr vec_holder, |
9241 | | vector_access_runtime_check_ptr vec_rt_chk) |
9242 | 0 | : vector_holder_(vec_holder) |
9243 | 0 | , vec_rt_chk_(vec_rt_chk) |
9244 | 0 | { |
9245 | 0 | construct_branch_pair(vector_node_, vec_node); |
9246 | 0 | construct_branch_pair(index_ , index ); |
9247 | 0 | assert(valid()); |
9248 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::rebasevector_elem_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::vector_holder<double>*, exprtk::vector_access_runtime_check*) Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::rebasevector_elem_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::vector_holder<float>*, exprtk::vector_access_runtime_check*) |
9249 | | |
9250 | | inline T value() const exprtk_override |
9251 | 0 | { |
9252 | 0 | return *access_vector(); |
9253 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::value() const |
9254 | | |
9255 | | inline T& ref() exprtk_override |
9256 | 0 | { |
9257 | 0 | return *access_vector(); |
9258 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::ref() Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::ref() |
9259 | | |
9260 | | inline const T& ref() const exprtk_override |
9261 | 0 | { |
9262 | 0 | return *access_vector(); |
9263 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::ref() const Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::ref() const |
9264 | | |
9265 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9266 | 0 | { |
9267 | 0 | return expression_node<T>::e_rbvecelemrtc; |
9268 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::type() const Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::type() const |
9269 | | |
9270 | | inline bool valid() const exprtk_override |
9271 | 0 | { |
9272 | 0 | return |
9273 | 0 | vector_holder_ && |
9274 | 0 | index_.first && |
9275 | 0 | vector_node_.first && |
9276 | 0 | index_.first->valid() && |
9277 | 0 | vector_node_.first->valid(); |
9278 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::valid() const |
9279 | | |
9280 | | inline vector_holder_t& vec_holder() |
9281 | | { |
9282 | | return (*vector_holder_); |
9283 | | } |
9284 | | |
9285 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9286 | 0 | { |
9287 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
9288 | 0 | expression_node<T>::ndb_t::collect(index_ , node_delete_list); |
9289 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9290 | | |
9291 | | std::size_t node_depth() const exprtk_override |
9292 | 0 | { |
9293 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
9294 | 0 | (vector_node_, index_); |
9295 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::node_depth() const |
9296 | | |
9297 | | private: |
9298 | | |
9299 | | inline T* access_vector() const |
9300 | 0 | { |
9301 | 0 | vector_node_.first->value(); |
9302 | 0 | const _uint64_t index = details::numeric::to_uint64(index_.first->value()); |
9303 | |
|
9304 | 0 | if (index <= (vector_holder_->size() - 1)) |
9305 | 0 | { |
9306 | 0 | return (vector_holder_->data() + index); |
9307 | 0 | } |
9308 | | |
9309 | 0 | assert(vec_rt_chk_); |
9310 | | |
9311 | 0 | vector_access_runtime_check::violation_context context; |
9312 | 0 | context.base_ptr = reinterpret_cast<void*>(vector_holder_->data()); |
9313 | 0 | context.end_ptr = reinterpret_cast<void*>(vector_holder_->data() + vector_holder_->size()); |
9314 | 0 | context.access_ptr = reinterpret_cast<void*>(vector_holder_->data() + index); |
9315 | 0 | context.type_size = sizeof(T); |
9316 | |
|
9317 | 0 | return vec_rt_chk_->handle_runtime_violation(context) ? |
9318 | 0 | reinterpret_cast<T*>(context.access_ptr) : |
9319 | 0 | vector_holder_->data() ; |
9320 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::access_vector() const Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::access_vector() const |
9321 | | |
9322 | | vector_holder_ptr vector_holder_; |
9323 | | branch_t vector_node_; |
9324 | | branch_t index_; |
9325 | | vector_access_runtime_check_ptr vec_rt_chk_; |
9326 | | }; |
9327 | | |
9328 | | template <typename T> |
9329 | | class rebasevector_celem_rtc_node exprtk_final |
9330 | | : public expression_node<T> |
9331 | | , public ivariable <T> |
9332 | | { |
9333 | | public: |
9334 | | |
9335 | | typedef expression_node<T>* expression_ptr; |
9336 | | typedef vector_holder<T> vector_holder_t; |
9337 | | typedef vector_holder_t* vector_holder_ptr; |
9338 | | typedef std::pair<expression_ptr,bool> branch_t; |
9339 | | |
9340 | | rebasevector_celem_rtc_node(expression_ptr vec_node, |
9341 | | const std::size_t index, |
9342 | | vector_holder_ptr vec_holder, |
9343 | | vector_access_runtime_check_ptr vec_rt_chk) |
9344 | 0 | : index_(index) |
9345 | 0 | , vector_holder_(vec_holder) |
9346 | 0 | , vector_base_((*vec_holder)[0]) |
9347 | 0 | , vec_rt_chk_(vec_rt_chk) |
9348 | 0 | { |
9349 | 0 | construct_branch_pair(vector_node_, vec_node); |
9350 | 0 | assert(valid()); |
9351 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::rebasevector_celem_rtc_node(exprtk::details::expression_node<double>*, unsigned long, exprtk::details::vector_holder<double>*, exprtk::vector_access_runtime_check*) Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::rebasevector_celem_rtc_node(exprtk::details::expression_node<float>*, unsigned long, exprtk::details::vector_holder<float>*, exprtk::vector_access_runtime_check*) |
9352 | | |
9353 | | inline T value() const exprtk_override |
9354 | 0 | { |
9355 | 0 | return *access_vector(); |
9356 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::value() const |
9357 | | |
9358 | | inline T& ref() exprtk_override |
9359 | 0 | { |
9360 | 0 | return *access_vector(); |
9361 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::ref() Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::ref() |
9362 | | |
9363 | | inline const T& ref() const exprtk_override |
9364 | 0 | { |
9365 | 0 | return *access_vector(); |
9366 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::ref() const Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::ref() const |
9367 | | |
9368 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9369 | 0 | { |
9370 | 0 | return expression_node<T>::e_rbveccelemrtc; |
9371 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::type() const Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::type() const |
9372 | | |
9373 | | inline bool valid() const exprtk_override |
9374 | 0 | { |
9375 | 0 | return |
9376 | 0 | vector_holder_ && |
9377 | 0 | vector_node_.first && |
9378 | 0 | vector_node_.first->valid(); |
9379 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::valid() const |
9380 | | |
9381 | | inline vector_holder_t& vec_holder() |
9382 | | { |
9383 | | return (*vector_holder_); |
9384 | | } |
9385 | | |
9386 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9387 | 0 | { |
9388 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
9389 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9390 | | |
9391 | | std::size_t node_depth() const exprtk_override |
9392 | 0 | { |
9393 | 0 | return expression_node<T>::ndb_t::compute_node_depth(vector_node_); |
9394 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::node_depth() const |
9395 | | |
9396 | | private: |
9397 | | |
9398 | | inline T* access_vector() const |
9399 | 0 | { |
9400 | 0 | vector_node_.first->value(); |
9401 | |
|
9402 | 0 | if (index_ <= vector_holder_->size() - 1) |
9403 | 0 | { |
9404 | 0 | return (vector_holder_->data() + index_); |
9405 | 0 | } |
9406 | | |
9407 | 0 | assert(vec_rt_chk_); |
9408 | | |
9409 | 0 | vector_access_runtime_check::violation_context context; |
9410 | 0 | context.base_ptr = reinterpret_cast<void*>(vector_base_); |
9411 | 0 | context.end_ptr = reinterpret_cast<void*>(vector_base_ + vector_holder_->size()); |
9412 | 0 | context.access_ptr = reinterpret_cast<void*>(vector_base_ + index_); |
9413 | 0 | context.type_size = sizeof(T); |
9414 | |
|
9415 | 0 | return vec_rt_chk_->handle_runtime_violation(context) ? |
9416 | 0 | reinterpret_cast<T*>(context.access_ptr) : |
9417 | 0 | vector_base_ ; |
9418 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::access_vector() const Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::access_vector() const |
9419 | | |
9420 | | const std::size_t index_; |
9421 | | vector_holder_ptr vector_holder_; |
9422 | | T* vector_base_; |
9423 | | branch_t vector_node_; |
9424 | | vector_access_runtime_check_ptr vec_rt_chk_; |
9425 | | }; |
9426 | | |
9427 | | template <typename T> |
9428 | | class vector_initialisation_node exprtk_final : public expression_node<T> |
9429 | | { |
9430 | | public: |
9431 | | |
9432 | | typedef expression_node<T>* expression_ptr; |
9433 | | |
9434 | | vector_initialisation_node(T* vector_base, |
9435 | | const std::size_t& size, |
9436 | | const std::vector<expression_ptr>& initialiser_list, |
9437 | | const bool single_value_initialse) |
9438 | 0 | : vector_base_(vector_base) |
9439 | 0 | , initialiser_list_(initialiser_list) |
9440 | 0 | , size_(size) |
9441 | 0 | , single_value_initialse_(single_value_initialse) |
9442 | 0 | , zero_value_initialse_(false) |
9443 | 0 | , const_nonzero_literal_value_initialse_(false) |
9444 | 0 | , single_initialiser_value_(T(0)) |
9445 | 0 | { |
9446 | 0 | if (single_value_initialse_) |
9447 | 0 | { |
9448 | 0 | if (initialiser_list_.empty()) |
9449 | 0 | zero_value_initialse_ = true; |
9450 | 0 | else if ( |
9451 | 0 | (initialiser_list_.size() == 1) && |
9452 | 0 | details::is_constant_node(initialiser_list_[0]) && |
9453 | 0 | (T(0) == initialiser_list_[0]->value()) |
9454 | 0 | ) |
9455 | 0 | { |
9456 | 0 | zero_value_initialse_ = true; |
9457 | 0 | } |
9458 | 0 | else |
9459 | 0 | { |
9460 | 0 | assert(initialiser_list_.size() == 1); |
9461 | | |
9462 | 0 | if (details::is_constant_node(initialiser_list_[0])) |
9463 | 0 | { |
9464 | 0 | const_nonzero_literal_value_initialse_ = true; |
9465 | 0 | single_initialiser_value_ = initialiser_list_[0]->value(); |
9466 | 0 | assert(T(0) != single_initialiser_value_); |
9467 | 0 | } |
9468 | 0 | } |
9469 | 0 | } |
9470 | 0 | } Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::vector_initialisation_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&, bool) Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::vector_initialisation_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&, bool) |
9471 | | |
9472 | | inline T value() const exprtk_override |
9473 | 0 | { |
9474 | 0 | if (single_value_initialse_) |
9475 | 0 | { |
9476 | 0 | if (zero_value_initialse_) |
9477 | 0 | { |
9478 | 0 | details::set_zero_value(vector_base_, size_); |
9479 | 0 | } |
9480 | 0 | else if (const_nonzero_literal_value_initialse_) |
9481 | 0 | { |
9482 | 0 | for (std::size_t i = 0; i < size_; ++i) |
9483 | 0 | { |
9484 | 0 | *(vector_base_ + i) = single_initialiser_value_; |
9485 | 0 | } |
9486 | 0 | } |
9487 | 0 | else |
9488 | 0 | { |
9489 | 0 | for (std::size_t i = 0; i < size_; ++i) |
9490 | 0 | { |
9491 | 0 | *(vector_base_ + i) = initialiser_list_[0]->value(); |
9492 | 0 | } |
9493 | 0 | } |
9494 | 0 | } |
9495 | 0 | else |
9496 | 0 | { |
9497 | 0 | const std::size_t initialiser_list_size = initialiser_list_.size(); |
9498 | |
|
9499 | 0 | for (std::size_t i = 0; i < initialiser_list_size; ++i) |
9500 | 0 | { |
9501 | 0 | *(vector_base_ + i) = initialiser_list_[i]->value(); |
9502 | 0 | } |
9503 | |
|
9504 | 0 | if (initialiser_list_size < size_) |
9505 | 0 | { |
9506 | 0 | details::set_zero_value( |
9507 | 0 | vector_base_ + initialiser_list_size, |
9508 | 0 | (size_ - initialiser_list_size)); |
9509 | 0 | } |
9510 | 0 | } |
9511 | |
|
9512 | 0 | return *(vector_base_); |
9513 | 0 | } Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::value() const |
9514 | | |
9515 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9516 | 0 | { |
9517 | 0 | return expression_node<T>::e_vecinit; |
9518 | 0 | } Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::type() const |
9519 | | |
9520 | | inline bool valid() const exprtk_override |
9521 | 0 | { |
9522 | 0 | return vector_base_; |
9523 | 0 | } Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::valid() const |
9524 | | |
9525 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9526 | 0 | { |
9527 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9528 | 0 | } Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9529 | | |
9530 | | std::size_t node_depth() const exprtk_override |
9531 | 0 | { |
9532 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9533 | 0 | } Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::node_depth() const |
9534 | | |
9535 | | private: |
9536 | | |
9537 | | vector_initialisation_node(const vector_initialisation_node<T>&) exprtk_delete; |
9538 | | vector_initialisation_node<T>& operator=(const vector_initialisation_node<T>&) exprtk_delete; |
9539 | | |
9540 | | mutable T* vector_base_; |
9541 | | std::vector<expression_ptr> initialiser_list_; |
9542 | | const std::size_t size_; |
9543 | | const bool single_value_initialse_; |
9544 | | bool zero_value_initialse_; |
9545 | | bool const_nonzero_literal_value_initialse_; |
9546 | | T single_initialiser_value_; |
9547 | | }; |
9548 | | |
9549 | | template <typename T> |
9550 | | class vector_init_zero_value_node exprtk_final : public expression_node<T> |
9551 | | { |
9552 | | public: |
9553 | | |
9554 | | typedef expression_node<T>* expression_ptr; |
9555 | | |
9556 | | vector_init_zero_value_node(T* vector_base, |
9557 | | const std::size_t& size, |
9558 | | const std::vector<expression_ptr>& initialiser_list) |
9559 | 0 | : vector_base_(vector_base) |
9560 | 0 | , size_(size) |
9561 | 0 | , initialiser_list_(initialiser_list) |
9562 | 0 | {} Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::vector_init_zero_value_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::vector_init_zero_value_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
9563 | | |
9564 | | inline T value() const exprtk_override |
9565 | 0 | { |
9566 | 0 | details::set_zero_value(vector_base_, size_); |
9567 | 0 | return *(vector_base_); |
9568 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::value() const |
9569 | | |
9570 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9571 | 0 | { |
9572 | 0 | return expression_node<T>::e_vecinit; |
9573 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::type() const |
9574 | | |
9575 | | inline bool valid() const exprtk_override |
9576 | 0 | { |
9577 | 0 | return vector_base_; |
9578 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::valid() const |
9579 | | |
9580 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9581 | 0 | { |
9582 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9583 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9584 | | |
9585 | | std::size_t node_depth() const exprtk_override |
9586 | 0 | { |
9587 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9588 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::node_depth() const |
9589 | | |
9590 | | private: |
9591 | | |
9592 | | vector_init_zero_value_node(const vector_init_zero_value_node<T>&) exprtk_delete; |
9593 | | vector_init_zero_value_node<T>& operator=(const vector_init_zero_value_node<T>&) exprtk_delete; |
9594 | | |
9595 | | mutable T* vector_base_; |
9596 | | const std::size_t size_; |
9597 | | std::vector<expression_ptr> initialiser_list_; |
9598 | | }; |
9599 | | |
9600 | | template <typename T> |
9601 | | class vector_init_single_constvalue_node exprtk_final : public expression_node<T> |
9602 | | { |
9603 | | public: |
9604 | | |
9605 | | typedef expression_node<T>* expression_ptr; |
9606 | | |
9607 | | vector_init_single_constvalue_node(T* vector_base, |
9608 | | const std::size_t& size, |
9609 | | const std::vector<expression_ptr>& initialiser_list) |
9610 | 0 | : vector_base_(vector_base) |
9611 | 0 | , size_(size) |
9612 | 0 | , initialiser_list_(initialiser_list) |
9613 | 0 | { |
9614 | 0 | single_initialiser_value_ = initialiser_list_[0]->value(); |
9615 | 0 | assert(valid()); |
9616 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::vector_init_single_constvalue_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::vector_init_single_constvalue_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
9617 | | |
9618 | | inline T value() const exprtk_override |
9619 | 0 | { |
9620 | 0 | for (std::size_t i = 0; i < size_; ++i) |
9621 | 0 | { |
9622 | 0 | *(vector_base_ + i) = single_initialiser_value_; |
9623 | 0 | } |
9624 | |
|
9625 | 0 | return *(vector_base_); |
9626 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::value() const |
9627 | | |
9628 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9629 | 0 | { |
9630 | 0 | return expression_node<T>::e_vecinit; |
9631 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::type() const |
9632 | | |
9633 | | inline bool valid() const exprtk_override |
9634 | 0 | { |
9635 | 0 | return vector_base_ && |
9636 | 0 | (initialiser_list_.size() == 1) && |
9637 | 0 | (details::is_constant_node(initialiser_list_[0])) && |
9638 | 0 | (single_initialiser_value_ != T(0)); |
9639 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::valid() const |
9640 | | |
9641 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9642 | 0 | { |
9643 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9644 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9645 | | |
9646 | | std::size_t node_depth() const exprtk_override |
9647 | 0 | { |
9648 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9649 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::node_depth() const |
9650 | | |
9651 | | private: |
9652 | | |
9653 | | vector_init_single_constvalue_node(const vector_init_single_constvalue_node<T>&) exprtk_delete; |
9654 | | vector_init_single_constvalue_node<T>& operator=(const vector_init_single_constvalue_node<T>&) exprtk_delete; |
9655 | | |
9656 | | mutable T* vector_base_; |
9657 | | const std::size_t size_; |
9658 | | std::vector<expression_ptr> initialiser_list_; |
9659 | | T single_initialiser_value_; |
9660 | | }; |
9661 | | |
9662 | | template <typename T> |
9663 | | class vector_init_single_value_node exprtk_final : public expression_node<T> |
9664 | | { |
9665 | | public: |
9666 | | |
9667 | | typedef expression_node<T>* expression_ptr; |
9668 | | |
9669 | | vector_init_single_value_node(T* vector_base, |
9670 | | const std::size_t& size, |
9671 | | const std::vector<expression_ptr>& initialiser_list) |
9672 | 0 | : vector_base_(vector_base) |
9673 | 0 | , size_(size) |
9674 | 0 | , initialiser_list_(initialiser_list) |
9675 | 0 | { |
9676 | 0 | assert(valid()); |
9677 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::vector_init_single_value_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::vector_init_single_value_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
9678 | | |
9679 | | inline T value() const exprtk_override |
9680 | 0 | { |
9681 | 0 | expression_node<T>& node = *initialiser_list_[0]; |
9682 | |
|
9683 | 0 | for (std::size_t i = 0; i < size_; ++i) |
9684 | 0 | { |
9685 | 0 | *(vector_base_ + i) = node.value(); |
9686 | 0 | } |
9687 | |
|
9688 | 0 | return *(vector_base_); |
9689 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::value() const |
9690 | | |
9691 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9692 | 0 | { |
9693 | 0 | return expression_node<T>::e_vecinit; |
9694 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::type() const |
9695 | | |
9696 | | inline bool valid() const exprtk_override |
9697 | 0 | { |
9698 | 0 | return vector_base_ && |
9699 | 0 | (initialiser_list_.size() == 1) && |
9700 | 0 | !details::is_constant_node(initialiser_list_[0]); |
9701 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::valid() const |
9702 | | |
9703 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9704 | 0 | { |
9705 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9706 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9707 | | |
9708 | | std::size_t node_depth() const exprtk_override |
9709 | 0 | { |
9710 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9711 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::node_depth() const |
9712 | | |
9713 | | private: |
9714 | | |
9715 | | vector_init_single_value_node(const vector_init_single_value_node<T>&) exprtk_delete; |
9716 | | vector_init_single_value_node<T>& operator=(const vector_init_single_value_node<T>&) exprtk_delete; |
9717 | | |
9718 | | mutable T* vector_base_; |
9719 | | const std::size_t size_; |
9720 | | std::vector<expression_ptr> initialiser_list_; |
9721 | | }; |
9722 | | |
9723 | | template <typename T> |
9724 | | class vector_init_iota_constconst_node exprtk_final : public expression_node<T> |
9725 | | { |
9726 | | public: |
9727 | | |
9728 | | typedef expression_node<T>* expression_ptr; |
9729 | | |
9730 | | vector_init_iota_constconst_node(T* vector_base, |
9731 | | const std::size_t& size, |
9732 | | const std::vector<expression_ptr>& initialiser_list) |
9733 | 0 | : vector_base_(vector_base) |
9734 | 0 | , size_(size) |
9735 | 0 | , initialiser_list_(initialiser_list) |
9736 | 0 | { |
9737 | 0 | base_value_ = initialiser_list_[0]->value(); |
9738 | 0 | increment_value_ = initialiser_list_[1]->value(); |
9739 | |
|
9740 | 0 | assert(valid()); |
9741 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::vector_init_iota_constconst_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::vector_init_iota_constconst_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
9742 | | |
9743 | | inline T value() const exprtk_override |
9744 | 0 | { |
9745 | 0 | T value = base_value_; |
9746 | |
|
9747 | 0 | for (std::size_t i = 0; i < size_; ++i, value += increment_value_) |
9748 | 0 | { |
9749 | 0 | *(vector_base_ + i) = value; |
9750 | 0 | } |
9751 | |
|
9752 | 0 | return *(vector_base_); |
9753 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::value() const |
9754 | | |
9755 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9756 | 0 | { |
9757 | 0 | return expression_node<T>::e_vecinit; |
9758 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::type() const |
9759 | | |
9760 | | inline bool valid() const exprtk_override |
9761 | 0 | { |
9762 | 0 | return vector_base_ && |
9763 | 0 | (initialiser_list_.size() == 2) && |
9764 | 0 | (details::is_constant_node(initialiser_list_[0])) && |
9765 | 0 | (details::is_constant_node(initialiser_list_[1])) ; |
9766 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::valid() const |
9767 | | |
9768 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9769 | 0 | { |
9770 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9771 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9772 | | |
9773 | | std::size_t node_depth() const exprtk_override |
9774 | 0 | { |
9775 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9776 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::node_depth() const |
9777 | | |
9778 | | private: |
9779 | | |
9780 | | vector_init_iota_constconst_node(const vector_init_iota_constconst_node<T>&) exprtk_delete; |
9781 | | vector_init_iota_constconst_node<T>& operator=(const vector_init_iota_constconst_node<T>&) exprtk_delete; |
9782 | | |
9783 | | mutable T* vector_base_; |
9784 | | const std::size_t size_; |
9785 | | std::vector<expression_ptr> initialiser_list_; |
9786 | | T base_value_; |
9787 | | T increment_value_; |
9788 | | }; |
9789 | | |
9790 | | template <typename T> |
9791 | | class vector_init_iota_constnconst_node exprtk_final : public expression_node<T> |
9792 | | { |
9793 | | public: |
9794 | | |
9795 | | typedef expression_node<T>* expression_ptr; |
9796 | | |
9797 | | vector_init_iota_constnconst_node(T* vector_base, |
9798 | | const std::size_t& size, |
9799 | | const std::vector<expression_ptr>& initialiser_list) |
9800 | 0 | : vector_base_(vector_base) |
9801 | 0 | , size_(size) |
9802 | 0 | , initialiser_list_(initialiser_list) |
9803 | 0 | { |
9804 | 0 | assert(valid()); |
9805 | 0 | base_value_ = initialiser_list_[0]->value(); |
9806 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::vector_init_iota_constnconst_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::vector_init_iota_constnconst_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
9807 | | |
9808 | | inline T value() const exprtk_override |
9809 | 0 | { |
9810 | 0 | T value = base_value_; |
9811 | 0 | expression_node<T>& increment = *initialiser_list_[1]; |
9812 | |
|
9813 | 0 | for (std::size_t i = 0; i < size_; ++i, value += increment.value()) |
9814 | 0 | { |
9815 | 0 | *(vector_base_ + i) = value; |
9816 | 0 | } |
9817 | |
|
9818 | 0 | return *(vector_base_); |
9819 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::value() const |
9820 | | |
9821 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9822 | 0 | { |
9823 | 0 | return expression_node<T>::e_vecinit; |
9824 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::type() const |
9825 | | |
9826 | | inline bool valid() const exprtk_override |
9827 | 0 | { |
9828 | 0 | return vector_base_ && |
9829 | 0 | (initialiser_list_.size() == 2) && |
9830 | 0 | ( details::is_constant_node(initialiser_list_[0])) && |
9831 | 0 | (!details::is_constant_node(initialiser_list_[1])); |
9832 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::valid() const |
9833 | | |
9834 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9835 | 0 | { |
9836 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9837 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9838 | | |
9839 | | std::size_t node_depth() const exprtk_override |
9840 | 0 | { |
9841 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9842 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::node_depth() const |
9843 | | |
9844 | | private: |
9845 | | |
9846 | | vector_init_iota_constnconst_node(const vector_init_iota_constnconst_node<T>&) exprtk_delete; |
9847 | | vector_init_iota_constnconst_node<T>& operator=(const vector_init_iota_constnconst_node<T>&) exprtk_delete; |
9848 | | |
9849 | | mutable T* vector_base_; |
9850 | | const std::size_t size_; |
9851 | | std::vector<expression_ptr> initialiser_list_; |
9852 | | T base_value_; |
9853 | | }; |
9854 | | |
9855 | | template <typename T> |
9856 | | class vector_init_iota_nconstconst_node exprtk_final : public expression_node<T> |
9857 | | { |
9858 | | public: |
9859 | | |
9860 | | typedef expression_node<T>* expression_ptr; |
9861 | | |
9862 | | vector_init_iota_nconstconst_node(T* vector_base, |
9863 | | const std::size_t& size, |
9864 | | const std::vector<expression_ptr>& initialiser_list) |
9865 | 0 | : vector_base_(vector_base) |
9866 | 0 | , size_(size) |
9867 | 0 | , initialiser_list_(initialiser_list) |
9868 | 0 | { |
9869 | 0 | assert(valid()); |
9870 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::vector_init_iota_nconstconst_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::vector_init_iota_nconstconst_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
9871 | | |
9872 | | inline T value() const exprtk_override |
9873 | 0 | { |
9874 | 0 | T value = initialiser_list_[0]->value(); |
9875 | 0 | const T increment = initialiser_list_[1]->value(); |
9876 | |
|
9877 | 0 | for (std::size_t i = 0; i < size_; ++i, value += increment) |
9878 | 0 | { |
9879 | 0 | *(vector_base_ + i) = value; |
9880 | 0 | } |
9881 | |
|
9882 | 0 | return *(vector_base_); |
9883 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::value() const |
9884 | | |
9885 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9886 | 0 | { |
9887 | 0 | return expression_node<T>::e_vecinit; |
9888 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::type() const |
9889 | | |
9890 | | inline bool valid() const exprtk_override |
9891 | 0 | { |
9892 | 0 | return vector_base_ && |
9893 | 0 | (initialiser_list_.size() == 2) && |
9894 | 0 | (!details::is_constant_node(initialiser_list_[0])) && |
9895 | 0 | (details::is_constant_node(initialiser_list_[1])); |
9896 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::valid() const |
9897 | | |
9898 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9899 | 0 | { |
9900 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9901 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9902 | | |
9903 | | std::size_t node_depth() const exprtk_override |
9904 | 0 | { |
9905 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9906 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::node_depth() const |
9907 | | |
9908 | | private: |
9909 | | |
9910 | | vector_init_iota_nconstconst_node(const vector_init_iota_nconstconst_node<T>&) exprtk_delete; |
9911 | | vector_init_iota_nconstconst_node<T>& operator=(const vector_init_iota_nconstconst_node<T>&) exprtk_delete; |
9912 | | |
9913 | | mutable T* vector_base_; |
9914 | | const std::size_t size_; |
9915 | | std::vector<expression_ptr> initialiser_list_; |
9916 | | }; |
9917 | | |
9918 | | template <typename T> |
9919 | | class vector_init_iota_nconstnconst_node exprtk_final : public expression_node<T> |
9920 | | { |
9921 | | public: |
9922 | | |
9923 | | typedef expression_node<T>* expression_ptr; |
9924 | | |
9925 | | vector_init_iota_nconstnconst_node(T* vector_base, |
9926 | | const std::size_t& size, |
9927 | | const std::vector<expression_ptr>& initialiser_list) |
9928 | 0 | : vector_base_(vector_base) |
9929 | 0 | , size_(size) |
9930 | 0 | , initialiser_list_(initialiser_list) |
9931 | 0 | { |
9932 | 0 | assert(valid()); |
9933 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::vector_init_iota_nconstnconst_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::vector_init_iota_nconstnconst_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
9934 | | |
9935 | | inline T value() const exprtk_override |
9936 | 0 | { |
9937 | 0 | T value = initialiser_list_[0]->value(); |
9938 | 0 | expression_node<T>& increment = *initialiser_list_[1]; |
9939 | |
|
9940 | 0 | for (std::size_t i = 0; i < size_; ++i, value += increment.value()) |
9941 | 0 | { |
9942 | 0 | *(vector_base_ + i) = value; |
9943 | 0 | } |
9944 | |
|
9945 | 0 | return *(vector_base_); |
9946 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::value() const |
9947 | | |
9948 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9949 | 0 | { |
9950 | 0 | return expression_node<T>::e_vecinit; |
9951 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::type() const |
9952 | | |
9953 | | inline bool valid() const exprtk_override |
9954 | 0 | { |
9955 | 0 | return vector_base_ && |
9956 | 0 | (initialiser_list_.size() == 2) && |
9957 | 0 | (!details::is_constant_node(initialiser_list_[0])) && |
9958 | 0 | (!details::is_constant_node(initialiser_list_[1])); |
9959 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::valid() const |
9960 | | |
9961 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9962 | 0 | { |
9963 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9964 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
9965 | | |
9966 | | std::size_t node_depth() const exprtk_override |
9967 | 0 | { |
9968 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9969 | 0 | } Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::node_depth() const |
9970 | | |
9971 | | private: |
9972 | | |
9973 | | vector_init_iota_nconstnconst_node(const vector_init_iota_nconstnconst_node<T>&) exprtk_delete; |
9974 | | vector_init_iota_nconstnconst_node<T>& operator=(const vector_init_iota_nconstnconst_node<T>&) exprtk_delete; |
9975 | | |
9976 | | mutable T* vector_base_; |
9977 | | const std::size_t size_; |
9978 | | std::vector<expression_ptr> initialiser_list_; |
9979 | | }; |
9980 | | |
9981 | | template <typename T> |
9982 | | class swap_node exprtk_final : public expression_node<T> |
9983 | | { |
9984 | | public: |
9985 | | |
9986 | | typedef expression_node<T>* expression_ptr; |
9987 | | typedef variable_node<T>* variable_node_ptr; |
9988 | | |
9989 | | swap_node(variable_node_ptr var0, variable_node_ptr var1) |
9990 | 2 | : var0_(var0) |
9991 | 2 | , var1_(var1) |
9992 | 2 | {} exprtk::details::swap_node<double>::swap_node(exprtk::details::variable_node<double>*, exprtk::details::variable_node<double>*) Line | Count | Source | 9990 | 1 | : var0_(var0) | 9991 | 1 | , var1_(var1) | 9992 | 1 | {} |
exprtk::details::swap_node<float>::swap_node(exprtk::details::variable_node<float>*, exprtk::details::variable_node<float>*) Line | Count | Source | 9990 | 1 | : var0_(var0) | 9991 | 1 | , var1_(var1) | 9992 | 1 | {} |
|
9993 | | |
9994 | | inline T value() const exprtk_override |
9995 | 2 | { |
9996 | 2 | std::swap(var0_->ref(),var1_->ref()); |
9997 | 2 | return var1_->ref(); |
9998 | 2 | } exprtk::details::swap_node<double>::value() const Line | Count | Source | 9995 | 1 | { | 9996 | 1 | std::swap(var0_->ref(),var1_->ref()); | 9997 | 1 | return var1_->ref(); | 9998 | 1 | } |
exprtk::details::swap_node<float>::value() const Line | Count | Source | 9995 | 1 | { | 9996 | 1 | std::swap(var0_->ref(),var1_->ref()); | 9997 | 1 | return var1_->ref(); | 9998 | 1 | } |
|
9999 | | |
10000 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10001 | 10 | { |
10002 | 10 | return expression_node<T>::e_swap; |
10003 | 10 | } exprtk::details::swap_node<double>::type() const Line | Count | Source | 10001 | 5 | { | 10002 | 5 | return expression_node<T>::e_swap; | 10003 | 5 | } |
exprtk::details::swap_node<float>::type() const Line | Count | Source | 10001 | 5 | { | 10002 | 5 | return expression_node<T>::e_swap; | 10003 | 5 | } |
|
10004 | | |
10005 | | private: |
10006 | | |
10007 | | variable_node_ptr var0_; |
10008 | | variable_node_ptr var1_; |
10009 | | }; |
10010 | | |
10011 | | template <typename T> |
10012 | | class swap_generic_node exprtk_final : public binary_node<T> |
10013 | | { |
10014 | | public: |
10015 | | |
10016 | | typedef expression_node<T>* expression_ptr; |
10017 | | typedef ivariable<T>* ivariable_ptr; |
10018 | | |
10019 | | swap_generic_node(expression_ptr var0, expression_ptr var1) |
10020 | 0 | : binary_node<T>(details::e_swap, var0, var1) |
10021 | 0 | , var0_(dynamic_cast<ivariable_ptr>(var0)) |
10022 | 0 | , var1_(dynamic_cast<ivariable_ptr>(var1)) |
10023 | 0 | {} Unexecuted instantiation: exprtk::details::swap_generic_node<double>::swap_generic_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::swap_generic_node<float>::swap_generic_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
10024 | | |
10025 | | inline T value() const exprtk_override |
10026 | 0 | { |
10027 | 0 | std::swap(var0_->ref(),var1_->ref()); |
10028 | 0 | return var1_->ref(); |
10029 | 0 | } Unexecuted instantiation: exprtk::details::swap_generic_node<double>::value() const Unexecuted instantiation: exprtk::details::swap_generic_node<float>::value() const |
10030 | | |
10031 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10032 | 0 | { |
10033 | 0 | return expression_node<T>::e_swap; |
10034 | 0 | } Unexecuted instantiation: exprtk::details::swap_generic_node<double>::type() const Unexecuted instantiation: exprtk::details::swap_generic_node<float>::type() const |
10035 | | |
10036 | | private: |
10037 | | |
10038 | | ivariable_ptr var0_; |
10039 | | ivariable_ptr var1_; |
10040 | | }; |
10041 | | |
10042 | | template <typename T> |
10043 | | class swap_vecvec_node exprtk_final |
10044 | | : public binary_node <T> |
10045 | | , public vector_interface<T> |
10046 | | { |
10047 | | public: |
10048 | | |
10049 | | typedef expression_node<T>* expression_ptr; |
10050 | | typedef vector_node <T>* vector_node_ptr; |
10051 | | typedef vec_data_store <T> vds_t; |
10052 | | |
10053 | | using binary_node<T>::branch; |
10054 | | |
10055 | | swap_vecvec_node(expression_ptr branch0, |
10056 | | expression_ptr branch1) |
10057 | 0 | : binary_node<T>(details::e_swap, branch0, branch1) |
10058 | 0 | , vec0_node_ptr_(0) |
10059 | 0 | , vec1_node_ptr_(0) |
10060 | 0 | , initialised_ (false) |
10061 | 0 | { |
10062 | 0 | if (is_ivector_node(branch(0))) |
10063 | 0 | { |
10064 | 0 | vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0); |
10065 | |
|
10066 | 0 | if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(0)))) |
10067 | 0 | { |
10068 | 0 | vec0_node_ptr_ = vi->vec(); |
10069 | 0 | vds() = vi->vds(); |
10070 | 0 | } |
10071 | 0 | } |
10072 | |
|
10073 | 0 | if (is_ivector_node(branch(1))) |
10074 | 0 | { |
10075 | 0 | vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0); |
10076 | |
|
10077 | 0 | if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(1)))) |
10078 | 0 | { |
10079 | 0 | vec1_node_ptr_ = vi->vec(); |
10080 | 0 | } |
10081 | 0 | } |
10082 | |
|
10083 | 0 | if (vec0_node_ptr_ && vec1_node_ptr_) |
10084 | 0 | { |
10085 | 0 | initialised_ = size() <= base_size(); |
10086 | 0 | } |
10087 | |
|
10088 | 0 | assert(valid()); |
10089 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::swap_vecvec_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::swap_vecvec_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
10090 | | |
10091 | | inline T value() const exprtk_override |
10092 | 0 | { |
10093 | 0 | binary_node<T>::branch(0)->value(); |
10094 | 0 | binary_node<T>::branch(1)->value(); |
10095 | |
|
10096 | 0 | T* vec0 = vec0_node_ptr_->vds().data(); |
10097 | 0 | T* vec1 = vec1_node_ptr_->vds().data(); |
10098 | |
|
10099 | 0 | assert(size() <= base_size()); |
10100 | 0 | const std::size_t n = size(); |
10101 | |
|
10102 | 0 | for (std::size_t i = 0; i < n; ++i) |
10103 | 0 | { |
10104 | 0 | std::swap(vec0[i],vec1[i]); |
10105 | 0 | } |
10106 | |
|
10107 | 0 | return vec1_node_ptr_->value(); |
10108 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::value() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::value() const |
10109 | | |
10110 | | vector_node_ptr vec() const exprtk_override |
10111 | 0 | { |
10112 | 0 | return vec0_node_ptr_; |
10113 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vec() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vec() const |
10114 | | |
10115 | | vector_node_ptr vec() exprtk_override |
10116 | 0 | { |
10117 | 0 | return vec0_node_ptr_; |
10118 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vec() Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vec() |
10119 | | |
10120 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10121 | 0 | { |
10122 | 0 | return expression_node<T>::e_vecvecswap; |
10123 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::type() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::type() const |
10124 | | |
10125 | | inline bool valid() const exprtk_override |
10126 | 0 | { |
10127 | 0 | return initialised_ && binary_node<T>::valid(); |
10128 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::valid() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::valid() const |
10129 | | |
10130 | | std::size_t size() const exprtk_override |
10131 | 0 | { |
10132 | 0 | return std::min( |
10133 | 0 | vec0_node_ptr_->vec_holder().size(), |
10134 | 0 | vec1_node_ptr_->vec_holder().size()); |
10135 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::size() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::size() const |
10136 | | |
10137 | | std::size_t base_size() const exprtk_override |
10138 | 0 | { |
10139 | 0 | return std::min( |
10140 | 0 | vec0_node_ptr_->vec_holder().base_size(), |
10141 | 0 | vec1_node_ptr_->vec_holder().base_size()); |
10142 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::base_size() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::base_size() const |
10143 | | |
10144 | | vds_t& vds() exprtk_override |
10145 | 0 | { |
10146 | 0 | return vds_; |
10147 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vds() Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vds() |
10148 | | |
10149 | | const vds_t& vds() const exprtk_override |
10150 | 0 | { |
10151 | 0 | return vds_; |
10152 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vds() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vds() const |
10153 | | |
10154 | | private: |
10155 | | |
10156 | | vector_node<T>* vec0_node_ptr_; |
10157 | | vector_node<T>* vec1_node_ptr_; |
10158 | | bool initialised_; |
10159 | | vds_t vds_; |
10160 | | }; |
10161 | | |
10162 | | #ifndef exprtk_disable_string_capabilities |
10163 | | template <typename T> |
10164 | | class stringvar_node exprtk_final |
10165 | | : public expression_node <T> |
10166 | | , public string_base_node<T> |
10167 | | , public range_interface <T> |
10168 | | { |
10169 | | public: |
10170 | | |
10171 | | typedef typename range_interface<T>::range_t range_t; |
10172 | | |
10173 | | static std::string null_value; |
10174 | | |
10175 | | explicit stringvar_node() |
10176 | | : value_(&null_value) |
10177 | | {} |
10178 | | |
10179 | | explicit stringvar_node(std::string& v) |
10180 | 0 | : value_(&v) |
10181 | 0 | { |
10182 | 0 | rp_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
10183 | 0 | rp_.n1_c = std::make_pair<bool,std::size_t>(true,v.size()); |
10184 | 0 | rp_.cache.first = rp_.n0_c.second; |
10185 | 0 | rp_.cache.second = rp_.n1_c.second; |
10186 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::stringvar_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) Unexecuted instantiation: exprtk::details::stringvar_node<float>::stringvar_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) |
10187 | | |
10188 | | inline bool operator <(const stringvar_node<T>& v) const |
10189 | | { |
10190 | | return this < (&v); |
10191 | | } |
10192 | | |
10193 | | inline T value() const exprtk_override |
10194 | 0 | { |
10195 | 0 | rp_.n1_c.second = (*value_).size(); |
10196 | 0 | rp_.cache.second = rp_.n1_c.second; |
10197 | |
|
10198 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
10199 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::value() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::value() const |
10200 | | |
10201 | | std::string str() const exprtk_override |
10202 | 0 | { |
10203 | 0 | return ref(); |
10204 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::str() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::str() const |
10205 | | |
10206 | | char_cptr base() const exprtk_override |
10207 | 0 | { |
10208 | 0 | return &(*value_)[0]; |
10209 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::base() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::base() const |
10210 | | |
10211 | | std::size_t size() const exprtk_override |
10212 | 0 | { |
10213 | 0 | return ref().size(); |
10214 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::size() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::size() const |
10215 | | |
10216 | | std::string& ref() |
10217 | 0 | { |
10218 | 0 | return (*value_); |
10219 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::ref() Unexecuted instantiation: exprtk::details::stringvar_node<float>::ref() |
10220 | | |
10221 | | const std::string& ref() const |
10222 | 0 | { |
10223 | 0 | return (*value_); |
10224 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::ref() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::ref() const |
10225 | | |
10226 | | range_t& range_ref() exprtk_override |
10227 | 0 | { |
10228 | 0 | return rp_; |
10229 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::range_ref() Unexecuted instantiation: exprtk::details::stringvar_node<float>::range_ref() |
10230 | | |
10231 | | const range_t& range_ref() const exprtk_override |
10232 | 0 | { |
10233 | 0 | return rp_; |
10234 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::range_ref() const |
10235 | | |
10236 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10237 | 0 | { |
10238 | 0 | return expression_node<T>::e_stringvar; |
10239 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::type() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::type() const |
10240 | | |
10241 | | void rebase(std::string& s) |
10242 | | { |
10243 | | value_ = &s; |
10244 | | rp_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
10245 | | rp_.n1_c = std::make_pair<bool,std::size_t>(true,value_->size() - 1); |
10246 | | rp_.cache.first = rp_.n0_c.second; |
10247 | | rp_.cache.second = rp_.n1_c.second; |
10248 | | } |
10249 | | |
10250 | | private: |
10251 | | |
10252 | | std::string* value_; |
10253 | | mutable range_t rp_; |
10254 | | }; |
10255 | | |
10256 | | template <typename T> |
10257 | | std::string stringvar_node<T>::null_value = std::string(""); |
10258 | | |
10259 | | template <typename T> |
10260 | | class string_range_node exprtk_final |
10261 | | : public expression_node <T> |
10262 | | , public string_base_node<T> |
10263 | | , public range_interface <T> |
10264 | | { |
10265 | | public: |
10266 | | |
10267 | | typedef typename range_interface<T>::range_t range_t; |
10268 | | |
10269 | | static std::string null_value; |
10270 | | |
10271 | | explicit string_range_node(std::string& v, const range_t& rp) |
10272 | 0 | : value_(&v) |
10273 | 0 | , rp_(rp) |
10274 | 0 | {} Unexecuted instantiation: exprtk::details::string_range_node<double>::string_range_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, exprtk::details::range_pack<double> const&) Unexecuted instantiation: exprtk::details::string_range_node<float>::string_range_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, exprtk::details::range_pack<float> const&) |
10275 | | |
10276 | | virtual ~string_range_node() |
10277 | 0 | { |
10278 | 0 | rp_.free(); |
10279 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::~string_range_node() Unexecuted instantiation: exprtk::details::string_range_node<float>::~string_range_node() |
10280 | | |
10281 | | inline bool operator <(const string_range_node<T>& v) const |
10282 | | { |
10283 | | return this < (&v); |
10284 | | } |
10285 | | |
10286 | | inline T value() const exprtk_override |
10287 | 0 | { |
10288 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
10289 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::value() const Unexecuted instantiation: exprtk::details::string_range_node<float>::value() const |
10290 | | |
10291 | | inline std::string str() const exprtk_override |
10292 | 0 | { |
10293 | 0 | return (*value_); |
10294 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::str() const Unexecuted instantiation: exprtk::details::string_range_node<float>::str() const |
10295 | | |
10296 | | char_cptr base() const exprtk_override |
10297 | 0 | { |
10298 | 0 | return &(*value_)[0]; |
10299 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::base() const Unexecuted instantiation: exprtk::details::string_range_node<float>::base() const |
10300 | | |
10301 | | std::size_t size() const exprtk_override |
10302 | 0 | { |
10303 | 0 | return ref().size(); |
10304 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::size() const Unexecuted instantiation: exprtk::details::string_range_node<float>::size() const |
10305 | | |
10306 | | inline range_t range() const |
10307 | 0 | { |
10308 | 0 | return rp_; |
10309 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::range() const Unexecuted instantiation: exprtk::details::string_range_node<float>::range() const |
10310 | | |
10311 | | inline virtual std::string& ref() |
10312 | 0 | { |
10313 | 0 | return (*value_); |
10314 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::ref() Unexecuted instantiation: exprtk::details::string_range_node<float>::ref() |
10315 | | |
10316 | | inline virtual const std::string& ref() const |
10317 | 0 | { |
10318 | 0 | return (*value_); |
10319 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::ref() const Unexecuted instantiation: exprtk::details::string_range_node<float>::ref() const |
10320 | | |
10321 | | inline range_t& range_ref() exprtk_override |
10322 | 0 | { |
10323 | 0 | return rp_; |
10324 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::range_ref() Unexecuted instantiation: exprtk::details::string_range_node<float>::range_ref() |
10325 | | |
10326 | | inline const range_t& range_ref() const exprtk_override |
10327 | 0 | { |
10328 | 0 | return rp_; |
10329 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::string_range_node<float>::range_ref() const |
10330 | | |
10331 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10332 | 0 | { |
10333 | 0 | return expression_node<T>::e_stringvarrng; |
10334 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::type() const Unexecuted instantiation: exprtk::details::string_range_node<float>::type() const |
10335 | | |
10336 | | private: |
10337 | | |
10338 | | std::string* value_; |
10339 | | range_t rp_; |
10340 | | }; |
10341 | | |
10342 | | template <typename T> |
10343 | | std::string string_range_node<T>::null_value = std::string(""); |
10344 | | |
10345 | | template <typename T> |
10346 | | class const_string_range_node exprtk_final |
10347 | | : public expression_node <T> |
10348 | | , public string_base_node<T> |
10349 | | , public range_interface <T> |
10350 | | { |
10351 | | public: |
10352 | | |
10353 | | typedef typename range_interface<T>::range_t range_t; |
10354 | | |
10355 | | explicit const_string_range_node(const std::string& v, const range_t& rp) |
10356 | 18 | : value_(v) |
10357 | 18 | , rp_(rp) |
10358 | 18 | {} exprtk::details::const_string_range_node<double>::const_string_range_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, exprtk::details::range_pack<double> const&) Line | Count | Source | 10356 | 9 | : value_(v) | 10357 | 9 | , rp_(rp) | 10358 | 9 | {} |
exprtk::details::const_string_range_node<float>::const_string_range_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, exprtk::details::range_pack<float> const&) Line | Count | Source | 10356 | 9 | : value_(v) | 10357 | 9 | , rp_(rp) | 10358 | 9 | {} |
|
10359 | | |
10360 | | ~const_string_range_node() exprtk_override |
10361 | 18 | { |
10362 | 18 | rp_.free(); |
10363 | 18 | } exprtk::details::const_string_range_node<double>::~const_string_range_node() Line | Count | Source | 10361 | 9 | { | 10362 | 9 | rp_.free(); | 10363 | 9 | } |
exprtk::details::const_string_range_node<float>::~const_string_range_node() Line | Count | Source | 10361 | 9 | { | 10362 | 9 | rp_.free(); | 10363 | 9 | } |
|
10364 | | |
10365 | | inline T value() const exprtk_override |
10366 | 6 | { |
10367 | 6 | return std::numeric_limits<T>::quiet_NaN(); |
10368 | 6 | } exprtk::details::const_string_range_node<double>::value() const Line | Count | Source | 10366 | 3 | { | 10367 | 3 | return std::numeric_limits<T>::quiet_NaN(); | 10368 | 3 | } |
exprtk::details::const_string_range_node<float>::value() const Line | Count | Source | 10366 | 3 | { | 10367 | 3 | return std::numeric_limits<T>::quiet_NaN(); | 10368 | 3 | } |
|
10369 | | |
10370 | | std::string str() const exprtk_override |
10371 | 2 | { |
10372 | 2 | return value_; |
10373 | 2 | } exprtk::details::const_string_range_node<double>::str() const Line | Count | Source | 10371 | 1 | { | 10372 | 1 | return value_; | 10373 | 1 | } |
exprtk::details::const_string_range_node<float>::str() const Line | Count | Source | 10371 | 1 | { | 10372 | 1 | return value_; | 10373 | 1 | } |
|
10374 | | |
10375 | | char_cptr base() const exprtk_override |
10376 | 2 | { |
10377 | 2 | return value_.data(); |
10378 | 2 | } exprtk::details::const_string_range_node<double>::base() const Line | Count | Source | 10376 | 1 | { | 10377 | 1 | return value_.data(); | 10378 | 1 | } |
exprtk::details::const_string_range_node<float>::base() const Line | Count | Source | 10376 | 1 | { | 10377 | 1 | return value_.data(); | 10378 | 1 | } |
|
10379 | | |
10380 | | std::size_t size() const exprtk_override |
10381 | 4 | { |
10382 | 4 | return value_.size(); |
10383 | 4 | } exprtk::details::const_string_range_node<double>::size() const Line | Count | Source | 10381 | 2 | { | 10382 | 2 | return value_.size(); | 10383 | 2 | } |
exprtk::details::const_string_range_node<float>::size() const Line | Count | Source | 10381 | 2 | { | 10382 | 2 | return value_.size(); | 10383 | 2 | } |
|
10384 | | |
10385 | | range_t range() const |
10386 | 2 | { |
10387 | 2 | return rp_; |
10388 | 2 | } exprtk::details::const_string_range_node<double>::range() const Line | Count | Source | 10386 | 1 | { | 10387 | 1 | return rp_; | 10388 | 1 | } |
exprtk::details::const_string_range_node<float>::range() const Line | Count | Source | 10386 | 1 | { | 10387 | 1 | return rp_; | 10388 | 1 | } |
|
10389 | | |
10390 | | range_t& range_ref() exprtk_override |
10391 | 6 | { |
10392 | 6 | return rp_; |
10393 | 6 | } exprtk::details::const_string_range_node<double>::range_ref() Line | Count | Source | 10391 | 3 | { | 10392 | 3 | return rp_; | 10393 | 3 | } |
exprtk::details::const_string_range_node<float>::range_ref() Line | Count | Source | 10391 | 3 | { | 10392 | 3 | return rp_; | 10393 | 3 | } |
|
10394 | | |
10395 | | const range_t& range_ref() const exprtk_override |
10396 | 0 | { |
10397 | 0 | return rp_; |
10398 | 0 | } Unexecuted instantiation: exprtk::details::const_string_range_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::const_string_range_node<float>::range_ref() const |
10399 | | |
10400 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10401 | 148 | { |
10402 | 148 | return expression_node<T>::e_cstringvarrng; |
10403 | 148 | } exprtk::details::const_string_range_node<double>::type() const Line | Count | Source | 10401 | 74 | { | 10402 | 74 | return expression_node<T>::e_cstringvarrng; | 10403 | 74 | } |
exprtk::details::const_string_range_node<float>::type() const Line | Count | Source | 10401 | 74 | { | 10402 | 74 | return expression_node<T>::e_cstringvarrng; | 10403 | 74 | } |
|
10404 | | |
10405 | | private: |
10406 | | |
10407 | | const_string_range_node(const const_string_range_node<T>&) exprtk_delete; |
10408 | | const_string_range_node<T>& operator=(const const_string_range_node<T>&) exprtk_delete; |
10409 | | |
10410 | | const std::string value_; |
10411 | | range_t rp_; |
10412 | | }; |
10413 | | |
10414 | | template <typename T> |
10415 | | class generic_string_range_node exprtk_final |
10416 | | : public expression_node <T> |
10417 | | , public string_base_node<T> |
10418 | | , public range_interface <T> |
10419 | | { |
10420 | | public: |
10421 | | |
10422 | | typedef expression_node <T>* expression_ptr; |
10423 | | typedef stringvar_node <T>* strvar_node_ptr; |
10424 | | typedef string_base_node<T>* str_base_ptr; |
10425 | | typedef typename range_interface<T>::range_t range_t; |
10426 | | typedef range_t* range_ptr; |
10427 | | typedef range_interface<T> irange_t; |
10428 | | typedef irange_t* irange_ptr; |
10429 | | typedef std::pair<expression_ptr,bool> branch_t; |
10430 | | |
10431 | | generic_string_range_node(expression_ptr str_branch, const range_t& brange) |
10432 | 6 | : initialised_(false) |
10433 | 6 | , str_base_ptr_ (0) |
10434 | 6 | , str_range_ptr_(0) |
10435 | 6 | , base_range_(brange) |
10436 | 6 | { |
10437 | 6 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
10438 | 6 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); |
10439 | 6 | range_.cache.first = range_.n0_c.second; |
10440 | 6 | range_.cache.second = range_.n1_c.second; |
10441 | | |
10442 | 6 | construct_branch_pair(branch_, str_branch); |
10443 | | |
10444 | 6 | if (is_generally_string_node(branch_.first)) |
10445 | 6 | { |
10446 | 6 | str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first); |
10447 | | |
10448 | 6 | if (0 == str_base_ptr_) |
10449 | 0 | return; |
10450 | | |
10451 | 6 | str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first); |
10452 | | |
10453 | 6 | if (0 == str_range_ptr_) |
10454 | 0 | return; |
10455 | 6 | } |
10456 | | |
10457 | 6 | initialised_ = (str_base_ptr_ && str_range_ptr_); |
10458 | 6 | assert(valid()); |
10459 | 6 | } exprtk::details::generic_string_range_node<double>::generic_string_range_node(exprtk::details::expression_node<double>*, exprtk::details::range_pack<double> const&) Line | Count | Source | 10432 | 3 | : initialised_(false) | 10433 | 3 | , str_base_ptr_ (0) | 10434 | 3 | , str_range_ptr_(0) | 10435 | 3 | , base_range_(brange) | 10436 | 3 | { | 10437 | 3 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); | 10438 | 3 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); | 10439 | 3 | range_.cache.first = range_.n0_c.second; | 10440 | 3 | range_.cache.second = range_.n1_c.second; | 10441 | | | 10442 | 3 | construct_branch_pair(branch_, str_branch); | 10443 | | | 10444 | 3 | if (is_generally_string_node(branch_.first)) | 10445 | 3 | { | 10446 | 3 | str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first); | 10447 | | | 10448 | 3 | if (0 == str_base_ptr_) | 10449 | 0 | return; | 10450 | | | 10451 | 3 | str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first); | 10452 | | | 10453 | 3 | if (0 == str_range_ptr_) | 10454 | 0 | return; | 10455 | 3 | } | 10456 | | | 10457 | 3 | initialised_ = (str_base_ptr_ && str_range_ptr_); | 10458 | 3 | assert(valid()); | 10459 | 3 | } |
exprtk::details::generic_string_range_node<float>::generic_string_range_node(exprtk::details::expression_node<float>*, exprtk::details::range_pack<float> const&) Line | Count | Source | 10432 | 3 | : initialised_(false) | 10433 | 3 | , str_base_ptr_ (0) | 10434 | 3 | , str_range_ptr_(0) | 10435 | 3 | , base_range_(brange) | 10436 | 3 | { | 10437 | 3 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); | 10438 | 3 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); | 10439 | 3 | range_.cache.first = range_.n0_c.second; | 10440 | 3 | range_.cache.second = range_.n1_c.second; | 10441 | | | 10442 | 3 | construct_branch_pair(branch_, str_branch); | 10443 | | | 10444 | 3 | if (is_generally_string_node(branch_.first)) | 10445 | 3 | { | 10446 | 3 | str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first); | 10447 | | | 10448 | 3 | if (0 == str_base_ptr_) | 10449 | 0 | return; | 10450 | | | 10451 | 3 | str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first); | 10452 | | | 10453 | 3 | if (0 == str_range_ptr_) | 10454 | 0 | return; | 10455 | 3 | } | 10456 | | | 10457 | 3 | initialised_ = (str_base_ptr_ && str_range_ptr_); | 10458 | 3 | assert(valid()); | 10459 | 3 | } |
|
10460 | | |
10461 | | ~generic_string_range_node() exprtk_override |
10462 | 6 | { |
10463 | 6 | base_range_.free(); |
10464 | 6 | } exprtk::details::generic_string_range_node<double>::~generic_string_range_node() Line | Count | Source | 10462 | 3 | { | 10463 | 3 | base_range_.free(); | 10464 | 3 | } |
exprtk::details::generic_string_range_node<float>::~generic_string_range_node() Line | Count | Source | 10462 | 3 | { | 10463 | 3 | base_range_.free(); | 10464 | 3 | } |
|
10465 | | |
10466 | | inline T value() const exprtk_override |
10467 | 2 | { |
10468 | 2 | branch_.first->value(); |
10469 | | |
10470 | 2 | std::size_t str_r0 = 0; |
10471 | 2 | std::size_t str_r1 = 0; |
10472 | | |
10473 | 2 | std::size_t r0 = 0; |
10474 | 2 | std::size_t r1 = 0; |
10475 | | |
10476 | 2 | const range_t& range = str_range_ptr_->range_ref(); |
10477 | | |
10478 | 2 | const std::size_t base_str_size = str_base_ptr_->size(); |
10479 | | |
10480 | 2 | if ( |
10481 | 2 | range (str_r0, str_r1, base_str_size ) && |
10482 | 2 | base_range_(r0 , r1 , base_str_size - str_r0) |
10483 | 2 | ) |
10484 | 2 | { |
10485 | 2 | const std::size_t size = r1 - r0; |
10486 | | |
10487 | 2 | range_.n1_c.second = size; |
10488 | 2 | range_.cache.second = range_.n1_c.second; |
10489 | | |
10490 | 2 | value_.assign(str_base_ptr_->base() + str_r0 + r0, size); |
10491 | 2 | } |
10492 | | |
10493 | 2 | return std::numeric_limits<T>::quiet_NaN(); |
10494 | 2 | } exprtk::details::generic_string_range_node<double>::value() const Line | Count | Source | 10467 | 1 | { | 10468 | 1 | branch_.first->value(); | 10469 | | | 10470 | 1 | std::size_t str_r0 = 0; | 10471 | 1 | std::size_t str_r1 = 0; | 10472 | | | 10473 | 1 | std::size_t r0 = 0; | 10474 | 1 | std::size_t r1 = 0; | 10475 | | | 10476 | 1 | const range_t& range = str_range_ptr_->range_ref(); | 10477 | | | 10478 | 1 | const std::size_t base_str_size = str_base_ptr_->size(); | 10479 | | | 10480 | 1 | if ( | 10481 | 1 | range (str_r0, str_r1, base_str_size ) && | 10482 | 1 | base_range_(r0 , r1 , base_str_size - str_r0) | 10483 | 1 | ) | 10484 | 1 | { | 10485 | 1 | const std::size_t size = r1 - r0; | 10486 | | | 10487 | 1 | range_.n1_c.second = size; | 10488 | 1 | range_.cache.second = range_.n1_c.second; | 10489 | | | 10490 | 1 | value_.assign(str_base_ptr_->base() + str_r0 + r0, size); | 10491 | 1 | } | 10492 | | | 10493 | 1 | return std::numeric_limits<T>::quiet_NaN(); | 10494 | 1 | } |
exprtk::details::generic_string_range_node<float>::value() const Line | Count | Source | 10467 | 1 | { | 10468 | 1 | branch_.first->value(); | 10469 | | | 10470 | 1 | std::size_t str_r0 = 0; | 10471 | 1 | std::size_t str_r1 = 0; | 10472 | | | 10473 | 1 | std::size_t r0 = 0; | 10474 | 1 | std::size_t r1 = 0; | 10475 | | | 10476 | 1 | const range_t& range = str_range_ptr_->range_ref(); | 10477 | | | 10478 | 1 | const std::size_t base_str_size = str_base_ptr_->size(); | 10479 | | | 10480 | 1 | if ( | 10481 | 1 | range (str_r0, str_r1, base_str_size ) && | 10482 | 1 | base_range_(r0 , r1 , base_str_size - str_r0) | 10483 | 1 | ) | 10484 | 1 | { | 10485 | 1 | const std::size_t size = r1 - r0; | 10486 | | | 10487 | 1 | range_.n1_c.second = size; | 10488 | 1 | range_.cache.second = range_.n1_c.second; | 10489 | | | 10490 | 1 | value_.assign(str_base_ptr_->base() + str_r0 + r0, size); | 10491 | 1 | } | 10492 | | | 10493 | 1 | return std::numeric_limits<T>::quiet_NaN(); | 10494 | 1 | } |
|
10495 | | |
10496 | | std::string str() const exprtk_override |
10497 | 0 | { |
10498 | 0 | return value_; |
10499 | 0 | } Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::str() const Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::str() const |
10500 | | |
10501 | | char_cptr base() const exprtk_override |
10502 | 0 | { |
10503 | 0 | return &value_[0]; |
10504 | 0 | } Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::base() const Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::base() const |
10505 | | |
10506 | | std::size_t size() const exprtk_override |
10507 | 0 | { |
10508 | 0 | return value_.size(); |
10509 | 0 | } Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::size() const Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::size() const |
10510 | | |
10511 | | range_t& range_ref() exprtk_override |
10512 | 0 | { |
10513 | 0 | return range_; |
10514 | 0 | } Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::range_ref() Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::range_ref() |
10515 | | |
10516 | | const range_t& range_ref() const exprtk_override |
10517 | 0 | { |
10518 | 0 | return range_; |
10519 | 0 | } Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::range_ref() const |
10520 | | |
10521 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10522 | 24 | { |
10523 | 24 | return expression_node<T>::e_strgenrange; |
10524 | 24 | } exprtk::details::generic_string_range_node<double>::type() const Line | Count | Source | 10522 | 12 | { | 10523 | 12 | return expression_node<T>::e_strgenrange; | 10524 | 12 | } |
exprtk::details::generic_string_range_node<float>::type() const Line | Count | Source | 10522 | 12 | { | 10523 | 12 | return expression_node<T>::e_strgenrange; | 10524 | 12 | } |
|
10525 | | |
10526 | | inline bool valid() const exprtk_override |
10527 | 12 | { |
10528 | 12 | return initialised_ && branch_.first; |
10529 | 12 | } exprtk::details::generic_string_range_node<double>::valid() const Line | Count | Source | 10527 | 6 | { | 10528 | 6 | return initialised_ && branch_.first; | 10529 | 6 | } |
exprtk::details::generic_string_range_node<float>::valid() const Line | Count | Source | 10527 | 6 | { | 10528 | 6 | return initialised_ && branch_.first; | 10529 | 6 | } |
|
10530 | | |
10531 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
10532 | 6 | { |
10533 | 6 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
10534 | 6 | } exprtk::details::generic_string_range_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 10532 | 3 | { | 10533 | 3 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 10534 | 3 | } |
exprtk::details::generic_string_range_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 10532 | 3 | { | 10533 | 3 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 10534 | 3 | } |
|
10535 | | |
10536 | | std::size_t node_depth() const exprtk_override |
10537 | 8 | { |
10538 | 8 | return expression_node<T>::ndb_t::compute_node_depth(branch_); |
10539 | 8 | } exprtk::details::generic_string_range_node<double>::node_depth() const Line | Count | Source | 10537 | 4 | { | 10538 | 4 | return expression_node<T>::ndb_t::compute_node_depth(branch_); | 10539 | 4 | } |
exprtk::details::generic_string_range_node<float>::node_depth() const Line | Count | Source | 10537 | 4 | { | 10538 | 4 | return expression_node<T>::ndb_t::compute_node_depth(branch_); | 10539 | 4 | } |
|
10540 | | |
10541 | | private: |
10542 | | |
10543 | | bool initialised_; |
10544 | | branch_t branch_; |
10545 | | str_base_ptr str_base_ptr_; |
10546 | | irange_ptr str_range_ptr_; |
10547 | | mutable range_t base_range_; |
10548 | | mutable range_t range_; |
10549 | | mutable std::string value_; |
10550 | | }; |
10551 | | |
10552 | | template <typename T> |
10553 | | class string_concat_node exprtk_final |
10554 | | : public binary_node <T> |
10555 | | , public string_base_node<T> |
10556 | | , public range_interface <T> |
10557 | | { |
10558 | | public: |
10559 | | |
10560 | | typedef typename range_interface<T>::range_t range_t; |
10561 | | typedef range_interface<T> irange_t; |
10562 | | typedef irange_t* irange_ptr; |
10563 | | typedef range_t* range_ptr; |
10564 | | typedef expression_node <T>* expression_ptr; |
10565 | | typedef string_base_node<T>* str_base_ptr; |
10566 | | |
10567 | | using binary_node<T>::branch; |
10568 | | |
10569 | | string_concat_node(const operator_type& opr, |
10570 | | expression_ptr branch0, |
10571 | | expression_ptr branch1) |
10572 | 2 | : binary_node<T>(opr, branch0, branch1) |
10573 | 2 | , initialised_(false) |
10574 | 2 | , str0_base_ptr_ (0) |
10575 | 2 | , str1_base_ptr_ (0) |
10576 | 2 | , str0_range_ptr_(0) |
10577 | 2 | , str1_range_ptr_(0) |
10578 | 2 | { |
10579 | 2 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
10580 | 2 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); |
10581 | | |
10582 | 2 | range_.cache.first = range_.n0_c.second; |
10583 | 2 | range_.cache.second = range_.n1_c.second; |
10584 | | |
10585 | 2 | if (is_generally_string_node(branch(0))) |
10586 | 2 | { |
10587 | 2 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); |
10588 | | |
10589 | 2 | if (0 == str0_base_ptr_) |
10590 | 0 | return; |
10591 | | |
10592 | 2 | str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0)); |
10593 | | |
10594 | 2 | if (0 == str0_range_ptr_) |
10595 | 0 | return; |
10596 | 2 | } |
10597 | | |
10598 | 2 | if (is_generally_string_node(branch(1))) |
10599 | 2 | { |
10600 | 2 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); |
10601 | | |
10602 | 2 | if (0 == str1_base_ptr_) |
10603 | 0 | return; |
10604 | | |
10605 | 2 | str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1)); |
10606 | | |
10607 | 2 | if (0 == str1_range_ptr_) |
10608 | 0 | return; |
10609 | 2 | } |
10610 | | |
10611 | 2 | initialised_ = str0_base_ptr_ && |
10612 | 2 | str1_base_ptr_ && |
10613 | 2 | str0_range_ptr_ && |
10614 | 2 | str1_range_ptr_ ; |
10615 | | |
10616 | 2 | assert(valid()); |
10617 | 2 | } exprtk::details::string_concat_node<double>::string_concat_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 10572 | 1 | : binary_node<T>(opr, branch0, branch1) | 10573 | 1 | , initialised_(false) | 10574 | 1 | , str0_base_ptr_ (0) | 10575 | 1 | , str1_base_ptr_ (0) | 10576 | 1 | , str0_range_ptr_(0) | 10577 | 1 | , str1_range_ptr_(0) | 10578 | 1 | { | 10579 | 1 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); | 10580 | 1 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); | 10581 | | | 10582 | 1 | range_.cache.first = range_.n0_c.second; | 10583 | 1 | range_.cache.second = range_.n1_c.second; | 10584 | | | 10585 | 1 | if (is_generally_string_node(branch(0))) | 10586 | 1 | { | 10587 | 1 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); | 10588 | | | 10589 | 1 | if (0 == str0_base_ptr_) | 10590 | 0 | return; | 10591 | | | 10592 | 1 | str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0)); | 10593 | | | 10594 | 1 | if (0 == str0_range_ptr_) | 10595 | 0 | return; | 10596 | 1 | } | 10597 | | | 10598 | 1 | if (is_generally_string_node(branch(1))) | 10599 | 1 | { | 10600 | 1 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); | 10601 | | | 10602 | 1 | if (0 == str1_base_ptr_) | 10603 | 0 | return; | 10604 | | | 10605 | 1 | str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1)); | 10606 | | | 10607 | 1 | if (0 == str1_range_ptr_) | 10608 | 0 | return; | 10609 | 1 | } | 10610 | | | 10611 | 1 | initialised_ = str0_base_ptr_ && | 10612 | 1 | str1_base_ptr_ && | 10613 | 1 | str0_range_ptr_ && | 10614 | 1 | str1_range_ptr_ ; | 10615 | | | 10616 | 1 | assert(valid()); | 10617 | 1 | } |
exprtk::details::string_concat_node<float>::string_concat_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 10572 | 1 | : binary_node<T>(opr, branch0, branch1) | 10573 | 1 | , initialised_(false) | 10574 | 1 | , str0_base_ptr_ (0) | 10575 | 1 | , str1_base_ptr_ (0) | 10576 | 1 | , str0_range_ptr_(0) | 10577 | 1 | , str1_range_ptr_(0) | 10578 | 1 | { | 10579 | 1 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); | 10580 | 1 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); | 10581 | | | 10582 | 1 | range_.cache.first = range_.n0_c.second; | 10583 | 1 | range_.cache.second = range_.n1_c.second; | 10584 | | | 10585 | 1 | if (is_generally_string_node(branch(0))) | 10586 | 1 | { | 10587 | 1 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); | 10588 | | | 10589 | 1 | if (0 == str0_base_ptr_) | 10590 | 0 | return; | 10591 | | | 10592 | 1 | str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0)); | 10593 | | | 10594 | 1 | if (0 == str0_range_ptr_) | 10595 | 0 | return; | 10596 | 1 | } | 10597 | | | 10598 | 1 | if (is_generally_string_node(branch(1))) | 10599 | 1 | { | 10600 | 1 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); | 10601 | | | 10602 | 1 | if (0 == str1_base_ptr_) | 10603 | 0 | return; | 10604 | | | 10605 | 1 | str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1)); | 10606 | | | 10607 | 1 | if (0 == str1_range_ptr_) | 10608 | 0 | return; | 10609 | 1 | } | 10610 | | | 10611 | 1 | initialised_ = str0_base_ptr_ && | 10612 | 1 | str1_base_ptr_ && | 10613 | 1 | str0_range_ptr_ && | 10614 | 1 | str1_range_ptr_ ; | 10615 | | | 10616 | 1 | assert(valid()); | 10617 | 1 | } |
|
10618 | | |
10619 | | inline T value() const exprtk_override |
10620 | 2 | { |
10621 | 2 | branch(0)->value(); |
10622 | 2 | branch(1)->value(); |
10623 | | |
10624 | 2 | std::size_t str0_r0 = 0; |
10625 | 2 | std::size_t str0_r1 = 0; |
10626 | | |
10627 | 2 | std::size_t str1_r0 = 0; |
10628 | 2 | std::size_t str1_r1 = 0; |
10629 | | |
10630 | 2 | const range_t& range0 = str0_range_ptr_->range_ref(); |
10631 | 2 | const range_t& range1 = str1_range_ptr_->range_ref(); |
10632 | | |
10633 | 2 | if ( |
10634 | 2 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && |
10635 | 2 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) |
10636 | 2 | ) |
10637 | 0 | { |
10638 | 0 | const std::size_t size0 = (str0_r1 - str0_r0); |
10639 | 0 | const std::size_t size1 = (str1_r1 - str1_r0); |
10640 | |
|
10641 | 0 | value_.assign(str0_base_ptr_->base() + str0_r0, size0); |
10642 | 0 | value_.append(str1_base_ptr_->base() + str1_r0, size1); |
10643 | |
|
10644 | 0 | range_.n1_c.second = value_.size(); |
10645 | 0 | range_.cache.second = range_.n1_c.second; |
10646 | 0 | } |
10647 | | |
10648 | 2 | return std::numeric_limits<T>::quiet_NaN(); |
10649 | 2 | } exprtk::details::string_concat_node<double>::value() const Line | Count | Source | 10620 | 1 | { | 10621 | 1 | branch(0)->value(); | 10622 | 1 | branch(1)->value(); | 10623 | | | 10624 | 1 | std::size_t str0_r0 = 0; | 10625 | 1 | std::size_t str0_r1 = 0; | 10626 | | | 10627 | 1 | std::size_t str1_r0 = 0; | 10628 | 1 | std::size_t str1_r1 = 0; | 10629 | | | 10630 | 1 | const range_t& range0 = str0_range_ptr_->range_ref(); | 10631 | 1 | const range_t& range1 = str1_range_ptr_->range_ref(); | 10632 | | | 10633 | 1 | if ( | 10634 | 1 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && | 10635 | 1 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) | 10636 | 1 | ) | 10637 | 0 | { | 10638 | 0 | const std::size_t size0 = (str0_r1 - str0_r0); | 10639 | 0 | const std::size_t size1 = (str1_r1 - str1_r0); | 10640 | |
| 10641 | 0 | value_.assign(str0_base_ptr_->base() + str0_r0, size0); | 10642 | 0 | value_.append(str1_base_ptr_->base() + str1_r0, size1); | 10643 | |
| 10644 | 0 | range_.n1_c.second = value_.size(); | 10645 | 0 | range_.cache.second = range_.n1_c.second; | 10646 | 0 | } | 10647 | | | 10648 | 1 | return std::numeric_limits<T>::quiet_NaN(); | 10649 | 1 | } |
exprtk::details::string_concat_node<float>::value() const Line | Count | Source | 10620 | 1 | { | 10621 | 1 | branch(0)->value(); | 10622 | 1 | branch(1)->value(); | 10623 | | | 10624 | 1 | std::size_t str0_r0 = 0; | 10625 | 1 | std::size_t str0_r1 = 0; | 10626 | | | 10627 | 1 | std::size_t str1_r0 = 0; | 10628 | 1 | std::size_t str1_r1 = 0; | 10629 | | | 10630 | 1 | const range_t& range0 = str0_range_ptr_->range_ref(); | 10631 | 1 | const range_t& range1 = str1_range_ptr_->range_ref(); | 10632 | | | 10633 | 1 | if ( | 10634 | 1 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && | 10635 | 1 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) | 10636 | 1 | ) | 10637 | 0 | { | 10638 | 0 | const std::size_t size0 = (str0_r1 - str0_r0); | 10639 | 0 | const std::size_t size1 = (str1_r1 - str1_r0); | 10640 | |
| 10641 | 0 | value_.assign(str0_base_ptr_->base() + str0_r0, size0); | 10642 | 0 | value_.append(str1_base_ptr_->base() + str1_r0, size1); | 10643 | |
| 10644 | 0 | range_.n1_c.second = value_.size(); | 10645 | 0 | range_.cache.second = range_.n1_c.second; | 10646 | 0 | } | 10647 | | | 10648 | 1 | return std::numeric_limits<T>::quiet_NaN(); | 10649 | 1 | } |
|
10650 | | |
10651 | | std::string str() const exprtk_override |
10652 | 0 | { |
10653 | 0 | return value_; |
10654 | 0 | } Unexecuted instantiation: exprtk::details::string_concat_node<double>::str() const Unexecuted instantiation: exprtk::details::string_concat_node<float>::str() const |
10655 | | |
10656 | | char_cptr base() const exprtk_override |
10657 | 0 | { |
10658 | 0 | return &value_[0]; |
10659 | 0 | } Unexecuted instantiation: exprtk::details::string_concat_node<double>::base() const Unexecuted instantiation: exprtk::details::string_concat_node<float>::base() const |
10660 | | |
10661 | | std::size_t size() const exprtk_override |
10662 | 0 | { |
10663 | 0 | return value_.size(); |
10664 | 0 | } Unexecuted instantiation: exprtk::details::string_concat_node<double>::size() const Unexecuted instantiation: exprtk::details::string_concat_node<float>::size() const |
10665 | | |
10666 | | range_t& range_ref() exprtk_override |
10667 | 0 | { |
10668 | 0 | return range_; |
10669 | 0 | } Unexecuted instantiation: exprtk::details::string_concat_node<double>::range_ref() Unexecuted instantiation: exprtk::details::string_concat_node<float>::range_ref() |
10670 | | |
10671 | | const range_t& range_ref() const exprtk_override |
10672 | 0 | { |
10673 | 0 | return range_; |
10674 | 0 | } Unexecuted instantiation: exprtk::details::string_concat_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::string_concat_node<float>::range_ref() const |
10675 | | |
10676 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10677 | 10 | { |
10678 | 10 | return expression_node<T>::e_strconcat; |
10679 | 10 | } exprtk::details::string_concat_node<double>::type() const Line | Count | Source | 10677 | 5 | { | 10678 | 5 | return expression_node<T>::e_strconcat; | 10679 | 5 | } |
exprtk::details::string_concat_node<float>::type() const Line | Count | Source | 10677 | 5 | { | 10678 | 5 | return expression_node<T>::e_strconcat; | 10679 | 5 | } |
|
10680 | | |
10681 | | inline bool valid() const exprtk_override |
10682 | 4 | { |
10683 | 4 | return initialised_ && binary_node<T>::valid(); |
10684 | 4 | } exprtk::details::string_concat_node<double>::valid() const Line | Count | Source | 10682 | 2 | { | 10683 | 2 | return initialised_ && binary_node<T>::valid(); | 10684 | 2 | } |
exprtk::details::string_concat_node<float>::valid() const Line | Count | Source | 10682 | 2 | { | 10683 | 2 | return initialised_ && binary_node<T>::valid(); | 10684 | 2 | } |
|
10685 | | |
10686 | | private: |
10687 | | |
10688 | | bool initialised_; |
10689 | | str_base_ptr str0_base_ptr_; |
10690 | | str_base_ptr str1_base_ptr_; |
10691 | | irange_ptr str0_range_ptr_; |
10692 | | irange_ptr str1_range_ptr_; |
10693 | | mutable range_t range_; |
10694 | | mutable std::string value_; |
10695 | | }; |
10696 | | |
10697 | | template <typename T> |
10698 | | class swap_string_node exprtk_final |
10699 | | : public binary_node <T> |
10700 | | , public string_base_node<T> |
10701 | | , public range_interface <T> |
10702 | | { |
10703 | | public: |
10704 | | |
10705 | | typedef typename range_interface<T>::range_t range_t; |
10706 | | typedef range_t* range_ptr; |
10707 | | typedef range_interface<T> irange_t; |
10708 | | typedef irange_t* irange_ptr; |
10709 | | typedef expression_node <T>* expression_ptr; |
10710 | | typedef stringvar_node <T>* strvar_node_ptr; |
10711 | | typedef string_base_node<T>* str_base_ptr; |
10712 | | |
10713 | | using binary_node<T>::branch; |
10714 | | |
10715 | | swap_string_node(expression_ptr branch0, expression_ptr branch1) |
10716 | 0 | : binary_node<T>(details::e_swap, branch0, branch1) |
10717 | 0 | , initialised_(false) |
10718 | 0 | , str0_node_ptr_(0) |
10719 | 0 | , str1_node_ptr_(0) |
10720 | 0 | { |
10721 | 0 | if (is_string_node(branch(0))) |
10722 | 0 | { |
10723 | 0 | str0_node_ptr_ = static_cast<strvar_node_ptr>(branch(0)); |
10724 | 0 | } |
10725 | |
|
10726 | 0 | if (is_string_node(branch(1))) |
10727 | 0 | { |
10728 | 0 | str1_node_ptr_ = static_cast<strvar_node_ptr>(branch(1)); |
10729 | 0 | } |
10730 | |
|
10731 | 0 | initialised_ = (str0_node_ptr_ && str1_node_ptr_); |
10732 | 0 | assert(valid()); |
10733 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::swap_string_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::swap_string_node<float>::swap_string_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
10734 | | |
10735 | | inline T value() const exprtk_override |
10736 | 0 | { |
10737 | 0 | branch(0)->value(); |
10738 | 0 | branch(1)->value(); |
10739 | |
|
10740 | 0 | std::swap(str0_node_ptr_->ref(), str1_node_ptr_->ref()); |
10741 | |
|
10742 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
10743 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::value() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::value() const |
10744 | | |
10745 | | std::string str() const exprtk_override |
10746 | 0 | { |
10747 | 0 | return str0_node_ptr_->str(); |
10748 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::str() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::str() const |
10749 | | |
10750 | | char_cptr base() const exprtk_override |
10751 | 0 | { |
10752 | 0 | return str0_node_ptr_->base(); |
10753 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::base() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::base() const |
10754 | | |
10755 | | std::size_t size() const exprtk_override |
10756 | 0 | { |
10757 | 0 | return str0_node_ptr_->size(); |
10758 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::size() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::size() const |
10759 | | |
10760 | | range_t& range_ref() exprtk_override |
10761 | 0 | { |
10762 | 0 | return str0_node_ptr_->range_ref(); |
10763 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::range_ref() Unexecuted instantiation: exprtk::details::swap_string_node<float>::range_ref() |
10764 | | |
10765 | | const range_t& range_ref() const exprtk_override |
10766 | 0 | { |
10767 | 0 | return str0_node_ptr_->range_ref(); |
10768 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::range_ref() const |
10769 | | |
10770 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10771 | 0 | { |
10772 | 0 | return expression_node<T>::e_strswap; |
10773 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::type() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::type() const |
10774 | | |
10775 | | inline bool valid() const exprtk_override |
10776 | 0 | { |
10777 | 0 | return initialised_ && binary_node<T>::valid(); |
10778 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::valid() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::valid() const |
10779 | | |
10780 | | private: |
10781 | | |
10782 | | bool initialised_; |
10783 | | strvar_node_ptr str0_node_ptr_; |
10784 | | strvar_node_ptr str1_node_ptr_; |
10785 | | }; |
10786 | | |
10787 | | template <typename T> |
10788 | | class swap_genstrings_node exprtk_final : public binary_node<T> |
10789 | | { |
10790 | | public: |
10791 | | |
10792 | | typedef typename range_interface<T>::range_t range_t; |
10793 | | typedef range_t* range_ptr; |
10794 | | typedef range_interface<T> irange_t; |
10795 | | typedef irange_t* irange_ptr; |
10796 | | typedef expression_node <T>* expression_ptr; |
10797 | | typedef string_base_node<T>* str_base_ptr; |
10798 | | |
10799 | | using binary_node<T>::branch; |
10800 | | |
10801 | | swap_genstrings_node(expression_ptr branch0, |
10802 | | expression_ptr branch1) |
10803 | 6 | : binary_node<T>(details::e_default, branch0, branch1) |
10804 | 6 | , str0_base_ptr_ (0) |
10805 | 6 | , str1_base_ptr_ (0) |
10806 | 6 | , str0_range_ptr_(0) |
10807 | 6 | , str1_range_ptr_(0) |
10808 | 6 | , initialised_(false) |
10809 | 6 | { |
10810 | 6 | if (is_generally_string_node(branch(0))) |
10811 | 6 | { |
10812 | 6 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); |
10813 | | |
10814 | 6 | if (0 == str0_base_ptr_) |
10815 | 0 | return; |
10816 | | |
10817 | 6 | irange_ptr range = dynamic_cast<irange_ptr>(branch(0)); |
10818 | | |
10819 | 6 | if (0 == range) |
10820 | 0 | return; |
10821 | | |
10822 | 6 | str0_range_ptr_ = &(range->range_ref()); |
10823 | 6 | } |
10824 | | |
10825 | 6 | if (is_generally_string_node(branch(1))) |
10826 | 6 | { |
10827 | 6 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); |
10828 | | |
10829 | 6 | if (0 == str1_base_ptr_) |
10830 | 0 | return; |
10831 | | |
10832 | 6 | irange_ptr range = dynamic_cast<irange_ptr>(branch(1)); |
10833 | | |
10834 | 6 | if (0 == range) |
10835 | 0 | return; |
10836 | | |
10837 | 6 | str1_range_ptr_ = &(range->range_ref()); |
10838 | 6 | } |
10839 | | |
10840 | 6 | initialised_ = str0_base_ptr_ && |
10841 | 6 | str1_base_ptr_ && |
10842 | 6 | str0_range_ptr_ && |
10843 | 6 | str1_range_ptr_ ; |
10844 | | |
10845 | 6 | assert(valid()); |
10846 | 6 | } exprtk::details::swap_genstrings_node<double>::swap_genstrings_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 10803 | 3 | : binary_node<T>(details::e_default, branch0, branch1) | 10804 | 3 | , str0_base_ptr_ (0) | 10805 | 3 | , str1_base_ptr_ (0) | 10806 | 3 | , str0_range_ptr_(0) | 10807 | 3 | , str1_range_ptr_(0) | 10808 | 3 | , initialised_(false) | 10809 | 3 | { | 10810 | 3 | if (is_generally_string_node(branch(0))) | 10811 | 3 | { | 10812 | 3 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); | 10813 | | | 10814 | 3 | if (0 == str0_base_ptr_) | 10815 | 0 | return; | 10816 | | | 10817 | 3 | irange_ptr range = dynamic_cast<irange_ptr>(branch(0)); | 10818 | | | 10819 | 3 | if (0 == range) | 10820 | 0 | return; | 10821 | | | 10822 | 3 | str0_range_ptr_ = &(range->range_ref()); | 10823 | 3 | } | 10824 | | | 10825 | 3 | if (is_generally_string_node(branch(1))) | 10826 | 3 | { | 10827 | 3 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); | 10828 | | | 10829 | 3 | if (0 == str1_base_ptr_) | 10830 | 0 | return; | 10831 | | | 10832 | 3 | irange_ptr range = dynamic_cast<irange_ptr>(branch(1)); | 10833 | | | 10834 | 3 | if (0 == range) | 10835 | 0 | return; | 10836 | | | 10837 | 3 | str1_range_ptr_ = &(range->range_ref()); | 10838 | 3 | } | 10839 | | | 10840 | 3 | initialised_ = str0_base_ptr_ && | 10841 | 3 | str1_base_ptr_ && | 10842 | 3 | str0_range_ptr_ && | 10843 | 3 | str1_range_ptr_ ; | 10844 | | | 10845 | 3 | assert(valid()); | 10846 | 3 | } |
exprtk::details::swap_genstrings_node<float>::swap_genstrings_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 10803 | 3 | : binary_node<T>(details::e_default, branch0, branch1) | 10804 | 3 | , str0_base_ptr_ (0) | 10805 | 3 | , str1_base_ptr_ (0) | 10806 | 3 | , str0_range_ptr_(0) | 10807 | 3 | , str1_range_ptr_(0) | 10808 | 3 | , initialised_(false) | 10809 | 3 | { | 10810 | 3 | if (is_generally_string_node(branch(0))) | 10811 | 3 | { | 10812 | 3 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); | 10813 | | | 10814 | 3 | if (0 == str0_base_ptr_) | 10815 | 0 | return; | 10816 | | | 10817 | 3 | irange_ptr range = dynamic_cast<irange_ptr>(branch(0)); | 10818 | | | 10819 | 3 | if (0 == range) | 10820 | 0 | return; | 10821 | | | 10822 | 3 | str0_range_ptr_ = &(range->range_ref()); | 10823 | 3 | } | 10824 | | | 10825 | 3 | if (is_generally_string_node(branch(1))) | 10826 | 3 | { | 10827 | 3 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); | 10828 | | | 10829 | 3 | if (0 == str1_base_ptr_) | 10830 | 0 | return; | 10831 | | | 10832 | 3 | irange_ptr range = dynamic_cast<irange_ptr>(branch(1)); | 10833 | | | 10834 | 3 | if (0 == range) | 10835 | 0 | return; | 10836 | | | 10837 | 3 | str1_range_ptr_ = &(range->range_ref()); | 10838 | 3 | } | 10839 | | | 10840 | 3 | initialised_ = str0_base_ptr_ && | 10841 | 3 | str1_base_ptr_ && | 10842 | 3 | str0_range_ptr_ && | 10843 | 3 | str1_range_ptr_ ; | 10844 | | | 10845 | 3 | assert(valid()); | 10846 | 3 | } |
|
10847 | | |
10848 | | inline T value() const exprtk_override |
10849 | 6 | { |
10850 | 6 | branch(0)->value(); |
10851 | 6 | branch(1)->value(); |
10852 | | |
10853 | 6 | std::size_t str0_r0 = 0; |
10854 | 6 | std::size_t str0_r1 = 0; |
10855 | | |
10856 | 6 | std::size_t str1_r0 = 0; |
10857 | 6 | std::size_t str1_r1 = 0; |
10858 | | |
10859 | 6 | const range_t& range0 = (*str0_range_ptr_); |
10860 | 6 | const range_t& range1 = (*str1_range_ptr_); |
10861 | | |
10862 | 6 | if ( |
10863 | 6 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && |
10864 | 6 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) |
10865 | 6 | ) |
10866 | 6 | { |
10867 | 6 | const std::size_t size0 = range0.cache_size(); |
10868 | 6 | const std::size_t size1 = range1.cache_size(); |
10869 | 6 | const std::size_t max_size = std::min(size0,size1); |
10870 | | |
10871 | 6 | char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0); |
10872 | 6 | char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0); |
10873 | | |
10874 | 6 | loop_unroll::details lud(max_size); |
10875 | 6 | char_cptr upper_bound = s0 + lud.upper_bound; |
10876 | | |
10877 | 8 | while (s0 < upper_bound) |
10878 | 2 | { |
10879 | 2 | #define exprtk_loop(N) \ |
10880 | 32 | std::swap(s0[N], s1[N]); \ |
10881 | 2 | |
10882 | 2 | exprtk_loop( 0) exprtk_loop( 1) |
10883 | 2 | exprtk_loop( 2) exprtk_loop( 3) |
10884 | 2 | #ifndef exprtk_disable_superscalar_unroll |
10885 | 2 | exprtk_loop( 4) exprtk_loop( 5) |
10886 | 2 | exprtk_loop( 6) exprtk_loop( 7) |
10887 | 2 | exprtk_loop( 8) exprtk_loop( 9) |
10888 | 2 | exprtk_loop(10) exprtk_loop(11) |
10889 | 2 | exprtk_loop(12) exprtk_loop(13) |
10890 | 2 | exprtk_loop(14) exprtk_loop(15) |
10891 | 2 | #endif |
10892 | | |
10893 | 2 | s0 += lud.batch_size; |
10894 | 2 | s1 += lud.batch_size; |
10895 | 2 | } |
10896 | | |
10897 | 6 | int i = 0; |
10898 | | |
10899 | 6 | switch (lud.remainder) |
10900 | 6 | { |
10901 | 0 | #define case_stmt(N) \ |
10902 | 18 | case N : { std::swap(s0[i], s1[i]); ++i; } \ |
10903 | 18 | exprtk_fallthrough \ |
10904 | 0 | |
10905 | 0 | #ifndef exprtk_disable_superscalar_unroll |
10906 | 0 | case_stmt(15) case_stmt(14) |
10907 | 0 | case_stmt(13) case_stmt(12) |
10908 | 0 | case_stmt(11) case_stmt(10) |
10909 | 0 | case_stmt( 9) case_stmt( 8) |
10910 | 2 | case_stmt( 7) case_stmt( 6) |
10911 | 2 | case_stmt( 5) case_stmt( 4) |
10912 | 2 | #endif |
10913 | 2 | case_stmt( 3) case_stmt( 2) |
10914 | 6 | case_stmt( 1) |
10915 | 6 | default: break; |
10916 | 6 | } |
10917 | | |
10918 | 6 | #undef exprtk_loop |
10919 | 6 | #undef case_stmt |
10920 | 6 | } |
10921 | | |
10922 | 6 | return std::numeric_limits<T>::quiet_NaN(); |
10923 | 6 | } exprtk::details::swap_genstrings_node<double>::value() const Line | Count | Source | 10849 | 3 | { | 10850 | 3 | branch(0)->value(); | 10851 | 3 | branch(1)->value(); | 10852 | | | 10853 | 3 | std::size_t str0_r0 = 0; | 10854 | 3 | std::size_t str0_r1 = 0; | 10855 | | | 10856 | 3 | std::size_t str1_r0 = 0; | 10857 | 3 | std::size_t str1_r1 = 0; | 10858 | | | 10859 | 3 | const range_t& range0 = (*str0_range_ptr_); | 10860 | 3 | const range_t& range1 = (*str1_range_ptr_); | 10861 | | | 10862 | 3 | if ( | 10863 | 3 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && | 10864 | 3 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) | 10865 | 3 | ) | 10866 | 3 | { | 10867 | 3 | const std::size_t size0 = range0.cache_size(); | 10868 | 3 | const std::size_t size1 = range1.cache_size(); | 10869 | 3 | const std::size_t max_size = std::min(size0,size1); | 10870 | | | 10871 | 3 | char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0); | 10872 | 3 | char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0); | 10873 | | | 10874 | 3 | loop_unroll::details lud(max_size); | 10875 | 3 | char_cptr upper_bound = s0 + lud.upper_bound; | 10876 | | | 10877 | 4 | while (s0 < upper_bound) | 10878 | 1 | { | 10879 | 1 | #define exprtk_loop(N) \ | 10880 | 1 | std::swap(s0[N], s1[N]); \ | 10881 | 1 | | 10882 | 1 | exprtk_loop( 0) exprtk_loop( 1) | 10883 | 1 | exprtk_loop( 2) exprtk_loop( 3) | 10884 | 1 | #ifndef exprtk_disable_superscalar_unroll | 10885 | 1 | exprtk_loop( 4) exprtk_loop( 5) | 10886 | 1 | exprtk_loop( 6) exprtk_loop( 7) | 10887 | 1 | exprtk_loop( 8) exprtk_loop( 9) | 10888 | 1 | exprtk_loop(10) exprtk_loop(11) | 10889 | 1 | exprtk_loop(12) exprtk_loop(13) | 10890 | 1 | exprtk_loop(14) exprtk_loop(15) | 10891 | 1 | #endif | 10892 | | | 10893 | 1 | s0 += lud.batch_size; | 10894 | 1 | s1 += lud.batch_size; | 10895 | 1 | } | 10896 | | | 10897 | 3 | int i = 0; | 10898 | | | 10899 | 3 | switch (lud.remainder) | 10900 | 3 | { | 10901 | 0 | #define case_stmt(N) \ | 10902 | 0 | case N : { std::swap(s0[i], s1[i]); ++i; } \ | 10903 | 0 | exprtk_fallthrough \ | 10904 | 0 | | 10905 | 0 | #ifndef exprtk_disable_superscalar_unroll | 10906 | 0 | case_stmt(15) case_stmt(14) | 10907 | 0 | case_stmt(13) case_stmt(12) | 10908 | 0 | case_stmt(11) case_stmt(10) | 10909 | 0 | case_stmt( 9) case_stmt( 8) | 10910 | 1 | case_stmt( 7) case_stmt( 6) | 10911 | 1 | case_stmt( 5) case_stmt( 4) | 10912 | 1 | #endif | 10913 | 1 | case_stmt( 3) case_stmt( 2) | 10914 | 3 | case_stmt( 1) | 10915 | 3 | default: break; | 10916 | 3 | } | 10917 | | | 10918 | 3 | #undef exprtk_loop | 10919 | 3 | #undef case_stmt | 10920 | 3 | } | 10921 | | | 10922 | 3 | return std::numeric_limits<T>::quiet_NaN(); | 10923 | 3 | } |
exprtk::details::swap_genstrings_node<float>::value() const Line | Count | Source | 10849 | 3 | { | 10850 | 3 | branch(0)->value(); | 10851 | 3 | branch(1)->value(); | 10852 | | | 10853 | 3 | std::size_t str0_r0 = 0; | 10854 | 3 | std::size_t str0_r1 = 0; | 10855 | | | 10856 | 3 | std::size_t str1_r0 = 0; | 10857 | 3 | std::size_t str1_r1 = 0; | 10858 | | | 10859 | 3 | const range_t& range0 = (*str0_range_ptr_); | 10860 | 3 | const range_t& range1 = (*str1_range_ptr_); | 10861 | | | 10862 | 3 | if ( | 10863 | 3 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && | 10864 | 3 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) | 10865 | 3 | ) | 10866 | 3 | { | 10867 | 3 | const std::size_t size0 = range0.cache_size(); | 10868 | 3 | const std::size_t size1 = range1.cache_size(); | 10869 | 3 | const std::size_t max_size = std::min(size0,size1); | 10870 | | | 10871 | 3 | char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0); | 10872 | 3 | char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0); | 10873 | | | 10874 | 3 | loop_unroll::details lud(max_size); | 10875 | 3 | char_cptr upper_bound = s0 + lud.upper_bound; | 10876 | | | 10877 | 4 | while (s0 < upper_bound) | 10878 | 1 | { | 10879 | 1 | #define exprtk_loop(N) \ | 10880 | 1 | std::swap(s0[N], s1[N]); \ | 10881 | 1 | | 10882 | 1 | exprtk_loop( 0) exprtk_loop( 1) | 10883 | 1 | exprtk_loop( 2) exprtk_loop( 3) | 10884 | 1 | #ifndef exprtk_disable_superscalar_unroll | 10885 | 1 | exprtk_loop( 4) exprtk_loop( 5) | 10886 | 1 | exprtk_loop( 6) exprtk_loop( 7) | 10887 | 1 | exprtk_loop( 8) exprtk_loop( 9) | 10888 | 1 | exprtk_loop(10) exprtk_loop(11) | 10889 | 1 | exprtk_loop(12) exprtk_loop(13) | 10890 | 1 | exprtk_loop(14) exprtk_loop(15) | 10891 | 1 | #endif | 10892 | | | 10893 | 1 | s0 += lud.batch_size; | 10894 | 1 | s1 += lud.batch_size; | 10895 | 1 | } | 10896 | | | 10897 | 3 | int i = 0; | 10898 | | | 10899 | 3 | switch (lud.remainder) | 10900 | 3 | { | 10901 | 0 | #define case_stmt(N) \ | 10902 | 0 | case N : { std::swap(s0[i], s1[i]); ++i; } \ | 10903 | 0 | exprtk_fallthrough \ | 10904 | 0 | | 10905 | 0 | #ifndef exprtk_disable_superscalar_unroll | 10906 | 0 | case_stmt(15) case_stmt(14) | 10907 | 0 | case_stmt(13) case_stmt(12) | 10908 | 0 | case_stmt(11) case_stmt(10) | 10909 | 0 | case_stmt( 9) case_stmt( 8) | 10910 | 1 | case_stmt( 7) case_stmt( 6) | 10911 | 1 | case_stmt( 5) case_stmt( 4) | 10912 | 1 | #endif | 10913 | 1 | case_stmt( 3) case_stmt( 2) | 10914 | 3 | case_stmt( 1) | 10915 | 3 | default: break; | 10916 | 3 | } | 10917 | | | 10918 | 3 | #undef exprtk_loop | 10919 | 3 | #undef case_stmt | 10920 | 3 | } | 10921 | | | 10922 | 3 | return std::numeric_limits<T>::quiet_NaN(); | 10923 | 3 | } |
|
10924 | | |
10925 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10926 | 60 | { |
10927 | 60 | return expression_node<T>::e_strswap; |
10928 | 60 | } exprtk::details::swap_genstrings_node<double>::type() const Line | Count | Source | 10926 | 30 | { | 10927 | 30 | return expression_node<T>::e_strswap; | 10928 | 30 | } |
exprtk::details::swap_genstrings_node<float>::type() const Line | Count | Source | 10926 | 30 | { | 10927 | 30 | return expression_node<T>::e_strswap; | 10928 | 30 | } |
|
10929 | | |
10930 | | inline bool valid() const exprtk_override |
10931 | 16 | { |
10932 | 16 | return initialised_ && binary_node<T>::valid(); |
10933 | 16 | } exprtk::details::swap_genstrings_node<double>::valid() const Line | Count | Source | 10931 | 8 | { | 10932 | 8 | return initialised_ && binary_node<T>::valid(); | 10933 | 8 | } |
exprtk::details::swap_genstrings_node<float>::valid() const Line | Count | Source | 10931 | 8 | { | 10932 | 8 | return initialised_ && binary_node<T>::valid(); | 10933 | 8 | } |
|
10934 | | |
10935 | | private: |
10936 | | |
10937 | | swap_genstrings_node(const swap_genstrings_node<T>&) exprtk_delete; |
10938 | | swap_genstrings_node<T>& operator=(const swap_genstrings_node<T>&) exprtk_delete; |
10939 | | |
10940 | | str_base_ptr str0_base_ptr_; |
10941 | | str_base_ptr str1_base_ptr_; |
10942 | | range_ptr str0_range_ptr_; |
10943 | | range_ptr str1_range_ptr_; |
10944 | | bool initialised_; |
10945 | | }; |
10946 | | |
10947 | | template <typename T> |
10948 | | class stringvar_size_node exprtk_final : public expression_node<T> |
10949 | | { |
10950 | | public: |
10951 | | |
10952 | | static const std::string null_value; |
10953 | | |
10954 | | explicit stringvar_size_node() |
10955 | | : value_(&null_value) |
10956 | | {} |
10957 | | |
10958 | | explicit stringvar_size_node(std::string& v) |
10959 | 0 | : value_(&v) |
10960 | 0 | {} Unexecuted instantiation: exprtk::details::stringvar_size_node<double>::stringvar_size_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) Unexecuted instantiation: exprtk::details::stringvar_size_node<float>::stringvar_size_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) |
10961 | | |
10962 | | inline T value() const exprtk_override |
10963 | 0 | { |
10964 | 0 | return T((*value_).size()); |
10965 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_size_node<double>::value() const Unexecuted instantiation: exprtk::details::stringvar_size_node<float>::value() const |
10966 | | |
10967 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10968 | 0 | { |
10969 | 0 | return expression_node<T>::e_stringvarsize; |
10970 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_size_node<double>::type() const Unexecuted instantiation: exprtk::details::stringvar_size_node<float>::type() const |
10971 | | |
10972 | | private: |
10973 | | |
10974 | | const std::string* value_; |
10975 | | }; |
10976 | | |
10977 | | template <typename T> |
10978 | | const std::string stringvar_size_node<T>::null_value = std::string(""); |
10979 | | |
10980 | | template <typename T> |
10981 | | class string_size_node exprtk_final : public expression_node<T> |
10982 | | { |
10983 | | public: |
10984 | | |
10985 | | typedef expression_node <T>* expression_ptr; |
10986 | | typedef string_base_node<T>* str_base_ptr; |
10987 | | typedef std::pair<expression_ptr,bool> branch_t; |
10988 | | |
10989 | | explicit string_size_node(expression_ptr branch) |
10990 | 0 | : str_base_ptr_(0) |
10991 | 0 | { |
10992 | 0 | construct_branch_pair(branch_, branch); |
10993 | |
|
10994 | 0 | if (is_generally_string_node(branch_.first)) |
10995 | 0 | { |
10996 | 0 | str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first); |
10997 | 0 | } |
10998 | |
|
10999 | 0 | assert(valid()); |
11000 | 0 | } Unexecuted instantiation: exprtk::details::string_size_node<double>::string_size_node(exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::string_size_node<float>::string_size_node(exprtk::details::expression_node<float>*) |
11001 | | |
11002 | | inline T value() const exprtk_override |
11003 | 0 | { |
11004 | 0 | branch_.first->value(); |
11005 | 0 | return T(str_base_ptr_->size()); |
11006 | 0 | } Unexecuted instantiation: exprtk::details::string_size_node<double>::value() const Unexecuted instantiation: exprtk::details::string_size_node<float>::value() const |
11007 | | |
11008 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11009 | 0 | { |
11010 | 0 | return expression_node<T>::e_stringsize; |
11011 | 0 | } Unexecuted instantiation: exprtk::details::string_size_node<double>::type() const Unexecuted instantiation: exprtk::details::string_size_node<float>::type() const |
11012 | | |
11013 | | inline bool valid() const exprtk_override |
11014 | 0 | { |
11015 | 0 | return str_base_ptr_; |
11016 | 0 | } Unexecuted instantiation: exprtk::details::string_size_node<double>::valid() const Unexecuted instantiation: exprtk::details::string_size_node<float>::valid() const |
11017 | | |
11018 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
11019 | 0 | { |
11020 | 0 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
11021 | 0 | } Unexecuted instantiation: exprtk::details::string_size_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::string_size_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
11022 | | |
11023 | | std::size_t node_depth() const exprtk_override |
11024 | 0 | { |
11025 | 0 | return expression_node<T>::ndb_t::compute_node_depth(branch_); |
11026 | 0 | } Unexecuted instantiation: exprtk::details::string_size_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::string_size_node<float>::node_depth() const |
11027 | | |
11028 | | private: |
11029 | | |
11030 | | branch_t branch_; |
11031 | | str_base_ptr str_base_ptr_; |
11032 | | }; |
11033 | | |
11034 | | struct asn_assignment |
11035 | | { |
11036 | | static inline void execute(std::string& s, char_cptr data, const std::size_t size) |
11037 | 0 | { s.assign(data,size); } |
11038 | | }; |
11039 | | |
11040 | | struct asn_addassignment |
11041 | | { |
11042 | | static inline void execute(std::string& s, char_cptr data, const std::size_t size) |
11043 | 0 | { s.append(data,size); } |
11044 | | }; |
11045 | | |
11046 | | template <typename T, typename AssignmentProcess = asn_assignment> |
11047 | | class assignment_string_node exprtk_final |
11048 | | : public binary_node <T> |
11049 | | , public string_base_node<T> |
11050 | | , public range_interface <T> |
11051 | | { |
11052 | | public: |
11053 | | |
11054 | | typedef typename range_interface<T>::range_t range_t; |
11055 | | typedef range_t* range_ptr; |
11056 | | typedef range_interface <T> irange_t; |
11057 | | typedef irange_t* irange_ptr; |
11058 | | typedef expression_node <T>* expression_ptr; |
11059 | | typedef stringvar_node <T>* strvar_node_ptr; |
11060 | | typedef string_base_node<T>* str_base_ptr; |
11061 | | |
11062 | | using binary_node<T>::branch; |
11063 | | |
11064 | | assignment_string_node(const operator_type& opr, |
11065 | | expression_ptr branch0, |
11066 | | expression_ptr branch1) |
11067 | 0 | : binary_node<T>(opr, branch0, branch1) |
11068 | 0 | , initialised_(false) |
11069 | 0 | , str0_base_ptr_ (0) |
11070 | 0 | , str1_base_ptr_ (0) |
11071 | 0 | , str0_node_ptr_ (0) |
11072 | 0 | , str1_range_ptr_(0) |
11073 | 0 | { |
11074 | 0 | if (is_string_node(branch(0))) |
11075 | 0 | { |
11076 | 0 | str0_node_ptr_ = static_cast<strvar_node_ptr>(branch(0)); |
11077 | 0 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); |
11078 | 0 | } |
11079 | |
|
11080 | 0 | if (is_generally_string_node(branch(1))) |
11081 | 0 | { |
11082 | 0 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); |
11083 | |
|
11084 | 0 | if (0 == str1_base_ptr_) |
11085 | 0 | return; |
11086 | | |
11087 | 0 | irange_ptr range = dynamic_cast<irange_ptr>(branch(1)); |
11088 | |
|
11089 | 0 | if (0 == range) |
11090 | 0 | return; |
11091 | | |
11092 | 0 | str1_range_ptr_ = &(range->range_ref()); |
11093 | 0 | } |
11094 | | |
11095 | 0 | initialised_ = str0_base_ptr_ && |
11096 | 0 | str1_base_ptr_ && |
11097 | 0 | str0_node_ptr_ && |
11098 | 0 | str1_range_ptr_ ; |
11099 | |
|
11100 | 0 | assert(valid()); |
11101 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::assignment_string_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::assignment_string_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::assignment_string_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::assignment_string_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
11102 | | |
11103 | | inline T value() const exprtk_override |
11104 | 0 | { |
11105 | 0 | branch(1)->value(); |
11106 | |
|
11107 | 0 | std::size_t r0 = 0; |
11108 | 0 | std::size_t r1 = 0; |
11109 | |
|
11110 | 0 | const range_t& range = (*str1_range_ptr_); |
11111 | |
|
11112 | 0 | if (range(r0, r1, str1_base_ptr_->size())) |
11113 | 0 | { |
11114 | 0 | AssignmentProcess::execute( |
11115 | 0 | str0_node_ptr_->ref(), |
11116 | 0 | str1_base_ptr_->base() + r0, (r1 - r0)); |
11117 | |
|
11118 | 0 | branch(0)->value(); |
11119 | 0 | } |
11120 | |
|
11121 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
11122 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::value() const Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::value() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::value() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::value() const |
11123 | | |
11124 | | std::string str() const exprtk_override |
11125 | 0 | { |
11126 | 0 | return str0_node_ptr_->str(); |
11127 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::str() const Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::str() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::str() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::str() const |
11128 | | |
11129 | | char_cptr base() const exprtk_override |
11130 | 0 | { |
11131 | 0 | return str0_node_ptr_->base(); |
11132 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::base() const Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::base() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::base() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::base() const |
11133 | | |
11134 | | std::size_t size() const exprtk_override |
11135 | 0 | { |
11136 | 0 | return str0_node_ptr_->size(); |
11137 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::size() const Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::size() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::size() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::size() const |
11138 | | |
11139 | | range_t& range_ref() exprtk_override |
11140 | 0 | { |
11141 | 0 | return str0_node_ptr_->range_ref(); |
11142 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::range_ref() Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::range_ref() Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::range_ref() Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::range_ref() |
11143 | | |
11144 | | const range_t& range_ref() const exprtk_override |
11145 | 0 | { |
11146 | 0 | return str0_node_ptr_->range_ref(); |
11147 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::range_ref() const Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::range_ref() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::range_ref() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::range_ref() const |
11148 | | |
11149 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11150 | 0 | { |
11151 | 0 | return expression_node<T>::e_strass; |
11152 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::type() const Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::type() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::type() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::type() const |
11153 | | |
11154 | | inline bool valid() const exprtk_override |
11155 | 0 | { |
11156 | 0 | return initialised_ && binary_node<T>::valid(); |
11157 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::valid() const Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::valid() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::valid() const Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::valid() const |
11158 | | |
11159 | | private: |
11160 | | |
11161 | | bool initialised_; |
11162 | | str_base_ptr str0_base_ptr_; |
11163 | | str_base_ptr str1_base_ptr_; |
11164 | | strvar_node_ptr str0_node_ptr_; |
11165 | | range_ptr str1_range_ptr_; |
11166 | | }; |
11167 | | |
11168 | | template <typename T, typename AssignmentProcess = asn_assignment> |
11169 | | class assignment_string_range_node exprtk_final |
11170 | | : public binary_node <T> |
11171 | | , public string_base_node<T> |
11172 | | , public range_interface <T> |
11173 | | { |
11174 | | public: |
11175 | | |
11176 | | typedef typename range_interface<T>::range_t range_t; |
11177 | | typedef range_t* range_ptr; |
11178 | | typedef range_interface <T> irange_t; |
11179 | | typedef irange_t* irange_ptr; |
11180 | | typedef expression_node <T>* expression_ptr; |
11181 | | typedef stringvar_node <T>* strvar_node_ptr; |
11182 | | typedef string_range_node<T>* str_rng_node_ptr; |
11183 | | typedef string_base_node <T>* str_base_ptr; |
11184 | | |
11185 | | using binary_node<T>::branch; |
11186 | | |
11187 | | assignment_string_range_node(const operator_type& opr, |
11188 | | expression_ptr branch0, |
11189 | | expression_ptr branch1) |
11190 | 0 | : binary_node<T>(opr, branch0, branch1) |
11191 | 0 | , initialised_(false) |
11192 | 0 | , str0_base_ptr_ (0) |
11193 | 0 | , str1_base_ptr_ (0) |
11194 | 0 | , str0_rng_node_ptr_(0) |
11195 | 0 | , str0_range_ptr_ (0) |
11196 | 0 | , str1_range_ptr_ (0) |
11197 | 0 | { |
11198 | 0 | if (is_string_range_node(branch(0))) |
11199 | 0 | { |
11200 | 0 | str0_rng_node_ptr_ = static_cast<str_rng_node_ptr>(branch(0)); |
11201 | 0 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); |
11202 | 0 | irange_ptr range = dynamic_cast<irange_ptr>(branch(0)); |
11203 | |
|
11204 | 0 | if (0 == range) |
11205 | 0 | return; |
11206 | | |
11207 | 0 | str0_range_ptr_ = &(range->range_ref()); |
11208 | 0 | } |
11209 | | |
11210 | 0 | if (is_generally_string_node(branch(1))) |
11211 | 0 | { |
11212 | 0 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); |
11213 | |
|
11214 | 0 | if (0 == str1_base_ptr_) |
11215 | 0 | return; |
11216 | | |
11217 | 0 | irange_ptr range = dynamic_cast<irange_ptr>(branch(1)); |
11218 | |
|
11219 | 0 | if (0 == range) |
11220 | 0 | return; |
11221 | | |
11222 | 0 | str1_range_ptr_ = &(range->range_ref()); |
11223 | 0 | } |
11224 | | |
11225 | 0 | initialised_ = str0_base_ptr_ && |
11226 | 0 | str1_base_ptr_ && |
11227 | 0 | str0_rng_node_ptr_ && |
11228 | 0 | str0_range_ptr_ && |
11229 | 0 | str1_range_ptr_ ; |
11230 | |
|
11231 | 0 | assert(valid()); |
11232 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::assignment_string_range_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::assignment_string_range_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
11233 | | |
11234 | | inline T value() const exprtk_override |
11235 | 0 | { |
11236 | 0 | branch(0)->value(); |
11237 | 0 | branch(1)->value(); |
11238 | |
|
11239 | 0 | std::size_t s0_r0 = 0; |
11240 | 0 | std::size_t s0_r1 = 0; |
11241 | |
|
11242 | 0 | std::size_t s1_r0 = 0; |
11243 | 0 | std::size_t s1_r1 = 0; |
11244 | |
|
11245 | 0 | const range_t& range0 = (*str0_range_ptr_); |
11246 | 0 | const range_t& range1 = (*str1_range_ptr_); |
11247 | |
|
11248 | 0 | if ( |
11249 | 0 | range0(s0_r0, s0_r1, str0_base_ptr_->size()) && |
11250 | 0 | range1(s1_r0, s1_r1, str1_base_ptr_->size()) |
11251 | 0 | ) |
11252 | 0 | { |
11253 | 0 | const std::size_t size = std::min((s0_r1 - s0_r0), (s1_r1 - s1_r0)); |
11254 | |
|
11255 | 0 | std::copy( |
11256 | 0 | str1_base_ptr_->base() + s1_r0, |
11257 | 0 | str1_base_ptr_->base() + s1_r0 + size, |
11258 | 0 | const_cast<char_ptr>(base() + s0_r0)); |
11259 | 0 | } |
11260 | |
|
11261 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
11262 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::value() const Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::value() const |
11263 | | |
11264 | | std::string str() const exprtk_override |
11265 | 0 | { |
11266 | 0 | return str0_base_ptr_->str(); |
11267 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::str() const Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::str() const |
11268 | | |
11269 | | char_cptr base() const exprtk_override |
11270 | 0 | { |
11271 | 0 | return str0_base_ptr_->base(); |
11272 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::base() const Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::base() const |
11273 | | |
11274 | | std::size_t size() const exprtk_override |
11275 | 0 | { |
11276 | 0 | return str0_base_ptr_->size(); |
11277 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::size() const Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::size() const |
11278 | | |
11279 | | range_t& range_ref() exprtk_override |
11280 | 0 | { |
11281 | 0 | return str0_rng_node_ptr_->range_ref(); |
11282 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::range_ref() Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::range_ref() |
11283 | | |
11284 | | const range_t& range_ref() const exprtk_override |
11285 | 0 | { |
11286 | 0 | return str0_rng_node_ptr_->range_ref(); |
11287 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::range_ref() const Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::range_ref() const |
11288 | | |
11289 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11290 | 0 | { |
11291 | 0 | return expression_node<T>::e_strass; |
11292 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::type() const Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::type() const |
11293 | | |
11294 | | inline bool valid() const exprtk_override |
11295 | 0 | { |
11296 | 0 | return initialised_ && binary_node<T>::valid(); |
11297 | 0 | } Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::valid() const Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::valid() const |
11298 | | |
11299 | | private: |
11300 | | |
11301 | | bool initialised_; |
11302 | | str_base_ptr str0_base_ptr_; |
11303 | | str_base_ptr str1_base_ptr_; |
11304 | | str_rng_node_ptr str0_rng_node_ptr_; |
11305 | | range_ptr str0_range_ptr_; |
11306 | | range_ptr str1_range_ptr_; |
11307 | | }; |
11308 | | |
11309 | | template <typename T> |
11310 | | class conditional_string_node exprtk_final |
11311 | | : public trinary_node <T> |
11312 | | , public string_base_node<T> |
11313 | | , public range_interface <T> |
11314 | | { |
11315 | | public: |
11316 | | |
11317 | | typedef typename range_interface<T>::range_t range_t; |
11318 | | typedef range_t* range_ptr; |
11319 | | typedef range_interface <T> irange_t; |
11320 | | typedef irange_t* irange_ptr; |
11321 | | typedef expression_node <T>* expression_ptr; |
11322 | | typedef string_base_node<T>* str_base_ptr; |
11323 | | |
11324 | | conditional_string_node(expression_ptr condition, |
11325 | | expression_ptr consequent, |
11326 | | expression_ptr alternative) |
11327 | 0 | : trinary_node<T>(details::e_default, consequent, alternative, condition) |
11328 | 0 | , initialised_(false) |
11329 | 0 | , str0_base_ptr_ (0) |
11330 | 0 | , str1_base_ptr_ (0) |
11331 | 0 | , str0_range_ptr_(0) |
11332 | 0 | , str1_range_ptr_(0) |
11333 | 0 | , condition_ (condition ) |
11334 | 0 | , consequent_ (consequent ) |
11335 | 0 | , alternative_(alternative) |
11336 | 0 | { |
11337 | 0 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
11338 | 0 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); |
11339 | |
|
11340 | 0 | range_.cache.first = range_.n0_c.second; |
11341 | 0 | range_.cache.second = range_.n1_c.second; |
11342 | |
|
11343 | 0 | if (is_generally_string_node(trinary_node<T>::branch_[0].first)) |
11344 | 0 | { |
11345 | 0 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(trinary_node<T>::branch_[0].first); |
11346 | |
|
11347 | 0 | if (0 == str0_base_ptr_) |
11348 | 0 | return; |
11349 | | |
11350 | 0 | str0_range_ptr_ = dynamic_cast<irange_ptr>(trinary_node<T>::branch_[0].first); |
11351 | |
|
11352 | 0 | if (0 == str0_range_ptr_) |
11353 | 0 | return; |
11354 | 0 | } |
11355 | | |
11356 | 0 | if (is_generally_string_node(trinary_node<T>::branch_[1].first)) |
11357 | 0 | { |
11358 | 0 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(trinary_node<T>::branch_[1].first); |
11359 | |
|
11360 | 0 | if (0 == str1_base_ptr_) |
11361 | 0 | return; |
11362 | | |
11363 | 0 | str1_range_ptr_ = dynamic_cast<irange_ptr>(trinary_node<T>::branch_[1].first); |
11364 | |
|
11365 | 0 | if (0 == str1_range_ptr_) |
11366 | 0 | return; |
11367 | 0 | } |
11368 | | |
11369 | 0 | initialised_ = str0_base_ptr_ && |
11370 | 0 | str1_base_ptr_ && |
11371 | 0 | str0_range_ptr_ && |
11372 | 0 | str1_range_ptr_ ; |
11373 | |
|
11374 | 0 | assert(valid()); |
11375 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::conditional_string_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::conditional_string_node<float>::conditional_string_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
11376 | | |
11377 | | inline T value() const exprtk_override |
11378 | 0 | { |
11379 | 0 | std::size_t r0 = 0; |
11380 | 0 | std::size_t r1 = 0; |
11381 | |
|
11382 | 0 | if (is_true(condition_)) |
11383 | 0 | { |
11384 | 0 | consequent_->value(); |
11385 | |
|
11386 | 0 | const range_t& range = str0_range_ptr_->range_ref(); |
11387 | |
|
11388 | 0 | if (range(r0, r1, str0_base_ptr_->size())) |
11389 | 0 | { |
11390 | 0 | const std::size_t size = (r1 - r0); |
11391 | |
|
11392 | 0 | value_.assign(str0_base_ptr_->base() + r0, size); |
11393 | |
|
11394 | 0 | range_.n1_c.second = value_.size(); |
11395 | 0 | range_.cache.second = range_.n1_c.second; |
11396 | |
|
11397 | 0 | return T(1); |
11398 | 0 | } |
11399 | 0 | } |
11400 | 0 | else |
11401 | 0 | { |
11402 | 0 | alternative_->value(); |
11403 | |
|
11404 | 0 | const range_t& range = str1_range_ptr_->range_ref(); |
11405 | |
|
11406 | 0 | if (range(r0, r1, str1_base_ptr_->size())) |
11407 | 0 | { |
11408 | 0 | const std::size_t size = (r1 - r0); |
11409 | |
|
11410 | 0 | value_.assign(str1_base_ptr_->base() + r0, size); |
11411 | |
|
11412 | 0 | range_.n1_c.second = value_.size(); |
11413 | 0 | range_.cache.second = range_.n1_c.second; |
11414 | |
|
11415 | 0 | return T(0); |
11416 | 0 | } |
11417 | 0 | } |
11418 | | |
11419 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
11420 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::value() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::value() const |
11421 | | |
11422 | | std::string str() const exprtk_override |
11423 | 0 | { |
11424 | 0 | return value_; |
11425 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::str() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::str() const |
11426 | | |
11427 | | char_cptr base() const exprtk_override |
11428 | 0 | { |
11429 | 0 | return &value_[0]; |
11430 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::base() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::base() const |
11431 | | |
11432 | | std::size_t size() const exprtk_override |
11433 | 0 | { |
11434 | 0 | return value_.size(); |
11435 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::size() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::size() const |
11436 | | |
11437 | | range_t& range_ref() exprtk_override |
11438 | 0 | { |
11439 | 0 | return range_; |
11440 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::range_ref() Unexecuted instantiation: exprtk::details::conditional_string_node<float>::range_ref() |
11441 | | |
11442 | | const range_t& range_ref() const exprtk_override |
11443 | 0 | { |
11444 | 0 | return range_; |
11445 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::range_ref() const |
11446 | | |
11447 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11448 | 0 | { |
11449 | 0 | return expression_node<T>::e_strcondition; |
11450 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::type() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::type() const |
11451 | | |
11452 | | inline bool valid() const exprtk_override |
11453 | 0 | { |
11454 | 0 | return |
11455 | 0 | initialised_ && |
11456 | 0 | condition_ && condition_ ->valid() && |
11457 | 0 | consequent_ && consequent_ ->valid() && |
11458 | 0 | alternative_&& alternative_->valid() ; |
11459 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::valid() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::valid() const |
11460 | | |
11461 | | private: |
11462 | | |
11463 | | bool initialised_; |
11464 | | str_base_ptr str0_base_ptr_; |
11465 | | str_base_ptr str1_base_ptr_; |
11466 | | irange_ptr str0_range_ptr_; |
11467 | | irange_ptr str1_range_ptr_; |
11468 | | mutable range_t range_; |
11469 | | mutable std::string value_; |
11470 | | |
11471 | | expression_ptr condition_; |
11472 | | expression_ptr consequent_; |
11473 | | expression_ptr alternative_; |
11474 | | }; |
11475 | | |
11476 | | template <typename T> |
11477 | | class cons_conditional_str_node exprtk_final |
11478 | | : public binary_node <T> |
11479 | | , public string_base_node<T> |
11480 | | , public range_interface <T> |
11481 | | { |
11482 | | public: |
11483 | | |
11484 | | typedef typename range_interface<T>::range_t range_t; |
11485 | | typedef range_t* range_ptr; |
11486 | | typedef range_interface <T> irange_t; |
11487 | | typedef irange_t* irange_ptr; |
11488 | | typedef expression_node <T>* expression_ptr; |
11489 | | typedef string_base_node<T>* str_base_ptr; |
11490 | | |
11491 | | using binary_node<T>::branch; |
11492 | | |
11493 | | cons_conditional_str_node(expression_ptr condition, |
11494 | | expression_ptr consequent) |
11495 | | : binary_node<T>(details::e_default, consequent, condition) |
11496 | | , initialised_(false) |
11497 | | , str0_base_ptr_ (0) |
11498 | | , str0_range_ptr_(0) |
11499 | | , condition_ (condition ) |
11500 | | , consequent_(consequent) |
11501 | | { |
11502 | | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
11503 | | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); |
11504 | | |
11505 | | range_.cache.first = range_.n0_c.second; |
11506 | | range_.cache.second = range_.n1_c.second; |
11507 | | |
11508 | | if (is_generally_string_node(branch(0))) |
11509 | | { |
11510 | | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); |
11511 | | |
11512 | | if (0 == str0_base_ptr_) |
11513 | | return; |
11514 | | |
11515 | | str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0)); |
11516 | | |
11517 | | if (0 == str0_range_ptr_) |
11518 | | return; |
11519 | | } |
11520 | | |
11521 | | initialised_ = str0_base_ptr_ && str0_range_ptr_ ; |
11522 | | assert(valid()); |
11523 | | } |
11524 | | |
11525 | | inline T value() const exprtk_override |
11526 | | { |
11527 | | if (is_true(condition_)) |
11528 | | { |
11529 | | consequent_->value(); |
11530 | | |
11531 | | const range_t& range = str0_range_ptr_->range_ref(); |
11532 | | |
11533 | | std::size_t r0 = 0; |
11534 | | std::size_t r1 = 0; |
11535 | | |
11536 | | if (range(r0, r1, str0_base_ptr_->size())) |
11537 | | { |
11538 | | const std::size_t size = (r1 - r0); |
11539 | | |
11540 | | value_.assign(str0_base_ptr_->base() + r0, size); |
11541 | | |
11542 | | range_.n1_c.second = value_.size(); |
11543 | | range_.cache.second = range_.n1_c.second; |
11544 | | |
11545 | | return T(1); |
11546 | | } |
11547 | | } |
11548 | | |
11549 | | return std::numeric_limits<T>::quiet_NaN(); |
11550 | | } |
11551 | | |
11552 | | std::string str() const |
11553 | | { |
11554 | | return value_; |
11555 | | } |
11556 | | |
11557 | | char_cptr base() const |
11558 | | { |
11559 | | return &value_[0]; |
11560 | | } |
11561 | | |
11562 | | std::size_t size() const |
11563 | | { |
11564 | | return value_.size(); |
11565 | | } |
11566 | | |
11567 | | range_t& range_ref() |
11568 | | { |
11569 | | return range_; |
11570 | | } |
11571 | | |
11572 | | const range_t& range_ref() const |
11573 | | { |
11574 | | return range_; |
11575 | | } |
11576 | | |
11577 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11578 | | { |
11579 | | return expression_node<T>::e_strccondition; |
11580 | | } |
11581 | | |
11582 | | inline bool valid() const exprtk_override |
11583 | | { |
11584 | | return |
11585 | | initialised_ && |
11586 | | condition_ && condition_ ->valid() && |
11587 | | consequent_ && consequent_ ->valid() ; |
11588 | | } |
11589 | | |
11590 | | private: |
11591 | | |
11592 | | bool initialised_; |
11593 | | str_base_ptr str0_base_ptr_; |
11594 | | irange_ptr str0_range_ptr_; |
11595 | | mutable range_t range_; |
11596 | | mutable std::string value_; |
11597 | | |
11598 | | expression_ptr condition_; |
11599 | | expression_ptr consequent_; |
11600 | | }; |
11601 | | |
11602 | | template <typename T, typename VarArgFunction> |
11603 | | class str_vararg_node exprtk_final |
11604 | | : public expression_node <T> |
11605 | | , public string_base_node<T> |
11606 | | , public range_interface <T> |
11607 | | { |
11608 | | public: |
11609 | | |
11610 | | typedef typename range_interface<T>::range_t range_t; |
11611 | | typedef range_t* range_ptr; |
11612 | | typedef range_interface <T> irange_t; |
11613 | | typedef irange_t* irange_ptr; |
11614 | | typedef expression_node <T>* expression_ptr; |
11615 | | typedef string_base_node<T>* str_base_ptr; |
11616 | | typedef std::pair<expression_ptr,bool> branch_t; |
11617 | | |
11618 | | template <typename Allocator, |
11619 | | template <typename, typename> class Sequence> |
11620 | | explicit str_vararg_node(const Sequence<expression_ptr,Allocator>& arg_list) |
11621 | 0 | : initialised_(false) |
11622 | 0 | , str_base_ptr_ (0) |
11623 | 0 | , str_range_ptr_(0) |
11624 | 0 | { |
11625 | 0 | construct_branch_pair(final_node_, const_cast<expression_ptr>(arg_list.back())); |
11626 | |
|
11627 | 0 | if (0 == final_node_.first) |
11628 | 0 | return; |
11629 | 0 | else if (!is_generally_string_node(final_node_.first)) |
11630 | 0 | return; |
11631 | | |
11632 | 0 | str_base_ptr_ = dynamic_cast<str_base_ptr>(final_node_.first); |
11633 | |
|
11634 | 0 | if (0 == str_base_ptr_) |
11635 | 0 | return; |
11636 | | |
11637 | 0 | str_range_ptr_ = dynamic_cast<irange_ptr>(final_node_.first); |
11638 | |
|
11639 | 0 | if (0 == str_range_ptr_) |
11640 | 0 | return; |
11641 | | |
11642 | 0 | if (arg_list.size() > 1) |
11643 | 0 | { |
11644 | 0 | const std::size_t arg_list_size = arg_list.size() - 1; |
11645 | |
|
11646 | 0 | arg_list_.resize(arg_list_size); |
11647 | |
|
11648 | 0 | for (std::size_t i = 0; i < arg_list_size; ++i) |
11649 | 0 | { |
11650 | 0 | if (arg_list[i] && arg_list[i]->valid()) |
11651 | 0 | { |
11652 | 0 | construct_branch_pair(arg_list_[i], arg_list[i]); |
11653 | 0 | } |
11654 | 0 | else |
11655 | 0 | { |
11656 | 0 | arg_list_.clear(); |
11657 | 0 | return; |
11658 | 0 | } |
11659 | 0 | } |
11660 | | |
11661 | 0 | initialised_ = true; |
11662 | 0 | } |
11663 | | |
11664 | 0 | initialised_ &= str_base_ptr_ && str_range_ptr_; |
11665 | 0 | assert(valid()); |
11666 | 0 | } Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::str_vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::str_vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
11667 | | |
11668 | | inline T value() const exprtk_override |
11669 | 0 | { |
11670 | 0 | if (!arg_list_.empty()) |
11671 | 0 | { |
11672 | 0 | VarArgFunction::process(arg_list_); |
11673 | 0 | } |
11674 | |
|
11675 | 0 | final_node_.first->value(); |
11676 | |
|
11677 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
11678 | 0 | } Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::value() const Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::value() const |
11679 | | |
11680 | | std::string str() const exprtk_override |
11681 | 0 | { |
11682 | 0 | return str_base_ptr_->str(); |
11683 | 0 | } Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::str() const Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::str() const |
11684 | | |
11685 | | char_cptr base() const exprtk_override |
11686 | 0 | { |
11687 | 0 | return str_base_ptr_->base(); |
11688 | 0 | } Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::base() const Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::base() const |
11689 | | |
11690 | | std::size_t size() const exprtk_override |
11691 | 0 | { |
11692 | 0 | return str_base_ptr_->size(); |
11693 | 0 | } Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::size() const Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::size() const |
11694 | | |
11695 | | range_t& range_ref() exprtk_override |
11696 | 0 | { |
11697 | 0 | return str_range_ptr_->range_ref(); |
11698 | 0 | } Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::range_ref() Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::range_ref() |
11699 | | |
11700 | | const range_t& range_ref() const exprtk_override |
11701 | 0 | { |
11702 | 0 | return str_range_ptr_->range_ref(); |
11703 | 0 | } Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::range_ref() const Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::range_ref() const |
11704 | | |
11705 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11706 | 0 | { |
11707 | 0 | return expression_node<T>::e_stringvararg; |
11708 | 0 | } Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::type() const Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::type() const |
11709 | | |
11710 | | inline bool valid() const exprtk_override |
11711 | 0 | { |
11712 | 0 | return |
11713 | 0 | initialised_ && |
11714 | 0 | final_node_.first && final_node_.first->valid(); |
11715 | 0 | } Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::valid() const Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::valid() const |
11716 | | |
11717 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
11718 | 0 | { |
11719 | 0 | expression_node<T>::ndb_t::collect(final_node_ , node_delete_list); |
11720 | 0 | expression_node<T>::ndb_t::collect(arg_list_ , node_delete_list); |
11721 | 0 | } Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
11722 | | |
11723 | | std::size_t node_depth() const exprtk_override |
11724 | 0 | { |
11725 | 0 | return std::max( |
11726 | 0 | expression_node<T>::ndb_t::compute_node_depth(final_node_), |
11727 | 0 | expression_node<T>::ndb_t::compute_node_depth(arg_list_ )); |
11728 | 0 | } Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::node_depth() const |
11729 | | |
11730 | | private: |
11731 | | |
11732 | | bool initialised_; |
11733 | | branch_t final_node_; |
11734 | | str_base_ptr str_base_ptr_; |
11735 | | irange_ptr str_range_ptr_; |
11736 | | std::vector<branch_t> arg_list_; |
11737 | | }; |
11738 | | #endif |
11739 | | |
11740 | | template <typename T> |
11741 | | class assert_node exprtk_final : public expression_node<T> |
11742 | | { |
11743 | | public: |
11744 | | |
11745 | | typedef expression_node<T>* expression_ptr; |
11746 | | typedef std::pair<expression_ptr,bool> branch_t; |
11747 | | typedef string_base_node<T>* str_base_ptr; |
11748 | | typedef assert_check::assert_context assert_context_t; |
11749 | | |
11750 | | assert_node(expression_ptr assert_condition_node, |
11751 | | expression_ptr assert_message_node, |
11752 | | assert_check_ptr assert_check, |
11753 | | assert_context_t context) |
11754 | 0 | : assert_message_str_base_(0) |
11755 | 0 | , assert_check_(assert_check) |
11756 | 0 | , context_(context) |
11757 | 0 | { |
11758 | 0 | construct_branch_pair(assert_condition_node_, assert_condition_node); |
11759 | 0 | construct_branch_pair(assert_message_node_ , assert_message_node ); |
11760 | |
|
11761 | 0 | #ifndef exprtk_disable_string_capabilities |
11762 | 0 | if ( |
11763 | 0 | assert_message_node_.first && |
11764 | 0 | details::is_generally_string_node(assert_message_node_.first) |
11765 | 0 | ) |
11766 | 0 | { |
11767 | 0 | assert_message_str_base_ = dynamic_cast<str_base_ptr>(assert_message_node_.first); |
11768 | 0 | } |
11769 | 0 | #endif |
11770 | |
|
11771 | 0 | assert(valid()); |
11772 | 0 | } Unexecuted instantiation: exprtk::details::assert_node<double>::assert_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::assert_check*, exprtk::assert_check::assert_context) Unexecuted instantiation: exprtk::details::assert_node<float>::assert_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::assert_check*, exprtk::assert_check::assert_context) |
11773 | | |
11774 | | inline T value() const exprtk_override |
11775 | 0 | { |
11776 | 0 | if (details::is_true(assert_condition_node_.first->value())) |
11777 | 0 | { |
11778 | 0 | return T(1); |
11779 | 0 | } |
11780 | | |
11781 | 0 | #ifndef exprtk_disable_string_capabilities |
11782 | 0 | if (assert_message_node_.first) |
11783 | 0 | { |
11784 | 0 | assert_message_node_.first->value(); |
11785 | 0 | assert(assert_message_str_base_); |
11786 | 0 | context_.message = assert_message_str_base_->str(); |
11787 | 0 | } |
11788 | 0 | #endif |
11789 | | |
11790 | 0 | assert_check_->handle_assert(context_); |
11791 | 0 | return T(0); |
11792 | 0 | } Unexecuted instantiation: exprtk::details::assert_node<double>::value() const Unexecuted instantiation: exprtk::details::assert_node<float>::value() const |
11793 | | |
11794 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11795 | 0 | { |
11796 | 0 | return expression_node<T>::e_assert; |
11797 | 0 | } Unexecuted instantiation: exprtk::details::assert_node<double>::type() const Unexecuted instantiation: exprtk::details::assert_node<float>::type() const |
11798 | | |
11799 | | inline bool valid() const exprtk_override |
11800 | 0 | { |
11801 | 0 | return ( |
11802 | 0 | assert_check_ && |
11803 | 0 | assert_condition_node_.first && |
11804 | 0 | assert_condition_node_.first->valid() |
11805 | 0 | ) && |
11806 | 0 | ( |
11807 | 0 | (0 == assert_message_node_.first) || |
11808 | 0 | ( |
11809 | 0 | assert_message_node_.first && |
11810 | 0 | assert_message_str_base_ && |
11811 | 0 | assert_message_node_.first->valid() && |
11812 | 0 | details::is_generally_string_node(assert_message_node_.first) |
11813 | 0 | ) |
11814 | 0 | ); |
11815 | 0 | } Unexecuted instantiation: exprtk::details::assert_node<double>::valid() const Unexecuted instantiation: exprtk::details::assert_node<float>::valid() const |
11816 | | |
11817 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
11818 | 0 | { |
11819 | 0 | expression_node<T>::ndb_t::collect(assert_condition_node_, node_delete_list); |
11820 | 0 | expression_node<T>::ndb_t::collect(assert_message_node_ , node_delete_list); |
11821 | 0 | } Unexecuted instantiation: exprtk::details::assert_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::assert_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
11822 | | |
11823 | | std::size_t node_depth() const exprtk_override |
11824 | 0 | { |
11825 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
11826 | 0 | (assert_condition_node_, assert_message_node_); |
11827 | 0 | } Unexecuted instantiation: exprtk::details::assert_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::assert_node<float>::node_depth() const |
11828 | | |
11829 | | private: |
11830 | | |
11831 | | branch_t assert_condition_node_; |
11832 | | branch_t assert_message_node_; |
11833 | | str_base_ptr assert_message_str_base_; |
11834 | | assert_check_ptr assert_check_; |
11835 | | mutable assert_context_t context_; |
11836 | | }; |
11837 | | |
11838 | | template <typename T, std::size_t N> |
11839 | | inline T axn(const T a, const T x) |
11840 | 0 | { |
11841 | | // a*x^n |
11842 | 0 | return a * exprtk::details::numeric::fast_exp<T,N>::result(x); |
11843 | 0 | } Unexecuted instantiation: double exprtk::details::axn<double, 2ul>(double, double) Unexecuted instantiation: double exprtk::details::axn<double, 3ul>(double, double) Unexecuted instantiation: double exprtk::details::axn<double, 4ul>(double, double) Unexecuted instantiation: double exprtk::details::axn<double, 5ul>(double, double) Unexecuted instantiation: double exprtk::details::axn<double, 6ul>(double, double) Unexecuted instantiation: double exprtk::details::axn<double, 7ul>(double, double) Unexecuted instantiation: double exprtk::details::axn<double, 8ul>(double, double) Unexecuted instantiation: double exprtk::details::axn<double, 9ul>(double, double) Unexecuted instantiation: float exprtk::details::axn<float, 2ul>(float, float) Unexecuted instantiation: float exprtk::details::axn<float, 3ul>(float, float) Unexecuted instantiation: float exprtk::details::axn<float, 4ul>(float, float) Unexecuted instantiation: float exprtk::details::axn<float, 5ul>(float, float) Unexecuted instantiation: float exprtk::details::axn<float, 6ul>(float, float) Unexecuted instantiation: float exprtk::details::axn<float, 7ul>(float, float) Unexecuted instantiation: float exprtk::details::axn<float, 8ul>(float, float) Unexecuted instantiation: float exprtk::details::axn<float, 9ul>(float, float) |
11844 | | |
11845 | | template <typename T, std::size_t N> |
11846 | | inline T axnb(const T a, const T x, const T b) |
11847 | 0 | { |
11848 | | // a*x^n+b |
11849 | 0 | return a * exprtk::details::numeric::fast_exp<T,N>::result(x) + b; |
11850 | 0 | } Unexecuted instantiation: double exprtk::details::axnb<double, 2ul>(double, double, double) Unexecuted instantiation: double exprtk::details::axnb<double, 3ul>(double, double, double) Unexecuted instantiation: double exprtk::details::axnb<double, 4ul>(double, double, double) Unexecuted instantiation: double exprtk::details::axnb<double, 5ul>(double, double, double) Unexecuted instantiation: double exprtk::details::axnb<double, 6ul>(double, double, double) Unexecuted instantiation: double exprtk::details::axnb<double, 7ul>(double, double, double) Unexecuted instantiation: double exprtk::details::axnb<double, 8ul>(double, double, double) Unexecuted instantiation: double exprtk::details::axnb<double, 9ul>(double, double, double) Unexecuted instantiation: float exprtk::details::axnb<float, 2ul>(float, float, float) Unexecuted instantiation: float exprtk::details::axnb<float, 3ul>(float, float, float) Unexecuted instantiation: float exprtk::details::axnb<float, 4ul>(float, float, float) Unexecuted instantiation: float exprtk::details::axnb<float, 5ul>(float, float, float) Unexecuted instantiation: float exprtk::details::axnb<float, 6ul>(float, float, float) Unexecuted instantiation: float exprtk::details::axnb<float, 7ul>(float, float, float) Unexecuted instantiation: float exprtk::details::axnb<float, 8ul>(float, float, float) Unexecuted instantiation: float exprtk::details::axnb<float, 9ul>(float, float, float) |
11851 | | |
11852 | | template <typename T> |
11853 | | struct sf_base |
11854 | | { |
11855 | | typedef typename details::functor_t<T>::Type Type; |
11856 | | typedef typename details::functor_t<T> functor_t; |
11857 | | typedef typename functor_t::qfunc_t quaternary_functor_t; |
11858 | | typedef typename functor_t::tfunc_t trinary_functor_t; |
11859 | | typedef typename functor_t::bfunc_t binary_functor_t; |
11860 | | typedef typename functor_t::ufunc_t unary_functor_t; |
11861 | | }; |
11862 | | |
11863 | | #define define_sfop3(NN, OP0, OP1) \ |
11864 | | template <typename T> \ |
11865 | | struct sf##NN##_op : public sf_base<T> \ |
11866 | | { \ |
11867 | | typedef typename sf_base<T>::Type const Type; \ |
11868 | | static inline T process(Type x, Type y, Type z) \ |
11869 | 620 | { \ |
11870 | 620 | return (OP0); \ |
11871 | 620 | } \ exprtk::details::sf00_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 4 | { \ | 11870 | 4 | return (OP0); \ | 11871 | 4 | } \ |
exprtk::details::sf01_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 8 | { \ | 11870 | 8 | return (OP0); \ | 11871 | 8 | } \ |
exprtk::details::sf02_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 13 | { \ | 11870 | 13 | return (OP0); \ | 11871 | 13 | } \ |
exprtk::details::sf03_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 13 | { \ | 11870 | 13 | return (OP0); \ | 11871 | 13 | } \ |
exprtk::details::sf04_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 7 | { \ | 11870 | 7 | return (OP0); \ | 11871 | 7 | } \ |
exprtk::details::sf05_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 1 | { \ | 11870 | 1 | return (OP0); \ | 11871 | 1 | } \ |
exprtk::details::sf06_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 4 | { \ | 11870 | 4 | return (OP0); \ | 11871 | 4 | } \ |
exprtk::details::sf07_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 19 | { \ | 11870 | 19 | return (OP0); \ | 11871 | 19 | } \ |
exprtk::details::sf08_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 26 | { \ | 11870 | 26 | return (OP0); \ | 11871 | 26 | } \ |
exprtk::details::sf09_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 11 | { \ | 11870 | 11 | return (OP0); \ | 11871 | 11 | } \ |
exprtk::details::sf10_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 34 | { \ | 11870 | 34 | return (OP0); \ | 11871 | 34 | } \ |
exprtk::details::sf11_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 10 | { \ | 11870 | 10 | return (OP0); \ | 11871 | 10 | } \ |
exprtk::details::sf12_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 14 | { \ | 11870 | 14 | return (OP0); \ | 11871 | 14 | } \ |
Unexecuted instantiation: exprtk::details::sf13_op<double>::process(double const&, double const&, double const&) exprtk::details::sf14_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 8 | { \ | 11870 | 8 | return (OP0); \ | 11871 | 8 | } \ |
exprtk::details::sf15_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 2 | { \ | 11870 | 2 | return (OP0); \ | 11871 | 2 | } \ |
exprtk::details::sf16_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 3 | { \ | 11870 | 3 | return (OP0); \ | 11871 | 3 | } \ |
exprtk::details::sf17_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 12 | { \ | 11870 | 12 | return (OP0); \ | 11871 | 12 | } \ |
Unexecuted instantiation: exprtk::details::sf18_op<double>::process(double const&, double const&, double const&) exprtk::details::sf19_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 7 | { \ | 11870 | 7 | return (OP0); \ | 11871 | 7 | } \ |
exprtk::details::sf20_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 8 | { \ | 11870 | 8 | return (OP0); \ | 11871 | 8 | } \ |
exprtk::details::sf21_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 15 | { \ | 11870 | 15 | return (OP0); \ | 11871 | 15 | } \ |
exprtk::details::sf22_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 13 | { \ | 11870 | 13 | return (OP0); \ | 11871 | 13 | } \ |
exprtk::details::sf23_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 11 | { \ | 11870 | 11 | return (OP0); \ | 11871 | 11 | } \ |
exprtk::details::sf24_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 1 | { \ | 11870 | 1 | return (OP0); \ | 11871 | 1 | } \ |
exprtk::details::sf25_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 18 | { \ | 11870 | 18 | return (OP0); \ | 11871 | 18 | } \ |
exprtk::details::sf26_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 17 | { \ | 11870 | 17 | return (OP0); \ | 11871 | 17 | } \ |
exprtk::details::sf27_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 18 | { \ | 11870 | 18 | return (OP0); \ | 11871 | 18 | } \ |
exprtk::details::sf28_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 11 | { \ | 11870 | 11 | return (OP0); \ | 11871 | 11 | } \ |
exprtk::details::sf29_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 1 | { \ | 11870 | 1 | return (OP0); \ | 11871 | 1 | } \ |
exprtk::details::sf30_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11869 | 1 | { \ | 11870 | 1 | return (OP0); \ | 11871 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sf31_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf32_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf33_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf34_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf35_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf36_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf37_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf38_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf39_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf40_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf41_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf42_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf43_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf44_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf45_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf46_op<double>::process(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf47_op<double>::process(double const&, double const&, double const&) exprtk::details::sf00_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 4 | { \ | 11870 | 4 | return (OP0); \ | 11871 | 4 | } \ |
exprtk::details::sf01_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 8 | { \ | 11870 | 8 | return (OP0); \ | 11871 | 8 | } \ |
exprtk::details::sf02_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 13 | { \ | 11870 | 13 | return (OP0); \ | 11871 | 13 | } \ |
exprtk::details::sf03_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 13 | { \ | 11870 | 13 | return (OP0); \ | 11871 | 13 | } \ |
exprtk::details::sf04_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 7 | { \ | 11870 | 7 | return (OP0); \ | 11871 | 7 | } \ |
exprtk::details::sf05_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 1 | { \ | 11870 | 1 | return (OP0); \ | 11871 | 1 | } \ |
exprtk::details::sf06_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 4 | { \ | 11870 | 4 | return (OP0); \ | 11871 | 4 | } \ |
exprtk::details::sf07_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 19 | { \ | 11870 | 19 | return (OP0); \ | 11871 | 19 | } \ |
exprtk::details::sf08_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 26 | { \ | 11870 | 26 | return (OP0); \ | 11871 | 26 | } \ |
exprtk::details::sf09_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 11 | { \ | 11870 | 11 | return (OP0); \ | 11871 | 11 | } \ |
exprtk::details::sf10_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 34 | { \ | 11870 | 34 | return (OP0); \ | 11871 | 34 | } \ |
exprtk::details::sf11_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 10 | { \ | 11870 | 10 | return (OP0); \ | 11871 | 10 | } \ |
exprtk::details::sf12_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 14 | { \ | 11870 | 14 | return (OP0); \ | 11871 | 14 | } \ |
Unexecuted instantiation: exprtk::details::sf13_op<float>::process(float const&, float const&, float const&) exprtk::details::sf14_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 8 | { \ | 11870 | 8 | return (OP0); \ | 11871 | 8 | } \ |
exprtk::details::sf15_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 2 | { \ | 11870 | 2 | return (OP0); \ | 11871 | 2 | } \ |
exprtk::details::sf16_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 3 | { \ | 11870 | 3 | return (OP0); \ | 11871 | 3 | } \ |
exprtk::details::sf17_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 12 | { \ | 11870 | 12 | return (OP0); \ | 11871 | 12 | } \ |
Unexecuted instantiation: exprtk::details::sf18_op<float>::process(float const&, float const&, float const&) exprtk::details::sf19_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 7 | { \ | 11870 | 7 | return (OP0); \ | 11871 | 7 | } \ |
exprtk::details::sf20_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 8 | { \ | 11870 | 8 | return (OP0); \ | 11871 | 8 | } \ |
exprtk::details::sf21_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 15 | { \ | 11870 | 15 | return (OP0); \ | 11871 | 15 | } \ |
exprtk::details::sf22_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 13 | { \ | 11870 | 13 | return (OP0); \ | 11871 | 13 | } \ |
exprtk::details::sf23_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 11 | { \ | 11870 | 11 | return (OP0); \ | 11871 | 11 | } \ |
exprtk::details::sf24_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 1 | { \ | 11870 | 1 | return (OP0); \ | 11871 | 1 | } \ |
exprtk::details::sf25_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 18 | { \ | 11870 | 18 | return (OP0); \ | 11871 | 18 | } \ |
exprtk::details::sf26_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 17 | { \ | 11870 | 17 | return (OP0); \ | 11871 | 17 | } \ |
exprtk::details::sf27_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 18 | { \ | 11870 | 18 | return (OP0); \ | 11871 | 18 | } \ |
exprtk::details::sf28_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 11 | { \ | 11870 | 11 | return (OP0); \ | 11871 | 11 | } \ |
exprtk::details::sf29_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 1 | { \ | 11870 | 1 | return (OP0); \ | 11871 | 1 | } \ |
exprtk::details::sf30_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11869 | 1 | { \ | 11870 | 1 | return (OP0); \ | 11871 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sf31_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf32_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf33_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf34_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf35_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf36_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf37_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf38_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf39_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf40_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf41_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf42_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf43_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf44_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf45_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf46_op<float>::process(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf47_op<float>::process(float const&, float const&, float const&) |
11872 | | static inline std::string id() \ |
11873 | 336k | { \ |
11874 | 336k | return (OP1); \ |
11875 | 336k | } \ exprtk::details::sf00_op<double>::id() Line | Count | Source | 11873 | 5.43k | { \ | 11874 | 5.43k | return (OP1); \ | 11875 | 5.43k | } \ |
exprtk::details::sf01_op<double>::id() Line | Count | Source | 11873 | 5.16k | { \ | 11874 | 5.16k | return (OP1); \ | 11875 | 5.16k | } \ |
exprtk::details::sf02_op<double>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf03_op<double>::id() Line | Count | Source | 11873 | 5.08k | { \ | 11874 | 5.08k | return (OP1); \ | 11875 | 5.08k | } \ |
exprtk::details::sf04_op<double>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf05_op<double>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf06_op<double>::id() Line | Count | Source | 11873 | 5.13k | { \ | 11874 | 5.13k | return (OP1); \ | 11875 | 5.13k | } \ |
exprtk::details::sf07_op<double>::id() Line | Count | Source | 11873 | 5.09k | { \ | 11874 | 5.09k | return (OP1); \ | 11875 | 5.09k | } \ |
exprtk::details::sf08_op<double>::id() Line | Count | Source | 11873 | 5.10k | { \ | 11874 | 5.10k | return (OP1); \ | 11875 | 5.10k | } \ |
exprtk::details::sf09_op<double>::id() Line | Count | Source | 11873 | 5.35k | { \ | 11874 | 5.35k | return (OP1); \ | 11875 | 5.35k | } \ |
exprtk::details::sf10_op<double>::id() Line | Count | Source | 11873 | 5.21k | { \ | 11874 | 5.21k | return (OP1); \ | 11875 | 5.21k | } \ |
exprtk::details::sf11_op<double>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf12_op<double>::id() Line | Count | Source | 11873 | 6.68k | { \ | 11874 | 6.68k | return (OP1); \ | 11875 | 6.68k | } \ |
exprtk::details::sf13_op<double>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf14_op<double>::id() Line | Count | Source | 11873 | 5.26k | { \ | 11874 | 5.26k | return (OP1); \ | 11875 | 5.26k | } \ |
exprtk::details::sf15_op<double>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf16_op<double>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf17_op<double>::id() Line | Count | Source | 11873 | 5.38k | { \ | 11874 | 5.38k | return (OP1); \ | 11875 | 5.38k | } \ |
exprtk::details::sf18_op<double>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf19_op<double>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf20_op<double>::id() Line | Count | Source | 11873 | 5.53k | { \ | 11874 | 5.53k | return (OP1); \ | 11875 | 5.53k | } \ |
exprtk::details::sf21_op<double>::id() Line | Count | Source | 11873 | 5.08k | { \ | 11874 | 5.08k | return (OP1); \ | 11875 | 5.08k | } \ |
exprtk::details::sf22_op<double>::id() Line | Count | Source | 11873 | 5.19k | { \ | 11874 | 5.19k | return (OP1); \ | 11875 | 5.19k | } \ |
exprtk::details::sf23_op<double>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf24_op<double>::id() Line | Count | Source | 11873 | 5.12k | { \ | 11874 | 5.12k | return (OP1); \ | 11875 | 5.12k | } \ |
exprtk::details::sf25_op<double>::id() Line | Count | Source | 11873 | 5.08k | { \ | 11874 | 5.08k | return (OP1); \ | 11875 | 5.08k | } \ |
exprtk::details::sf26_op<double>::id() Line | Count | Source | 11873 | 5.34k | { \ | 11874 | 5.34k | return (OP1); \ | 11875 | 5.34k | } \ |
exprtk::details::sf27_op<double>::id() Line | Count | Source | 11873 | 10.1k | { \ | 11874 | 10.1k | return (OP1); \ | 11875 | 10.1k | } \ |
exprtk::details::sf28_op<double>::id() Line | Count | Source | 11873 | 16.2k | { \ | 11874 | 16.2k | return (OP1); \ | 11875 | 16.2k | } \ |
exprtk::details::sf29_op<double>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf30_op<double>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf00_op<float>::id() Line | Count | Source | 11873 | 5.43k | { \ | 11874 | 5.43k | return (OP1); \ | 11875 | 5.43k | } \ |
exprtk::details::sf01_op<float>::id() Line | Count | Source | 11873 | 5.16k | { \ | 11874 | 5.16k | return (OP1); \ | 11875 | 5.16k | } \ |
exprtk::details::sf02_op<float>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf03_op<float>::id() Line | Count | Source | 11873 | 5.08k | { \ | 11874 | 5.08k | return (OP1); \ | 11875 | 5.08k | } \ |
exprtk::details::sf04_op<float>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf05_op<float>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf06_op<float>::id() Line | Count | Source | 11873 | 5.13k | { \ | 11874 | 5.13k | return (OP1); \ | 11875 | 5.13k | } \ |
exprtk::details::sf07_op<float>::id() Line | Count | Source | 11873 | 5.09k | { \ | 11874 | 5.09k | return (OP1); \ | 11875 | 5.09k | } \ |
exprtk::details::sf08_op<float>::id() Line | Count | Source | 11873 | 5.10k | { \ | 11874 | 5.10k | return (OP1); \ | 11875 | 5.10k | } \ |
exprtk::details::sf09_op<float>::id() Line | Count | Source | 11873 | 5.25k | { \ | 11874 | 5.25k | return (OP1); \ | 11875 | 5.25k | } \ |
exprtk::details::sf10_op<float>::id() Line | Count | Source | 11873 | 5.21k | { \ | 11874 | 5.21k | return (OP1); \ | 11875 | 5.21k | } \ |
exprtk::details::sf11_op<float>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf12_op<float>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf13_op<float>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf14_op<float>::id() Line | Count | Source | 11873 | 5.26k | { \ | 11874 | 5.26k | return (OP1); \ | 11875 | 5.26k | } \ |
exprtk::details::sf15_op<float>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf16_op<float>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf17_op<float>::id() Line | Count | Source | 11873 | 5.38k | { \ | 11874 | 5.38k | return (OP1); \ | 11875 | 5.38k | } \ |
exprtk::details::sf18_op<float>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf19_op<float>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf20_op<float>::id() Line | Count | Source | 11873 | 5.53k | { \ | 11874 | 5.53k | return (OP1); \ | 11875 | 5.53k | } \ |
exprtk::details::sf21_op<float>::id() Line | Count | Source | 11873 | 5.08k | { \ | 11874 | 5.08k | return (OP1); \ | 11875 | 5.08k | } \ |
exprtk::details::sf22_op<float>::id() Line | Count | Source | 11873 | 5.19k | { \ | 11874 | 5.19k | return (OP1); \ | 11875 | 5.19k | } \ |
exprtk::details::sf23_op<float>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf24_op<float>::id() Line | Count | Source | 11873 | 5.12k | { \ | 11874 | 5.12k | return (OP1); \ | 11875 | 5.12k | } \ |
exprtk::details::sf25_op<float>::id() Line | Count | Source | 11873 | 5.08k | { \ | 11874 | 5.08k | return (OP1); \ | 11875 | 5.08k | } \ |
exprtk::details::sf26_op<float>::id() Line | Count | Source | 11873 | 5.10k | { \ | 11874 | 5.10k | return (OP1); \ | 11875 | 5.10k | } \ |
exprtk::details::sf27_op<float>::id() Line | Count | Source | 11873 | 5.08k | { \ | 11874 | 5.08k | return (OP1); \ | 11875 | 5.08k | } \ |
exprtk::details::sf28_op<float>::id() Line | Count | Source | 11873 | 5.07k | { \ | 11874 | 5.07k | return (OP1); \ | 11875 | 5.07k | } \ |
exprtk::details::sf29_op<float>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
exprtk::details::sf30_op<float>::id() Line | Count | Source | 11873 | 5.06k | { \ | 11874 | 5.06k | return (OP1); \ | 11875 | 5.06k | } \ |
|
11876 | | }; \ |
11877 | | |
11878 | | define_sfop3(00,(x + y) / z ,"(t+t)/t") |
11879 | | define_sfop3(01,(x + y) * z ,"(t+t)*t") |
11880 | | define_sfop3(02,(x + y) - z ,"(t+t)-t") |
11881 | | define_sfop3(03,(x + y) + z ,"(t+t)+t") |
11882 | | define_sfop3(04,(x - y) + z ,"(t-t)+t") |
11883 | | define_sfop3(05,(x - y) / z ,"(t-t)/t") |
11884 | | define_sfop3(06,(x - y) * z ,"(t-t)*t") |
11885 | | define_sfop3(07,(x * y) + z ,"(t*t)+t") |
11886 | | define_sfop3(08,(x * y) - z ,"(t*t)-t") |
11887 | | define_sfop3(09,(x * y) / z ,"(t*t)/t") |
11888 | | define_sfop3(10,(x * y) * z ,"(t*t)*t") |
11889 | | define_sfop3(11,(x / y) + z ,"(t/t)+t") |
11890 | | define_sfop3(12,(x / y) - z ,"(t/t)-t") |
11891 | | define_sfop3(13,(x / y) / z ,"(t/t)/t") |
11892 | | define_sfop3(14,(x / y) * z ,"(t/t)*t") |
11893 | | define_sfop3(15,x / (y + z) ,"t/(t+t)") |
11894 | | define_sfop3(16,x / (y - z) ,"t/(t-t)") |
11895 | | define_sfop3(17,x / (y * z) ,"t/(t*t)") |
11896 | | define_sfop3(18,x / (y / z) ,"t/(t/t)") |
11897 | | define_sfop3(19,x * (y + z) ,"t*(t+t)") |
11898 | | define_sfop3(20,x * (y - z) ,"t*(t-t)") |
11899 | | define_sfop3(21,x * (y * z) ,"t*(t*t)") |
11900 | | define_sfop3(22,x * (y / z) ,"t*(t/t)") |
11901 | | define_sfop3(23,x - (y + z) ,"t-(t+t)") |
11902 | | define_sfop3(24,x - (y - z) ,"t-(t-t)") |
11903 | | define_sfop3(25,x - (y / z) ,"t-(t/t)") |
11904 | | define_sfop3(26,x - (y * z) ,"t-(t*t)") |
11905 | | define_sfop3(27,x + (y * z) ,"t+(t*t)") |
11906 | | define_sfop3(28,x + (y / z) ,"t+(t/t)") |
11907 | | define_sfop3(29,x + (y + z) ,"t+(t+t)") |
11908 | | define_sfop3(30,x + (y - z) ,"t+(t-t)") |
11909 | | define_sfop3(31,(axnb<T,2>(x,y,z))," ") |
11910 | | define_sfop3(32,(axnb<T,3>(x,y,z))," ") |
11911 | | define_sfop3(33,(axnb<T,4>(x,y,z))," ") |
11912 | | define_sfop3(34,(axnb<T,5>(x,y,z))," ") |
11913 | | define_sfop3(35,(axnb<T,6>(x,y,z))," ") |
11914 | | define_sfop3(36,(axnb<T,7>(x,y,z))," ") |
11915 | | define_sfop3(37,(axnb<T,8>(x,y,z))," ") |
11916 | | define_sfop3(38,(axnb<T,9>(x,y,z))," ") |
11917 | | define_sfop3(39,x * numeric::log(y) + z,"") |
11918 | | define_sfop3(40,x * numeric::log(y) - z,"") |
11919 | | define_sfop3(41,x * numeric::log10(y) + z,"") |
11920 | | define_sfop3(42,x * numeric::log10(y) - z,"") |
11921 | | define_sfop3(43,x * numeric::sin(y) + z ,"") |
11922 | | define_sfop3(44,x * numeric::sin(y) - z ,"") |
11923 | | define_sfop3(45,x * numeric::cos(y) + z ,"") |
11924 | | define_sfop3(46,x * numeric::cos(y) - z ,"") |
11925 | | define_sfop3(47,details::is_true(x) ? y : z,"") |
11926 | | |
11927 | | #define define_sfop4(NN, OP0, OP1) \ |
11928 | | template <typename T> \ |
11929 | | struct sf##NN##_op : public sf_base<T> \ |
11930 | | { \ |
11931 | | typedef typename sf_base<T>::Type const Type; \ |
11932 | | static inline T process(Type x, Type y, Type z, Type w) \ |
11933 | 276 | { \ |
11934 | 276 | return (OP0); \ |
11935 | 276 | } \ Unexecuted instantiation: exprtk::details::sf48_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sf49_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
Unexecuted instantiation: exprtk::details::sf50_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf51_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sf52_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
exprtk::details::sf53_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
Unexecuted instantiation: exprtk::details::sf54_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf55_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sf56_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
Unexecuted instantiation: exprtk::details::sf57_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sf58_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sf59_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf60_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sf61_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 2 | { \ | 11934 | 2 | return (OP0); \ | 11935 | 2 | } \ |
exprtk::details::sf62_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
Unexecuted instantiation: exprtk::details::sf63_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sf64_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
exprtk::details::sf65_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
exprtk::details::sf66_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 2 | { \ | 11934 | 2 | return (OP0); \ | 11935 | 2 | } \ |
exprtk::details::sf67_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
exprtk::details::sf68_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 6 | { \ | 11934 | 6 | return (OP0); \ | 11935 | 6 | } \ |
Unexecuted instantiation: exprtk::details::sf69_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf70_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sf71_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
Unexecuted instantiation: exprtk::details::sf72_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sf73_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 6 | { \ | 11934 | 6 | return (OP0); \ | 11935 | 6 | } \ |
exprtk::details::sf74_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 6 | { \ | 11934 | 6 | return (OP0); \ | 11935 | 6 | } \ |
exprtk::details::sf75_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 2 | { \ | 11934 | 2 | return (OP0); \ | 11935 | 2 | } \ |
exprtk::details::sf76_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
exprtk::details::sf77_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
exprtk::details::sf78_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
exprtk::details::sf79_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
Unexecuted instantiation: exprtk::details::sf80_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf81_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf82_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf83_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext00_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
exprtk::details::sfext01_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
exprtk::details::sfext02_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 7 | { \ | 11934 | 7 | return (OP0); \ | 11935 | 7 | } \ |
exprtk::details::sfext03_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
exprtk::details::sfext04_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
exprtk::details::sfext05_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 2 | { \ | 11934 | 2 | return (OP0); \ | 11935 | 2 | } \ |
exprtk::details::sfext06_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 7 | { \ | 11934 | 7 | return (OP0); \ | 11935 | 7 | } \ |
exprtk::details::sfext07_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
Unexecuted instantiation: exprtk::details::sfext08_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext09_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext10_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext11_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext12_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext13_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext14_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext15_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext16_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext17_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext18_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext19_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext20_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sfext21_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext22_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext23_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext24_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext25_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext26_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 8 | { \ | 11934 | 8 | return (OP0); \ | 11935 | 8 | } \ |
Unexecuted instantiation: exprtk::details::sfext27_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext28_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext29_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext30_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext31_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext32_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext33_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext34_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 2 | { \ | 11934 | 2 | return (OP0); \ | 11935 | 2 | } \ |
Unexecuted instantiation: exprtk::details::sfext35_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext36_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext38_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext39_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
exprtk::details::sfext40_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
Unexecuted instantiation: exprtk::details::sfext41_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext42_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext43_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext44_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext45_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext46_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
exprtk::details::sfext47_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
Unexecuted instantiation: exprtk::details::sfext48_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext49_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext50_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext51_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext52_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext53_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext54_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext55_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext56_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext57_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sfext58_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sfext59_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext60_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
exprtk::details::sfext61_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11933 | 6 | { \ | 11934 | 6 | return (OP0); \ | 11935 | 6 | } \ |
Unexecuted instantiation: exprtk::details::sfext37_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf84_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf85_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf86_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf87_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf88_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf89_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf90_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf91_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf92_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf93_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf94_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf95_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf96_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf97_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf98_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf99_op<double>::process(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf48_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sf49_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
Unexecuted instantiation: exprtk::details::sf50_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf51_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sf52_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
exprtk::details::sf53_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
Unexecuted instantiation: exprtk::details::sf54_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf55_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sf56_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
Unexecuted instantiation: exprtk::details::sf57_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sf58_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sf59_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf60_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sf61_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 2 | { \ | 11934 | 2 | return (OP0); \ | 11935 | 2 | } \ |
exprtk::details::sf62_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
Unexecuted instantiation: exprtk::details::sf63_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sf64_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
exprtk::details::sf65_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
exprtk::details::sf66_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 2 | { \ | 11934 | 2 | return (OP0); \ | 11935 | 2 | } \ |
exprtk::details::sf67_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
exprtk::details::sf68_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 6 | { \ | 11934 | 6 | return (OP0); \ | 11935 | 6 | } \ |
Unexecuted instantiation: exprtk::details::sf69_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf70_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sf71_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
Unexecuted instantiation: exprtk::details::sf72_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sf73_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 6 | { \ | 11934 | 6 | return (OP0); \ | 11935 | 6 | } \ |
exprtk::details::sf74_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 6 | { \ | 11934 | 6 | return (OP0); \ | 11935 | 6 | } \ |
exprtk::details::sf75_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 2 | { \ | 11934 | 2 | return (OP0); \ | 11935 | 2 | } \ |
exprtk::details::sf76_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
exprtk::details::sf77_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
exprtk::details::sf78_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
exprtk::details::sf79_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
Unexecuted instantiation: exprtk::details::sf80_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf81_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf82_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf83_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext00_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
exprtk::details::sfext01_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
exprtk::details::sfext02_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 7 | { \ | 11934 | 7 | return (OP0); \ | 11935 | 7 | } \ |
exprtk::details::sfext03_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
exprtk::details::sfext04_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
exprtk::details::sfext05_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 2 | { \ | 11934 | 2 | return (OP0); \ | 11935 | 2 | } \ |
exprtk::details::sfext06_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 7 | { \ | 11934 | 7 | return (OP0); \ | 11935 | 7 | } \ |
exprtk::details::sfext07_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 4 | { \ | 11934 | 4 | return (OP0); \ | 11935 | 4 | } \ |
Unexecuted instantiation: exprtk::details::sfext08_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext09_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext10_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext11_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext12_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext13_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext14_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext15_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext16_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext17_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext18_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext19_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext20_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sfext21_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext22_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext23_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext24_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext25_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext26_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 8 | { \ | 11934 | 8 | return (OP0); \ | 11935 | 8 | } \ |
Unexecuted instantiation: exprtk::details::sfext27_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext28_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext29_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext30_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext31_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext32_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext33_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext34_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 2 | { \ | 11934 | 2 | return (OP0); \ | 11935 | 2 | } \ |
Unexecuted instantiation: exprtk::details::sfext35_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext36_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext38_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext39_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
exprtk::details::sfext40_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 5 | { \ | 11934 | 5 | return (OP0); \ | 11935 | 5 | } \ |
Unexecuted instantiation: exprtk::details::sfext41_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext42_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext43_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext44_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext45_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext46_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
exprtk::details::sfext47_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
Unexecuted instantiation: exprtk::details::sfext48_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext49_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext50_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext51_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext52_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext53_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext54_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext55_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext56_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext57_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 1 | { \ | 11934 | 1 | return (OP0); \ | 11935 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sfext58_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sfext59_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext60_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 3 | { \ | 11934 | 3 | return (OP0); \ | 11935 | 3 | } \ |
exprtk::details::sfext61_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11933 | 6 | { \ | 11934 | 6 | return (OP0); \ | 11935 | 6 | } \ |
Unexecuted instantiation: exprtk::details::sfext37_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf84_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf85_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf86_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf87_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf88_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf89_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf90_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf91_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf92_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf93_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf94_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf95_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf96_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf97_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf98_op<float>::process(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf99_op<float>::process(float const&, float const&, float const&, float const&) |
11936 | | static inline std::string id() \ |
11937 | 994k | { \ |
11938 | 994k | return (OP1); \ |
11939 | 994k | } \ exprtk::details::sf48_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf49_op<double>::id() Line | Count | Source | 11937 | 5.08k | { \ | 11938 | 5.08k | return (OP1); \ | 11939 | 5.08k | } \ |
exprtk::details::sf50_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf51_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf52_op<double>::id() Line | Count | Source | 11937 | 5.08k | { \ | 11938 | 5.08k | return (OP1); \ | 11939 | 5.08k | } \ |
exprtk::details::sf53_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf54_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf55_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf56_op<double>::id() Line | Count | Source | 11937 | 5.10k | { \ | 11938 | 5.10k | return (OP1); \ | 11939 | 5.10k | } \ |
exprtk::details::sf57_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf58_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf59_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf60_op<double>::id() Line | Count | Source | 11937 | 5.08k | { \ | 11938 | 5.08k | return (OP1); \ | 11939 | 5.08k | } \ |
exprtk::details::sf61_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf62_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf63_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf64_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf65_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf66_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf67_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf68_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf69_op<double>::id() Line | Count | Source | 11937 | 5.10k | { \ | 11938 | 5.10k | return (OP1); \ | 11939 | 5.10k | } \ |
exprtk::details::sf70_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf71_op<double>::id() Line | Count | Source | 11937 | 5.09k | { \ | 11938 | 5.09k | return (OP1); \ | 11939 | 5.09k | } \ |
exprtk::details::sf72_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf73_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf74_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf75_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf76_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf77_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf78_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf79_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf80_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf81_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf82_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf83_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext00_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext01_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext02_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext03_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext04_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext05_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext06_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext07_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext08_op<double>::id() Line | Count | Source | 11937 | 5.09k | { \ | 11938 | 5.09k | return (OP1); \ | 11939 | 5.09k | } \ |
exprtk::details::sfext09_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext10_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext11_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext12_op<double>::id() Line | Count | Source | 11937 | 5.11k | { \ | 11938 | 5.11k | return (OP1); \ | 11939 | 5.11k | } \ |
exprtk::details::sfext13_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext14_op<double>::id() Line | Count | Source | 11937 | 5.23k | { \ | 11938 | 5.23k | return (OP1); \ | 11939 | 5.23k | } \ |
exprtk::details::sfext15_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext16_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext17_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext18_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext19_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext20_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext21_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext22_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext23_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext24_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext25_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext26_op<double>::id() Line | Count | Source | 11937 | 5.09k | { \ | 11938 | 5.09k | return (OP1); \ | 11939 | 5.09k | } \ |
exprtk::details::sfext27_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext28_op<double>::id() Line | Count | Source | 11937 | 5.15k | { \ | 11938 | 5.15k | return (OP1); \ | 11939 | 5.15k | } \ |
exprtk::details::sfext29_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext30_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext31_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext32_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext33_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext34_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext35_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext36_op<double>::id() Line | Count | Source | 11937 | 10.3k | { \ | 11938 | 10.3k | return (OP1); \ | 11939 | 10.3k | } \ |
exprtk::details::sfext38_op<double>::id() Line | Count | Source | 11937 | 5.10k | { \ | 11938 | 5.10k | return (OP1); \ | 11939 | 5.10k | } \ |
exprtk::details::sfext39_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext40_op<double>::id() Line | Count | Source | 11937 | 5.15k | { \ | 11938 | 5.15k | return (OP1); \ | 11939 | 5.15k | } \ |
exprtk::details::sfext41_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext42_op<double>::id() Line | Count | Source | 11937 | 5.10k | { \ | 11938 | 5.10k | return (OP1); \ | 11939 | 5.10k | } \ |
exprtk::details::sfext43_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext44_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext45_op<double>::id() Line | Count | Source | 11937 | 5.08k | { \ | 11938 | 5.08k | return (OP1); \ | 11939 | 5.08k | } \ |
exprtk::details::sfext46_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext47_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext48_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext49_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext50_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext51_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext52_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext53_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext54_op<double>::id() Line | Count | Source | 11937 | 5.09k | { \ | 11938 | 5.09k | return (OP1); \ | 11939 | 5.09k | } \ |
exprtk::details::sfext55_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext56_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext57_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext58_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext59_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext60_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext61_op<double>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
Unexecuted instantiation: exprtk::details::sfext37_op<double>::id() exprtk::details::sf48_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf49_op<float>::id() Line | Count | Source | 11937 | 5.08k | { \ | 11938 | 5.08k | return (OP1); \ | 11939 | 5.08k | } \ |
exprtk::details::sf50_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf51_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf52_op<float>::id() Line | Count | Source | 11937 | 5.08k | { \ | 11938 | 5.08k | return (OP1); \ | 11939 | 5.08k | } \ |
exprtk::details::sf53_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf54_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf55_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf56_op<float>::id() Line | Count | Source | 11937 | 5.10k | { \ | 11938 | 5.10k | return (OP1); \ | 11939 | 5.10k | } \ |
exprtk::details::sf57_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf58_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf59_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf60_op<float>::id() Line | Count | Source | 11937 | 5.08k | { \ | 11938 | 5.08k | return (OP1); \ | 11939 | 5.08k | } \ |
exprtk::details::sf61_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf62_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf63_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf64_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf65_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf66_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf67_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf68_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf69_op<float>::id() Line | Count | Source | 11937 | 5.10k | { \ | 11938 | 5.10k | return (OP1); \ | 11939 | 5.10k | } \ |
exprtk::details::sf70_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf71_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf72_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf73_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf74_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf75_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf76_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf77_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf78_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf79_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf80_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf81_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf82_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sf83_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext00_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext01_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext02_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext03_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext04_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext05_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext06_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext07_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext08_op<float>::id() Line | Count | Source | 11937 | 5.09k | { \ | 11938 | 5.09k | return (OP1); \ | 11939 | 5.09k | } \ |
exprtk::details::sfext09_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext10_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext11_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext12_op<float>::id() Line | Count | Source | 11937 | 5.11k | { \ | 11938 | 5.11k | return (OP1); \ | 11939 | 5.11k | } \ |
exprtk::details::sfext13_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext14_op<float>::id() Line | Count | Source | 11937 | 5.23k | { \ | 11938 | 5.23k | return (OP1); \ | 11939 | 5.23k | } \ |
exprtk::details::sfext15_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext16_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext17_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext18_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext19_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext20_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext21_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext22_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext23_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext24_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext25_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext26_op<float>::id() Line | Count | Source | 11937 | 5.09k | { \ | 11938 | 5.09k | return (OP1); \ | 11939 | 5.09k | } \ |
exprtk::details::sfext27_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext28_op<float>::id() Line | Count | Source | 11937 | 5.15k | { \ | 11938 | 5.15k | return (OP1); \ | 11939 | 5.15k | } \ |
exprtk::details::sfext29_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext30_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext31_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext32_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext33_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext34_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext35_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext36_op<float>::id() Line | Count | Source | 11937 | 10.3k | { \ | 11938 | 10.3k | return (OP1); \ | 11939 | 10.3k | } \ |
exprtk::details::sfext38_op<float>::id() Line | Count | Source | 11937 | 5.10k | { \ | 11938 | 5.10k | return (OP1); \ | 11939 | 5.10k | } \ |
exprtk::details::sfext39_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext40_op<float>::id() Line | Count | Source | 11937 | 5.15k | { \ | 11938 | 5.15k | return (OP1); \ | 11939 | 5.15k | } \ |
exprtk::details::sfext41_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext42_op<float>::id() Line | Count | Source | 11937 | 5.10k | { \ | 11938 | 5.10k | return (OP1); \ | 11939 | 5.10k | } \ |
exprtk::details::sfext43_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext44_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext45_op<float>::id() Line | Count | Source | 11937 | 5.08k | { \ | 11938 | 5.08k | return (OP1); \ | 11939 | 5.08k | } \ |
exprtk::details::sfext46_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext47_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext48_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext49_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext50_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext51_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext52_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext53_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext54_op<float>::id() Line | Count | Source | 11937 | 5.09k | { \ | 11938 | 5.09k | return (OP1); \ | 11939 | 5.09k | } \ |
exprtk::details::sfext55_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext56_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext57_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext58_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext59_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext60_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
exprtk::details::sfext61_op<float>::id() Line | Count | Source | 11937 | 5.06k | { \ | 11938 | 5.06k | return (OP1); \ | 11939 | 5.06k | } \ |
Unexecuted instantiation: exprtk::details::sfext37_op<float>::id() |
11940 | | }; \ |
11941 | | |
11942 | | define_sfop4(48,(x + ((y + z) / w)),"t+((t+t)/t)") |
11943 | | define_sfop4(49,(x + ((y + z) * w)),"t+((t+t)*t)") |
11944 | | define_sfop4(50,(x + ((y - z) / w)),"t+((t-t)/t)") |
11945 | | define_sfop4(51,(x + ((y - z) * w)),"t+((t-t)*t)") |
11946 | | define_sfop4(52,(x + ((y * z) / w)),"t+((t*t)/t)") |
11947 | | define_sfop4(53,(x + ((y * z) * w)),"t+((t*t)*t)") |
11948 | | define_sfop4(54,(x + ((y / z) + w)),"t+((t/t)+t)") |
11949 | | define_sfop4(55,(x + ((y / z) / w)),"t+((t/t)/t)") |
11950 | | define_sfop4(56,(x + ((y / z) * w)),"t+((t/t)*t)") |
11951 | | define_sfop4(57,(x - ((y + z) / w)),"t-((t+t)/t)") |
11952 | | define_sfop4(58,(x - ((y + z) * w)),"t-((t+t)*t)") |
11953 | | define_sfop4(59,(x - ((y - z) / w)),"t-((t-t)/t)") |
11954 | | define_sfop4(60,(x - ((y - z) * w)),"t-((t-t)*t)") |
11955 | | define_sfop4(61,(x - ((y * z) / w)),"t-((t*t)/t)") |
11956 | | define_sfop4(62,(x - ((y * z) * w)),"t-((t*t)*t)") |
11957 | | define_sfop4(63,(x - ((y / z) / w)),"t-((t/t)/t)") |
11958 | | define_sfop4(64,(x - ((y / z) * w)),"t-((t/t)*t)") |
11959 | | define_sfop4(65,(((x + y) * z) - w),"((t+t)*t)-t") |
11960 | | define_sfop4(66,(((x - y) * z) - w),"((t-t)*t)-t") |
11961 | | define_sfop4(67,(((x * y) * z) - w),"((t*t)*t)-t") |
11962 | | define_sfop4(68,(((x / y) * z) - w),"((t/t)*t)-t") |
11963 | | define_sfop4(69,(((x + y) / z) - w),"((t+t)/t)-t") |
11964 | | define_sfop4(70,(((x - y) / z) - w),"((t-t)/t)-t") |
11965 | | define_sfop4(71,(((x * y) / z) - w),"((t*t)/t)-t") |
11966 | | define_sfop4(72,(((x / y) / z) - w),"((t/t)/t)-t") |
11967 | | define_sfop4(73,((x * y) + (z * w)),"(t*t)+(t*t)") |
11968 | | define_sfop4(74,((x * y) - (z * w)),"(t*t)-(t*t)") |
11969 | | define_sfop4(75,((x * y) + (z / w)),"(t*t)+(t/t)") |
11970 | | define_sfop4(76,((x * y) - (z / w)),"(t*t)-(t/t)") |
11971 | | define_sfop4(77,((x / y) + (z / w)),"(t/t)+(t/t)") |
11972 | | define_sfop4(78,((x / y) - (z / w)),"(t/t)-(t/t)") |
11973 | | define_sfop4(79,((x / y) - (z * w)),"(t/t)-(t*t)") |
11974 | | define_sfop4(80,(x / (y + (z * w))),"t/(t+(t*t))") |
11975 | | define_sfop4(81,(x / (y - (z * w))),"t/(t-(t*t))") |
11976 | | define_sfop4(82,(x * (y + (z * w))),"t*(t+(t*t))") |
11977 | | define_sfop4(83,(x * (y - (z * w))),"t*(t-(t*t))") |
11978 | | |
11979 | | define_sfop4(84,(axn<T,2>(x,y) + axn<T,2>(z,w)),"") |
11980 | | define_sfop4(85,(axn<T,3>(x,y) + axn<T,3>(z,w)),"") |
11981 | | define_sfop4(86,(axn<T,4>(x,y) + axn<T,4>(z,w)),"") |
11982 | | define_sfop4(87,(axn<T,5>(x,y) + axn<T,5>(z,w)),"") |
11983 | | define_sfop4(88,(axn<T,6>(x,y) + axn<T,6>(z,w)),"") |
11984 | | define_sfop4(89,(axn<T,7>(x,y) + axn<T,7>(z,w)),"") |
11985 | | define_sfop4(90,(axn<T,8>(x,y) + axn<T,8>(z,w)),"") |
11986 | | define_sfop4(91,(axn<T,9>(x,y) + axn<T,9>(z,w)),"") |
11987 | | define_sfop4(92,((details::is_true(x) && details::is_true(y)) ? z : w),"") |
11988 | | define_sfop4(93,((details::is_true(x) || details::is_true(y)) ? z : w),"") |
11989 | | define_sfop4(94,((x < y) ? z : w),"") |
11990 | | define_sfop4(95,((x <= y) ? z : w),"") |
11991 | | define_sfop4(96,((x > y) ? z : w),"") |
11992 | | define_sfop4(97,((x >= y) ? z : w),"") |
11993 | | define_sfop4(98,(details::is_true(numeric::equal(x,y)) ? z : w),"") |
11994 | | define_sfop4(99,(x * numeric::sin(y) + z * numeric::cos(w)),"") |
11995 | | |
11996 | | define_sfop4(ext00,((x + y) - (z * w)),"(t+t)-(t*t)") |
11997 | | define_sfop4(ext01,((x + y) - (z / w)),"(t+t)-(t/t)") |
11998 | | define_sfop4(ext02,((x + y) + (z * w)),"(t+t)+(t*t)") |
11999 | | define_sfop4(ext03,((x + y) + (z / w)),"(t+t)+(t/t)") |
12000 | | define_sfop4(ext04,((x - y) + (z * w)),"(t-t)+(t*t)") |
12001 | | define_sfop4(ext05,((x - y) + (z / w)),"(t-t)+(t/t)") |
12002 | | define_sfop4(ext06,((x - y) - (z * w)),"(t-t)-(t*t)") |
12003 | | define_sfop4(ext07,((x - y) - (z / w)),"(t-t)-(t/t)") |
12004 | | define_sfop4(ext08,((x + y) - (z - w)),"(t+t)-(t-t)") |
12005 | | define_sfop4(ext09,((x + y) + (z - w)),"(t+t)+(t-t)") |
12006 | | define_sfop4(ext10,((x + y) + (z + w)),"(t+t)+(t+t)") |
12007 | | define_sfop4(ext11,((x + y) * (z - w)),"(t+t)*(t-t)") |
12008 | | define_sfop4(ext12,((x + y) / (z - w)),"(t+t)/(t-t)") |
12009 | | define_sfop4(ext13,((x - y) - (z + w)),"(t-t)-(t+t)") |
12010 | | define_sfop4(ext14,((x - y) + (z + w)),"(t-t)+(t+t)") |
12011 | | define_sfop4(ext15,((x - y) * (z + w)),"(t-t)*(t+t)") |
12012 | | define_sfop4(ext16,((x - y) / (z + w)),"(t-t)/(t+t)") |
12013 | | define_sfop4(ext17,((x * y) - (z + w)),"(t*t)-(t+t)") |
12014 | | define_sfop4(ext18,((x / y) - (z + w)),"(t/t)-(t+t)") |
12015 | | define_sfop4(ext19,((x * y) + (z + w)),"(t*t)+(t+t)") |
12016 | | define_sfop4(ext20,((x / y) + (z + w)),"(t/t)+(t+t)") |
12017 | | define_sfop4(ext21,((x * y) + (z - w)),"(t*t)+(t-t)") |
12018 | | define_sfop4(ext22,((x / y) + (z - w)),"(t/t)+(t-t)") |
12019 | | define_sfop4(ext23,((x * y) - (z - w)),"(t*t)-(t-t)") |
12020 | | define_sfop4(ext24,((x / y) - (z - w)),"(t/t)-(t-t)") |
12021 | | define_sfop4(ext25,((x + y) * (z * w)),"(t+t)*(t*t)") |
12022 | | define_sfop4(ext26,((x + y) * (z / w)),"(t+t)*(t/t)") |
12023 | | define_sfop4(ext27,((x + y) / (z * w)),"(t+t)/(t*t)") |
12024 | | define_sfop4(ext28,((x + y) / (z / w)),"(t+t)/(t/t)") |
12025 | | define_sfop4(ext29,((x - y) / (z * w)),"(t-t)/(t*t)") |
12026 | | define_sfop4(ext30,((x - y) / (z / w)),"(t-t)/(t/t)") |
12027 | | define_sfop4(ext31,((x - y) * (z * w)),"(t-t)*(t*t)") |
12028 | | define_sfop4(ext32,((x - y) * (z / w)),"(t-t)*(t/t)") |
12029 | | define_sfop4(ext33,((x * y) * (z + w)),"(t*t)*(t+t)") |
12030 | | define_sfop4(ext34,((x / y) * (z + w)),"(t/t)*(t+t)") |
12031 | | define_sfop4(ext35,((x * y) / (z + w)),"(t*t)/(t+t)") |
12032 | | define_sfop4(ext36,((x / y) / (z + w)),"(t/t)/(t+t)") |
12033 | | define_sfop4(ext37,((x * y) / (z - w)),"(t*t)/(t-t)") |
12034 | | define_sfop4(ext38,((x / y) / (z - w)),"(t/t)/(t-t)") |
12035 | | define_sfop4(ext39,((x * y) * (z - w)),"(t*t)*(t-t)") |
12036 | | define_sfop4(ext40,((x * y) / (z * w)),"(t*t)/(t*t)") |
12037 | | define_sfop4(ext41,((x / y) * (z / w)),"(t/t)*(t/t)") |
12038 | | define_sfop4(ext42,((x / y) * (z - w)),"(t/t)*(t-t)") |
12039 | | define_sfop4(ext43,((x * y) * (z * w)),"(t*t)*(t*t)") |
12040 | | define_sfop4(ext44,(x + (y * (z / w))),"t+(t*(t/t))") |
12041 | | define_sfop4(ext45,(x - (y * (z / w))),"t-(t*(t/t))") |
12042 | | define_sfop4(ext46,(x + (y / (z * w))),"t+(t/(t*t))") |
12043 | | define_sfop4(ext47,(x - (y / (z * w))),"t-(t/(t*t))") |
12044 | | define_sfop4(ext48,(((x - y) - z) * w),"((t-t)-t)*t") |
12045 | | define_sfop4(ext49,(((x - y) - z) / w),"((t-t)-t)/t") |
12046 | | define_sfop4(ext50,(((x - y) + z) * w),"((t-t)+t)*t") |
12047 | | define_sfop4(ext51,(((x - y) + z) / w),"((t-t)+t)/t") |
12048 | | define_sfop4(ext52,((x + (y - z)) * w),"(t+(t-t))*t") |
12049 | | define_sfop4(ext53,((x + (y - z)) / w),"(t+(t-t))/t") |
12050 | | define_sfop4(ext54,((x + y) / (z + w)),"(t+t)/(t+t)") |
12051 | | define_sfop4(ext55,((x - y) / (z - w)),"(t-t)/(t-t)") |
12052 | | define_sfop4(ext56,((x + y) * (z + w)),"(t+t)*(t+t)") |
12053 | | define_sfop4(ext57,((x - y) * (z - w)),"(t-t)*(t-t)") |
12054 | | define_sfop4(ext58,((x - y) + (z - w)),"(t-t)+(t-t)") |
12055 | | define_sfop4(ext59,((x - y) - (z - w)),"(t-t)-(t-t)") |
12056 | | define_sfop4(ext60,((x / y) + (z * w)),"(t/t)+(t*t)") |
12057 | | define_sfop4(ext61,(((x * y) * z) / w),"((t*t)*t)/t") |
12058 | | |
12059 | | #undef define_sfop3 |
12060 | | #undef define_sfop4 |
12061 | | |
12062 | | template <typename T, typename SpecialFunction> |
12063 | | class sf3_node exprtk_final : public trinary_node<T> |
12064 | | { |
12065 | | public: |
12066 | | |
12067 | | typedef expression_node<T>* expression_ptr; |
12068 | | |
12069 | | sf3_node(const operator_type& opr, |
12070 | | expression_ptr branch0, |
12071 | | expression_ptr branch1, |
12072 | | expression_ptr branch2) |
12073 | 18 | : trinary_node<T>(opr, branch0, branch1, branch2) |
12074 | 18 | {} exprtk::details::sf3_node<double, exprtk::details::sf00_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 12073 | 1 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12074 | 1 | {} |
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf01_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf02_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf03_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf04_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf05_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) exprtk::details::sf3_node<double, exprtk::details::sf06_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 12073 | 8 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12074 | 8 | {} |
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf07_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf08_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf09_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf10_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf11_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf12_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf13_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf14_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf15_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf16_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf17_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf18_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf19_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf20_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf21_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf22_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf23_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf24_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf25_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf26_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf27_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf28_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf29_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf30_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf31_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf32_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf33_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf34_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf35_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf36_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf37_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf38_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf39_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf40_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf41_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf42_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf43_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf44_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf45_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf46_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf47_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) exprtk::details::sf3_node<float, exprtk::details::sf00_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 12073 | 1 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12074 | 1 | {} |
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf01_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf02_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf03_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf04_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf05_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) exprtk::details::sf3_node<float, exprtk::details::sf06_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 12073 | 8 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12074 | 8 | {} |
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf07_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf08_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf09_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf10_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf11_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf12_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf13_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf14_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf15_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf16_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf17_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf18_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf19_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf20_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf21_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf22_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf23_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf24_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf25_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf26_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf27_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf28_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf29_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf30_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf31_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf32_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf33_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf34_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf35_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf36_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf37_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf38_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf39_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf40_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf41_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf42_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf43_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf44_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf45_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf46_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf47_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
12075 | | |
12076 | | inline T value() const exprtk_override |
12077 | 2 | { |
12078 | 2 | const T x = trinary_node<T>::branch_[0].first->value(); |
12079 | 2 | const T y = trinary_node<T>::branch_[1].first->value(); |
12080 | 2 | const T z = trinary_node<T>::branch_[2].first->value(); |
12081 | | |
12082 | 2 | return SpecialFunction::process(x, y, z); |
12083 | 2 | } exprtk::details::sf3_node<double, exprtk::details::sf00_op<double> >::value() const Line | Count | Source | 12077 | 1 | { | 12078 | 1 | const T x = trinary_node<T>::branch_[0].first->value(); | 12079 | 1 | const T y = trinary_node<T>::branch_[1].first->value(); | 12080 | 1 | const T z = trinary_node<T>::branch_[2].first->value(); | 12081 | | | 12082 | 1 | return SpecialFunction::process(x, y, z); | 12083 | 1 | } |
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf01_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf02_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf03_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf04_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf05_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf06_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf07_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf08_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf09_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf10_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf11_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf12_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf13_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf14_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf15_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf16_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf17_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf18_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf19_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf20_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf21_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf22_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf23_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf24_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf25_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf26_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf27_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf28_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf29_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf30_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf31_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf32_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf33_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf34_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf35_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf36_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf37_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf38_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf39_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf40_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf41_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf42_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf43_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf44_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf45_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf46_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf47_op<double> >::value() const exprtk::details::sf3_node<float, exprtk::details::sf00_op<float> >::value() const Line | Count | Source | 12077 | 1 | { | 12078 | 1 | const T x = trinary_node<T>::branch_[0].first->value(); | 12079 | 1 | const T y = trinary_node<T>::branch_[1].first->value(); | 12080 | 1 | const T z = trinary_node<T>::branch_[2].first->value(); | 12081 | | | 12082 | 1 | return SpecialFunction::process(x, y, z); | 12083 | 1 | } |
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf01_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf02_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf03_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf04_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf05_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf06_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf07_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf08_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf09_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf10_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf11_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf12_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf13_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf14_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf15_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf16_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf17_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf18_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf19_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf20_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf21_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf22_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf23_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf24_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf25_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf26_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf27_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf28_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf29_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf30_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf31_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf32_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf33_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf34_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf35_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf36_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf37_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf38_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf39_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf40_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf41_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf42_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf43_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf44_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf45_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf46_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf47_op<float> >::value() const |
12084 | | }; |
12085 | | |
12086 | | template <typename T, typename SpecialFunction> |
12087 | | class sf4_node exprtk_final : public quaternary_node<T> |
12088 | | { |
12089 | | public: |
12090 | | |
12091 | | typedef expression_node<T>* expression_ptr; |
12092 | | |
12093 | | sf4_node(const operator_type& opr, |
12094 | | expression_ptr branch0, |
12095 | | expression_ptr branch1, |
12096 | | expression_ptr branch2, |
12097 | | expression_ptr branch3) |
12098 | 0 | : quaternary_node<T>(opr, branch0, branch1, branch2, branch3) |
12099 | 0 | {} Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf48_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf49_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf50_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf51_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf52_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf53_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf54_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf55_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf56_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf57_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf58_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf59_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf60_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf61_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf62_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf63_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf64_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf65_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf66_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf67_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf68_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf69_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf70_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf71_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf72_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf73_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf74_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf75_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf76_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf77_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf78_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf79_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf80_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf81_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf82_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf83_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf84_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf85_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf86_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf87_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf88_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf89_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf90_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf91_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf92_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf93_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf94_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf95_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf96_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf97_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf98_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf99_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf48_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf49_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf50_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf51_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf52_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf53_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf54_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf55_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf56_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf57_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf58_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf59_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf60_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf61_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf62_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf63_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf64_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf65_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf66_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf67_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf68_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf69_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf70_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf71_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf72_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf73_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf74_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf75_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf76_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf77_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf78_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf79_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf80_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf81_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf82_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf83_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf84_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf85_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf86_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf87_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf88_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf89_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf90_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf91_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf92_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf93_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf94_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf95_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf96_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf97_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf98_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf99_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
12100 | | |
12101 | | inline T value() const exprtk_override |
12102 | 0 | { |
12103 | 0 | const T x = quaternary_node<T>::branch_[0].first->value(); |
12104 | 0 | const T y = quaternary_node<T>::branch_[1].first->value(); |
12105 | 0 | const T z = quaternary_node<T>::branch_[2].first->value(); |
12106 | 0 | const T w = quaternary_node<T>::branch_[3].first->value(); |
12107 | |
|
12108 | 0 | return SpecialFunction::process(x, y, z, w); |
12109 | 0 | } Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf48_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf49_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf50_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf51_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf52_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf53_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf54_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf55_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf56_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf57_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf58_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf59_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf60_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf61_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf62_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf63_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf64_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf65_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf66_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf67_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf68_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf69_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf70_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf71_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf72_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf73_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf74_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf75_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf76_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf77_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf78_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf79_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf80_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf81_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf82_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf83_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf84_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf85_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf86_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf87_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf88_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf89_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf90_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf91_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf92_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf93_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf94_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf95_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf96_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf97_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf98_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf99_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf48_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf49_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf50_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf51_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf52_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf53_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf54_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf55_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf56_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf57_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf58_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf59_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf60_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf61_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf62_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf63_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf64_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf65_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf66_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf67_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf68_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf69_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf70_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf71_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf72_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf73_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf74_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf75_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf76_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf77_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf78_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf79_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf80_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf81_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf82_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf83_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf84_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf85_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf86_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf87_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf88_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf89_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf90_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf91_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf92_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf93_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf94_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf95_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf96_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf97_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf98_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf99_op<float> >::value() const |
12110 | | }; |
12111 | | |
12112 | | template <typename T, typename SpecialFunction> |
12113 | | class sf3_var_node exprtk_final : public expression_node<T> |
12114 | | { |
12115 | | public: |
12116 | | |
12117 | | typedef expression_node<T>* expression_ptr; |
12118 | | |
12119 | | sf3_var_node(const T& v0, const T& v1, const T& v2) |
12120 | 0 | : v0_(v0) |
12121 | 0 | , v1_(v1) |
12122 | 0 | , v2_(v2) |
12123 | 0 | {} Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf00_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf01_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf02_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf03_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf04_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf05_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf06_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf07_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf08_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf09_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf10_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf11_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf12_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf13_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf14_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf15_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf16_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf17_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf18_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf19_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf20_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf21_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf22_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf23_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf24_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf25_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf26_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf27_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf28_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf29_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf30_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf31_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf32_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf33_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf34_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf35_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf36_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf37_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf38_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf39_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf40_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf41_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf42_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf43_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf44_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf45_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf46_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf47_op<double> >::sf3_var_node(double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf00_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf01_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf02_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf03_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf04_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf05_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf06_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf07_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf08_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf09_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf10_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf11_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf12_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf13_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf14_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf15_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf16_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf17_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf18_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf19_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf20_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf21_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf22_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf23_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf24_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf25_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf26_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf27_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf28_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf29_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf30_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf31_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf32_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf33_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf34_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf35_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf36_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf37_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf38_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf39_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf40_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf41_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf42_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf43_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf44_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf45_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf46_op<float> >::sf3_var_node(float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf47_op<float> >::sf3_var_node(float const&, float const&, float const&) |
12124 | | |
12125 | | inline T value() const exprtk_override |
12126 | 0 | { |
12127 | 0 | return SpecialFunction::process(v0_, v1_, v2_); |
12128 | 0 | } Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf00_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf01_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf02_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf03_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf04_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf05_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf06_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf07_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf08_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf09_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf10_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf11_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf12_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf13_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf14_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf15_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf16_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf17_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf18_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf19_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf20_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf21_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf22_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf23_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf24_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf25_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf26_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf27_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf28_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf29_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf30_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf31_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf32_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf33_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf34_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf35_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf36_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf37_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf38_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf39_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf40_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf41_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf42_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf43_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf44_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf45_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf46_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf47_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf00_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf01_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf02_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf03_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf04_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf05_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf06_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf07_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf08_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf09_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf10_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf11_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf12_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf13_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf14_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf15_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf16_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf17_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf18_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf19_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf20_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf21_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf22_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf23_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf24_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf25_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf26_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf27_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf28_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf29_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf30_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf31_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf32_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf33_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf34_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf35_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf36_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf37_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf38_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf39_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf40_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf41_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf42_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf43_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf44_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf45_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf46_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf47_op<float> >::value() const |
12129 | | |
12130 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12131 | 0 | { |
12132 | 0 | return expression_node<T>::e_trinary; |
12133 | 0 | } Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf00_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf01_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf02_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf03_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf04_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf05_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf06_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf07_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf08_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf09_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf10_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf11_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf12_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf13_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf14_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf15_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf16_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf17_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf18_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf19_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf20_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf21_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf22_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf23_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf24_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf25_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf26_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf27_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf28_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf29_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf30_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf31_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf32_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf33_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf34_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf35_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf36_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf37_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf38_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf39_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf40_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf41_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf42_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf43_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf44_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf45_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf46_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf47_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf00_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf01_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf02_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf03_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf04_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf05_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf06_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf07_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf08_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf09_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf10_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf11_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf12_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf13_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf14_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf15_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf16_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf17_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf18_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf19_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf20_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf21_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf22_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf23_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf24_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf25_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf26_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf27_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf28_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf29_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf30_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf31_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf32_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf33_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf34_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf35_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf36_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf37_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf38_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf39_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf40_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf41_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf42_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf43_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf44_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf45_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf46_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf47_op<float> >::type() const |
12134 | | |
12135 | | private: |
12136 | | |
12137 | | sf3_var_node(const sf3_var_node<T,SpecialFunction>&) exprtk_delete; |
12138 | | sf3_var_node<T,SpecialFunction>& operator=(const sf3_var_node<T,SpecialFunction>&) exprtk_delete; |
12139 | | |
12140 | | const T& v0_; |
12141 | | const T& v1_; |
12142 | | const T& v2_; |
12143 | | }; |
12144 | | |
12145 | | template <typename T, typename SpecialFunction> |
12146 | | class sf4_var_node exprtk_final : public expression_node<T> |
12147 | | { |
12148 | | public: |
12149 | | |
12150 | | typedef expression_node<T>* expression_ptr; |
12151 | | |
12152 | | sf4_var_node(const T& v0, const T& v1, const T& v2, const T& v3) |
12153 | 0 | : v0_(v0) |
12154 | 0 | , v1_(v1) |
12155 | 0 | , v2_(v2) |
12156 | 0 | , v3_(v3) |
12157 | 0 | {} Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf48_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf49_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf50_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf51_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf52_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf53_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf54_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf55_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf56_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf57_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf58_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf59_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf60_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf61_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf62_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf63_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf64_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf65_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf66_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf67_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf68_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf69_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf70_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf71_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf72_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf73_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf74_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf75_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf76_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf77_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf78_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf79_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf80_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf81_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf82_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf83_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf84_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf85_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf86_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf87_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf88_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf89_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf90_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf91_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf92_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf93_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf94_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf95_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf96_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf97_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf98_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf99_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf48_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf49_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf50_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf51_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf52_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf53_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf54_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf55_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf56_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf57_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf58_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf59_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf60_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf61_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf62_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf63_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf64_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf65_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf66_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf67_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf68_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf69_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf70_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf71_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf72_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf73_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf74_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf75_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf76_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf77_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf78_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf79_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf80_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf81_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf82_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf83_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf84_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf85_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf86_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf87_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf88_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf89_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf90_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf91_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf92_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf93_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf94_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf95_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf96_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf97_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf98_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf99_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&) |
12158 | | |
12159 | | inline T value() const exprtk_override |
12160 | 0 | { |
12161 | 0 | return SpecialFunction::process(v0_, v1_, v2_, v3_); |
12162 | 0 | } Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf48_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf49_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf50_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf51_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf52_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf53_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf54_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf55_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf56_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf57_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf58_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf59_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf60_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf61_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf62_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf63_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf64_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf65_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf66_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf67_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf68_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf69_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf70_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf71_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf72_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf73_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf74_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf75_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf76_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf77_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf78_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf79_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf80_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf81_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf82_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf83_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf84_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf85_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf86_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf87_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf88_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf89_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf90_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf91_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf92_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf93_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf94_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf95_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf96_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf97_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf98_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf99_op<double> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf48_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf49_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf50_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf51_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf52_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf53_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf54_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf55_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf56_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf57_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf58_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf59_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf60_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf61_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf62_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf63_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf64_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf65_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf66_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf67_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf68_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf69_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf70_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf71_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf72_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf73_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf74_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf75_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf76_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf77_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf78_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf79_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf80_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf81_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf82_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf83_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf84_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf85_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf86_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf87_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf88_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf89_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf90_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf91_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf92_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf93_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf94_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf95_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf96_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf97_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf98_op<float> >::value() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf99_op<float> >::value() const |
12163 | | |
12164 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12165 | 0 | { |
12166 | 0 | return expression_node<T>::e_trinary; |
12167 | 0 | } Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf48_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf49_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf50_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf51_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf52_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf53_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf54_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf55_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf56_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf57_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf58_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf59_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf60_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf61_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf62_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf63_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf64_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf65_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf66_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf67_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf68_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf69_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf70_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf71_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf72_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf73_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf74_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf75_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf76_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf77_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf78_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf79_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf80_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf81_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf82_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf83_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf84_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf85_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf86_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf87_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf88_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf89_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf90_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf91_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf92_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf93_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf94_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf95_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf96_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf97_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf98_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf99_op<double> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf48_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf49_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf50_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf51_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf52_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf53_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf54_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf55_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf56_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf57_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf58_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf59_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf60_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf61_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf62_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf63_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf64_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf65_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf66_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf67_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf68_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf69_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf70_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf71_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf72_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf73_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf74_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf75_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf76_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf77_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf78_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf79_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf80_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf81_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf82_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf83_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf84_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf85_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf86_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf87_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf88_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf89_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf90_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf91_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf92_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf93_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf94_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf95_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf96_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf97_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf98_op<float> >::type() const Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf99_op<float> >::type() const |
12168 | | |
12169 | | private: |
12170 | | |
12171 | | sf4_var_node(const sf4_var_node<T,SpecialFunction>&) exprtk_delete; |
12172 | | sf4_var_node<T,SpecialFunction>& operator=(const sf4_var_node<T,SpecialFunction>&) exprtk_delete; |
12173 | | |
12174 | | const T& v0_; |
12175 | | const T& v1_; |
12176 | | const T& v2_; |
12177 | | const T& v3_; |
12178 | | }; |
12179 | | |
12180 | | template <typename T, typename VarArgFunction> |
12181 | | class vararg_node exprtk_final : public expression_node<T> |
12182 | | { |
12183 | | public: |
12184 | | |
12185 | | typedef expression_node<T>* expression_ptr; |
12186 | | typedef std::pair<expression_ptr,bool> branch_t; |
12187 | | |
12188 | | template <typename Allocator, |
12189 | | template <typename, typename> class Sequence> |
12190 | | explicit vararg_node(const Sequence<expression_ptr,Allocator>& arg_list) |
12191 | 14 | : initialised_(false) |
12192 | 14 | { |
12193 | 14 | arg_list_.resize(arg_list.size()); |
12194 | | |
12195 | 66 | for (std::size_t i = 0; i < arg_list.size(); ++i) |
12196 | 52 | { |
12197 | 52 | if (arg_list[i] && arg_list[i]->valid()) |
12198 | 52 | { |
12199 | 52 | construct_branch_pair(arg_list_[i],arg_list[i]); |
12200 | 52 | } |
12201 | 0 | else |
12202 | 0 | { |
12203 | 0 | arg_list_.clear(); |
12204 | 0 | return; |
12205 | 0 | } |
12206 | 52 | } |
12207 | | |
12208 | 14 | initialised_ = (arg_list_.size() == arg_list.size()); |
12209 | 14 | assert(valid()); |
12210 | 14 | } Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Line | Count | Source | 12191 | 7 | : initialised_(false) | 12192 | 7 | { | 12193 | 7 | arg_list_.resize(arg_list.size()); | 12194 | | | 12195 | 33 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12196 | 26 | { | 12197 | 26 | if (arg_list[i] && arg_list[i]->valid()) | 12198 | 26 | { | 12199 | 26 | construct_branch_pair(arg_list_[i],arg_list[i]); | 12200 | 26 | } | 12201 | 0 | else | 12202 | 0 | { | 12203 | 0 | arg_list_.clear(); | 12204 | 0 | return; | 12205 | 0 | } | 12206 | 26 | } | 12207 | | | 12208 | 7 | initialised_ = (arg_list_.size() == arg_list.size()); | 12209 | 7 | assert(valid()); | 12210 | 7 | } |
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Line | Count | Source | 12191 | 7 | : initialised_(false) | 12192 | 7 | { | 12193 | 7 | arg_list_.resize(arg_list.size()); | 12194 | | | 12195 | 33 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12196 | 26 | { | 12197 | 26 | if (arg_list[i] && arg_list[i]->valid()) | 12198 | 26 | { | 12199 | 26 | construct_branch_pair(arg_list_[i],arg_list[i]); | 12200 | 26 | } | 12201 | 0 | else | 12202 | 0 | { | 12203 | 0 | arg_list_.clear(); | 12204 | 0 | return; | 12205 | 0 | } | 12206 | 26 | } | 12207 | | | 12208 | 7 | initialised_ = (arg_list_.size() == arg_list.size()); | 12209 | 7 | assert(valid()); | 12210 | 7 | } |
|
12211 | | |
12212 | | inline T value() const exprtk_override |
12213 | 14 | { |
12214 | 14 | return VarArgFunction::process(arg_list_); |
12215 | 14 | } Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::value() const exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::value() const Line | Count | Source | 12213 | 7 | { | 12214 | 7 | return VarArgFunction::process(arg_list_); | 12215 | 7 | } |
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::value() const exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::value() const Line | Count | Source | 12213 | 7 | { | 12214 | 7 | return VarArgFunction::process(arg_list_); | 12215 | 7 | } |
|
12216 | | |
12217 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12218 | 28 | { |
12219 | 28 | return expression_node<T>::e_vararg; |
12220 | 28 | } Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::type() const exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::type() const Line | Count | Source | 12218 | 14 | { | 12219 | 14 | return expression_node<T>::e_vararg; | 12220 | 14 | } |
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::type() const exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::type() const Line | Count | Source | 12218 | 14 | { | 12219 | 14 | return expression_node<T>::e_vararg; | 12220 | 14 | } |
|
12221 | | |
12222 | | inline bool valid() const exprtk_override |
12223 | 28 | { |
12224 | 28 | return initialised_; |
12225 | 28 | } Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::valid() const exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::valid() const Line | Count | Source | 12223 | 14 | { | 12224 | 14 | return initialised_; | 12225 | 14 | } |
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::valid() const exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::valid() const Line | Count | Source | 12223 | 14 | { | 12224 | 14 | return initialised_; | 12225 | 14 | } |
|
12226 | | |
12227 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
12228 | 14 | { |
12229 | 14 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); |
12230 | 14 | } Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 12228 | 7 | { | 12229 | 7 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); | 12230 | 7 | } |
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 12228 | 7 | { | 12229 | 7 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); | 12230 | 7 | } |
|
12231 | | |
12232 | | std::size_t node_depth() const exprtk_override |
12233 | 14 | { |
12234 | 14 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); |
12235 | 14 | } Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::node_depth() const exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::node_depth() const Line | Count | Source | 12233 | 7 | { | 12234 | 7 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); | 12235 | 7 | } |
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::node_depth() const Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::node_depth() const exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::node_depth() const Line | Count | Source | 12233 | 7 | { | 12234 | 7 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); | 12235 | 7 | } |
|
12236 | | |
12237 | | std::size_t size() const |
12238 | | { |
12239 | | return arg_list_.size(); |
12240 | | } |
12241 | | |
12242 | | expression_ptr operator[](const std::size_t& index) const |
12243 | | { |
12244 | | return arg_list_[index].first; |
12245 | | } |
12246 | | |
12247 | | private: |
12248 | | |
12249 | | std::vector<branch_t> arg_list_; |
12250 | | bool initialised_; |
12251 | | }; |
12252 | | |
12253 | | template <typename T, typename VarArgFunction> |
12254 | | class vararg_varnode exprtk_final : public expression_node<T> |
12255 | | { |
12256 | | public: |
12257 | | |
12258 | | typedef expression_node<T>* expression_ptr; |
12259 | | |
12260 | | template <typename Allocator, |
12261 | | template <typename, typename> class Sequence> |
12262 | | explicit vararg_varnode(const Sequence<expression_ptr,Allocator>& arg_list) |
12263 | 0 | : initialised_(false) |
12264 | 0 | { |
12265 | 0 | arg_list_.resize(arg_list.size()); |
12266 | |
|
12267 | 0 | for (std::size_t i = 0; i < arg_list.size(); ++i) |
12268 | 0 | { |
12269 | 0 | if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i])) |
12270 | 0 | { |
12271 | 0 | variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]); |
12272 | 0 | arg_list_[i] = (&var_node_ptr->ref()); |
12273 | 0 | } |
12274 | 0 | else |
12275 | 0 | { |
12276 | 0 | arg_list_.clear(); |
12277 | 0 | return; |
12278 | 0 | } |
12279 | 0 | } |
12280 | | |
12281 | 0 | initialised_ = (arg_list.size() == arg_list_.size()); |
12282 | 0 | assert(valid()); |
12283 | 0 | } Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mul_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_avg_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_min_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_max_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mand_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mul_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_avg_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_min_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_max_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mand_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) |
12284 | | |
12285 | | inline T value() const exprtk_override |
12286 | 0 | { |
12287 | 0 | return VarArgFunction::process(arg_list_); |
12288 | 0 | } Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mul_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_avg_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_min_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_max_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mand_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mul_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_avg_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_min_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_max_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mand_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::value() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::value() const |
12289 | | |
12290 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12291 | 0 | { |
12292 | 0 | return expression_node<T>::e_vararg; |
12293 | 0 | } Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mul_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_avg_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_min_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_max_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mand_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mul_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_avg_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_min_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_max_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mand_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::type() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::type() const |
12294 | | |
12295 | | inline bool valid() const exprtk_override |
12296 | 0 | { |
12297 | 0 | return initialised_; |
12298 | 0 | } Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mul_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_avg_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_min_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_max_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mand_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mul_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_avg_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_min_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_max_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mand_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::valid() const |
12299 | | |
12300 | | private: |
12301 | | |
12302 | | std::vector<const T*> arg_list_; |
12303 | | bool initialised_; |
12304 | | }; |
12305 | | |
12306 | | template <typename T, typename VecFunction> |
12307 | | class vectorize_node exprtk_final : public expression_node<T> |
12308 | | { |
12309 | | public: |
12310 | | |
12311 | | typedef expression_node<T>* expression_ptr; |
12312 | | typedef std::pair<expression_ptr,bool> branch_t; |
12313 | | |
12314 | | explicit vectorize_node(const expression_ptr v) |
12315 | 0 | : ivec_ptr_(0) |
12316 | 0 | { |
12317 | 0 | construct_branch_pair(v_, v); |
12318 | |
|
12319 | 0 | if (is_ivector_node(v_.first)) |
12320 | 0 | { |
12321 | 0 | ivec_ptr_ = dynamic_cast<vector_interface<T>*>(v_.first); |
12322 | 0 | } |
12323 | 0 | } Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::vectorize_node(exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::vectorize_node(exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::vectorize_node(exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::vectorize_node(exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::vectorize_node(exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::vectorize_node(exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::vectorize_node(exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::vectorize_node(exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::vectorize_node(exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::vectorize_node(exprtk::details::expression_node<float>*) |
12324 | | |
12325 | | inline T value() const exprtk_override |
12326 | 0 | { |
12327 | 0 | v_.first->value(); |
12328 | 0 | return VecFunction::process(ivec_ptr_); |
12329 | 0 | } Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::value() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::value() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::value() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::value() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::value() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::value() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::value() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::value() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::value() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::value() const |
12330 | | |
12331 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12332 | 0 | { |
12333 | 0 | return expression_node<T>::e_vecfunc; |
12334 | 0 | } Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::type() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::type() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::type() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::type() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::type() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::type() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::type() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::type() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::type() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::type() const |
12335 | | |
12336 | | inline bool valid() const exprtk_override |
12337 | 0 | { |
12338 | 0 | return ivec_ptr_ && v_.first && v_.first->valid(); |
12339 | 0 | } Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::valid() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::valid() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::valid() const |
12340 | | |
12341 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
12342 | 0 | { |
12343 | 0 | expression_node<T>::ndb_t::collect(v_, node_delete_list); |
12344 | 0 | } Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) |
12345 | | |
12346 | | std::size_t node_depth() const exprtk_override |
12347 | 0 | { |
12348 | 0 | return expression_node<T>::ndb_t::compute_node_depth(v_); |
12349 | 0 | } Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::node_depth() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::node_depth() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::node_depth() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::node_depth() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::node_depth() const Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::node_depth() const |
12350 | | |
12351 | | private: |
12352 | | |
12353 | | vector_interface<T>* ivec_ptr_; |
12354 | | branch_t v_; |
12355 | | }; |
12356 | | |
12357 | | template <typename T> |
12358 | | class assignment_node exprtk_final : public binary_node<T> |
12359 | | { |
12360 | | public: |
12361 | | |
12362 | | typedef expression_node<T>* expression_ptr; |
12363 | | using binary_node<T>::branch; |
12364 | | |
12365 | | assignment_node(const operator_type& opr, |
12366 | | expression_ptr branch0, |
12367 | | expression_ptr branch1) |
12368 | 10 | : binary_node<T>(opr, branch0, branch1) |
12369 | 10 | , var_node_ptr_(0) |
12370 | 10 | { |
12371 | 10 | if (is_variable_node(branch(0))) |
12372 | 10 | { |
12373 | 10 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); |
12374 | 10 | } |
12375 | 10 | } exprtk::details::assignment_node<double>::assignment_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 12368 | 5 | : binary_node<T>(opr, branch0, branch1) | 12369 | 5 | , var_node_ptr_(0) | 12370 | 5 | { | 12371 | 5 | if (is_variable_node(branch(0))) | 12372 | 5 | { | 12373 | 5 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12374 | 5 | } | 12375 | 5 | } |
exprtk::details::assignment_node<float>::assignment_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 12368 | 5 | : binary_node<T>(opr, branch0, branch1) | 12369 | 5 | , var_node_ptr_(0) | 12370 | 5 | { | 12371 | 5 | if (is_variable_node(branch(0))) | 12372 | 5 | { | 12373 | 5 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12374 | 5 | } | 12375 | 5 | } |
|
12376 | | |
12377 | | inline T value() const exprtk_override |
12378 | 10 | { |
12379 | 10 | T& result = var_node_ptr_->ref(); |
12380 | 10 | result = branch(1)->value(); |
12381 | | |
12382 | 10 | return result; |
12383 | 10 | } exprtk::details::assignment_node<double>::value() const Line | Count | Source | 12378 | 5 | { | 12379 | 5 | T& result = var_node_ptr_->ref(); | 12380 | 5 | result = branch(1)->value(); | 12381 | | | 12382 | 5 | return result; | 12383 | 5 | } |
exprtk::details::assignment_node<float>::value() const Line | Count | Source | 12378 | 5 | { | 12379 | 5 | T& result = var_node_ptr_->ref(); | 12380 | 5 | result = branch(1)->value(); | 12381 | | | 12382 | 5 | return result; | 12383 | 5 | } |
|
12384 | | |
12385 | | inline bool valid() const exprtk_override |
12386 | 14 | { |
12387 | 14 | return var_node_ptr_ && binary_node<T>::valid(); |
12388 | 14 | } exprtk::details::assignment_node<double>::valid() const Line | Count | Source | 12386 | 7 | { | 12387 | 7 | return var_node_ptr_ && binary_node<T>::valid(); | 12388 | 7 | } |
exprtk::details::assignment_node<float>::valid() const Line | Count | Source | 12386 | 7 | { | 12387 | 7 | return var_node_ptr_ && binary_node<T>::valid(); | 12388 | 7 | } |
|
12389 | | |
12390 | | private: |
12391 | | |
12392 | | variable_node<T>* var_node_ptr_; |
12393 | | }; |
12394 | | |
12395 | | template <typename T> |
12396 | | class assignment_vec_elem_node exprtk_final : public binary_node<T> |
12397 | | { |
12398 | | public: |
12399 | | |
12400 | | typedef expression_node<T>* expression_ptr; |
12401 | | using binary_node<T>::branch; |
12402 | | |
12403 | | assignment_vec_elem_node(const operator_type& opr, |
12404 | | expression_ptr branch0, |
12405 | | expression_ptr branch1) |
12406 | 0 | : binary_node<T>(opr, branch0, branch1) |
12407 | 0 | , vec_node_ptr_(0) |
12408 | 0 | { |
12409 | 0 | if (is_vector_elem_node(branch(0))) |
12410 | 0 | { |
12411 | 0 | vec_node_ptr_ = static_cast<vector_elem_node<T>*>(branch(0)); |
12412 | 0 | } |
12413 | |
|
12414 | 0 | assert(valid()); |
12415 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<double>::assignment_vec_elem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<float>::assignment_vec_elem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
12416 | | |
12417 | | inline T value() const exprtk_override |
12418 | 0 | { |
12419 | 0 | T& result = vec_node_ptr_->ref(); |
12420 | 0 | result = branch(1)->value(); |
12421 | |
|
12422 | 0 | return result; |
12423 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<float>::value() const |
12424 | | |
12425 | | inline bool valid() const exprtk_override |
12426 | 0 | { |
12427 | 0 | return vec_node_ptr_ && binary_node<T>::valid(); |
12428 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<float>::valid() const |
12429 | | |
12430 | | private: |
12431 | | |
12432 | | vector_elem_node<T>* vec_node_ptr_; |
12433 | | }; |
12434 | | |
12435 | | template <typename T> |
12436 | | class assignment_vec_elem_rtc_node exprtk_final : public binary_node<T> |
12437 | | { |
12438 | | public: |
12439 | | |
12440 | | typedef expression_node<T>* expression_ptr; |
12441 | | using binary_node<T>::branch; |
12442 | | |
12443 | | assignment_vec_elem_rtc_node(const operator_type& opr, |
12444 | | expression_ptr branch0, |
12445 | | expression_ptr branch1) |
12446 | 0 | : binary_node<T>(opr, branch0, branch1) |
12447 | 0 | , vec_node_ptr_(0) |
12448 | 0 | { |
12449 | 0 | if (is_vector_elem_rtc_node(branch(0))) |
12450 | 0 | { |
12451 | 0 | vec_node_ptr_ = static_cast<vector_elem_rtc_node<T>*>(branch(0)); |
12452 | 0 | } |
12453 | |
|
12454 | 0 | assert(valid()); |
12455 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<double>::assignment_vec_elem_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<float>::assignment_vec_elem_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
12456 | | |
12457 | | inline T value() const exprtk_override |
12458 | 0 | { |
12459 | 0 | T& result = vec_node_ptr_->ref(); |
12460 | 0 | result = branch(1)->value(); |
12461 | |
|
12462 | 0 | return result; |
12463 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<float>::value() const |
12464 | | |
12465 | | inline bool valid() const exprtk_override |
12466 | 0 | { |
12467 | 0 | return vec_node_ptr_ && binary_node<T>::valid(); |
12468 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<float>::valid() const |
12469 | | |
12470 | | private: |
12471 | | |
12472 | | vector_elem_rtc_node<T>* vec_node_ptr_; |
12473 | | }; |
12474 | | |
12475 | | template <typename T> |
12476 | | class assignment_rebasevec_elem_node exprtk_final : public binary_node<T> |
12477 | | { |
12478 | | public: |
12479 | | |
12480 | | typedef expression_node<T>* expression_ptr; |
12481 | | using expression_node<T>::branch; |
12482 | | |
12483 | | assignment_rebasevec_elem_node(const operator_type& opr, |
12484 | | expression_ptr branch0, |
12485 | | expression_ptr branch1) |
12486 | 0 | : binary_node<T>(opr, branch0, branch1) |
12487 | 0 | , rbvec_node_ptr_(0) |
12488 | 0 | { |
12489 | 0 | if (is_rebasevector_elem_node(branch(0))) |
12490 | 0 | { |
12491 | 0 | rbvec_node_ptr_ = static_cast<rebasevector_elem_node<T>*>(branch(0)); |
12492 | 0 | } |
12493 | |
|
12494 | 0 | assert(valid()); |
12495 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<double>::assignment_rebasevec_elem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<float>::assignment_rebasevec_elem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
12496 | | |
12497 | | inline T value() const exprtk_override |
12498 | 0 | { |
12499 | 0 | T& result = rbvec_node_ptr_->ref(); |
12500 | 0 | result = branch(1)->value(); |
12501 | |
|
12502 | 0 | return result; |
12503 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<float>::value() const |
12504 | | |
12505 | | inline bool valid() const exprtk_override |
12506 | 0 | { |
12507 | 0 | return rbvec_node_ptr_ && binary_node<T>::valid(); |
12508 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<float>::valid() const |
12509 | | |
12510 | | private: |
12511 | | |
12512 | | rebasevector_elem_node<T>* rbvec_node_ptr_; |
12513 | | }; |
12514 | | |
12515 | | template <typename T> |
12516 | | class assignment_rebasevec_elem_rtc_node exprtk_final : public binary_node<T> |
12517 | | { |
12518 | | public: |
12519 | | |
12520 | | typedef expression_node<T>* expression_ptr; |
12521 | | using expression_node<T>::branch; |
12522 | | |
12523 | | assignment_rebasevec_elem_rtc_node(const operator_type& opr, |
12524 | | expression_ptr branch0, |
12525 | | expression_ptr branch1) |
12526 | 0 | : binary_node<T>(opr, branch0, branch1) |
12527 | 0 | , rbvec_node_ptr_(0) |
12528 | 0 | { |
12529 | 0 | if (is_rebasevector_elem_rtc_node(branch(0))) |
12530 | 0 | { |
12531 | 0 | rbvec_node_ptr_ = static_cast<rebasevector_elem_rtc_node<T>*>(branch(0)); |
12532 | 0 | } |
12533 | |
|
12534 | 0 | assert(valid()); |
12535 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<double>::assignment_rebasevec_elem_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<float>::assignment_rebasevec_elem_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
12536 | | |
12537 | | inline T value() const exprtk_override |
12538 | 0 | { |
12539 | 0 | T& result = rbvec_node_ptr_->ref(); |
12540 | 0 | result = branch(1)->value(); |
12541 | |
|
12542 | 0 | return result; |
12543 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<float>::value() const |
12544 | | |
12545 | | inline bool valid() const exprtk_override |
12546 | 0 | { |
12547 | 0 | return rbvec_node_ptr_ && binary_node<T>::valid(); |
12548 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<float>::valid() const |
12549 | | |
12550 | | private: |
12551 | | |
12552 | | rebasevector_elem_rtc_node<T>* rbvec_node_ptr_; |
12553 | | }; |
12554 | | |
12555 | | template <typename T> |
12556 | | class assignment_rebasevec_celem_node exprtk_final : public binary_node<T> |
12557 | | { |
12558 | | public: |
12559 | | |
12560 | | typedef expression_node<T>* expression_ptr; |
12561 | | using binary_node<T>::branch; |
12562 | | |
12563 | | assignment_rebasevec_celem_node(const operator_type& opr, |
12564 | | expression_ptr branch0, |
12565 | | expression_ptr branch1) |
12566 | 0 | : binary_node<T>(opr, branch0, branch1) |
12567 | 0 | , rbvec_node_ptr_(0) |
12568 | 0 | { |
12569 | 0 | if (is_rebasevector_celem_node(branch(0))) |
12570 | 0 | { |
12571 | 0 | rbvec_node_ptr_ = static_cast<rebasevector_celem_node<T>*>(branch(0)); |
12572 | 0 | } |
12573 | |
|
12574 | 0 | assert(valid()); |
12575 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<double>::assignment_rebasevec_celem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<float>::assignment_rebasevec_celem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
12576 | | |
12577 | | inline T value() const exprtk_override |
12578 | 0 | { |
12579 | 0 | T& result = rbvec_node_ptr_->ref(); |
12580 | 0 | result = branch(1)->value(); |
12581 | |
|
12582 | 0 | return result; |
12583 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<float>::value() const |
12584 | | |
12585 | | inline bool valid() const exprtk_override |
12586 | 0 | { |
12587 | 0 | return rbvec_node_ptr_ && binary_node<T>::valid(); |
12588 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<float>::valid() const |
12589 | | |
12590 | | private: |
12591 | | |
12592 | | rebasevector_celem_node<T>* rbvec_node_ptr_; |
12593 | | }; |
12594 | | |
12595 | | template <typename T> |
12596 | | class assignment_vec_node exprtk_final |
12597 | | : public binary_node <T> |
12598 | | , public vector_interface<T> |
12599 | | { |
12600 | | public: |
12601 | | |
12602 | | typedef expression_node<T>* expression_ptr; |
12603 | | typedef vector_node<T>* vector_node_ptr; |
12604 | | typedef vec_data_store<T> vds_t; |
12605 | | |
12606 | | using binary_node<T>::branch; |
12607 | | |
12608 | | assignment_vec_node(const operator_type& opr, |
12609 | | expression_ptr branch0, |
12610 | | expression_ptr branch1) |
12611 | 0 | : binary_node<T>(opr, branch0, branch1) |
12612 | 0 | , vec_node_ptr_(0) |
12613 | 0 | { |
12614 | 0 | if (is_vector_node(branch(0))) |
12615 | 0 | { |
12616 | 0 | vec_node_ptr_ = static_cast<vector_node<T>*>(branch(0)); |
12617 | 0 | vds() = vec_node_ptr_->vds(); |
12618 | 0 | } |
12619 | |
|
12620 | 0 | assert(valid()); |
12621 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::assignment_vec_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::assignment_vec_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
12622 | | |
12623 | | inline T value() const exprtk_override |
12624 | 0 | { |
12625 | 0 | const T v = branch(1)->value(); |
12626 | |
|
12627 | 0 | T* vec = vds().data(); |
12628 | |
|
12629 | 0 | loop_unroll::details lud(size()); |
12630 | 0 | const T* upper_bound = vec + lud.upper_bound; |
12631 | |
|
12632 | 0 | while (vec < upper_bound) |
12633 | 0 | { |
12634 | 0 | #define exprtk_loop(N) \ |
12635 | 0 | vec[N] = v; \ |
12636 | 0 |
|
12637 | 0 | exprtk_loop( 0) exprtk_loop( 1) |
12638 | 0 | exprtk_loop( 2) exprtk_loop( 3) |
12639 | 0 | #ifndef exprtk_disable_superscalar_unroll |
12640 | 0 | exprtk_loop( 4) exprtk_loop( 5) |
12641 | 0 | exprtk_loop( 6) exprtk_loop( 7) |
12642 | 0 | exprtk_loop( 8) exprtk_loop( 9) |
12643 | 0 | exprtk_loop(10) exprtk_loop(11) |
12644 | 0 | exprtk_loop(12) exprtk_loop(13) |
12645 | 0 | exprtk_loop(14) exprtk_loop(15) |
12646 | 0 | #endif |
12647 | |
|
12648 | 0 | vec += lud.batch_size; |
12649 | 0 | } |
12650 | |
|
12651 | 0 | switch (lud.remainder) |
12652 | 0 | { |
12653 | 0 | #define case_stmt(N) \ |
12654 | 0 | case N : *vec++ = v; \ |
12655 | 0 | exprtk_fallthrough \ |
12656 | 0 | |
12657 | 0 | #ifndef exprtk_disable_superscalar_unroll |
12658 | 0 | case_stmt(15) case_stmt(14) |
12659 | 0 | case_stmt(13) case_stmt(12) |
12660 | 0 | case_stmt(11) case_stmt(10) |
12661 | 0 | case_stmt( 9) case_stmt( 8) |
12662 | 0 | case_stmt( 7) case_stmt( 6) |
12663 | 0 | case_stmt( 5) case_stmt( 4) |
12664 | 0 | #endif |
12665 | 0 | case_stmt( 3) case_stmt( 2) |
12666 | 0 | case 1 : *vec++ = v; |
12667 | 0 | } |
12668 | |
|
12669 | 0 | #undef exprtk_loop |
12670 | 0 | #undef case_stmt |
12671 | |
|
12672 | 0 | return vec_node_ptr_->value(); |
12673 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::value() const |
12674 | | |
12675 | | vector_node_ptr vec() const exprtk_override |
12676 | 0 | { |
12677 | 0 | return vec_node_ptr_; |
12678 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vec() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vec() const |
12679 | | |
12680 | | vector_node_ptr vec() exprtk_override |
12681 | 0 | { |
12682 | 0 | return vec_node_ptr_; |
12683 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vec() Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vec() |
12684 | | |
12685 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12686 | 0 | { |
12687 | 0 | return expression_node<T>::e_vecvalass; |
12688 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::type() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::type() const |
12689 | | |
12690 | | inline bool valid() const exprtk_override |
12691 | 0 | { |
12692 | 0 | return |
12693 | 0 | vec_node_ptr_ && |
12694 | 0 | (vds().size() <= vec_node_ptr_->vec_holder().base_size()) && |
12695 | 0 | binary_node<T>::valid(); |
12696 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::valid() const |
12697 | | |
12698 | | std::size_t size() const exprtk_override |
12699 | 0 | { |
12700 | 0 | return vec_node_ptr_->vec_holder().size(); |
12701 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::size() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::size() const |
12702 | | |
12703 | | std::size_t base_size() const exprtk_override |
12704 | 0 | { |
12705 | 0 | return vec_node_ptr_->vec_holder().base_size(); |
12706 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::base_size() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::base_size() const |
12707 | | |
12708 | | vds_t& vds() exprtk_override |
12709 | 0 | { |
12710 | 0 | return vds_; |
12711 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vds() Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vds() |
12712 | | |
12713 | | const vds_t& vds() const exprtk_override |
12714 | 0 | { |
12715 | 0 | return vds_; |
12716 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vds() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vds() const |
12717 | | |
12718 | | private: |
12719 | | |
12720 | | vector_node<T>* vec_node_ptr_; |
12721 | | vds_t vds_; |
12722 | | }; |
12723 | | |
12724 | | template <typename T> |
12725 | | class assignment_vecvec_node exprtk_final |
12726 | | : public binary_node <T> |
12727 | | , public vector_interface<T> |
12728 | | { |
12729 | | public: |
12730 | | |
12731 | | typedef expression_node<T>* expression_ptr; |
12732 | | typedef vector_node<T>* vector_node_ptr; |
12733 | | typedef vec_data_store<T> vds_t; |
12734 | | |
12735 | | using binary_node<T>::branch; |
12736 | | |
12737 | | assignment_vecvec_node(const operator_type& opr, |
12738 | | expression_ptr branch0, |
12739 | | expression_ptr branch1) |
12740 | 0 | : binary_node<T>(opr, branch0, branch1) |
12741 | 0 | , vec0_node_ptr_(0) |
12742 | 0 | , vec1_node_ptr_(0) |
12743 | 0 | , initialised_(false) |
12744 | 0 | , src_is_ivec_(false) |
12745 | 0 | { |
12746 | 0 | if (is_vector_node(branch(0))) |
12747 | 0 | { |
12748 | 0 | vec0_node_ptr_ = static_cast<vector_node<T>*>(branch(0)); |
12749 | 0 | vds() = vec0_node_ptr_->vds(); |
12750 | 0 | } |
12751 | |
|
12752 | 0 | if (is_vector_node(branch(1))) |
12753 | 0 | { |
12754 | 0 | vec1_node_ptr_ = static_cast<vector_node<T>*>(branch(1)); |
12755 | 0 | vds_t::match_sizes(vds(),vec1_node_ptr_->vds()); |
12756 | 0 | } |
12757 | 0 | else if (is_ivector_node(branch(1))) |
12758 | 0 | { |
12759 | 0 | vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0); |
12760 | |
|
12761 | 0 | if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(1)))) |
12762 | 0 | { |
12763 | 0 | vec1_node_ptr_ = vi->vec(); |
12764 | |
|
12765 | 0 | if (!vi->side_effect()) |
12766 | 0 | { |
12767 | 0 | vi->vds() = vds(); |
12768 | 0 | src_is_ivec_ = true; |
12769 | 0 | } |
12770 | 0 | else |
12771 | 0 | vds_t::match_sizes(vds(),vi->vds()); |
12772 | 0 | } |
12773 | 0 | } |
12774 | |
|
12775 | 0 | initialised_ = |
12776 | 0 | vec0_node_ptr_ && |
12777 | 0 | vec1_node_ptr_ && |
12778 | 0 | (size() <= base_size()) && |
12779 | 0 | (vds_.size() <= base_size()) && |
12780 | 0 | binary_node<T>::valid(); |
12781 | |
|
12782 | 0 | assert(valid()); |
12783 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::assignment_vecvec_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::assignment_vecvec_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
12784 | | |
12785 | | inline T value() const exprtk_override |
12786 | 0 | { |
12787 | 0 | branch(1)->value(); |
12788 | |
|
12789 | 0 | if (src_is_ivec_) |
12790 | 0 | return vec0_node_ptr_->value(); |
12791 | | |
12792 | 0 | T* vec0 = vec0_node_ptr_->vds().data(); |
12793 | 0 | T* vec1 = vec1_node_ptr_->vds().data(); |
12794 | |
|
12795 | 0 | loop_unroll::details lud(size()); |
12796 | 0 | const T* upper_bound = vec0 + lud.upper_bound; |
12797 | |
|
12798 | 0 | while (vec0 < upper_bound) |
12799 | 0 | { |
12800 | 0 | #define exprtk_loop(N) \ |
12801 | 0 | vec0[N] = vec1[N]; \ |
12802 | 0 |
|
12803 | 0 | exprtk_loop( 0) exprtk_loop( 1) |
12804 | 0 | exprtk_loop( 2) exprtk_loop( 3) |
12805 | 0 | #ifndef exprtk_disable_superscalar_unroll |
12806 | 0 | exprtk_loop( 4) exprtk_loop( 5) |
12807 | 0 | exprtk_loop( 6) exprtk_loop( 7) |
12808 | 0 | exprtk_loop( 8) exprtk_loop( 9) |
12809 | 0 | exprtk_loop(10) exprtk_loop(11) |
12810 | 0 | exprtk_loop(12) exprtk_loop(13) |
12811 | 0 | exprtk_loop(14) exprtk_loop(15) |
12812 | 0 | #endif |
12813 | |
|
12814 | 0 | vec0 += lud.batch_size; |
12815 | 0 | vec1 += lud.batch_size; |
12816 | 0 | } |
12817 | |
|
12818 | 0 | switch (lud.remainder) |
12819 | 0 | { |
12820 | 0 | #define case_stmt(N,fall_through) \ |
12821 | 0 | case N : *vec0++ = *vec1++; \ |
12822 | 0 | fall_through \ |
12823 | 0 | |
12824 | 0 | #ifndef exprtk_disable_superscalar_unroll |
12825 | 0 | case_stmt(15, exprtk_fallthrough) case_stmt(14, exprtk_fallthrough) |
12826 | 0 | case_stmt(13, exprtk_fallthrough) case_stmt(12, exprtk_fallthrough) |
12827 | 0 | case_stmt(11, exprtk_fallthrough) case_stmt(10, exprtk_fallthrough) |
12828 | 0 | case_stmt( 9, exprtk_fallthrough) case_stmt( 8, exprtk_fallthrough) |
12829 | 0 | case_stmt( 7, exprtk_fallthrough) case_stmt( 6, exprtk_fallthrough) |
12830 | 0 | case_stmt( 5, exprtk_fallthrough) case_stmt( 4, exprtk_fallthrough) |
12831 | 0 | #endif |
12832 | 0 | case_stmt( 3, exprtk_fallthrough) case_stmt( 2, exprtk_fallthrough) |
12833 | 0 | case_stmt( 1, (void)0;) |
12834 | 0 | } |
12835 | |
|
12836 | 0 | #undef exprtk_loop |
12837 | 0 | #undef case_stmt |
12838 | |
|
12839 | 0 | return vec0_node_ptr_->value(); |
12840 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::value() const |
12841 | | |
12842 | | vector_node_ptr vec() exprtk_override |
12843 | 0 | { |
12844 | 0 | return vec0_node_ptr_; |
12845 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vec() Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vec() |
12846 | | |
12847 | | vector_node_ptr vec() const exprtk_override |
12848 | 0 | { |
12849 | 0 | return vec0_node_ptr_; |
12850 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vec() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vec() const |
12851 | | |
12852 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12853 | 0 | { |
12854 | 0 | return expression_node<T>::e_vecvecass; |
12855 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::type() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::type() const |
12856 | | |
12857 | | inline bool valid() const exprtk_override |
12858 | 0 | { |
12859 | 0 | return initialised_; |
12860 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::valid() const |
12861 | | |
12862 | | std::size_t size() const exprtk_override |
12863 | 0 | { |
12864 | 0 | return std::min( |
12865 | 0 | vec0_node_ptr_->vec_holder().size(), |
12866 | 0 | vec1_node_ptr_->vec_holder().size()); |
12867 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::size() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::size() const |
12868 | | |
12869 | | std::size_t base_size() const exprtk_override |
12870 | 0 | { |
12871 | 0 | return std::min( |
12872 | 0 | vec0_node_ptr_->vec_holder().base_size(), |
12873 | 0 | vec1_node_ptr_->vec_holder().base_size()); |
12874 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::base_size() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::base_size() const |
12875 | | |
12876 | | vds_t& vds() exprtk_override |
12877 | 0 | { |
12878 | 0 | return vds_; |
12879 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vds() Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vds() |
12880 | | |
12881 | | const vds_t& vds() const exprtk_override |
12882 | 0 | { |
12883 | 0 | return vds_; |
12884 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vds() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vds() const |
12885 | | |
12886 | | private: |
12887 | | |
12888 | | vector_node<T>* vec0_node_ptr_; |
12889 | | vector_node<T>* vec1_node_ptr_; |
12890 | | bool initialised_; |
12891 | | bool src_is_ivec_; |
12892 | | vds_t vds_; |
12893 | | }; |
12894 | | |
12895 | | template <typename T, typename Operation> |
12896 | | class assignment_op_node exprtk_final : public binary_node<T> |
12897 | | { |
12898 | | public: |
12899 | | |
12900 | | typedef expression_node<T>* expression_ptr; |
12901 | | using binary_node<T>::branch; |
12902 | | |
12903 | | assignment_op_node(const operator_type& opr, |
12904 | | expression_ptr branch0, |
12905 | | expression_ptr branch1) |
12906 | 142 | : binary_node<T>(opr, branch0, branch1) |
12907 | 142 | , var_node_ptr_(0) |
12908 | 142 | { |
12909 | 142 | if (is_variable_node(branch(0))) |
12910 | 142 | { |
12911 | 142 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); |
12912 | 142 | } |
12913 | | |
12914 | 142 | assert(valid()); |
12915 | 142 | } exprtk::details::assignment_op_node<double, exprtk::details::add_op<double> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 12906 | 4 | : binary_node<T>(opr, branch0, branch1) | 12907 | 4 | , var_node_ptr_(0) | 12908 | 4 | { | 12909 | 4 | if (is_variable_node(branch(0))) | 12910 | 4 | { | 12911 | 4 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12912 | 4 | } | 12913 | | | 12914 | 4 | assert(valid()); | 12915 | 4 | } |
exprtk::details::assignment_op_node<double, exprtk::details::sub_op<double> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 12906 | 9 | : binary_node<T>(opr, branch0, branch1) | 12907 | 9 | , var_node_ptr_(0) | 12908 | 9 | { | 12909 | 9 | if (is_variable_node(branch(0))) | 12910 | 9 | { | 12911 | 9 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12912 | 9 | } | 12913 | | | 12914 | 9 | assert(valid()); | 12915 | 9 | } |
exprtk::details::assignment_op_node<double, exprtk::details::mul_op<double> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 12906 | 9 | : binary_node<T>(opr, branch0, branch1) | 12907 | 9 | , var_node_ptr_(0) | 12908 | 9 | { | 12909 | 9 | if (is_variable_node(branch(0))) | 12910 | 9 | { | 12911 | 9 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12912 | 9 | } | 12913 | | | 12914 | 9 | assert(valid()); | 12915 | 9 | } |
exprtk::details::assignment_op_node<double, exprtk::details::div_op<double> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 12906 | 4 | : binary_node<T>(opr, branch0, branch1) | 12907 | 4 | , var_node_ptr_(0) | 12908 | 4 | { | 12909 | 4 | if (is_variable_node(branch(0))) | 12910 | 4 | { | 12911 | 4 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12912 | 4 | } | 12913 | | | 12914 | 4 | assert(valid()); | 12915 | 4 | } |
exprtk::details::assignment_op_node<double, exprtk::details::mod_op<double> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 12906 | 45 | : binary_node<T>(opr, branch0, branch1) | 12907 | 45 | , var_node_ptr_(0) | 12908 | 45 | { | 12909 | 45 | if (is_variable_node(branch(0))) | 12910 | 45 | { | 12911 | 45 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12912 | 45 | } | 12913 | | | 12914 | 45 | assert(valid()); | 12915 | 45 | } |
exprtk::details::assignment_op_node<float, exprtk::details::add_op<float> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 12906 | 4 | : binary_node<T>(opr, branch0, branch1) | 12907 | 4 | , var_node_ptr_(0) | 12908 | 4 | { | 12909 | 4 | if (is_variable_node(branch(0))) | 12910 | 4 | { | 12911 | 4 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12912 | 4 | } | 12913 | | | 12914 | 4 | assert(valid()); | 12915 | 4 | } |
exprtk::details::assignment_op_node<float, exprtk::details::sub_op<float> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 12906 | 9 | : binary_node<T>(opr, branch0, branch1) | 12907 | 9 | , var_node_ptr_(0) | 12908 | 9 | { | 12909 | 9 | if (is_variable_node(branch(0))) | 12910 | 9 | { | 12911 | 9 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12912 | 9 | } | 12913 | | | 12914 | 9 | assert(valid()); | 12915 | 9 | } |
exprtk::details::assignment_op_node<float, exprtk::details::mul_op<float> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 12906 | 9 | : binary_node<T>(opr, branch0, branch1) | 12907 | 9 | , var_node_ptr_(0) | 12908 | 9 | { | 12909 | 9 | if (is_variable_node(branch(0))) | 12910 | 9 | { | 12911 | 9 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12912 | 9 | } | 12913 | | | 12914 | 9 | assert(valid()); | 12915 | 9 | } |
exprtk::details::assignment_op_node<float, exprtk::details::div_op<float> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 12906 | 4 | : binary_node<T>(opr, branch0, branch1) | 12907 | 4 | , var_node_ptr_(0) | 12908 | 4 | { | 12909 | 4 | if (is_variable_node(branch(0))) | 12910 | 4 | { | 12911 | 4 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12912 | 4 | } | 12913 | | | 12914 | 4 | assert(valid()); | 12915 | 4 | } |
exprtk::details::assignment_op_node<float, exprtk::details::mod_op<float> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 12906 | 45 | : binary_node<T>(opr, branch0, branch1) | 12907 | 45 | , var_node_ptr_(0) | 12908 | 45 | { | 12909 | 45 | if (is_variable_node(branch(0))) | 12910 | 45 | { | 12911 | 45 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12912 | 45 | } | 12913 | | | 12914 | 45 | assert(valid()); | 12915 | 45 | } |
|
12916 | | |
12917 | | inline T value() const exprtk_override |
12918 | 64 | { |
12919 | 64 | T& v = var_node_ptr_->ref(); |
12920 | 64 | v = Operation::process(v,branch(1)->value()); |
12921 | | |
12922 | 64 | return v; |
12923 | 64 | } exprtk::details::assignment_op_node<double, exprtk::details::add_op<double> >::value() const Line | Count | Source | 12918 | 3 | { | 12919 | 3 | T& v = var_node_ptr_->ref(); | 12920 | 3 | v = Operation::process(v,branch(1)->value()); | 12921 | | | 12922 | 3 | return v; | 12923 | 3 | } |
exprtk::details::assignment_op_node<double, exprtk::details::sub_op<double> >::value() const Line | Count | Source | 12918 | 2 | { | 12919 | 2 | T& v = var_node_ptr_->ref(); | 12920 | 2 | v = Operation::process(v,branch(1)->value()); | 12921 | | | 12922 | 2 | return v; | 12923 | 2 | } |
exprtk::details::assignment_op_node<double, exprtk::details::mul_op<double> >::value() const Line | Count | Source | 12918 | 7 | { | 12919 | 7 | T& v = var_node_ptr_->ref(); | 12920 | 7 | v = Operation::process(v,branch(1)->value()); | 12921 | | | 12922 | 7 | return v; | 12923 | 7 | } |
exprtk::details::assignment_op_node<double, exprtk::details::div_op<double> >::value() const Line | Count | Source | 12918 | 4 | { | 12919 | 4 | T& v = var_node_ptr_->ref(); | 12920 | 4 | v = Operation::process(v,branch(1)->value()); | 12921 | | | 12922 | 4 | return v; | 12923 | 4 | } |
exprtk::details::assignment_op_node<double, exprtk::details::mod_op<double> >::value() const Line | Count | Source | 12918 | 16 | { | 12919 | 16 | T& v = var_node_ptr_->ref(); | 12920 | 16 | v = Operation::process(v,branch(1)->value()); | 12921 | | | 12922 | 16 | return v; | 12923 | 16 | } |
exprtk::details::assignment_op_node<float, exprtk::details::add_op<float> >::value() const Line | Count | Source | 12918 | 3 | { | 12919 | 3 | T& v = var_node_ptr_->ref(); | 12920 | 3 | v = Operation::process(v,branch(1)->value()); | 12921 | | | 12922 | 3 | return v; | 12923 | 3 | } |
exprtk::details::assignment_op_node<float, exprtk::details::sub_op<float> >::value() const Line | Count | Source | 12918 | 2 | { | 12919 | 2 | T& v = var_node_ptr_->ref(); | 12920 | 2 | v = Operation::process(v,branch(1)->value()); | 12921 | | | 12922 | 2 | return v; | 12923 | 2 | } |
exprtk::details::assignment_op_node<float, exprtk::details::mul_op<float> >::value() const Line | Count | Source | 12918 | 7 | { | 12919 | 7 | T& v = var_node_ptr_->ref(); | 12920 | 7 | v = Operation::process(v,branch(1)->value()); | 12921 | | | 12922 | 7 | return v; | 12923 | 7 | } |
exprtk::details::assignment_op_node<float, exprtk::details::div_op<float> >::value() const Line | Count | Source | 12918 | 4 | { | 12919 | 4 | T& v = var_node_ptr_->ref(); | 12920 | 4 | v = Operation::process(v,branch(1)->value()); | 12921 | | | 12922 | 4 | return v; | 12923 | 4 | } |
exprtk::details::assignment_op_node<float, exprtk::details::mod_op<float> >::value() const Line | Count | Source | 12918 | 16 | { | 12919 | 16 | T& v = var_node_ptr_->ref(); | 12920 | 16 | v = Operation::process(v,branch(1)->value()); | 12921 | | | 12922 | 16 | return v; | 12923 | 16 | } |
|
12924 | | |
12925 | | inline bool valid() const exprtk_override |
12926 | 742 | { |
12927 | 742 | return var_node_ptr_ && binary_node<T>::valid(); |
12928 | 742 | } exprtk::details::assignment_op_node<double, exprtk::details::add_op<double> >::valid() const Line | Count | Source | 12926 | 8 | { | 12927 | 8 | return var_node_ptr_ && binary_node<T>::valid(); | 12928 | 8 | } |
exprtk::details::assignment_op_node<double, exprtk::details::sub_op<double> >::valid() const Line | Count | Source | 12926 | 25 | { | 12927 | 25 | return var_node_ptr_ && binary_node<T>::valid(); | 12928 | 25 | } |
exprtk::details::assignment_op_node<double, exprtk::details::mul_op<double> >::valid() const Line | Count | Source | 12926 | 27 | { | 12927 | 27 | return var_node_ptr_ && binary_node<T>::valid(); | 12928 | 27 | } |
exprtk::details::assignment_op_node<double, exprtk::details::div_op<double> >::valid() const Line | Count | Source | 12926 | 8 | { | 12927 | 8 | return var_node_ptr_ && binary_node<T>::valid(); | 12928 | 8 | } |
exprtk::details::assignment_op_node<double, exprtk::details::mod_op<double> >::valid() const Line | Count | Source | 12926 | 303 | { | 12927 | 303 | return var_node_ptr_ && binary_node<T>::valid(); | 12928 | 303 | } |
exprtk::details::assignment_op_node<float, exprtk::details::add_op<float> >::valid() const Line | Count | Source | 12926 | 8 | { | 12927 | 8 | return var_node_ptr_ && binary_node<T>::valid(); | 12928 | 8 | } |
exprtk::details::assignment_op_node<float, exprtk::details::sub_op<float> >::valid() const Line | Count | Source | 12926 | 25 | { | 12927 | 25 | return var_node_ptr_ && binary_node<T>::valid(); | 12928 | 25 | } |
exprtk::details::assignment_op_node<float, exprtk::details::mul_op<float> >::valid() const Line | Count | Source | 12926 | 27 | { | 12927 | 27 | return var_node_ptr_ && binary_node<T>::valid(); | 12928 | 27 | } |
exprtk::details::assignment_op_node<float, exprtk::details::div_op<float> >::valid() const Line | Count | Source | 12926 | 8 | { | 12927 | 8 | return var_node_ptr_ && binary_node<T>::valid(); | 12928 | 8 | } |
exprtk::details::assignment_op_node<float, exprtk::details::mod_op<float> >::valid() const Line | Count | Source | 12926 | 303 | { | 12927 | 303 | return var_node_ptr_ && binary_node<T>::valid(); | 12928 | 303 | } |
|
12929 | | |
12930 | | private: |
12931 | | |
12932 | | variable_node<T>* var_node_ptr_; |
12933 | | }; |
12934 | | |
12935 | | template <typename T, typename Operation> |
12936 | | class assignment_vec_elem_op_node exprtk_final : public binary_node<T> |
12937 | | { |
12938 | | public: |
12939 | | |
12940 | | typedef expression_node<T>* expression_ptr; |
12941 | | using binary_node<T>::branch; |
12942 | | |
12943 | | assignment_vec_elem_op_node(const operator_type& opr, |
12944 | | expression_ptr branch0, |
12945 | | expression_ptr branch1) |
12946 | 0 | : binary_node<T>(opr, branch0, branch1) |
12947 | 0 | , vec_node_ptr_(0) |
12948 | 0 | { |
12949 | 0 | if (is_vector_elem_node(branch(0))) |
12950 | 0 | { |
12951 | 0 | vec_node_ptr_ = static_cast<vector_elem_node<T>*>(branch(0)); |
12952 | 0 | } |
12953 | |
|
12954 | 0 | assert(valid()); |
12955 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::add_op<double> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::sub_op<double> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mul_op<double> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::div_op<double> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mod_op<double> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::add_op<float> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::sub_op<float> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mul_op<float> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::div_op<float> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mod_op<float> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
12956 | | |
12957 | | inline T value() const exprtk_override |
12958 | 0 | { |
12959 | 0 | T& v = vec_node_ptr_->ref(); |
12960 | 0 | v = Operation::process(v,branch(1)->value()); |
12961 | |
|
12962 | 0 | return v; |
12963 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::add_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::sub_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mul_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::div_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mod_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::add_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::sub_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mul_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::div_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mod_op<float> >::value() const |
12964 | | |
12965 | | inline bool valid() const exprtk_override |
12966 | 0 | { |
12967 | 0 | return vec_node_ptr_ && binary_node<T>::valid(); |
12968 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::add_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::sub_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mul_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::div_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mod_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::add_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::sub_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mul_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::div_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mod_op<float> >::valid() const |
12969 | | |
12970 | | private: |
12971 | | |
12972 | | vector_elem_node<T>* vec_node_ptr_; |
12973 | | }; |
12974 | | |
12975 | | template <typename T, typename Operation> |
12976 | | class assignment_vec_elem_op_rtc_node exprtk_final : public binary_node<T> |
12977 | | { |
12978 | | public: |
12979 | | |
12980 | | typedef expression_node<T>* expression_ptr; |
12981 | | using binary_node<T>::branch; |
12982 | | |
12983 | | assignment_vec_elem_op_rtc_node(const operator_type& opr, |
12984 | | expression_ptr branch0, |
12985 | | expression_ptr branch1) |
12986 | 0 | : binary_node<T>(opr, branch0, branch1) |
12987 | 0 | , vec_node_ptr_(0) |
12988 | 0 | { |
12989 | 0 | if (is_vector_elem_rtc_node(branch(0))) |
12990 | 0 | { |
12991 | 0 | vec_node_ptr_ = static_cast<vector_elem_rtc_node<T>*>(branch(0)); |
12992 | 0 | } |
12993 | |
|
12994 | 0 | assert(valid()); |
12995 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
12996 | | |
12997 | | inline T value() const exprtk_override |
12998 | 0 | { |
12999 | 0 | T& v = vec_node_ptr_->ref(); |
13000 | 0 | v = Operation::process(v,branch(1)->value()); |
13001 | |
|
13002 | 0 | return v; |
13003 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::value() const |
13004 | | |
13005 | | inline bool valid() const exprtk_override |
13006 | 0 | { |
13007 | 0 | return vec_node_ptr_ && binary_node<T>::valid(); |
13008 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::valid() const |
13009 | | |
13010 | | private: |
13011 | | |
13012 | | vector_elem_rtc_node<T>* vec_node_ptr_; |
13013 | | }; |
13014 | | |
13015 | | template <typename T, typename Operation> |
13016 | | class assignment_vec_celem_op_rtc_node exprtk_final : public binary_node<T> |
13017 | | { |
13018 | | public: |
13019 | | |
13020 | | typedef expression_node<T>* expression_ptr; |
13021 | | using binary_node<T>::branch; |
13022 | | |
13023 | | assignment_vec_celem_op_rtc_node(const operator_type& opr, |
13024 | | expression_ptr branch0, |
13025 | | expression_ptr branch1) |
13026 | 0 | : binary_node<T>(opr, branch0, branch1) |
13027 | 0 | , vec_node_ptr_(0) |
13028 | 0 | { |
13029 | 0 | if (is_vector_celem_rtc_node(branch(0))) |
13030 | 0 | { |
13031 | 0 | vec_node_ptr_ = static_cast<vector_celem_rtc_node<T>*>(branch(0)); |
13032 | 0 | } |
13033 | |
|
13034 | 0 | assert(valid()); |
13035 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
13036 | | |
13037 | | inline T value() const exprtk_override |
13038 | 0 | { |
13039 | 0 | T& v = vec_node_ptr_->ref(); |
13040 | 0 | v = Operation::process(v,branch(1)->value()); |
13041 | |
|
13042 | 0 | return v; |
13043 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::value() const |
13044 | | |
13045 | | inline bool valid() const exprtk_override |
13046 | 0 | { |
13047 | 0 | return vec_node_ptr_ && binary_node<T>::valid(); |
13048 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::valid() const |
13049 | | |
13050 | | private: |
13051 | | |
13052 | | vector_celem_rtc_node<T>* vec_node_ptr_; |
13053 | | }; |
13054 | | |
13055 | | template <typename T, typename Operation> |
13056 | | class assignment_rebasevec_elem_op_node exprtk_final : public binary_node<T> |
13057 | | { |
13058 | | public: |
13059 | | |
13060 | | typedef expression_node<T>* expression_ptr; |
13061 | | using binary_node<T>::branch; |
13062 | | |
13063 | | assignment_rebasevec_elem_op_node(const operator_type& opr, |
13064 | | expression_ptr branch0, |
13065 | | expression_ptr branch1) |
13066 | 0 | : binary_node<T>(opr, branch0, branch1) |
13067 | 0 | , rbvec_node_ptr_(0) |
13068 | 0 | { |
13069 | 0 | if (is_rebasevector_elem_node(branch(0))) |
13070 | 0 | { |
13071 | 0 | rbvec_node_ptr_ = static_cast<rebasevector_elem_node<T>*>(branch(0)); |
13072 | 0 | } |
13073 | |
|
13074 | 0 | assert(valid()); |
13075 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::add_op<double> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::sub_op<double> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mul_op<double> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::div_op<double> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mod_op<double> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::add_op<float> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::sub_op<float> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mul_op<float> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::div_op<float> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mod_op<float> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
13076 | | |
13077 | | inline T value() const exprtk_override |
13078 | 0 | { |
13079 | 0 | T& v = rbvec_node_ptr_->ref(); |
13080 | 0 | v = Operation::process(v,branch(1)->value()); |
13081 | |
|
13082 | 0 | return v; |
13083 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::add_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::sub_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mul_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::div_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mod_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::add_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::sub_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mul_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::div_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mod_op<float> >::value() const |
13084 | | |
13085 | | inline bool valid() const exprtk_override |
13086 | 0 | { |
13087 | 0 | return rbvec_node_ptr_ && binary_node<T>::valid(); |
13088 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::add_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::sub_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mul_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::div_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mod_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::add_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::sub_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mul_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::div_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mod_op<float> >::valid() const |
13089 | | |
13090 | | private: |
13091 | | |
13092 | | rebasevector_elem_node<T>* rbvec_node_ptr_; |
13093 | | }; |
13094 | | |
13095 | | template <typename T, typename Operation> |
13096 | | class assignment_rebasevec_celem_op_node exprtk_final : public binary_node<T> |
13097 | | { |
13098 | | public: |
13099 | | |
13100 | | typedef expression_node<T>* expression_ptr; |
13101 | | using binary_node<T>::branch; |
13102 | | |
13103 | | assignment_rebasevec_celem_op_node(const operator_type& opr, |
13104 | | expression_ptr branch0, |
13105 | | expression_ptr branch1) |
13106 | 0 | : binary_node<T>(opr, branch0, branch1) |
13107 | 0 | , rbvec_node_ptr_(0) |
13108 | 0 | { |
13109 | 0 | if (is_rebasevector_celem_node(branch(0))) |
13110 | 0 | { |
13111 | 0 | rbvec_node_ptr_ = static_cast<rebasevector_celem_node<T>*>(branch(0)); |
13112 | 0 | } |
13113 | |
|
13114 | 0 | assert(valid()); |
13115 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::add_op<double> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::sub_op<double> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mul_op<double> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::div_op<double> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mod_op<double> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::add_op<float> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::sub_op<float> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mul_op<float> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::div_op<float> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mod_op<float> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
13116 | | |
13117 | | inline T value() const exprtk_override |
13118 | 0 | { |
13119 | 0 | T& v = rbvec_node_ptr_->ref(); |
13120 | 0 | v = Operation::process(v,branch(1)->value()); |
13121 | |
|
13122 | 0 | return v; |
13123 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::add_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::sub_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mul_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::div_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mod_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::add_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::sub_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mul_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::div_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mod_op<float> >::value() const |
13124 | | |
13125 | | inline bool valid() const exprtk_override |
13126 | 0 | { |
13127 | 0 | return rbvec_node_ptr_ && binary_node<T>::valid(); |
13128 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::add_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::sub_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mul_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::div_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mod_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::add_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::sub_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mul_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::div_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mod_op<float> >::valid() const |
13129 | | |
13130 | | private: |
13131 | | |
13132 | | rebasevector_celem_node<T>* rbvec_node_ptr_; |
13133 | | }; |
13134 | | |
13135 | | template <typename T, typename Operation> |
13136 | | class assignment_rebasevec_elem_op_rtc_node exprtk_final : public binary_node<T> |
13137 | | { |
13138 | | public: |
13139 | | |
13140 | | typedef expression_node<T>* expression_ptr; |
13141 | | using binary_node<T>::branch; |
13142 | | |
13143 | | assignment_rebasevec_elem_op_rtc_node(const operator_type& opr, |
13144 | | expression_ptr branch0, |
13145 | | expression_ptr branch1) |
13146 | 0 | : binary_node<T>(opr, branch0, branch1) |
13147 | 0 | , rbvec_node_ptr_(0) |
13148 | 0 | { |
13149 | 0 | if (is_rebasevector_elem_rtc_node(branch(0))) |
13150 | 0 | { |
13151 | 0 | rbvec_node_ptr_ = static_cast<rebasevector_elem_rtc_node<T>*>(branch(0)); |
13152 | 0 | } |
13153 | |
|
13154 | 0 | assert(valid()); |
13155 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
13156 | | |
13157 | | inline T value() const exprtk_override |
13158 | 0 | { |
13159 | 0 | T& v = rbvec_node_ptr_->ref(); |
13160 | 0 | v = Operation::process(v,branch(1)->value()); |
13161 | |
|
13162 | 0 | return v; |
13163 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::value() const |
13164 | | |
13165 | | inline bool valid() const exprtk_override |
13166 | 0 | { |
13167 | 0 | return rbvec_node_ptr_ && binary_node<T>::valid(); |
13168 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::valid() const |
13169 | | |
13170 | | private: |
13171 | | |
13172 | | rebasevector_elem_rtc_node<T>* rbvec_node_ptr_; |
13173 | | }; |
13174 | | |
13175 | | template <typename T, typename Operation> |
13176 | | class assignment_rebasevec_celem_op_rtc_node exprtk_final : public binary_node<T> |
13177 | | { |
13178 | | public: |
13179 | | |
13180 | | typedef expression_node<T>* expression_ptr; |
13181 | | using binary_node<T>::branch; |
13182 | | |
13183 | | assignment_rebasevec_celem_op_rtc_node(const operator_type& opr, |
13184 | | expression_ptr branch0, |
13185 | | expression_ptr branch1) |
13186 | 0 | : binary_node<T>(opr, branch0, branch1) |
13187 | 0 | , rbvec_node_ptr_(0) |
13188 | 0 | { |
13189 | 0 | if (is_rebasevector_celem_rtc_node(branch(0))) |
13190 | 0 | { |
13191 | 0 | rbvec_node_ptr_ = static_cast<rebasevector_celem_rtc_node<T>*>(branch(0)); |
13192 | 0 | } |
13193 | |
|
13194 | 0 | assert(valid()); |
13195 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
13196 | | |
13197 | | inline T value() const exprtk_override |
13198 | 0 | { |
13199 | 0 | T& v = rbvec_node_ptr_->ref(); |
13200 | 0 | v = Operation::process(v,branch(1)->value()); |
13201 | |
|
13202 | 0 | return v; |
13203 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::value() const |
13204 | | |
13205 | | inline bool valid() const exprtk_override |
13206 | 0 | { |
13207 | 0 | return rbvec_node_ptr_ && binary_node<T>::valid(); |
13208 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::valid() const |
13209 | | |
13210 | | private: |
13211 | | |
13212 | | rebasevector_celem_rtc_node<T>* rbvec_node_ptr_; |
13213 | | }; |
13214 | | |
13215 | | template <typename T, typename Operation> |
13216 | | class assignment_vec_op_node exprtk_final |
13217 | | : public binary_node <T> |
13218 | | , public vector_interface<T> |
13219 | | { |
13220 | | public: |
13221 | | |
13222 | | typedef expression_node<T>* expression_ptr; |
13223 | | typedef vector_node<T>* vector_node_ptr; |
13224 | | typedef vec_data_store<T> vds_t; |
13225 | | |
13226 | | using binary_node<T>::branch; |
13227 | | |
13228 | | assignment_vec_op_node(const operator_type& opr, |
13229 | | expression_ptr branch0, |
13230 | | expression_ptr branch1) |
13231 | 0 | : binary_node<T>(opr, branch0, branch1) |
13232 | 0 | , vec_node_ptr_(0) |
13233 | 0 | { |
13234 | 0 | if (is_vector_node(branch(0))) |
13235 | 0 | { |
13236 | 0 | vec_node_ptr_ = static_cast<vector_node<T>*>(branch(0)); |
13237 | 0 | vds() = vec_node_ptr_->vds(); |
13238 | 0 | } |
13239 | |
|
13240 | 0 | assert(valid()); |
13241 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
13242 | | |
13243 | | inline T value() const exprtk_override |
13244 | 0 | { |
13245 | 0 | const T v = branch(1)->value(); |
13246 | |
|
13247 | 0 | T* vec = vds().data(); |
13248 | |
|
13249 | 0 | loop_unroll::details lud(size()); |
13250 | 0 | const T* upper_bound = vec + lud.upper_bound; |
13251 | |
|
13252 | 0 | while (vec < upper_bound) |
13253 | 0 | { |
13254 | 0 | #define exprtk_loop(N) \ |
13255 | 0 | Operation::assign(vec[N],v); \ |
13256 | 0 |
|
13257 | 0 | exprtk_loop( 0) exprtk_loop( 1) |
13258 | 0 | exprtk_loop( 2) exprtk_loop( 3) |
13259 | 0 | #ifndef exprtk_disable_superscalar_unroll |
13260 | 0 | exprtk_loop( 4) exprtk_loop( 5) |
13261 | 0 | exprtk_loop( 6) exprtk_loop( 7) |
13262 | 0 | exprtk_loop( 8) exprtk_loop( 9) |
13263 | 0 | exprtk_loop(10) exprtk_loop(11) |
13264 | 0 | exprtk_loop(12) exprtk_loop(13) |
13265 | 0 | exprtk_loop(14) exprtk_loop(15) |
13266 | 0 | #endif |
13267 | |
|
13268 | 0 | vec += lud.batch_size; |
13269 | 0 | } |
13270 | |
|
13271 | 0 | switch (lud.remainder) |
13272 | 0 | { |
13273 | 0 | #define case_stmt(N,fall_through) \ |
13274 | 0 | case N : Operation::assign(*vec++,v); \ |
13275 | 0 | fall_through \ |
13276 | 0 | |
13277 | 0 | #ifndef exprtk_disable_superscalar_unroll |
13278 | 0 | case_stmt(15, exprtk_fallthrough) case_stmt(14, exprtk_fallthrough) |
13279 | 0 | case_stmt(13, exprtk_fallthrough) case_stmt(12, exprtk_fallthrough) |
13280 | 0 | case_stmt(11, exprtk_fallthrough) case_stmt(10, exprtk_fallthrough) |
13281 | 0 | case_stmt( 9, exprtk_fallthrough) case_stmt( 8, exprtk_fallthrough) |
13282 | 0 | case_stmt( 7, exprtk_fallthrough) case_stmt( 6, exprtk_fallthrough) |
13283 | 0 | case_stmt( 5, exprtk_fallthrough) case_stmt( 4, exprtk_fallthrough) |
13284 | 0 | #endif |
13285 | 0 | case_stmt( 3, exprtk_fallthrough) case_stmt( 2, exprtk_fallthrough) |
13286 | 0 | case_stmt( 1, (void)0;) |
13287 | 0 | } |
13288 | |
|
13289 | 0 | #undef exprtk_loop |
13290 | 0 | #undef case_stmt |
13291 | |
|
13292 | 0 | return vec_node_ptr_->value(); |
13293 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::value() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::value() const |
13294 | | |
13295 | | vector_node_ptr vec() const exprtk_override |
13296 | 0 | { |
13297 | 0 | return vec_node_ptr_; |
13298 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::vec() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::vec() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::vec() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::vec() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::vec() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::vec() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::vec() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::vec() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::vec() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::vec() const |
13299 | | |
13300 | | vector_node_ptr vec() exprtk_override |
13301 | 0 | { |
13302 | 0 | return vec_node_ptr_; |
13303 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::vec() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::vec() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::vec() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::vec() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::vec() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::vec() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::vec() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::vec() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::vec() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::vec() |
13304 | | |
13305 | | inline typename expression_node<T>::node_type type() const exprtk_override |
13306 | 0 | { |
13307 | 0 | return expression_node<T>::e_vecopvalass; |
13308 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::type() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::type() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::type() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::type() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::type() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::type() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::type() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::type() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::type() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::type() const |
13309 | | |
13310 | | inline bool valid() const exprtk_override |
13311 | 0 | { |
13312 | 0 | return |
13313 | 0 | vec_node_ptr_ && |
13314 | 0 | (size() <= base_size()) && |
13315 | 0 | binary_node<T>::valid() ; |
13316 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::valid() const |
13317 | | |
13318 | | std::size_t size() const exprtk_override |
13319 | 0 | { |
13320 | 0 | return vec_node_ptr_->vec_holder().size(); |
13321 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::size() const |
13322 | | |
13323 | | std::size_t base_size() const exprtk_override |
13324 | 0 | { |
13325 | 0 | return vec_node_ptr_->vec_holder().base_size(); |
13326 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::base_size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::base_size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::base_size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::base_size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::base_size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::base_size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::base_size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::base_size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::base_size() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::base_size() const |
13327 | | |
13328 | | vds_t& vds() exprtk_override |
13329 | 0 | { |
13330 | 0 | return vds_; |
13331 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::vds() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::vds() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::vds() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::vds() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::vds() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::vds() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::vds() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::vds() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::vds() Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::vds() |
13332 | | |
13333 | | const vds_t& vds() const exprtk_override |
13334 | 0 | { |
13335 | 0 | return vds_; |
13336 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::vds() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::vds() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::vds() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::vds() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::vds() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::vds() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::vds() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::vds() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::vds() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::vds() const |
13337 | | |
13338 | | bool side_effect() const exprtk_override |
13339 | 0 | { |
13340 | 0 | return true; |
13341 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::side_effect() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::side_effect() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::side_effect() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::side_effect() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::side_effect() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::side_effect() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::side_effect() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::side_effect() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::side_effect() const Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::side_effect() const |
13342 | | |
13343 | | private: |
13344 | | |
13345 | | vector_node<T>* vec_node_ptr_; |
13346 | | vds_t vds_; |
13347 | | }; |
13348 | | |
13349 | | template <typename T, typename Operation> |
13350 | | class assignment_vecvec_op_node exprtk_final |
13351 | | : public binary_node <T> |
13352 | | , public vector_interface<T> |
13353 | | { |
13354 | | public: |
13355 | | |
13356 | | typedef expression_node<T>* expression_ptr; |
13357 | | typedef vector_node<T>* vector_node_ptr; |
13358 | | typedef vec_data_store<T> vds_t; |
13359 | | |
13360 | | using binary_node<T>::branch; |
13361 | | |
13362 | | assignment_vecvec_op_node(const operator_type& opr, |
13363 | | expression_ptr branch0, |
13364 | | expression_ptr branch1) |
13365 | 0 | : binary_node<T>(opr, branch0, branch1) |
13366 | 0 | , vec0_node_ptr_(0) |
13367 | 0 | , vec1_node_ptr_(0) |
13368 | 0 | , initialised_(false) |
13369 | 0 | { |
13370 | 0 | if (is_vector_node(branch(0))) |
13371 | 0 | { |
13372 | 0 | vec0_node_ptr_ = static_cast<vector_node<T>*>(branch(0)); |
13373 | 0 | vds() = vec0_node_ptr_->vds(); |
13374 | 0 | } |
13375 | |
|
13376 | 0 | if (is_vector_node(branch(1))) |
13377 | 0 | { |
13378 | 0 | vec1_node_ptr_ = static_cast<vector_node<T>*>(branch(1)); |
13379 | 0 | vec1_node_ptr_->vds() = vds(); |
13380 | 0 | } |
13381 | 0 | else if (is_ivector_node(branch(1))) |
13382 | 0 | { |
13383 | 0 | vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0); |
13384 | |
|
13385 | 0 | if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(1)))) |
13386 | 0 | { |
13387 | 0 | vec1_node_ptr_ = vi->vec(); |
13388 | 0 | vec1_node_ptr_->vds() = vi->vds(); |
13389 | 0 | } |
13390 | 0 | else |
13391 | 0 | vds_t::match_sizes(vds(),vec1_node_ptr_->vds()); |
13392 | 0 | } |
13393 | |
|
13394 | 0 | initialised_ = |
13395 | 0 | vec0_node_ptr_ && |
13396 | 0 | vec1_node_ptr_ && |
13397 | 0 | (size() <= base_size()) && |
13398 | 0 | binary_node<T>::valid(); |
13399 | |
|
13400 | 0 | assert(valid()); |
13401 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<double, exprtk::details::add_op<double> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<double, exprtk::details::sub_op<double> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<double, exprtk::details::mul_op<double> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<double, exprtk::details::div_op<double> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<double, exprtk::details::mod_op<double> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<float, exprtk::details::add_op<float> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<float, exprtk::details::sub_op<float> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<float, exprtk::details::mul_op<float> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<float, exprtk::details::div_op<float> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<float, exprtk::details::mod_op<float> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) |
13402 | | |
13403 | | inline T value() const exprtk_override |
13404 | 0 | { |
13405 | 0 | branch(0)->value(); |
13406 | 0 | branch(1)->value(); |
13407 | |
|
13408 | 0 | T* vec0 = vec0_node_ptr_->vds().data(); |
13409 | 0 | const T* vec1 = vec1_node_ptr_->vds().data(); |
13410 | |
|
13411 | 0 | loop_unroll::details lud(size()); |
13412 | 0 | const T* upper_bound = vec0 + lud.upper_bound; |
13413 | |
|
13414 | 0 | while (vec0 < upper_bound) |
13415 | 0 | { |
13416 | 0 | #define exprtk_loop(N) \ |
13417 | 0 | vec0[N] = Operation::process(vec0[N], vec1[N]); \ |
13418 | 0 |
|
13419 | 0 | exprtk_loop( 0) exprtk_loop( 1) |
13420 | 0 | exprtk_loop( 2) exprtk_loop( 3) |
13421 | 0 | #ifndef exprtk_disable_superscalar_unroll |
13422 | 0 | exprtk_loop( 4) |