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 | 658k | #define exprtk_debug(params) (void)0 |
65 | | #endif |
66 | | |
67 | | #define exprtk_error_location \ |
68 | 126k | "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 | 1.47k | #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 | 8.62M | { |
105 | 8.62M | return (' ' == c) || ('\n' == c) || |
106 | 8.62M | ('\r' == c) || ('\t' == c) || |
107 | 8.62M | ('\b' == c) || ('\v' == c) || |
108 | 8.62M | ('\f' == c) ; |
109 | 8.62M | } |
110 | | |
111 | | inline bool is_operator_char(const char_t c) |
112 | 3.90M | { |
113 | 3.90M | return ('+' == c) || ('-' == c) || |
114 | 3.90M | ('*' == c) || ('/' == c) || |
115 | 3.90M | ('^' == c) || ('<' == c) || |
116 | 3.90M | ('>' == c) || ('=' == c) || |
117 | 3.90M | (',' == c) || ('!' == c) || |
118 | 3.90M | ('(' == c) || (')' == c) || |
119 | 3.90M | ('[' == c) || (']' == c) || |
120 | 3.90M | ('{' == c) || ('}' == c) || |
121 | 3.90M | ('%' == c) || (':' == c) || |
122 | 3.90M | ('?' == c) || ('&' == c) || |
123 | 3.90M | ('|' == c) || (';' == c) ; |
124 | 3.90M | } |
125 | | |
126 | | inline bool is_letter(const char_t c) |
127 | 23.1M | { |
128 | 23.1M | return (('a' <= c) && (c <= 'z')) || |
129 | 23.1M | (('A' <= c) && (c <= 'Z')) ; |
130 | 23.1M | } |
131 | | |
132 | | inline bool is_digit(const char_t c) |
133 | 34.5M | { |
134 | 34.5M | return ('0' <= c) && (c <= '9'); |
135 | 34.5M | } |
136 | | |
137 | | inline bool is_letter_or_digit(const char_t c) |
138 | 21.0M | { |
139 | 21.0M | return is_letter(c) || is_digit(c); |
140 | 21.0M | } |
141 | | |
142 | | inline bool is_left_bracket(const char_t c) |
143 | 7.26M | { |
144 | 7.26M | return ('(' == c) || ('[' == c) || ('{' == c); |
145 | 7.26M | } |
146 | | |
147 | | inline bool is_right_bracket(const char_t c) |
148 | 6.71M | { |
149 | 6.71M | return (')' == c) || (']' == c) || ('}' == c); |
150 | 6.71M | } |
151 | | |
152 | | inline bool is_bracket(const char_t c) |
153 | 2.58M | { |
154 | 2.58M | return is_left_bracket(c) || is_right_bracket(c); |
155 | 2.58M | } |
156 | | |
157 | | inline bool is_sign(const char_t c) |
158 | 674k | { |
159 | 674k | return ('+' == c) || ('-' == c); |
160 | 674k | } |
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 | 29.7M | { |
177 | 29.7M | return std::isprint(static_cast<uchar_t>(c)) || |
178 | 29.7M | is_whitespace(c); |
179 | 29.7M | } |
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.05k | { |
192 | 1.05k | return std::tolower(c1) == std::tolower(c2); |
193 | 1.05k | } |
194 | | |
195 | | inline bool imatch(const std::string& s1, const std::string& s2) |
196 | 3.80M | { |
197 | 3.80M | if (s1.size() == s2.size()) |
198 | 189k | { |
199 | 229k | for (std::size_t i = 0; i < s1.size(); ++i) |
200 | 212k | { |
201 | 212k | if (std::tolower(s1[i]) != std::tolower(s2[i])) |
202 | 173k | { |
203 | 173k | return false; |
204 | 173k | } |
205 | 212k | } |
206 | | |
207 | 16.3k | return true; |
208 | 189k | } |
209 | | |
210 | 3.61M | return false; |
211 | 3.80M | } |
212 | | |
213 | | struct ilesscompare |
214 | | { |
215 | | inline bool operator() (const std::string& s1, const std::string& s2) const |
216 | 20.7M | { |
217 | 20.7M | const std::size_t length = std::min(s1.size(),s2.size()); |
218 | | |
219 | 24.8M | for (std::size_t i = 0; i < length; ++i) |
220 | 23.0M | { |
221 | 23.0M | const char_t c1 = static_cast<char_t>(std::tolower(s1[i])); |
222 | 23.0M | const char_t c2 = static_cast<char_t>(std::tolower(s2[i])); |
223 | | |
224 | 23.0M | if (c1 < c2) |
225 | 12.9M | return true; |
226 | 10.0M | else if (c2 < c1) |
227 | 6.03M | return false; |
228 | 23.0M | } |
229 | | |
230 | 1.79M | return s1.size() < s2.size(); |
231 | 20.7M | } |
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 | 159k | { |
259 | | // Special function: $f12 or $F34 |
260 | 159k | return (4 == symbol.size()) && |
261 | 159k | ('$' == symbol[0]) && |
262 | 159k | imatch('f',symbol[1]) && |
263 | 159k | is_digit(symbol[2]) && |
264 | 159k | is_digit(symbol[3]); |
265 | 159k | } |
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 | 126k | { |
280 | 126k | if (0 == i) |
281 | 14 | return std::string("0"); |
282 | | |
283 | 126k | std::string result; |
284 | | |
285 | 126k | const int sign = (i < 0) ? -1 : 1; |
286 | | |
287 | 757k | for ( ; i; i /= 10) |
288 | 631k | { |
289 | 631k | result += '0' + static_cast<char_t>(sign * (i % 10)); |
290 | 631k | } |
291 | | |
292 | 126k | if (sign < 0) |
293 | 10 | { |
294 | 10 | result += '-'; |
295 | 10 | } |
296 | | |
297 | 126k | std::reverse(result.begin(), result.end()); |
298 | | |
299 | 126k | return result; |
300 | 126k | } 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 | 8 | { | 280 | 8 | if (0 == i) | 281 | 0 | return std::string("0"); | 282 | | | 283 | 8 | std::string result; | 284 | | | 285 | 8 | const int sign = (i < 0) ? -1 : 1; | 286 | | | 287 | 32 | for ( ; i; i /= 10) | 288 | 24 | { | 289 | 24 | result += '0' + static_cast<char_t>(sign * (i % 10)); | 290 | 24 | } | 291 | | | 292 | 8 | if (sign < 0) | 293 | 0 | { | 294 | 0 | result += '-'; | 295 | 0 | } | 296 | | | 297 | 8 | std::reverse(result.begin(), result.end()); | 298 | | | 299 | 8 | return result; | 300 | 8 | } |
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 | 126k | { | 280 | 126k | if (0 == i) | 281 | 14 | return std::string("0"); | 282 | | | 283 | 126k | std::string result; | 284 | | | 285 | 126k | const int sign = (i < 0) ? -1 : 1; | 286 | | | 287 | 757k | for ( ; i; i /= 10) | 288 | 631k | { | 289 | 631k | result += '0' + static_cast<char_t>(sign * (i % 10)); | 290 | 631k | } | 291 | | | 292 | 126k | if (sign < 0) | 293 | 10 | { | 294 | 10 | result += '-'; | 295 | 10 | } | 296 | | | 297 | 126k | std::reverse(result.begin(), result.end()); | 298 | | | 299 | 126k | return result; | 300 | 126k | } |
|
301 | | |
302 | | inline std::string to_str(int i) |
303 | 126k | { |
304 | 126k | return to_str_impl(i); |
305 | 126k | } |
306 | | |
307 | | inline std::string to_str(std::size_t i) |
308 | 8 | { |
309 | 8 | return to_str_impl(static_cast<long long int>(i)); |
310 | 8 | } |
311 | | |
312 | | inline bool is_hex_digit(const uchar_t digit) |
313 | 17.0k | { |
314 | 17.0k | return (('0' <= digit) && (digit <= '9')) || |
315 | 17.0k | (('A' <= digit) && (digit <= 'F')) || |
316 | 17.0k | (('a' <= digit) && (digit <= 'f')) ; |
317 | 17.0k | } |
318 | | |
319 | | inline uchar_t hex_to_bin(uchar_t h) |
320 | 5.89k | { |
321 | 5.89k | if (('0' <= h) && (h <= '9')) |
322 | 1.59k | return (h - '0'); |
323 | 4.29k | else |
324 | 4.29k | return static_cast<uchar_t>(std::toupper(h) - 'A' + 10); |
325 | 5.89k | } |
326 | | |
327 | | template <typename Iterator> |
328 | | inline bool parse_hex(Iterator& itr, Iterator end, |
329 | | char_t& result) |
330 | 17.4k | { |
331 | 17.4k | if ( |
332 | 17.4k | (end == (itr )) || |
333 | 17.4k | (end == (itr + 1)) || |
334 | 17.4k | (end == (itr + 2)) || |
335 | 17.4k | (end == (itr + 3)) || |
336 | 17.4k | ('0' != *(itr )) || |
337 | 17.4k | ('X' != std::toupper(*(itr + 1))) || |
338 | 17.4k | (!is_hex_digit(*(itr + 2))) || |
339 | 17.4k | (!is_hex_digit(*(itr + 3))) |
340 | 17.4k | ) |
341 | 14.5k | { |
342 | 14.5k | return false; |
343 | 14.5k | } |
344 | | |
345 | 2.94k | result = hex_to_bin(static_cast<uchar_t>(*(itr + 2))) << 4 | |
346 | 2.94k | hex_to_bin(static_cast<uchar_t>(*(itr + 3))) ; |
347 | | |
348 | 2.94k | return true; |
349 | 17.4k | } |
350 | | |
351 | | inline bool cleanup_escapes(std::string& s) |
352 | 3.86k | { |
353 | 3.86k | typedef std::string::iterator str_itr_t; |
354 | | |
355 | 3.86k | str_itr_t itr1 = s.begin(); |
356 | 3.86k | str_itr_t itr2 = s.begin(); |
357 | 3.86k | str_itr_t end = s.end (); |
358 | | |
359 | 3.86k | std::size_t removal_count = 0; |
360 | | |
361 | 7.24M | while (end != itr1) |
362 | 7.24M | { |
363 | 7.24M | if ('\\' == (*itr1)) |
364 | 17.4k | { |
365 | 17.4k | if (end == ++itr1) |
366 | 0 | { |
367 | 0 | return false; |
368 | 0 | } |
369 | 17.4k | else if (parse_hex(itr1, end, *itr2)) |
370 | 2.94k | { |
371 | 2.94k | itr1 += 4; |
372 | 2.94k | itr2 += 1; |
373 | 2.94k | removal_count += 4; |
374 | 2.94k | } |
375 | 14.5k | else if ('a' == (*itr1)) { (*itr2++) = '\a'; ++itr1; ++removal_count; } |
376 | 13.0k | else if ('b' == (*itr1)) { (*itr2++) = '\b'; ++itr1; ++removal_count; } |
377 | 12.4k | else if ('f' == (*itr1)) { (*itr2++) = '\f'; ++itr1; ++removal_count; } |
378 | 11.4k | else if ('n' == (*itr1)) { (*itr2++) = '\n'; ++itr1; ++removal_count; } |
379 | 11.0k | else if ('r' == (*itr1)) { (*itr2++) = '\r'; ++itr1; ++removal_count; } |
380 | 9.88k | else if ('t' == (*itr1)) { (*itr2++) = '\t'; ++itr1; ++removal_count; } |
381 | 9.53k | else if ('v' == (*itr1)) { (*itr2++) = '\v'; ++itr1; ++removal_count; } |
382 | 9.05k | else if ('0' == (*itr1)) { (*itr2++) = '\0'; ++itr1; ++removal_count; } |
383 | 9.04k | else |
384 | 9.04k | { |
385 | 9.04k | (*itr2++) = (*itr1++); |
386 | 9.04k | ++removal_count; |
387 | 9.04k | } |
388 | | |
389 | 17.4k | continue; |
390 | 17.4k | } |
391 | 7.22M | else |
392 | 7.22M | (*itr2++) = (*itr1++); |
393 | 7.24M | } |
394 | | |
395 | 3.86k | if ((removal_count > s.size()) || (0 == removal_count)) |
396 | 0 | return false; |
397 | | |
398 | 3.86k | s.resize(s.size() - removal_count); |
399 | | |
400 | 3.86k | return true; |
401 | 3.86k | } |
402 | | |
403 | | class build_string |
404 | | { |
405 | | public: |
406 | | |
407 | | explicit build_string(const std::size_t& initial_size = 64) |
408 | 35.7k | { |
409 | 35.7k | data_.reserve(initial_size); |
410 | 35.7k | } |
411 | | |
412 | | inline build_string& operator << (const std::string& s) |
413 | 82.5k | { |
414 | 82.5k | data_ += s; |
415 | 82.5k | return (*this); |
416 | 82.5k | } |
417 | | |
418 | | inline build_string& operator << (char_cptr s) |
419 | 118k | { |
420 | 118k | data_ += std::string(s); |
421 | 118k | return (*this); |
422 | 118k | } |
423 | | |
424 | | inline operator std::string () const |
425 | 35.7k | { |
426 | 35.7k | return data_; |
427 | 35.7k | } |
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 | 808 | { |
537 | 72.5k | for (std::size_t i = 0; i < reserved_symbols_size; ++i) |
538 | 71.7k | { |
539 | 71.7k | if (imatch(symbol, reserved_symbols[i])) |
540 | 56 | { |
541 | 56 | return true; |
542 | 56 | } |
543 | 71.7k | } |
544 | | |
545 | 752 | return false; |
546 | 808 | } |
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.49M | 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 | 2 | { |
887 | 2 | return std::not_equal_to<T>()(v,v); |
888 | 2 | } bool exprtk::details::numeric::details::is_nan_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 886 | 1 | { | 887 | 1 | return std::not_equal_to<T>()(v,v); | 888 | 1 | } |
bool exprtk::details::numeric::details::is_nan_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 886 | 1 | { | 887 | 1 | return std::not_equal_to<T>()(v,v); | 888 | 1 | } |
|
889 | | |
890 | | template <typename T> |
891 | | inline int to_int32_impl(const T v, real_type_tag) |
892 | 46.4k | { |
893 | 46.4k | return static_cast<int>(v); |
894 | 46.4k | } int exprtk::details::numeric::details::to_int32_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 892 | 23.5k | { | 893 | 23.5k | return static_cast<int>(v); | 894 | 23.5k | } |
int exprtk::details::numeric::details::to_int32_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 892 | 22.9k | { | 893 | 22.9k | return static_cast<int>(v); | 894 | 22.9k | } |
|
895 | | |
896 | | template <typename T> |
897 | | inline _int64_t to_int64_impl(const T v, real_type_tag) |
898 | 72 | { |
899 | 72 | return static_cast<_int64_t>(v); |
900 | 72 | } long long exprtk::details::numeric::details::to_int64_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 898 | 36 | { | 899 | 36 | return static_cast<_int64_t>(v); | 900 | 36 | } |
long long exprtk::details::numeric::details::to_int64_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 898 | 36 | { | 899 | 36 | return static_cast<_int64_t>(v); | 900 | 36 | } |
|
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 | 68 | { |
911 | 68 | return std::not_equal_to<T>()(T(0),v); |
912 | 68 | } bool exprtk::details::numeric::details::is_true_impl<double>(double) Line | Count | Source | 910 | 38 | { | 911 | 38 | return std::not_equal_to<T>()(T(0),v); | 912 | 38 | } |
bool exprtk::details::numeric::details::is_true_impl<float>(float) Line | Count | Source | 910 | 30 | { | 911 | 30 | return std::not_equal_to<T>()(T(0),v); | 912 | 30 | } |
|
913 | | |
914 | | template <typename T> |
915 | | inline bool is_false_impl(const T v) |
916 | 53 | { |
917 | 53 | return std::equal_to<T>()(T(0),v); |
918 | 53 | } bool exprtk::details::numeric::details::is_false_impl<double>(double) Line | Count | Source | 916 | 32 | { | 917 | 32 | return std::equal_to<T>()(T(0),v); | 918 | 32 | } |
bool exprtk::details::numeric::details::is_false_impl<float>(float) Line | Count | Source | 916 | 21 | { | 917 | 21 | return std::equal_to<T>()(T(0),v); | 918 | 21 | } |
|
919 | | |
920 | | template <typename T> |
921 | | inline T abs_impl(const T v, real_type_tag) |
922 | 93.5k | { |
923 | 93.5k | return ((v < T(0)) ? -v : v); |
924 | 93.5k | } double exprtk::details::numeric::details::abs_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 922 | 47.3k | { | 923 | 47.3k | return ((v < T(0)) ? -v : v); | 924 | 47.3k | } |
float exprtk::details::numeric::details::abs_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 922 | 46.1k | { | 923 | 46.1k | return ((v < T(0)) ? -v : v); | 924 | 46.1k | } |
|
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 expm1_impl(const T v, real_type_tag) |
959 | 0 | { |
960 | | // return std::expm1<T>(v); |
961 | 0 | if (abs_impl(v,real_type_tag()) < T(0.00001)) |
962 | 0 | return v + (T(0.5) * v * v); |
963 | 0 | else |
964 | 0 | return std::exp(v) - T(1); |
965 | 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) |
966 | | |
967 | | template <typename T> |
968 | | inline T expm1_impl(const T v, int_type_tag) |
969 | | { |
970 | | return T(std::exp<double>(v)) - T(1); |
971 | | } |
972 | | |
973 | | template <typename T> |
974 | | inline T nequal_impl(const T v0, const T v1, real_type_tag) |
975 | 0 | { |
976 | 0 | typedef real_type_tag rtg; |
977 | 0 | const T epsilon = epsilon_type<T>::value(); |
978 | 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); |
979 | 0 | } |
980 | | |
981 | | inline float nequal_impl(const float v0, const float v1, real_type_tag) |
982 | 0 | { |
983 | 0 | typedef real_type_tag rtg; |
984 | 0 | const float epsilon = epsilon_type<float>::value(); |
985 | 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; |
986 | 0 | } |
987 | | |
988 | | template <typename T> |
989 | | inline T nequal_impl(const T v0, const T v1, int_type_tag) |
990 | | { |
991 | | return (v0 != v1) ? 1 : 0; |
992 | | } |
993 | | |
994 | | template <typename T> |
995 | | inline T modulus_impl(const T v0, const T v1, real_type_tag) |
996 | 5.80k | { |
997 | 5.80k | return std::fmod(v0,v1); |
998 | 5.80k | } double exprtk::details::numeric::details::modulus_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 996 | 5.45k | { | 997 | 5.45k | return std::fmod(v0,v1); | 998 | 5.45k | } |
float exprtk::details::numeric::details::modulus_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 996 | 352 | { | 997 | 352 | return std::fmod(v0,v1); | 998 | 352 | } |
|
999 | | |
1000 | | template <typename T> |
1001 | | inline T modulus_impl(const T v0, const T v1, int_type_tag) |
1002 | | { |
1003 | | return v0 % v1; |
1004 | | } |
1005 | | |
1006 | | template <typename T> |
1007 | | inline T pow_impl(const T v0, const T v1, real_type_tag) |
1008 | 1.72k | { |
1009 | 1.72k | return std::pow(v0,v1); |
1010 | 1.72k | } double exprtk::details::numeric::details::pow_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1008 | 893 | { | 1009 | 893 | return std::pow(v0,v1); | 1010 | 893 | } |
float exprtk::details::numeric::details::pow_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1008 | 831 | { | 1009 | 831 | return std::pow(v0,v1); | 1010 | 831 | } |
|
1011 | | |
1012 | | template <typename T> |
1013 | | inline T pow_impl(const T v0, const T v1, int_type_tag) |
1014 | | { |
1015 | | return std::pow(static_cast<double>(v0),static_cast<double>(v1)); |
1016 | | } |
1017 | | |
1018 | | template <typename T> |
1019 | | inline T logn_impl(const T v0, const T v1, real_type_tag) |
1020 | 0 | { |
1021 | 0 | return std::log(v0) / std::log(v1); |
1022 | 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) |
1023 | | |
1024 | | template <typename T> |
1025 | | inline T logn_impl(const T v0, const T v1, int_type_tag) |
1026 | | { |
1027 | | return static_cast<T>(logn_impl<double>(static_cast<double>(v0),static_cast<double>(v1),real_type_tag())); |
1028 | | } |
1029 | | |
1030 | | template <typename T> |
1031 | | inline T log1p_impl(const T v, real_type_tag) |
1032 | 0 | { |
1033 | 0 | if (v > T(-1)) |
1034 | 0 | { |
1035 | 0 | if (abs_impl(v,real_type_tag()) > T(0.0001)) |
1036 | 0 | { |
1037 | 0 | return std::log(T(1) + v); |
1038 | 0 | } |
1039 | 0 | else |
1040 | 0 | return (T(-0.5) * v + T(1)) * v; |
1041 | 0 | } |
1042 | | |
1043 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
1044 | 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) |
1045 | | |
1046 | | template <typename T> |
1047 | | inline T log1p_impl(const T v, int_type_tag) |
1048 | | { |
1049 | | if (v > T(-1)) |
1050 | | { |
1051 | | return std::log(T(1) + v); |
1052 | | } |
1053 | | |
1054 | | return std::numeric_limits<T>::quiet_NaN(); |
1055 | | } |
1056 | | |
1057 | | template <typename T> |
1058 | | inline T root_impl(const T v0, const T v1, real_type_tag) |
1059 | 0 | { |
1060 | 0 | if (v0 < T(0)) |
1061 | 0 | { |
1062 | 0 | return (v1 == trunc_impl(v1, real_type_tag())) && |
1063 | 0 | (modulus_impl(v1, T(2), real_type_tag()) != T(0)) ? |
1064 | 0 | -std::pow(abs_impl(v0, real_type_tag()), T(1) / v1) : |
1065 | 0 | std::numeric_limits<double>::quiet_NaN(); |
1066 | 0 | } |
1067 | | |
1068 | 0 | return std::pow(v0, T(1) / v1); |
1069 | 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) |
1070 | | |
1071 | | template <typename T> |
1072 | | inline T root_impl(const T v0, const T v1, int_type_tag) |
1073 | | { |
1074 | | return root_impl<double>(static_cast<double>(v0),static_cast<double>(v1),real_type_tag()); |
1075 | | } |
1076 | | |
1077 | | template <typename T> |
1078 | | inline T round_impl(const T v, real_type_tag) |
1079 | 0 | { |
1080 | 0 | return ((v < T(0)) ? std::ceil(v - T(0.5)) : std::floor(v + T(0.5))); |
1081 | 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) |
1082 | | |
1083 | | template <typename T> |
1084 | | inline T roundn_impl(const T v0, const T v1, real_type_tag) |
1085 | 0 | { |
1086 | 0 | const int index = std::max<int>(0, std::min<int>(pow10_size - 1, static_cast<int>(std::floor(v1)))); |
1087 | 0 | const T p10 = T(pow10[index]); |
1088 | |
|
1089 | 0 | if (v0 < T(0)) |
1090 | 0 | return T(std::ceil ((v0 * p10) - T(0.5)) / p10); |
1091 | 0 | else |
1092 | 0 | return T(std::floor((v0 * p10) + T(0.5)) / p10); |
1093 | 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) |
1094 | | |
1095 | | template <typename T> |
1096 | | inline T roundn_impl(const T v0, const T, int_type_tag) |
1097 | | { |
1098 | | return v0; |
1099 | | } |
1100 | | |
1101 | | template <typename T> |
1102 | | inline T hypot_impl(const T v0, const T v1, real_type_tag) |
1103 | 0 | { |
1104 | 0 | return std::sqrt((v0 * v0) + (v1 * v1)); |
1105 | 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) |
1106 | | |
1107 | | template <typename T> |
1108 | | inline T hypot_impl(const T v0, const T v1, int_type_tag) |
1109 | | { |
1110 | | return static_cast<T>(std::sqrt(static_cast<double>((v0 * v0) + (v1 * v1)))); |
1111 | | } |
1112 | | |
1113 | | template <typename T> |
1114 | | inline T atan2_impl(const T v0, const T v1, real_type_tag) |
1115 | 0 | { |
1116 | 0 | return std::atan2(v0,v1); |
1117 | 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) |
1118 | | |
1119 | | template <typename T> |
1120 | | inline T atan2_impl(const T, const T, int_type_tag) |
1121 | | { |
1122 | | return 0; |
1123 | | } |
1124 | | |
1125 | | template <typename T> |
1126 | | inline T shr_impl(const T v0, const T v1, real_type_tag) |
1127 | 0 | { |
1128 | 0 | return v0 * (T(1) / std::pow(T(2),static_cast<T>(static_cast<int>(v1)))); |
1129 | 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) |
1130 | | |
1131 | | template <typename T> |
1132 | | inline T shr_impl(const T v0, const T v1, int_type_tag) |
1133 | | { |
1134 | | return v0 >> v1; |
1135 | | } |
1136 | | |
1137 | | template <typename T> |
1138 | | inline T shl_impl(const T v0, const T v1, real_type_tag) |
1139 | 0 | { |
1140 | 0 | return v0 * std::pow(T(2),static_cast<T>(static_cast<int>(v1))); |
1141 | 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) |
1142 | | |
1143 | | template <typename T> |
1144 | | inline T shl_impl(const T v0, const T v1, int_type_tag) |
1145 | | { |
1146 | | return v0 << v1; |
1147 | | } |
1148 | | |
1149 | | template <typename T> |
1150 | | inline T sgn_impl(const T v, real_type_tag) |
1151 | 0 | { |
1152 | 0 | if (v > T(0)) return T(+1); |
1153 | 0 | else if (v < T(0)) return T(-1); |
1154 | 0 | else return T( 0); |
1155 | 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) |
1156 | | |
1157 | | template <typename T> |
1158 | | inline T sgn_impl(const T v, int_type_tag) |
1159 | | { |
1160 | | if (v > T(0)) return T(+1); |
1161 | | else if (v < T(0)) return T(-1); |
1162 | | else return T( 0); |
1163 | | } |
1164 | | |
1165 | | template <typename T> |
1166 | | inline T and_impl(const T v0, const T v1, real_type_tag) |
1167 | 22 | { |
1168 | 22 | return (is_true_impl(v0) && is_true_impl(v1)) ? T(1) : T(0); |
1169 | 22 | } double exprtk::details::numeric::details::and_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1167 | 11 | { | 1168 | 11 | return (is_true_impl(v0) && is_true_impl(v1)) ? T(1) : T(0); | 1169 | 11 | } |
float exprtk::details::numeric::details::and_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1167 | 11 | { | 1168 | 11 | return (is_true_impl(v0) && is_true_impl(v1)) ? T(1) : T(0); | 1169 | 11 | } |
|
1170 | | |
1171 | | template <typename T> |
1172 | | inline T and_impl(const T v0, const T v1, int_type_tag) |
1173 | | { |
1174 | | return v0 && v1; |
1175 | | } |
1176 | | |
1177 | | template <typename T> |
1178 | | inline T nand_impl(const T v0, const T v1, real_type_tag) |
1179 | 9 | { |
1180 | 9 | return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0); |
1181 | 9 | } double exprtk::details::numeric::details::nand_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1179 | 5 | { | 1180 | 5 | return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0); | 1181 | 5 | } |
float exprtk::details::numeric::details::nand_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1179 | 4 | { | 1180 | 4 | return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0); | 1181 | 4 | } |
|
1182 | | |
1183 | | template <typename T> |
1184 | | inline T nand_impl(const T v0, const T v1, int_type_tag) |
1185 | | { |
1186 | | return !(v0 && v1); |
1187 | | } |
1188 | | |
1189 | | template <typename T> |
1190 | | inline T or_impl(const T v0, const T v1, real_type_tag) |
1191 | 4 | { |
1192 | 4 | return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0); |
1193 | 4 | } double exprtk::details::numeric::details::or_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1191 | 2 | { | 1192 | 2 | return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0); | 1193 | 2 | } |
float exprtk::details::numeric::details::or_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1191 | 2 | { | 1192 | 2 | return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0); | 1193 | 2 | } |
|
1194 | | |
1195 | | template <typename T> |
1196 | | inline T or_impl(const T v0, const T v1, int_type_tag) |
1197 | | { |
1198 | | return (v0 || v1); |
1199 | | } |
1200 | | |
1201 | | template <typename T> |
1202 | | inline T nor_impl(const T v0, const T v1, real_type_tag) |
1203 | 0 | { |
1204 | 0 | return (is_false_impl(v0) && is_false_impl(v1)) ? T(1) : T(0); |
1205 | 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) |
1206 | | |
1207 | | template <typename T> |
1208 | | inline T nor_impl(const T v0, const T v1, int_type_tag) |
1209 | | { |
1210 | | return !(v0 || v1); |
1211 | | } |
1212 | | |
1213 | | template <typename T> |
1214 | | inline T xor_impl(const T v0, const T v1, real_type_tag) |
1215 | 19 | { |
1216 | 19 | return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0); |
1217 | 19 | } double exprtk::details::numeric::details::xor_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1215 | 12 | { | 1216 | 12 | return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0); | 1217 | 12 | } |
float exprtk::details::numeric::details::xor_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1215 | 7 | { | 1216 | 7 | return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0); | 1217 | 7 | } |
|
1218 | | |
1219 | | template <typename T> |
1220 | | inline T xor_impl(const T v0, const T v1, int_type_tag) |
1221 | | { |
1222 | | return v0 ^ v1; |
1223 | | } |
1224 | | |
1225 | | template <typename T> |
1226 | | inline T xnor_impl(const T v0, const T v1, real_type_tag) |
1227 | 20 | { |
1228 | 20 | const bool v0_true = is_true_impl(v0); |
1229 | 20 | const bool v1_true = is_true_impl(v1); |
1230 | | |
1231 | 20 | if ((v0_true && v1_true) || (!v0_true && !v1_true)) |
1232 | 9 | return T(1); |
1233 | 11 | else |
1234 | 11 | return T(0); |
1235 | 20 | } double exprtk::details::numeric::details::xnor_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1227 | 12 | { | 1228 | 12 | const bool v0_true = is_true_impl(v0); | 1229 | 12 | const bool v1_true = is_true_impl(v1); | 1230 | | | 1231 | 12 | if ((v0_true && v1_true) || (!v0_true && !v1_true)) | 1232 | 6 | return T(1); | 1233 | 6 | else | 1234 | 6 | return T(0); | 1235 | 12 | } |
float exprtk::details::numeric::details::xnor_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1227 | 8 | { | 1228 | 8 | const bool v0_true = is_true_impl(v0); | 1229 | 8 | const bool v1_true = is_true_impl(v1); | 1230 | | | 1231 | 8 | if ((v0_true && v1_true) || (!v0_true && !v1_true)) | 1232 | 3 | return T(1); | 1233 | 5 | else | 1234 | 5 | return T(0); | 1235 | 8 | } |
|
1236 | | |
1237 | | template <typename T> |
1238 | | inline T xnor_impl(const T v0, const T v1, int_type_tag) |
1239 | | { |
1240 | | const bool v0_true = is_true_impl(v0); |
1241 | | const bool v1_true = is_true_impl(v1); |
1242 | | |
1243 | | if ((v0_true && v1_true) || (!v0_true && !v1_true)) |
1244 | | return T(1); |
1245 | | else |
1246 | | return T(0); |
1247 | | } |
1248 | | |
1249 | | #if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || !defined(_MSC_VER) |
1250 | | #define exprtk_define_erf(TT, impl) \ |
1251 | 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) |
1252 | | |
1253 | | exprtk_define_erf(float , ::erff) |
1254 | | exprtk_define_erf(double , ::erf ) |
1255 | | exprtk_define_erf(long double, ::erfl) |
1256 | | #undef exprtk_define_erf |
1257 | | #endif |
1258 | | |
1259 | | template <typename T> |
1260 | | inline T erf_impl(const T v, real_type_tag) |
1261 | 0 | { |
1262 | | #if defined(_MSC_VER) && (_MSC_VER < 1900) |
1263 | | // Credits: Abramowitz & Stegun Equations 7.1.25-28 |
1264 | | static const T c[] = |
1265 | | { |
1266 | | T( 1.26551223), T(1.00002368), |
1267 | | T( 0.37409196), T(0.09678418), |
1268 | | T(-0.18628806), T(0.27886807), |
1269 | | T(-1.13520398), T(1.48851587), |
1270 | | T(-0.82215223), T(0.17087277) |
1271 | | }; |
1272 | | |
1273 | | const T t = T(1) / (T(1) + T(0.5) * abs_impl(v,real_type_tag())); |
1274 | | |
1275 | | const T result = T(1) - t * std::exp((-v * v) - |
1276 | | c[0] + t * (c[1] + t * |
1277 | | (c[2] + t * (c[3] + t * |
1278 | | (c[4] + t * (c[5] + t * |
1279 | | (c[6] + t * (c[7] + t * |
1280 | | (c[8] + t * (c[9])))))))))); |
1281 | | |
1282 | | return (v >= T(0)) ? result : -result; |
1283 | | #else |
1284 | 0 | return erf_impl(v); |
1285 | 0 | #endif |
1286 | 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) |
1287 | | |
1288 | | template <typename T> |
1289 | | inline T erf_impl(const T v, int_type_tag) |
1290 | | { |
1291 | | return erf_impl(static_cast<double>(v),real_type_tag()); |
1292 | | } |
1293 | | |
1294 | | #if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || !defined(_MSC_VER) |
1295 | | #define exprtk_define_erfc(TT, impl) \ |
1296 | 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) |
1297 | | |
1298 | | exprtk_define_erfc(float ,::erfcf) |
1299 | | exprtk_define_erfc(double ,::erfc ) |
1300 | | exprtk_define_erfc(long double,::erfcl) |
1301 | | #undef exprtk_define_erfc |
1302 | | #endif |
1303 | | |
1304 | | template <typename T> |
1305 | | inline T erfc_impl(const T v, real_type_tag) |
1306 | 0 | { |
1307 | | #if defined(_MSC_VER) && (_MSC_VER < 1900) |
1308 | | return T(1) - erf_impl(v,real_type_tag()); |
1309 | | #else |
1310 | 0 | return erfc_impl(v); |
1311 | 0 | #endif |
1312 | 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) |
1313 | | |
1314 | | template <typename T> |
1315 | | inline T erfc_impl(const T v, int_type_tag) |
1316 | | { |
1317 | | return erfc_impl(static_cast<double>(v),real_type_tag()); |
1318 | | } |
1319 | | |
1320 | | template <typename T> |
1321 | | inline T ncdf_impl(const T v, real_type_tag) |
1322 | 0 | { |
1323 | 0 | return T(0.5) * erfc_impl(-(v / T(numeric::constant::sqrt2)),real_type_tag()); |
1324 | 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) |
1325 | | |
1326 | | template <typename T> |
1327 | | inline T ncdf_impl(const T v, int_type_tag) |
1328 | | { |
1329 | | return ncdf_impl(static_cast<double>(v),real_type_tag()); |
1330 | | } |
1331 | | |
1332 | | template <typename T> |
1333 | | inline T sinc_impl(const T v, real_type_tag) |
1334 | 0 | { |
1335 | 0 | if (std::abs(v) >= std::numeric_limits<T>::epsilon()) |
1336 | 0 | return(std::sin(v) / v); |
1337 | 0 | else |
1338 | 0 | return T(1); |
1339 | 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) |
1340 | | |
1341 | | template <typename T> |
1342 | | inline T sinc_impl(const T v, int_type_tag) |
1343 | | { |
1344 | | return sinc_impl(static_cast<double>(v),real_type_tag()); |
1345 | | } |
1346 | | |
1347 | | #if __cplusplus >= 201103L |
1348 | | template <typename T> |
1349 | | inline T acosh_impl(const T v, real_type_tag) |
1350 | 0 | { |
1351 | 0 | return std::acosh(v); |
1352 | 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) |
1353 | | |
1354 | | template <typename T> |
1355 | | inline T asinh_impl(const T v, real_type_tag) |
1356 | 0 | { |
1357 | 0 | return std::asinh(v); |
1358 | 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) |
1359 | | |
1360 | | template <typename T> |
1361 | | inline T atanh_impl(const T v, real_type_tag) |
1362 | 0 | { |
1363 | 0 | return std::atanh(v); |
1364 | 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) |
1365 | | |
1366 | | template <typename T> |
1367 | | inline T trunc_impl(const T v, real_type_tag) |
1368 | 0 | { |
1369 | 0 | return std::trunc(v); |
1370 | 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) |
1371 | | #else |
1372 | | template <typename T> |
1373 | | inline T acosh_impl(const T v, real_type_tag) |
1374 | | { |
1375 | | return std::log(v + std::sqrt((v * v) - T(1))); |
1376 | | } |
1377 | | |
1378 | | template <typename T> |
1379 | | inline T asinh_impl(const T v, real_type_tag) |
1380 | | { |
1381 | | return std::log(v + std::sqrt((v * v) + T(1))); |
1382 | | } |
1383 | | |
1384 | | template <typename T> |
1385 | | inline T atanh_impl(const T v, real_type_tag) |
1386 | | { |
1387 | | return (std::log(T(1) + v) - std::log(T(1) - v)) / T(2); |
1388 | | } |
1389 | | |
1390 | | template <typename T> |
1391 | | inline T trunc_impl(const T v, real_type_tag) |
1392 | | { |
1393 | | return T(static_cast<long long>(v)); |
1394 | | } |
1395 | | #endif |
1396 | | |
1397 | 2 | template <typename T> inline T acos_impl(const T v, real_type_tag) { return std::acos (v); } double exprtk::details::numeric::details::acos_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1397 | 1 | template <typename T> inline T acos_impl(const T v, real_type_tag) { return std::acos (v); } |
float exprtk::details::numeric::details::acos_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1397 | 1 | template <typename T> inline T acos_impl(const T v, real_type_tag) { return std::acos (v); } |
|
1398 | 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) |
1399 | 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) |
1400 | 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) |
1401 | 18 | template <typename T> inline T cos_impl(const T v, real_type_tag) { return std::cos (v); } double exprtk::details::numeric::details::cos_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1401 | 9 | template <typename T> inline T cos_impl(const T v, real_type_tag) { return std::cos (v); } |
float exprtk::details::numeric::details::cos_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1401 | 9 | template <typename T> inline T cos_impl(const T v, real_type_tag) { return std::cos (v); } |
|
1402 | 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) |
1403 | 8 | template <typename T> inline T exp_impl(const T v, real_type_tag) { return std::exp (v); } double exprtk::details::numeric::details::exp_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1403 | 5 | template <typename T> inline T exp_impl(const T v, real_type_tag) { return std::exp (v); } |
float exprtk::details::numeric::details::exp_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1403 | 3 | template <typename T> inline T exp_impl(const T v, real_type_tag) { return std::exp (v); } |
|
1404 | 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) |
1405 | 6 | template <typename T> inline T log_impl(const T v, real_type_tag) { return std::log (v); } double exprtk::details::numeric::details::log_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1405 | 3 | template <typename T> inline T log_impl(const T v, real_type_tag) { return std::log (v); } |
float exprtk::details::numeric::details::log_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1405 | 3 | template <typename T> inline T log_impl(const T v, real_type_tag) { return std::log (v); } |
|
1406 | 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) |
1407 | 2 | template <typename T> inline T log2_impl(const T v, real_type_tag) { return std::log(v)/T(numeric::constant::log2); } double exprtk::details::numeric::details::log2_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1407 | 1 | template <typename T> inline T log2_impl(const T v, real_type_tag) { return std::log(v)/T(numeric::constant::log2); } |
float exprtk::details::numeric::details::log2_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1407 | 1 | template <typename T> inline T log2_impl(const T v, real_type_tag) { return std::log(v)/T(numeric::constant::log2); } |
|
1408 | 53.8k | 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 | 1408 | 31.0k | 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 | 1408 | 22.7k | template <typename T> inline T neg_impl(const T v, real_type_tag) { return -v; } |
|
1409 | 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) |
1410 | 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) |
1411 | 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) |
1412 | 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) |
1413 | 2 | template <typename T> inline T tan_impl(const T v, real_type_tag) { return std::tan (v); } double exprtk::details::numeric::details::tan_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1413 | 2 | template <typename T> inline T tan_impl(const T v, real_type_tag) { return std::tan (v); } |
Unexecuted instantiation: float exprtk::details::numeric::details::tan_impl<float>(float, exprtk::details::numeric::details::real_type_tag) |
1414 | 2 | template <typename T> inline T tanh_impl(const T v, real_type_tag) { return std::tanh (v); } double exprtk::details::numeric::details::tanh_impl<double>(double, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1414 | 1 | template <typename T> inline T tanh_impl(const T v, real_type_tag) { return std::tanh (v); } |
float exprtk::details::numeric::details::tanh_impl<float>(float, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1414 | 1 | template <typename T> inline T tanh_impl(const T v, real_type_tag) { return std::tanh (v); } |
|
1415 | 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) |
1416 | 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) |
1417 | 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) |
1418 | 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) |
1419 | 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) |
1420 | 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) |
1421 | 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) |
1422 | 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) |
1423 | 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) |
1424 | | |
1425 | 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 | 1425 | 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 | 1425 | 1 | template <typename T> inline T const_pi_impl(real_type_tag) { return T(numeric::constant::pi); } |
|
1426 | | template <typename T> inline T const_e_impl(real_type_tag) { return T(numeric::constant::e); } |
1427 | | template <typename T> inline T const_qnan_impl(real_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1428 | | |
1429 | | template <typename T> inline T abs_impl(const T v, int_type_tag) { return ((v >= T(0)) ? v : -v); } |
1430 | | template <typename T> inline T exp_impl(const T v, int_type_tag) { return std::exp (v); } |
1431 | | template <typename T> inline T log_impl(const T v, int_type_tag) { return std::log (v); } |
1432 | | template <typename T> inline T log10_impl(const T v, int_type_tag) { return std::log10(v); } |
1433 | | template <typename T> inline T log2_impl(const T v, int_type_tag) { return std::log(v)/T(numeric::constant::log2); } |
1434 | | template <typename T> inline T neg_impl(const T v, int_type_tag) { return -v; } |
1435 | | template <typename T> inline T pos_impl(const T v, int_type_tag) { return +v; } |
1436 | | template <typename T> inline T ceil_impl(const T v, int_type_tag) { return v; } |
1437 | | template <typename T> inline T floor_impl(const T v, int_type_tag) { return v; } |
1438 | | template <typename T> inline T round_impl(const T v, int_type_tag) { return v; } |
1439 | | template <typename T> inline T notl_impl(const T v, int_type_tag) { return !v; } |
1440 | | template <typename T> inline T sqrt_impl(const T v, int_type_tag) { return std::sqrt (v); } |
1441 | | template <typename T> inline T frac_impl(const T , int_type_tag) { return T(0); } |
1442 | | template <typename T> inline T trunc_impl(const T v, int_type_tag) { return v; } |
1443 | | template <typename T> inline T acos_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1444 | | template <typename T> inline T acosh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1445 | | template <typename T> inline T asin_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1446 | | template <typename T> inline T asinh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1447 | | template <typename T> inline T atan_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1448 | | template <typename T> inline T atanh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1449 | | template <typename T> inline T cos_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1450 | | template <typename T> inline T cosh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1451 | | template <typename T> inline T sin_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1452 | | template <typename T> inline T sinh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1453 | | template <typename T> inline T tan_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1454 | | template <typename T> inline T tanh_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1455 | | template <typename T> inline T cot_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1456 | | template <typename T> inline T sec_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1457 | | template <typename T> inline T csc_impl(const T , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); } |
1458 | | |
1459 | | template <typename T> |
1460 | | inline bool is_integer_impl(const T& v, real_type_tag) |
1461 | 46.6k | { |
1462 | 46.6k | return std::equal_to<T>()(T(0),std::fmod(v,T(1))); |
1463 | 46.6k | } bool exprtk::details::numeric::details::is_integer_impl<double>(double const&, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1461 | 23.5k | { | 1462 | 23.5k | return std::equal_to<T>()(T(0),std::fmod(v,T(1))); | 1463 | 23.5k | } |
bool exprtk::details::numeric::details::is_integer_impl<float>(float const&, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1461 | 23.0k | { | 1462 | 23.0k | return std::equal_to<T>()(T(0),std::fmod(v,T(1))); | 1463 | 23.0k | } |
|
1464 | | |
1465 | | template <typename T> |
1466 | | inline bool is_integer_impl(const T&, int_type_tag) |
1467 | | { |
1468 | | return true; |
1469 | | } |
1470 | | } |
1471 | | |
1472 | | template <typename Type> |
1473 | | struct numeric_info { enum { length = 0, size = 32, bound_length = 0, min_exp = 0, max_exp = 0 }; }; |
1474 | | |
1475 | | template <> struct numeric_info<int > { enum { length = 10, size = 16, bound_length = 9 }; }; |
1476 | | template <> struct numeric_info<float > { enum { min_exp = -38, max_exp = +38 }; }; |
1477 | | template <> struct numeric_info<double > { enum { min_exp = -308, max_exp = +308 }; }; |
1478 | | template <> struct numeric_info<long double> { enum { min_exp = -308, max_exp = +308 }; }; |
1479 | | |
1480 | | template <typename T> |
1481 | | inline int to_int32(const T v) |
1482 | 46.4k | { |
1483 | 46.4k | const typename details::number_type<T>::type num_type; |
1484 | 46.4k | return to_int32_impl(v, num_type); |
1485 | 46.4k | } int exprtk::details::numeric::to_int32<double>(double) Line | Count | Source | 1482 | 23.5k | { | 1483 | 23.5k | const typename details::number_type<T>::type num_type; | 1484 | 23.5k | return to_int32_impl(v, num_type); | 1485 | 23.5k | } |
int exprtk::details::numeric::to_int32<float>(float) Line | Count | Source | 1482 | 22.9k | { | 1483 | 22.9k | const typename details::number_type<T>::type num_type; | 1484 | 22.9k | return to_int32_impl(v, num_type); | 1485 | 22.9k | } |
|
1486 | | |
1487 | | template <typename T> |
1488 | | inline _int64_t to_int64(const T v) |
1489 | 72 | { |
1490 | 72 | const typename details::number_type<T>::type num_type; |
1491 | 72 | return to_int64_impl(v, num_type); |
1492 | 72 | } long long exprtk::details::numeric::to_int64<double>(double) Line | Count | Source | 1489 | 36 | { | 1490 | 36 | const typename details::number_type<T>::type num_type; | 1491 | 36 | return to_int64_impl(v, num_type); | 1492 | 36 | } |
long long exprtk::details::numeric::to_int64<float>(float) Line | Count | Source | 1489 | 36 | { | 1490 | 36 | const typename details::number_type<T>::type num_type; | 1491 | 36 | return to_int64_impl(v, num_type); | 1492 | 36 | } |
|
1493 | | |
1494 | | template <typename T> |
1495 | | inline _uint64_t to_uint64(const T v) |
1496 | 0 | { |
1497 | 0 | const typename details::number_type<T>::type num_type; |
1498 | 0 | return to_uint64_impl(v, num_type); |
1499 | 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) |
1500 | | |
1501 | | template <typename T> |
1502 | | inline bool is_nan(const T v) |
1503 | 2 | { |
1504 | 2 | const typename details::number_type<T>::type num_type; |
1505 | 2 | return is_nan_impl(v, num_type); |
1506 | 2 | } bool exprtk::details::numeric::is_nan<double>(double) Line | Count | Source | 1503 | 1 | { | 1504 | 1 | const typename details::number_type<T>::type num_type; | 1505 | 1 | return is_nan_impl(v, num_type); | 1506 | 1 | } |
bool exprtk::details::numeric::is_nan<float>(float) Line | Count | Source | 1503 | 1 | { | 1504 | 1 | const typename details::number_type<T>::type num_type; | 1505 | 1 | return is_nan_impl(v, num_type); | 1506 | 1 | } |
|
1507 | | |
1508 | | template <typename T> |
1509 | | inline T min(const T v0, const T v1) |
1510 | | { |
1511 | | const typename details::number_type<T>::type num_type; |
1512 | | return min_impl(v0, v1, num_type); |
1513 | | } |
1514 | | |
1515 | | template <typename T> |
1516 | | inline T max(const T v0, const T v1) |
1517 | | { |
1518 | | const typename details::number_type<T>::type num_type; |
1519 | | return max_impl(v0, v1, num_type); |
1520 | | } |
1521 | | |
1522 | | template <typename T> |
1523 | | inline T equal(const T v0, const T v1) |
1524 | 0 | { |
1525 | 0 | const typename details::number_type<T>::type num_type; |
1526 | 0 | return equal_impl(v0, v1, num_type); |
1527 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::equal<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::equal<float>(float, float) |
1528 | | |
1529 | | template <typename T> |
1530 | | inline T nequal(const T v0, const T v1) |
1531 | 0 | { |
1532 | 0 | const typename details::number_type<T>::type num_type; |
1533 | 0 | return nequal_impl(v0, v1, num_type); |
1534 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::nequal<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::nequal<float>(float, float) |
1535 | | |
1536 | | template <typename T> |
1537 | | inline T modulus(const T v0, const T v1) |
1538 | 5.80k | { |
1539 | 5.80k | const typename details::number_type<T>::type num_type; |
1540 | 5.80k | return modulus_impl(v0, v1, num_type); |
1541 | 5.80k | } double exprtk::details::numeric::modulus<double>(double, double) Line | Count | Source | 1538 | 5.45k | { | 1539 | 5.45k | const typename details::number_type<T>::type num_type; | 1540 | 5.45k | return modulus_impl(v0, v1, num_type); | 1541 | 5.45k | } |
float exprtk::details::numeric::modulus<float>(float, float) Line | Count | Source | 1538 | 352 | { | 1539 | 352 | const typename details::number_type<T>::type num_type; | 1540 | 352 | return modulus_impl(v0, v1, num_type); | 1541 | 352 | } |
|
1542 | | |
1543 | | template <typename T> |
1544 | | inline T pow(const T v0, const T v1) |
1545 | 1.72k | { |
1546 | 1.72k | const typename details::number_type<T>::type num_type; |
1547 | 1.72k | return pow_impl(v0, v1, num_type); |
1548 | 1.72k | } double exprtk::details::numeric::pow<double>(double, double) Line | Count | Source | 1545 | 893 | { | 1546 | 893 | const typename details::number_type<T>::type num_type; | 1547 | 893 | return pow_impl(v0, v1, num_type); | 1548 | 893 | } |
float exprtk::details::numeric::pow<float>(float, float) Line | Count | Source | 1545 | 831 | { | 1546 | 831 | const typename details::number_type<T>::type num_type; | 1547 | 831 | return pow_impl(v0, v1, num_type); | 1548 | 831 | } |
|
1549 | | |
1550 | | template <typename T> |
1551 | | inline T logn(const T v0, const T v1) |
1552 | 0 | { |
1553 | 0 | const typename details::number_type<T>::type num_type; |
1554 | 0 | return logn_impl(v0, v1, num_type); |
1555 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::logn<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::logn<float>(float, float) |
1556 | | |
1557 | | template <typename T> |
1558 | | inline T root(const T v0, const T v1) |
1559 | 0 | { |
1560 | 0 | const typename details::number_type<T>::type num_type; |
1561 | 0 | return root_impl(v0, v1, num_type); |
1562 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::root<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::root<float>(float, float) |
1563 | | |
1564 | | template <typename T> |
1565 | | inline T roundn(const T v0, const T v1) |
1566 | 0 | { |
1567 | 0 | const typename details::number_type<T>::type num_type; |
1568 | 0 | return roundn_impl(v0, v1, num_type); |
1569 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::roundn<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::roundn<float>(float, float) |
1570 | | |
1571 | | template <typename T> |
1572 | | inline T hypot(const T v0, const T v1) |
1573 | 0 | { |
1574 | 0 | const typename details::number_type<T>::type num_type; |
1575 | 0 | return hypot_impl(v0, v1, num_type); |
1576 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::hypot<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::hypot<float>(float, float) |
1577 | | |
1578 | | template <typename T> |
1579 | | inline T atan2(const T v0, const T v1) |
1580 | 0 | { |
1581 | 0 | const typename details::number_type<T>::type num_type; |
1582 | 0 | return atan2_impl(v0, v1, num_type); |
1583 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::atan2<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::atan2<float>(float, float) |
1584 | | |
1585 | | template <typename T> |
1586 | | inline T shr(const T v0, const T v1) |
1587 | 0 | { |
1588 | 0 | const typename details::number_type<T>::type num_type; |
1589 | 0 | return shr_impl(v0, v1, num_type); |
1590 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::shr<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::shr<float>(float, float) |
1591 | | |
1592 | | template <typename T> |
1593 | | inline T shl(const T v0, const T v1) |
1594 | 0 | { |
1595 | 0 | const typename details::number_type<T>::type num_type; |
1596 | 0 | return shl_impl(v0, v1, num_type); |
1597 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::shl<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::shl<float>(float, float) |
1598 | | |
1599 | | template <typename T> |
1600 | | inline T and_opr(const T v0, const T v1) |
1601 | 22 | { |
1602 | 22 | const typename details::number_type<T>::type num_type; |
1603 | 22 | return and_impl(v0, v1, num_type); |
1604 | 22 | } double exprtk::details::numeric::and_opr<double>(double, double) Line | Count | Source | 1601 | 11 | { | 1602 | 11 | const typename details::number_type<T>::type num_type; | 1603 | 11 | return and_impl(v0, v1, num_type); | 1604 | 11 | } |
float exprtk::details::numeric::and_opr<float>(float, float) Line | Count | Source | 1601 | 11 | { | 1602 | 11 | const typename details::number_type<T>::type num_type; | 1603 | 11 | return and_impl(v0, v1, num_type); | 1604 | 11 | } |
|
1605 | | |
1606 | | template <typename T> |
1607 | | inline T nand_opr(const T v0, const T v1) |
1608 | 9 | { |
1609 | 9 | const typename details::number_type<T>::type num_type; |
1610 | 9 | return nand_impl(v0, v1, num_type); |
1611 | 9 | } double exprtk::details::numeric::nand_opr<double>(double, double) Line | Count | Source | 1608 | 5 | { | 1609 | 5 | const typename details::number_type<T>::type num_type; | 1610 | 5 | return nand_impl(v0, v1, num_type); | 1611 | 5 | } |
float exprtk::details::numeric::nand_opr<float>(float, float) Line | Count | Source | 1608 | 4 | { | 1609 | 4 | const typename details::number_type<T>::type num_type; | 1610 | 4 | return nand_impl(v0, v1, num_type); | 1611 | 4 | } |
|
1612 | | |
1613 | | template <typename T> |
1614 | | inline T or_opr(const T v0, const T v1) |
1615 | 4 | { |
1616 | 4 | const typename details::number_type<T>::type num_type; |
1617 | 4 | return or_impl(v0, v1, num_type); |
1618 | 4 | } double exprtk::details::numeric::or_opr<double>(double, double) Line | Count | Source | 1615 | 2 | { | 1616 | 2 | const typename details::number_type<T>::type num_type; | 1617 | 2 | return or_impl(v0, v1, num_type); | 1618 | 2 | } |
float exprtk::details::numeric::or_opr<float>(float, float) Line | Count | Source | 1615 | 2 | { | 1616 | 2 | const typename details::number_type<T>::type num_type; | 1617 | 2 | return or_impl(v0, v1, num_type); | 1618 | 2 | } |
|
1619 | | |
1620 | | template <typename T> |
1621 | | inline T nor_opr(const T v0, const T v1) |
1622 | 0 | { |
1623 | 0 | const typename details::number_type<T>::type num_type; |
1624 | 0 | return nor_impl(v0, v1, num_type); |
1625 | 0 | } Unexecuted instantiation: double exprtk::details::numeric::nor_opr<double>(double, double) Unexecuted instantiation: float exprtk::details::numeric::nor_opr<float>(float, float) |
1626 | | |
1627 | | template <typename T> |
1628 | | inline T xor_opr(const T v0, const T v1) |
1629 | 19 | { |
1630 | 19 | const typename details::number_type<T>::type num_type; |
1631 | 19 | return xor_impl(v0, v1, num_type); |
1632 | 19 | } double exprtk::details::numeric::xor_opr<double>(double, double) Line | Count | Source | 1629 | 12 | { | 1630 | 12 | const typename details::number_type<T>::type num_type; | 1631 | 12 | return xor_impl(v0, v1, num_type); | 1632 | 12 | } |
float exprtk::details::numeric::xor_opr<float>(float, float) Line | Count | Source | 1629 | 7 | { | 1630 | 7 | const typename details::number_type<T>::type num_type; | 1631 | 7 | return xor_impl(v0, v1, num_type); | 1632 | 7 | } |
|
1633 | | |
1634 | | template <typename T> |
1635 | | inline T xnor_opr(const T v0, const T v1) |
1636 | 20 | { |
1637 | 20 | const typename details::number_type<T>::type num_type; |
1638 | 20 | return xnor_impl(v0, v1, num_type); |
1639 | 20 | } double exprtk::details::numeric::xnor_opr<double>(double, double) Line | Count | Source | 1636 | 12 | { | 1637 | 12 | const typename details::number_type<T>::type num_type; | 1638 | 12 | return xnor_impl(v0, v1, num_type); | 1639 | 12 | } |
float exprtk::details::numeric::xnor_opr<float>(float, float) Line | Count | Source | 1636 | 8 | { | 1637 | 8 | const typename details::number_type<T>::type num_type; | 1638 | 8 | return xnor_impl(v0, v1, num_type); | 1639 | 8 | } |
|
1640 | | |
1641 | | template <typename T> |
1642 | | inline bool is_integer(const T v) |
1643 | 46.6k | { |
1644 | 46.6k | const typename details::number_type<T>::type num_type; |
1645 | 46.6k | return is_integer_impl(v, num_type); |
1646 | 46.6k | } bool exprtk::details::numeric::is_integer<double>(double) Line | Count | Source | 1643 | 23.5k | { | 1644 | 23.5k | const typename details::number_type<T>::type num_type; | 1645 | 23.5k | return is_integer_impl(v, num_type); | 1646 | 23.5k | } |
bool exprtk::details::numeric::is_integer<float>(float) Line | Count | Source | 1643 | 23.0k | { | 1644 | 23.0k | const typename details::number_type<T>::type num_type; | 1645 | 23.0k | return is_integer_impl(v, num_type); | 1646 | 23.0k | } |
|
1647 | | |
1648 | | template <typename T, unsigned int N> |
1649 | | struct fast_exp |
1650 | | { |
1651 | | static inline T result(T v) |
1652 | 1.69k | { |
1653 | 1.69k | unsigned int k = N; |
1654 | 1.69k | T l = T(1); |
1655 | | |
1656 | 10.8k | while (k) |
1657 | 9.17k | { |
1658 | 9.17k | if (1 == (k % 2)) |
1659 | 5.18k | { |
1660 | 5.18k | l *= v; |
1661 | 5.18k | --k; |
1662 | 5.18k | } |
1663 | | |
1664 | 9.17k | v *= v; |
1665 | 9.17k | k /= 2; |
1666 | 9.17k | } |
1667 | | |
1668 | 1.69k | return l; |
1669 | 1.69k | } |
1670 | | }; |
1671 | | |
1672 | 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 | 1672 | 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 | 1672 | 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; } }; |
|
1673 | 78 | 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 | 1673 | 39 | 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 | 1673 | 39 | template <typename T> struct fast_exp<T, 9> { static inline T result(const T v) { return fast_exp<T,8>::result(v) * v; } }; |
|
1674 | 160 | 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 | 1674 | 80 | 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 | 1674 | 80 | 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; } }; |
|
1675 | 112 | 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 | 1675 | 56 | 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 | 1675 | 56 | template <typename T> struct fast_exp<T, 7> { static inline T result(const T v) { return fast_exp<T,6>::result(v) * v; } }; |
|
1676 | 240 | 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 | 1676 | 120 | 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 | 1676 | 120 | 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; } }; |
|
1677 | 202 | 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 | 1677 | 101 | 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 | 1677 | 101 | template <typename T> struct fast_exp<T, 5> { static inline T result(const T v) { return fast_exp<T,4>::result(v) * v; } }; |
|
1678 | 546 | 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 | 1678 | 273 | 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 | 1678 | 273 | 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; } }; |
|
1679 | 428 | 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 | 1679 | 214 | 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 | 1679 | 214 | template <typename T> struct fast_exp<T, 3> { static inline T result(const T v) { return v * v * v; } }; |
|
1680 | 64 | 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 | 1680 | 32 | 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 | 1680 | 32 | template <typename T> struct fast_exp<T, 2> { static inline T result(const T v) { return v * v; } }; |
|
1681 | 97 | 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 | 1681 | 49 | 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 | 1681 | 48 | template <typename T> struct fast_exp<T, 1> { static inline T result(const T v) { return v; } }; |
|
1682 | | template <typename T> struct fast_exp<T, 0> { static inline T result(const T ) { return T(1); } }; |
1683 | | |
1684 | | #define exprtk_define_unary_function(FunctionName) \ |
1685 | | template <typename T> \ |
1686 | | inline T FunctionName (const T v) \ |
1687 | 147k | { \ |
1688 | 147k | const typename details::number_type<T>::type num_type; \ |
1689 | 147k | return FunctionName##_impl(v,num_type); \ |
1690 | 147k | } \ double exprtk::details::numeric::abs<double>(double) Line | Count | Source | 1687 | 47.3k | { \ | 1688 | 47.3k | const typename details::number_type<T>::type num_type; \ | 1689 | 47.3k | return FunctionName##_impl(v,num_type); \ | 1690 | 47.3k | } \ |
double exprtk::details::numeric::acos<double>(double) Line | Count | Source | 1687 | 1 | { \ | 1688 | 1 | const typename details::number_type<T>::type num_type; \ | 1689 | 1 | return FunctionName##_impl(v,num_type); \ | 1690 | 1 | } \ |
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) double exprtk::details::numeric::cos<double>(double) Line | Count | Source | 1687 | 9 | { \ | 1688 | 9 | const typename details::number_type<T>::type num_type; \ | 1689 | 9 | return FunctionName##_impl(v,num_type); \ | 1690 | 9 | } \ |
Unexecuted instantiation: double exprtk::details::numeric::cosh<double>(double) double exprtk::details::numeric::exp<double>(double) Line | Count | Source | 1687 | 5 | { \ | 1688 | 5 | const typename details::number_type<T>::type num_type; \ | 1689 | 5 | return FunctionName##_impl(v,num_type); \ | 1690 | 5 | } \ |
Unexecuted instantiation: double exprtk::details::numeric::expm1<double>(double) Unexecuted instantiation: double exprtk::details::numeric::floor<double>(double) double exprtk::details::numeric::log<double>(double) Line | Count | Source | 1687 | 3 | { \ | 1688 | 3 | const typename details::number_type<T>::type num_type; \ | 1689 | 3 | return FunctionName##_impl(v,num_type); \ | 1690 | 3 | } \ |
Unexecuted instantiation: double exprtk::details::numeric::log10<double>(double) double exprtk::details::numeric::log2<double>(double) Line | Count | Source | 1687 | 1 | { \ | 1688 | 1 | const typename details::number_type<T>::type num_type; \ | 1689 | 1 | return FunctionName##_impl(v,num_type); \ | 1690 | 1 | } \ |
Unexecuted instantiation: double exprtk::details::numeric::log1p<double>(double) double exprtk::details::numeric::neg<double>(double) Line | Count | Source | 1687 | 31.0k | { \ | 1688 | 31.0k | const typename details::number_type<T>::type num_type; \ | 1689 | 31.0k | return FunctionName##_impl(v,num_type); \ | 1690 | 31.0k | } \ |
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) double exprtk::details::numeric::tan<double>(double) Line | Count | Source | 1687 | 2 | { \ | 1688 | 2 | const typename details::number_type<T>::type num_type; \ | 1689 | 2 | return FunctionName##_impl(v,num_type); \ | 1690 | 2 | } \ |
double exprtk::details::numeric::tanh<double>(double) Line | Count | Source | 1687 | 1 | { \ | 1688 | 1 | const typename details::number_type<T>::type num_type; \ | 1689 | 1 | return FunctionName##_impl(v,num_type); \ | 1690 | 1 | } \ |
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 | 1687 | 46.1k | { \ | 1688 | 46.1k | const typename details::number_type<T>::type num_type; \ | 1689 | 46.1k | return FunctionName##_impl(v,num_type); \ | 1690 | 46.1k | } \ |
float exprtk::details::numeric::acos<float>(float) Line | Count | Source | 1687 | 1 | { \ | 1688 | 1 | const typename details::number_type<T>::type num_type; \ | 1689 | 1 | return FunctionName##_impl(v,num_type); \ | 1690 | 1 | } \ |
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) float exprtk::details::numeric::cos<float>(float) Line | Count | Source | 1687 | 9 | { \ | 1688 | 9 | const typename details::number_type<T>::type num_type; \ | 1689 | 9 | return FunctionName##_impl(v,num_type); \ | 1690 | 9 | } \ |
Unexecuted instantiation: float exprtk::details::numeric::cosh<float>(float) float exprtk::details::numeric::exp<float>(float) Line | Count | Source | 1687 | 3 | { \ | 1688 | 3 | const typename details::number_type<T>::type num_type; \ | 1689 | 3 | return FunctionName##_impl(v,num_type); \ | 1690 | 3 | } \ |
Unexecuted instantiation: float exprtk::details::numeric::expm1<float>(float) Unexecuted instantiation: float exprtk::details::numeric::floor<float>(float) float exprtk::details::numeric::log<float>(float) Line | Count | Source | 1687 | 3 | { \ | 1688 | 3 | const typename details::number_type<T>::type num_type; \ | 1689 | 3 | return FunctionName##_impl(v,num_type); \ | 1690 | 3 | } \ |
Unexecuted instantiation: float exprtk::details::numeric::log10<float>(float) float exprtk::details::numeric::log2<float>(float) Line | Count | Source | 1687 | 1 | { \ | 1688 | 1 | const typename details::number_type<T>::type num_type; \ | 1689 | 1 | return FunctionName##_impl(v,num_type); \ | 1690 | 1 | } \ |
Unexecuted instantiation: float exprtk::details::numeric::log1p<float>(float) float exprtk::details::numeric::neg<float>(float) Line | Count | Source | 1687 | 22.7k | { \ | 1688 | 22.7k | const typename details::number_type<T>::type num_type; \ | 1689 | 22.7k | return FunctionName##_impl(v,num_type); \ | 1690 | 22.7k | } \ |
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) float exprtk::details::numeric::tanh<float>(float) Line | Count | Source | 1687 | 1 | { \ | 1688 | 1 | const typename details::number_type<T>::type num_type; \ | 1689 | 1 | return FunctionName##_impl(v,num_type); \ | 1690 | 1 | } \ |
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) |
1691 | | |
1692 | | exprtk_define_unary_function(abs ) |
1693 | | exprtk_define_unary_function(acos ) |
1694 | | exprtk_define_unary_function(acosh) |
1695 | | exprtk_define_unary_function(asin ) |
1696 | | exprtk_define_unary_function(asinh) |
1697 | | exprtk_define_unary_function(atan ) |
1698 | | exprtk_define_unary_function(atanh) |
1699 | | exprtk_define_unary_function(ceil ) |
1700 | | exprtk_define_unary_function(cos ) |
1701 | | exprtk_define_unary_function(cosh ) |
1702 | | exprtk_define_unary_function(exp ) |
1703 | | exprtk_define_unary_function(expm1) |
1704 | | exprtk_define_unary_function(floor) |
1705 | | exprtk_define_unary_function(log ) |
1706 | | exprtk_define_unary_function(log10) |
1707 | | exprtk_define_unary_function(log2 ) |
1708 | | exprtk_define_unary_function(log1p) |
1709 | | exprtk_define_unary_function(neg ) |
1710 | | exprtk_define_unary_function(pos ) |
1711 | | exprtk_define_unary_function(round) |
1712 | | exprtk_define_unary_function(sin ) |
1713 | | exprtk_define_unary_function(sinc ) |
1714 | | exprtk_define_unary_function(sinh ) |
1715 | | exprtk_define_unary_function(sqrt ) |
1716 | | exprtk_define_unary_function(tan ) |
1717 | | exprtk_define_unary_function(tanh ) |
1718 | | exprtk_define_unary_function(cot ) |
1719 | | exprtk_define_unary_function(sec ) |
1720 | | exprtk_define_unary_function(csc ) |
1721 | | exprtk_define_unary_function(r2d ) |
1722 | | exprtk_define_unary_function(d2r ) |
1723 | | exprtk_define_unary_function(d2g ) |
1724 | | exprtk_define_unary_function(g2d ) |
1725 | | exprtk_define_unary_function(notl ) |
1726 | | exprtk_define_unary_function(sgn ) |
1727 | | exprtk_define_unary_function(erf ) |
1728 | | exprtk_define_unary_function(erfc ) |
1729 | | exprtk_define_unary_function(ncdf ) |
1730 | | exprtk_define_unary_function(frac ) |
1731 | | exprtk_define_unary_function(trunc) |
1732 | | #undef exprtk_define_unary_function |
1733 | | } |
1734 | | |
1735 | | template <typename T> |
1736 | | inline T compute_pow10(T d, const int exponent) |
1737 | 1.56k | { |
1738 | 1.56k | static const double fract10[] = |
1739 | 1.56k | { |
1740 | 1.56k | 0.0, |
1741 | 1.56k | 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, |
1742 | 1.56k | 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, |
1743 | 1.56k | 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, |
1744 | 1.56k | 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, |
1745 | 1.56k | 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, |
1746 | 1.56k | 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, |
1747 | 1.56k | 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, |
1748 | 1.56k | 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, |
1749 | 1.56k | 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, |
1750 | 1.56k | 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, |
1751 | 1.56k | 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, |
1752 | 1.56k | 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, |
1753 | 1.56k | 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, |
1754 | 1.56k | 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, |
1755 | 1.56k | 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, |
1756 | 1.56k | 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, |
1757 | 1.56k | 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, |
1758 | 1.56k | 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, |
1759 | 1.56k | 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, |
1760 | 1.56k | 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, |
1761 | 1.56k | 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, |
1762 | 1.56k | 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, |
1763 | 1.56k | 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, |
1764 | 1.56k | 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, |
1765 | 1.56k | 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, |
1766 | 1.56k | 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, |
1767 | 1.56k | 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, |
1768 | 1.56k | 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, |
1769 | 1.56k | 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, |
1770 | 1.56k | 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, |
1771 | 1.56k | 1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308 |
1772 | 1.56k | }; |
1773 | | |
1774 | 1.56k | static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double)); |
1775 | | |
1776 | 1.56k | const int e = std::abs(exponent); |
1777 | | |
1778 | 1.56k | if (exponent >= std::numeric_limits<T>::min_exponent10) |
1779 | 1.45k | { |
1780 | 1.45k | if (e < fract10_size) |
1781 | 1.45k | { |
1782 | 1.45k | if (exponent > 0) |
1783 | 254 | return T(d * fract10[e]); |
1784 | 1.20k | else |
1785 | 1.20k | return T(d / fract10[e]); |
1786 | 1.45k | } |
1787 | 0 | else |
1788 | 0 | return T(d * std::pow(10.0, 10.0 * exponent)); |
1789 | 1.45k | } |
1790 | 106 | else |
1791 | 106 | { |
1792 | 106 | d /= T(fract10[ -std::numeric_limits<T>::min_exponent10]); |
1793 | 106 | return T(d / fract10[-exponent + std::numeric_limits<T>::min_exponent10]); |
1794 | 106 | } |
1795 | 1.56k | } double exprtk::details::compute_pow10<double>(double, int) Line | Count | Source | 1737 | 868 | { | 1738 | 868 | static const double fract10[] = | 1739 | 868 | { | 1740 | 868 | 0.0, | 1741 | 868 | 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, | 1742 | 868 | 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, | 1743 | 868 | 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, | 1744 | 868 | 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, | 1745 | 868 | 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, | 1746 | 868 | 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, | 1747 | 868 | 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, | 1748 | 868 | 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, | 1749 | 868 | 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, | 1750 | 868 | 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, | 1751 | 868 | 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, | 1752 | 868 | 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, | 1753 | 868 | 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, | 1754 | 868 | 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, | 1755 | 868 | 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, | 1756 | 868 | 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, | 1757 | 868 | 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, | 1758 | 868 | 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, | 1759 | 868 | 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, | 1760 | 868 | 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, | 1761 | 868 | 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, | 1762 | 868 | 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, | 1763 | 868 | 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, | 1764 | 868 | 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, | 1765 | 868 | 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, | 1766 | 868 | 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, | 1767 | 868 | 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, | 1768 | 868 | 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, | 1769 | 868 | 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, | 1770 | 868 | 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, | 1771 | 868 | 1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308 | 1772 | 868 | }; | 1773 | | | 1774 | 868 | static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double)); | 1775 | | | 1776 | 868 | const int e = std::abs(exponent); | 1777 | | | 1778 | 868 | if (exponent >= std::numeric_limits<T>::min_exponent10) | 1779 | 861 | { | 1780 | 861 | if (e < fract10_size) | 1781 | 861 | { | 1782 | 861 | if (exponent > 0) | 1783 | 160 | return T(d * fract10[e]); | 1784 | 701 | else | 1785 | 701 | return T(d / fract10[e]); | 1786 | 861 | } | 1787 | 0 | else | 1788 | 0 | return T(d * std::pow(10.0, 10.0 * exponent)); | 1789 | 861 | } | 1790 | 7 | else | 1791 | 7 | { | 1792 | 7 | d /= T(fract10[ -std::numeric_limits<T>::min_exponent10]); | 1793 | 7 | return T(d / fract10[-exponent + std::numeric_limits<T>::min_exponent10]); | 1794 | 7 | } | 1795 | 868 | } |
float exprtk::details::compute_pow10<float>(float, int) Line | Count | Source | 1737 | 694 | { | 1738 | 694 | static const double fract10[] = | 1739 | 694 | { | 1740 | 694 | 0.0, | 1741 | 694 | 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, | 1742 | 694 | 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, | 1743 | 694 | 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, | 1744 | 694 | 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, | 1745 | 694 | 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, | 1746 | 694 | 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, | 1747 | 694 | 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, | 1748 | 694 | 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, | 1749 | 694 | 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, | 1750 | 694 | 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, | 1751 | 694 | 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, | 1752 | 694 | 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, | 1753 | 694 | 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, | 1754 | 694 | 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, | 1755 | 694 | 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, | 1756 | 694 | 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, | 1757 | 694 | 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, | 1758 | 694 | 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, | 1759 | 694 | 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, | 1760 | 694 | 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, | 1761 | 694 | 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, | 1762 | 694 | 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, | 1763 | 694 | 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, | 1764 | 694 | 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, | 1765 | 694 | 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, | 1766 | 694 | 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, | 1767 | 694 | 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, | 1768 | 694 | 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, | 1769 | 694 | 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, | 1770 | 694 | 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, | 1771 | 694 | 1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308 | 1772 | 694 | }; | 1773 | | | 1774 | 694 | static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double)); | 1775 | | | 1776 | 694 | const int e = std::abs(exponent); | 1777 | | | 1778 | 694 | if (exponent >= std::numeric_limits<T>::min_exponent10) | 1779 | 595 | { | 1780 | 595 | if (e < fract10_size) | 1781 | 595 | { | 1782 | 595 | if (exponent > 0) | 1783 | 94 | return T(d * fract10[e]); | 1784 | 501 | else | 1785 | 501 | return T(d / fract10[e]); | 1786 | 595 | } | 1787 | 0 | else | 1788 | 0 | return T(d * std::pow(10.0, 10.0 * exponent)); | 1789 | 595 | } | 1790 | 99 | else | 1791 | 99 | { | 1792 | 99 | d /= T(fract10[ -std::numeric_limits<T>::min_exponent10]); | 1793 | 99 | return T(d / fract10[-exponent + std::numeric_limits<T>::min_exponent10]); | 1794 | 99 | } | 1795 | 694 | } |
|
1796 | | |
1797 | | template <typename Iterator, typename T> |
1798 | | inline bool string_to_type_converter_impl_ref(Iterator& itr, const Iterator end, T& result) |
1799 | 1.64k | { |
1800 | 1.64k | if (itr == end) |
1801 | 0 | return false; |
1802 | | |
1803 | 1.64k | const bool negative = ('-' == (*itr)); |
1804 | | |
1805 | 1.64k | if (negative || ('+' == (*itr))) |
1806 | 1.01k | { |
1807 | 1.01k | if (end == ++itr) |
1808 | 288 | return false; |
1809 | 1.01k | } |
1810 | | |
1811 | 1.35k | static const uchar_t zero = static_cast<uchar_t>('0'); |
1812 | | |
1813 | 8.90k | while ((end != itr) && (zero == (*itr))) ++itr; |
1814 | | |
1815 | 1.35k | bool return_result = true; |
1816 | 1.35k | unsigned int digit = 0; |
1817 | 1.35k | const std::size_t length = static_cast<std::size_t>(std::distance(itr,end)); |
1818 | | |
1819 | 1.35k | if (length <= 4) |
1820 | 1.28k | { |
1821 | 1.28k | switch (length) |
1822 | 1.28k | { |
1823 | | #ifdef exprtk_use_lut |
1824 | | |
1825 | | #define exprtk_process_digit \ |
1826 | | if ((digit = details::digit_table[(int)*itr++]) < 10) \ |
1827 | | result = result * 10 + (digit); \ |
1828 | | else \ |
1829 | | { \ |
1830 | | return_result = false; \ |
1831 | | break; \ |
1832 | | } \ |
1833 | | exprtk_fallthrough \ |
1834 | | |
1835 | | #else |
1836 | | |
1837 | 0 | #define exprtk_process_digit \ |
1838 | 1.44k | if ((digit = (*itr++ - zero)) < 10) \ |
1839 | 1.44k | result = result * T(10) + digit; \ |
1840 | 1.44k | else \ |
1841 | 1.44k | { \ |
1842 | 46 | return_result = false; \ |
1843 | 46 | break; \ |
1844 | 46 | } \ |
1845 | 1.44k | exprtk_fallthrough \ |
1846 | 0 | |
1847 | 0 | #endif |
1848 | | |
1849 | 178 | case 4 : exprtk_process_digit |
1850 | 375 | case 3 : exprtk_process_digit |
1851 | 895 | case 2 : exprtk_process_digit |
1852 | 1.16k | case 1 : if ((digit = (*itr - zero))>= 10) |
1853 | 188 | { |
1854 | 188 | digit = 0; |
1855 | 188 | return_result = false; |
1856 | 188 | } |
1857 | | |
1858 | 1.28k | #undef exprtk_process_digit |
1859 | 1.28k | } |
1860 | 1.28k | } |
1861 | 72 | else |
1862 | 72 | return_result = false; |
1863 | | |
1864 | 1.35k | if (length && return_result) |
1865 | 974 | { |
1866 | 974 | result = result * 10 + static_cast<T>(digit); |
1867 | 974 | ++itr; |
1868 | 974 | } |
1869 | | |
1870 | 1.35k | result = negative ? -result : result; |
1871 | 1.35k | return return_result; |
1872 | 1.35k | } |
1873 | | |
1874 | | template <typename Iterator, typename T> |
1875 | | static inline bool parse_nan(Iterator& itr, const Iterator end, T& t) |
1876 | 0 | { |
1877 | 0 | typedef typename std::iterator_traits<Iterator>::value_type type; |
1878 | |
|
1879 | 0 | static const std::size_t nan_length = 3; |
1880 | |
|
1881 | 0 | if (std::distance(itr,end) != static_cast<int>(nan_length)) |
1882 | 0 | return false; |
1883 | | |
1884 | 0 | if (static_cast<type>('n') == (*itr)) |
1885 | 0 | { |
1886 | 0 | if ( |
1887 | 0 | (static_cast<type>('a') != *(itr + 1)) || |
1888 | 0 | (static_cast<type>('n') != *(itr + 2)) |
1889 | 0 | ) |
1890 | 0 | { |
1891 | 0 | return false; |
1892 | 0 | } |
1893 | 0 | } |
1894 | 0 | else if ( |
1895 | 0 | (static_cast<type>('A') != *(itr + 1)) || |
1896 | 0 | (static_cast<type>('N') != *(itr + 2)) |
1897 | 0 | ) |
1898 | 0 | { |
1899 | 0 | return false; |
1900 | 0 | } |
1901 | | |
1902 | 0 | t = std::numeric_limits<T>::quiet_NaN(); |
1903 | |
|
1904 | 0 | return true; |
1905 | 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&) |
1906 | | |
1907 | | template <typename Iterator, typename T> |
1908 | | static inline bool parse_inf(Iterator& itr, const Iterator end, T& t, const bool negative) |
1909 | 0 | { |
1910 | 0 | static const char_t inf_uc[] = "INFINITY"; |
1911 | 0 | static const char_t inf_lc[] = "infinity"; |
1912 | 0 | static const std::size_t inf_length = 8; |
1913 | |
|
1914 | 0 | const std::size_t length = static_cast<std::size_t>(std::distance(itr,end)); |
1915 | |
|
1916 | 0 | if ((3 != length) && (inf_length != length)) |
1917 | 0 | return false; |
1918 | | |
1919 | 0 | char_cptr inf_itr = ('i' == (*itr)) ? inf_lc : inf_uc; |
1920 | |
|
1921 | 0 | while (end != itr) |
1922 | 0 | { |
1923 | 0 | if (*inf_itr == static_cast<char_t>(*itr)) |
1924 | 0 | { |
1925 | 0 | ++itr; |
1926 | 0 | ++inf_itr; |
1927 | 0 | continue; |
1928 | 0 | } |
1929 | 0 | else |
1930 | 0 | return false; |
1931 | 0 | } |
1932 | | |
1933 | 0 | if (negative) |
1934 | 0 | t = -std::numeric_limits<T>::infinity(); |
1935 | 0 | else |
1936 | 0 | t = std::numeric_limits<T>::infinity(); |
1937 | |
|
1938 | 0 | return true; |
1939 | 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) |
1940 | | |
1941 | | template <typename T> |
1942 | | inline bool valid_exponent(const int exponent, numeric::details::real_type_tag) |
1943 | 618k | { |
1944 | 618k | using namespace details::numeric; |
1945 | 618k | return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp); |
1946 | 618k | } bool exprtk::details::valid_exponent<double>(int, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1943 | 375k | { | 1944 | 375k | using namespace details::numeric; | 1945 | 375k | return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp); | 1946 | 375k | } |
bool exprtk::details::valid_exponent<float>(int, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1943 | 242k | { | 1944 | 242k | using namespace details::numeric; | 1945 | 242k | return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp); | 1946 | 242k | } |
|
1947 | | |
1948 | | template <typename Iterator, typename T> |
1949 | | inline bool string_to_real(Iterator& itr_external, const Iterator end, T& t, numeric::details::real_type_tag) |
1950 | 618k | { |
1951 | 618k | if (end == itr_external) return false; |
1952 | | |
1953 | 618k | Iterator itr = itr_external; |
1954 | | |
1955 | 618k | T d = T(0); |
1956 | | |
1957 | 618k | const bool negative = ('-' == (*itr)); |
1958 | | |
1959 | 618k | if (negative || '+' == (*itr)) |
1960 | 0 | { |
1961 | 0 | if (end == ++itr) |
1962 | 0 | return false; |
1963 | 0 | } |
1964 | | |
1965 | 618k | bool instate = false; |
1966 | | |
1967 | 618k | static const char_t zero = static_cast<uchar_t>('0'); |
1968 | | |
1969 | 618k | #define parse_digit_1(d) \ |
1970 | 2.92M | if ((digit = (*itr - zero)) < 10) \ |
1971 | 2.92M | { d = d * T(10) + digit; } \ |
1972 | 2.92M | else \ |
1973 | 2.92M | { break; } \ |
1974 | 2.92M | if (end == ++itr) break; \ |
1975 | 618k | |
1976 | 618k | #define parse_digit_2(d) \ |
1977 | 1.19M | if ((digit = (*itr - zero)) < 10) \ |
1978 | 1.19M | { d = d * T(10) + digit; } \ |
1979 | 1.19M | else \ |
1980 | 1.19M | { break; } \ |
1981 | 1.19M | ++itr; \ |
1982 | 618k | |
1983 | 618k | if ('.' != (*itr)) |
1984 | 617k | { |
1985 | 617k | const Iterator curr = itr; |
1986 | | |
1987 | 1.87M | while ((end != itr) && (zero == (*itr))) ++itr; |
1988 | | |
1989 | 1.54M | while (end != itr) |
1990 | 1.33M | { |
1991 | 1.33M | unsigned int digit; |
1992 | 1.33M | parse_digit_1(d) |
1993 | 2.11M | parse_digit_1(d) |
1994 | 1.86M | parse_digit_2(d) |
1995 | 1.86M | } |
1996 | | |
1997 | 617k | if (curr != itr) instate = true; |
1998 | 617k | } |
1999 | | |
2000 | 618k | int exponent = 0; |
2001 | | |
2002 | 618k | if (end != itr) |
2003 | 3.26k | { |
2004 | 3.26k | if ('.' == (*itr)) |
2005 | 1.77k | { |
2006 | 1.77k | const Iterator curr = ++itr; |
2007 | 1.77k | T tmp_d = T(0); |
2008 | | |
2009 | 267k | while (end != itr) |
2010 | 266k | { |
2011 | 266k | unsigned int digit; |
2012 | 266k | parse_digit_1(tmp_d) |
2013 | 531k | parse_digit_1(tmp_d) |
2014 | 530k | parse_digit_2(tmp_d) |
2015 | 530k | } |
2016 | | |
2017 | 1.77k | if (curr != itr) |
2018 | 999 | { |
2019 | 999 | instate = true; |
2020 | | |
2021 | 999 | const int frac_exponent = static_cast<int>(-std::distance(curr, itr)); |
2022 | | |
2023 | 999 | if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag())) |
2024 | 57 | return false; |
2025 | | |
2026 | 942 | d += compute_pow10(tmp_d, frac_exponent); |
2027 | 942 | } |
2028 | | |
2029 | 1.77k | #undef parse_digit_1 |
2030 | 1.77k | #undef parse_digit_2 |
2031 | 1.77k | } |
2032 | | |
2033 | 3.20k | if (end != itr) |
2034 | 1.64k | { |
2035 | 1.64k | typename std::iterator_traits<Iterator>::value_type c = (*itr); |
2036 | | |
2037 | 1.64k | if (('e' == c) || ('E' == c)) |
2038 | 1.64k | { |
2039 | 1.64k | int exp = 0; |
2040 | | |
2041 | 1.64k | if (!details::string_to_type_converter_impl_ref(++itr, end, exp)) |
2042 | 594 | { |
2043 | 594 | if (end == itr) |
2044 | 288 | return false; |
2045 | 306 | else |
2046 | 306 | c = (*itr); |
2047 | 594 | } |
2048 | | |
2049 | 1.35k | exponent += exp; |
2050 | 1.35k | } |
2051 | | |
2052 | 1.35k | if (end != itr) |
2053 | 306 | { |
2054 | 306 | if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c)) |
2055 | 0 | ++itr; |
2056 | 306 | else if ('#' == c) |
2057 | 0 | { |
2058 | 0 | if (end == ++itr) |
2059 | 0 | return false; |
2060 | 0 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) |
2061 | 0 | { |
2062 | 0 | if (('i' == (*itr)) || ('I' == (*itr))) |
2063 | 0 | { |
2064 | 0 | return parse_inf(itr, end, t, negative); |
2065 | 0 | } |
2066 | 0 | else if (('n' == (*itr)) || ('N' == (*itr))) |
2067 | 0 | { |
2068 | 0 | return parse_nan(itr, end, t); |
2069 | 0 | } |
2070 | 0 | else |
2071 | 0 | return false; |
2072 | 0 | } |
2073 | 0 | else |
2074 | 0 | return false; |
2075 | 0 | } |
2076 | 306 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) |
2077 | 90 | { |
2078 | 90 | if (('i' == (*itr)) || ('I' == (*itr))) |
2079 | 0 | { |
2080 | 0 | return parse_inf(itr, end, t, negative); |
2081 | 0 | } |
2082 | 90 | else if (('n' == (*itr)) || ('N' == (*itr))) |
2083 | 0 | { |
2084 | 0 | return parse_nan(itr, end, t); |
2085 | 0 | } |
2086 | 90 | else |
2087 | 90 | return false; |
2088 | 90 | } |
2089 | 216 | else |
2090 | 216 | return false; |
2091 | 306 | } |
2092 | 1.35k | } |
2093 | 3.20k | } |
2094 | | |
2095 | 617k | if ((end != itr) || (!instate)) |
2096 | 0 | return false; |
2097 | 617k | else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag())) |
2098 | 354 | return false; |
2099 | 617k | else if (exponent) |
2100 | 620 | d = compute_pow10(d,exponent); |
2101 | | |
2102 | 617k | t = static_cast<T>((negative) ? -d : d); |
2103 | 617k | return true; |
2104 | 617k | } bool exprtk::details::string_to_real<char const*, double>(char const*&, char const*, double&, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1950 | 375k | { | 1951 | 375k | if (end == itr_external) return false; | 1952 | | | 1953 | 375k | Iterator itr = itr_external; | 1954 | | | 1955 | 375k | T d = T(0); | 1956 | | | 1957 | 375k | const bool negative = ('-' == (*itr)); | 1958 | | | 1959 | 375k | if (negative || '+' == (*itr)) | 1960 | 0 | { | 1961 | 0 | if (end == ++itr) | 1962 | 0 | return false; | 1963 | 0 | } | 1964 | | | 1965 | 375k | bool instate = false; | 1966 | | | 1967 | 375k | static const char_t zero = static_cast<uchar_t>('0'); | 1968 | | | 1969 | 375k | #define parse_digit_1(d) \ | 1970 | 375k | if ((digit = (*itr - zero)) < 10) \ | 1971 | 375k | { d = d * T(10) + digit; } \ | 1972 | 375k | else \ | 1973 | 375k | { break; } \ | 1974 | 375k | if (end == ++itr) break; \ | 1975 | 375k | | 1976 | 375k | #define parse_digit_2(d) \ | 1977 | 375k | if ((digit = (*itr - zero)) < 10) \ | 1978 | 375k | { d = d * T(10) + digit; } \ | 1979 | 375k | else \ | 1980 | 375k | { break; } \ | 1981 | 375k | ++itr; \ | 1982 | 375k | | 1983 | 375k | if ('.' != (*itr)) | 1984 | 375k | { | 1985 | 375k | const Iterator curr = itr; | 1986 | | | 1987 | 1.01M | while ((end != itr) && (zero == (*itr))) ++itr; | 1988 | | | 1989 | 845k | while (end != itr) | 1990 | 720k | { | 1991 | 720k | unsigned int digit; | 1992 | 720k | parse_digit_1(d) | 1993 | 1.10M | parse_digit_1(d) | 1994 | 940k | parse_digit_2(d) | 1995 | 940k | } | 1996 | | | 1997 | 375k | if (curr != itr) instate = true; | 1998 | 375k | } | 1999 | | | 2000 | 375k | int exponent = 0; | 2001 | | | 2002 | 375k | if (end != itr) | 2003 | 1.65k | { | 2004 | 1.65k | if ('.' == (*itr)) | 2005 | 893 | { | 2006 | 893 | const Iterator curr = ++itr; | 2007 | 893 | T tmp_d = T(0); | 2008 | | | 2009 | 133k | while (end != itr) | 2010 | 133k | { | 2011 | 133k | unsigned int digit; | 2012 | 133k | parse_digit_1(tmp_d) | 2013 | 265k | parse_digit_1(tmp_d) | 2014 | 265k | parse_digit_2(tmp_d) | 2015 | 265k | } | 2016 | | | 2017 | 893 | if (curr != itr) | 2018 | 504 | { | 2019 | 504 | instate = true; | 2020 | | | 2021 | 504 | const int frac_exponent = static_cast<int>(-std::distance(curr, itr)); | 2022 | | | 2023 | 504 | if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag())) | 2024 | 4 | return false; | 2025 | | | 2026 | 500 | d += compute_pow10(tmp_d, frac_exponent); | 2027 | 500 | } | 2028 | | | 2029 | 893 | #undef parse_digit_1 | 2030 | 893 | #undef parse_digit_2 | 2031 | 893 | } | 2032 | | | 2033 | 1.64k | if (end != itr) | 2034 | 836 | { | 2035 | 836 | typename std::iterator_traits<Iterator>::value_type c = (*itr); | 2036 | | | 2037 | 836 | if (('e' == c) || ('E' == c)) | 2038 | 836 | { | 2039 | 836 | int exp = 0; | 2040 | | | 2041 | 836 | if (!details::string_to_type_converter_impl_ref(++itr, end, exp)) | 2042 | 297 | { | 2043 | 297 | if (end == itr) | 2044 | 144 | return false; | 2045 | 153 | else | 2046 | 153 | c = (*itr); | 2047 | 297 | } | 2048 | | | 2049 | 692 | exponent += exp; | 2050 | 692 | } | 2051 | | | 2052 | 692 | if (end != itr) | 2053 | 153 | { | 2054 | 153 | if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c)) | 2055 | 0 | ++itr; | 2056 | 153 | else if ('#' == c) | 2057 | 0 | { | 2058 | 0 | if (end == ++itr) | 2059 | 0 | return false; | 2060 | 0 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) | 2061 | 0 | { | 2062 | 0 | if (('i' == (*itr)) || ('I' == (*itr))) | 2063 | 0 | { | 2064 | 0 | return parse_inf(itr, end, t, negative); | 2065 | 0 | } | 2066 | 0 | else if (('n' == (*itr)) || ('N' == (*itr))) | 2067 | 0 | { | 2068 | 0 | return parse_nan(itr, end, t); | 2069 | 0 | } | 2070 | 0 | else | 2071 | 0 | return false; | 2072 | 0 | } | 2073 | 0 | else | 2074 | 0 | return false; | 2075 | 0 | } | 2076 | 153 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) | 2077 | 45 | { | 2078 | 45 | if (('i' == (*itr)) || ('I' == (*itr))) | 2079 | 0 | { | 2080 | 0 | return parse_inf(itr, end, t, negative); | 2081 | 0 | } | 2082 | 45 | else if (('n' == (*itr)) || ('N' == (*itr))) | 2083 | 0 | { | 2084 | 0 | return parse_nan(itr, end, t); | 2085 | 0 | } | 2086 | 45 | else | 2087 | 45 | return false; | 2088 | 45 | } | 2089 | 108 | else | 2090 | 108 | return false; | 2091 | 153 | } | 2092 | 692 | } | 2093 | 1.64k | } | 2094 | | | 2095 | 375k | if ((end != itr) || (!instate)) | 2096 | 0 | return false; | 2097 | 375k | else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag())) | 2098 | 131 | return false; | 2099 | 375k | else if (exponent) | 2100 | 368 | d = compute_pow10(d,exponent); | 2101 | | | 2102 | 375k | t = static_cast<T>((negative) ? -d : d); | 2103 | 375k | return true; | 2104 | 375k | } |
bool exprtk::details::string_to_real<char const*, float>(char const*&, char const*, float&, exprtk::details::numeric::details::real_type_tag) Line | Count | Source | 1950 | 242k | { | 1951 | 242k | if (end == itr_external) return false; | 1952 | | | 1953 | 242k | Iterator itr = itr_external; | 1954 | | | 1955 | 242k | T d = T(0); | 1956 | | | 1957 | 242k | const bool negative = ('-' == (*itr)); | 1958 | | | 1959 | 242k | if (negative || '+' == (*itr)) | 1960 | 0 | { | 1961 | 0 | if (end == ++itr) | 1962 | 0 | return false; | 1963 | 0 | } | 1964 | | | 1965 | 242k | bool instate = false; | 1966 | | | 1967 | 242k | static const char_t zero = static_cast<uchar_t>('0'); | 1968 | | | 1969 | 242k | #define parse_digit_1(d) \ | 1970 | 242k | if ((digit = (*itr - zero)) < 10) \ | 1971 | 242k | { d = d * T(10) + digit; } \ | 1972 | 242k | else \ | 1973 | 242k | { break; } \ | 1974 | 242k | if (end == ++itr) break; \ | 1975 | 242k | | 1976 | 242k | #define parse_digit_2(d) \ | 1977 | 242k | if ((digit = (*itr - zero)) < 10) \ | 1978 | 242k | { d = d * T(10) + digit; } \ | 1979 | 242k | else \ | 1980 | 242k | { break; } \ | 1981 | 242k | ++itr; \ | 1982 | 242k | | 1983 | 242k | if ('.' != (*itr)) | 1984 | 242k | { | 1985 | 242k | const Iterator curr = itr; | 1986 | | | 1987 | 855k | while ((end != itr) && (zero == (*itr))) ++itr; | 1988 | | | 1989 | 703k | while (end != itr) | 1990 | 615k | { | 1991 | 615k | unsigned int digit; | 1992 | 615k | parse_digit_1(d) | 1993 | 1.01M | parse_digit_1(d) | 1994 | 922k | parse_digit_2(d) | 1995 | 922k | } | 1996 | | | 1997 | 242k | if (curr != itr) instate = true; | 1998 | 242k | } | 1999 | | | 2000 | 242k | int exponent = 0; | 2001 | | | 2002 | 242k | if (end != itr) | 2003 | 1.61k | { | 2004 | 1.61k | if ('.' == (*itr)) | 2005 | 881 | { | 2006 | 881 | const Iterator curr = ++itr; | 2007 | 881 | T tmp_d = T(0); | 2008 | | | 2009 | 133k | while (end != itr) | 2010 | 133k | { | 2011 | 133k | unsigned int digit; | 2012 | 133k | parse_digit_1(tmp_d) | 2013 | 265k | parse_digit_1(tmp_d) | 2014 | 265k | parse_digit_2(tmp_d) | 2015 | 265k | } | 2016 | | | 2017 | 881 | if (curr != itr) | 2018 | 495 | { | 2019 | 495 | instate = true; | 2020 | | | 2021 | 495 | const int frac_exponent = static_cast<int>(-std::distance(curr, itr)); | 2022 | | | 2023 | 495 | if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag())) | 2024 | 53 | return false; | 2025 | | | 2026 | 442 | d += compute_pow10(tmp_d, frac_exponent); | 2027 | 442 | } | 2028 | | | 2029 | 881 | #undef parse_digit_1 | 2030 | 881 | #undef parse_digit_2 | 2031 | 881 | } | 2032 | | | 2033 | 1.55k | if (end != itr) | 2034 | 806 | { | 2035 | 806 | typename std::iterator_traits<Iterator>::value_type c = (*itr); | 2036 | | | 2037 | 806 | if (('e' == c) || ('E' == c)) | 2038 | 806 | { | 2039 | 806 | int exp = 0; | 2040 | | | 2041 | 806 | if (!details::string_to_type_converter_impl_ref(++itr, end, exp)) | 2042 | 297 | { | 2043 | 297 | if (end == itr) | 2044 | 144 | return false; | 2045 | 153 | else | 2046 | 153 | c = (*itr); | 2047 | 297 | } | 2048 | | | 2049 | 662 | exponent += exp; | 2050 | 662 | } | 2051 | | | 2052 | 662 | if (end != itr) | 2053 | 153 | { | 2054 | 153 | if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c)) | 2055 | 0 | ++itr; | 2056 | 153 | else if ('#' == c) | 2057 | 0 | { | 2058 | 0 | if (end == ++itr) | 2059 | 0 | return false; | 2060 | 0 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) | 2061 | 0 | { | 2062 | 0 | if (('i' == (*itr)) || ('I' == (*itr))) | 2063 | 0 | { | 2064 | 0 | return parse_inf(itr, end, t, negative); | 2065 | 0 | } | 2066 | 0 | else if (('n' == (*itr)) || ('N' == (*itr))) | 2067 | 0 | { | 2068 | 0 | return parse_nan(itr, end, t); | 2069 | 0 | } | 2070 | 0 | else | 2071 | 0 | return false; | 2072 | 0 | } | 2073 | 0 | else | 2074 | 0 | return false; | 2075 | 0 | } | 2076 | 153 | else if (('I' <= (*itr)) && ((*itr) <= 'n')) | 2077 | 45 | { | 2078 | 45 | if (('i' == (*itr)) || ('I' == (*itr))) | 2079 | 0 | { | 2080 | 0 | return parse_inf(itr, end, t, negative); | 2081 | 0 | } | 2082 | 45 | else if (('n' == (*itr)) || ('N' == (*itr))) | 2083 | 0 | { | 2084 | 0 | return parse_nan(itr, end, t); | 2085 | 0 | } | 2086 | 45 | else | 2087 | 45 | return false; | 2088 | 45 | } | 2089 | 108 | else | 2090 | 108 | return false; | 2091 | 153 | } | 2092 | 662 | } | 2093 | 1.55k | } | 2094 | | | 2095 | 242k | if ((end != itr) || (!instate)) | 2096 | 0 | return false; | 2097 | 242k | else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag())) | 2098 | 223 | return false; | 2099 | 242k | else if (exponent) | 2100 | 252 | d = compute_pow10(d,exponent); | 2101 | | | 2102 | 242k | t = static_cast<T>((negative) ? -d : d); | 2103 | 242k | return true; | 2104 | 242k | } |
|
2105 | | |
2106 | | template <typename T> |
2107 | | inline bool string_to_real(const std::string& s, T& t) |
2108 | 618k | { |
2109 | 618k | const typename numeric::details::number_type<T>::type num_type; |
2110 | | |
2111 | 618k | char_cptr begin = s.data(); |
2112 | 618k | char_cptr end = s.data() + s.size(); |
2113 | | |
2114 | 618k | return string_to_real(begin, end, t, num_type); |
2115 | 618k | } 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 | 2108 | 375k | { | 2109 | 375k | const typename numeric::details::number_type<T>::type num_type; | 2110 | | | 2111 | 375k | char_cptr begin = s.data(); | 2112 | 375k | char_cptr end = s.data() + s.size(); | 2113 | | | 2114 | 375k | return string_to_real(begin, end, t, num_type); | 2115 | 375k | } |
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 | 2108 | 242k | { | 2109 | 242k | const typename numeric::details::number_type<T>::type num_type; | 2110 | | | 2111 | 242k | char_cptr begin = s.data(); | 2112 | 242k | char_cptr end = s.data() + s.size(); | 2113 | | | 2114 | 242k | return string_to_real(begin, end, t, num_type); | 2115 | 242k | } |
|
2116 | | |
2117 | | template <typename T> |
2118 | | struct functor_t |
2119 | | { |
2120 | | /* |
2121 | | Note: The following definitions for Type, may require tweaking |
2122 | | based on the compiler and target architecture. The benchmark |
2123 | | should provide enough information to make the right choice. |
2124 | | */ |
2125 | | //typedef T Type; |
2126 | | //typedef const T Type; |
2127 | | typedef const T& Type; |
2128 | | typedef T& RefType; |
2129 | | typedef T (*qfunc_t)(Type t0, Type t1, Type t2, Type t3); |
2130 | | typedef T (*tfunc_t)(Type t0, Type t1, Type t2); |
2131 | | typedef T (*bfunc_t)(Type t0, Type t1); |
2132 | | typedef T (*ufunc_t)(Type t0); |
2133 | | }; |
2134 | | |
2135 | | } // namespace details |
2136 | | |
2137 | | struct loop_runtime_check |
2138 | | { |
2139 | | enum loop_types |
2140 | | { |
2141 | | e_invalid = 0, |
2142 | | e_for_loop = 1, |
2143 | | e_while_loop = 2, |
2144 | | e_repeat_until_loop = 4, |
2145 | | e_all_loops = 7 |
2146 | | }; |
2147 | | |
2148 | | enum violation_type |
2149 | | { |
2150 | | e_unknown = 0, |
2151 | | e_iteration_count = 1, |
2152 | | e_timeout = 2 |
2153 | | }; |
2154 | | |
2155 | | loop_types loop_set; |
2156 | | |
2157 | | loop_runtime_check() |
2158 | 12.8k | : loop_set(e_invalid) |
2159 | 12.8k | , max_loop_iterations(0) |
2160 | 12.8k | {} |
2161 | | |
2162 | | details::_uint64_t max_loop_iterations; |
2163 | | |
2164 | | struct violation_context |
2165 | | { |
2166 | | loop_types loop; |
2167 | | violation_type violation; |
2168 | | details::_uint64_t iteration_count; |
2169 | | }; |
2170 | | |
2171 | | virtual bool check() |
2172 | 0 | { |
2173 | 0 | return true; |
2174 | 0 | } |
2175 | | |
2176 | | virtual void handle_runtime_violation(const violation_context&) |
2177 | 0 | { |
2178 | 0 | throw std::runtime_error("ExprTk Loop runtime violation."); |
2179 | 0 | } |
2180 | | |
2181 | | virtual ~loop_runtime_check() |
2182 | 12.8k | {} |
2183 | | }; |
2184 | | |
2185 | | typedef loop_runtime_check* loop_runtime_check_ptr; |
2186 | | |
2187 | | struct vector_access_runtime_check |
2188 | | { |
2189 | | struct violation_context |
2190 | | { |
2191 | | void* base_ptr; |
2192 | | void* end_ptr; |
2193 | | void* access_ptr; |
2194 | | std::size_t type_size; |
2195 | | }; |
2196 | | |
2197 | | virtual ~vector_access_runtime_check() |
2198 | 12.8k | {} |
2199 | | |
2200 | | virtual bool handle_runtime_violation(violation_context& /*context*/) |
2201 | 0 | { |
2202 | 0 | throw std::runtime_error("ExprTk runtime vector access violation."); |
2203 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
2204 | 0 | return false; |
2205 | 0 | #endif |
2206 | 0 | } |
2207 | | }; |
2208 | | |
2209 | | typedef vector_access_runtime_check* vector_access_runtime_check_ptr; |
2210 | | |
2211 | | struct assert_check |
2212 | | { |
2213 | | struct assert_context |
2214 | | { |
2215 | | std::string condition; |
2216 | | std::string message; |
2217 | | std::string id; |
2218 | | std::size_t offet; |
2219 | | }; |
2220 | | |
2221 | | virtual ~assert_check() |
2222 | 12.8k | {} |
2223 | | |
2224 | | virtual void handle_assert(const assert_context& /*context*/) |
2225 | 0 | { |
2226 | 0 | } |
2227 | | }; |
2228 | | |
2229 | | typedef assert_check* assert_check_ptr; |
2230 | | |
2231 | | struct compilation_check |
2232 | | { |
2233 | | struct compilation_context |
2234 | | { |
2235 | | std::string error_message; |
2236 | | }; |
2237 | | |
2238 | | virtual bool continue_compilation(compilation_context& /*context*/) = 0; |
2239 | | |
2240 | | virtual ~compilation_check() |
2241 | 12.8k | {} |
2242 | | }; |
2243 | | |
2244 | | typedef compilation_check* compilation_check_ptr; |
2245 | | |
2246 | | namespace lexer |
2247 | | { |
2248 | | struct token |
2249 | | { |
2250 | | enum token_type |
2251 | | { |
2252 | | e_none = 0, e_error = 1, e_err_symbol = 2, |
2253 | | e_err_number = 3, e_err_string = 4, e_err_sfunc = 5, |
2254 | | e_eof = 6, e_number = 7, e_symbol = 8, |
2255 | | e_string = 9, e_assign = 10, e_addass = 11, |
2256 | | e_subass = 12, e_mulass = 13, e_divass = 14, |
2257 | | e_modass = 15, e_shr = 16, e_shl = 17, |
2258 | | e_lte = 18, e_ne = 19, e_gte = 20, |
2259 | | e_swap = 21, e_lt = '<', e_gt = '>', |
2260 | | e_eq = '=', e_rbracket = ')', e_lbracket = '(', |
2261 | | e_rsqrbracket = ']', e_lsqrbracket = '[', e_rcrlbracket = '}', |
2262 | | e_lcrlbracket = '{', e_comma = ',', e_add = '+', |
2263 | | e_sub = '-', e_div = '/', e_mul = '*', |
2264 | | e_mod = '%', e_pow = '^', e_colon = ':', |
2265 | | e_ternary = '?' |
2266 | | }; |
2267 | | |
2268 | | token() |
2269 | 24.7M | : type(e_none) |
2270 | 24.7M | , value("") |
2271 | 24.7M | , position(std::numeric_limits<std::size_t>::max()) |
2272 | 24.7M | {} |
2273 | | |
2274 | | void clear() |
2275 | 10.6k | { |
2276 | 10.6k | type = e_none; |
2277 | 10.6k | value = ""; |
2278 | 10.6k | position = std::numeric_limits<std::size_t>::max(); |
2279 | 10.6k | } |
2280 | | |
2281 | | template <typename Iterator> |
2282 | | inline token& set_operator(const token_type tt, |
2283 | | const Iterator begin, const Iterator end, |
2284 | | const Iterator base_begin = Iterator(0)) |
2285 | 2.29M | { |
2286 | 2.29M | type = tt; |
2287 | 2.29M | value.assign(begin,end); |
2288 | 2.29M | if (base_begin) |
2289 | 2.29M | position = static_cast<std::size_t>(std::distance(base_begin,begin)); |
2290 | 2.29M | return (*this); |
2291 | 2.29M | } |
2292 | | |
2293 | | template <typename Iterator> |
2294 | | inline token& set_symbol(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0)) |
2295 | 797k | { |
2296 | 797k | type = e_symbol; |
2297 | 797k | value.assign(begin,end); |
2298 | 797k | if (base_begin) |
2299 | 797k | position = static_cast<std::size_t>(std::distance(base_begin,begin)); |
2300 | 797k | return (*this); |
2301 | 797k | } |
2302 | | |
2303 | | template <typename Iterator> |
2304 | | inline token& set_numeric(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0)) |
2305 | 612k | { |
2306 | 612k | type = e_number; |
2307 | 612k | value.assign(begin,end); |
2308 | 612k | if (base_begin) |
2309 | 612k | position = static_cast<std::size_t>(std::distance(base_begin,begin)); |
2310 | 612k | return (*this); |
2311 | 612k | } |
2312 | | |
2313 | | template <typename Iterator> |
2314 | | inline token& set_string(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0)) |
2315 | 205k | { |
2316 | 205k | type = e_string; |
2317 | 205k | value.assign(begin,end); |
2318 | 205k | if (base_begin) |
2319 | 205k | position = static_cast<std::size_t>(std::distance(base_begin,begin)); |
2320 | 205k | return (*this); |
2321 | 205k | } |
2322 | | |
2323 | | inline token& set_string(const std::string& s, const std::size_t p) |
2324 | 3.86k | { |
2325 | 3.86k | type = e_string; |
2326 | 3.86k | value = s; |
2327 | 3.86k | position = p; |
2328 | 3.86k | return (*this); |
2329 | 3.86k | } |
2330 | | |
2331 | | template <typename Iterator> |
2332 | | inline token& set_error(const token_type et, |
2333 | | const Iterator begin, const Iterator end, |
2334 | | const Iterator base_begin = Iterator(0)) |
2335 | 1.86k | { |
2336 | 1.86k | if ( |
2337 | 1.86k | (e_error == et) || |
2338 | 1.86k | (e_err_symbol == et) || |
2339 | 1.86k | (e_err_number == et) || |
2340 | 1.86k | (e_err_string == et) || |
2341 | 1.86k | (e_err_sfunc == et) |
2342 | 1.86k | ) |
2343 | 1.86k | { |
2344 | 1.86k | type = et; |
2345 | 1.86k | } |
2346 | 0 | else |
2347 | 0 | type = e_error; |
2348 | | |
2349 | 1.86k | value.assign(begin,end); |
2350 | | |
2351 | 1.86k | if (base_begin) |
2352 | 1.86k | position = static_cast<std::size_t>(std::distance(base_begin,begin)); |
2353 | | |
2354 | 1.86k | return (*this); |
2355 | 1.86k | } |
2356 | | |
2357 | | static inline std::string to_str(token_type t) |
2358 | 85 | { |
2359 | 85 | switch (t) |
2360 | 85 | { |
2361 | 0 | case e_none : return "NONE"; |
2362 | 0 | case e_error : return "ERROR"; |
2363 | 0 | case e_err_symbol : return "ERROR_SYMBOL"; |
2364 | 0 | case e_err_number : return "ERROR_NUMBER"; |
2365 | 0 | case e_err_string : return "ERROR_STRING"; |
2366 | 0 | case e_eof : return "EOF"; |
2367 | 0 | case e_number : return "NUMBER"; |
2368 | 0 | case e_symbol : return "SYMBOL"; |
2369 | 0 | case e_string : return "STRING"; |
2370 | 0 | case e_assign : return ":="; |
2371 | 0 | case e_addass : return "+="; |
2372 | 0 | case e_subass : return "-="; |
2373 | 0 | case e_mulass : return "*="; |
2374 | 0 | case e_divass : return "/="; |
2375 | 0 | case e_modass : return "%="; |
2376 | 0 | case e_shr : return ">>"; |
2377 | 0 | case e_shl : return "<<"; |
2378 | 0 | case e_lte : return "<="; |
2379 | 0 | case e_ne : return "!="; |
2380 | 0 | case e_gte : return ">="; |
2381 | 0 | case e_lt : return "<"; |
2382 | 0 | case e_gt : return ">"; |
2383 | 0 | case e_eq : return "="; |
2384 | 0 | case e_rbracket : return ")"; |
2385 | 0 | case e_lbracket : return "("; |
2386 | 0 | case e_rsqrbracket : return "]"; |
2387 | 0 | case e_lsqrbracket : return "["; |
2388 | 0 | case e_rcrlbracket : return "}"; |
2389 | 85 | case e_lcrlbracket : return "{"; |
2390 | 0 | case e_comma : return ","; |
2391 | 0 | case e_add : return "+"; |
2392 | 0 | case e_sub : return "-"; |
2393 | 0 | case e_div : return "/"; |
2394 | 0 | case e_mul : return "*"; |
2395 | 0 | case e_mod : return "%"; |
2396 | 0 | case e_pow : return "^"; |
2397 | 0 | case e_colon : return ":"; |
2398 | 0 | case e_ternary : return "?"; |
2399 | 0 | case e_swap : return "<=>"; |
2400 | 0 | default : return "UNKNOWN"; |
2401 | 85 | } |
2402 | 85 | } |
2403 | | |
2404 | | static inline std::string seperator_to_str(const token_type t) |
2405 | 0 | { |
2406 | 0 | switch (t) |
2407 | 0 | { |
2408 | 0 | case e_comma : return ","; |
2409 | 0 | case e_colon : return ":"; |
2410 | 0 | case e_eof : return ";"; |
2411 | 0 | default : return "UNKNOWN"; |
2412 | 0 | } |
2413 | | |
2414 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
2415 | 0 | return "UNKNOWN"; |
2416 | 0 | #endif |
2417 | 0 | } |
2418 | | |
2419 | | inline bool is_error() const |
2420 | 4.63M | { |
2421 | 4.63M | return ( |
2422 | 4.63M | (e_error == type) || |
2423 | 4.63M | (e_err_symbol == type) || |
2424 | 4.63M | (e_err_number == type) || |
2425 | 4.63M | (e_err_string == type) || |
2426 | 4.63M | (e_err_sfunc == type) |
2427 | 4.63M | ); |
2428 | 4.63M | } |
2429 | | |
2430 | | token_type type; |
2431 | | std::string value; |
2432 | | std::size_t position; |
2433 | | }; |
2434 | | |
2435 | | class generator |
2436 | | { |
2437 | | public: |
2438 | | |
2439 | | typedef token token_t; |
2440 | | typedef std::vector<token_t> token_list_t; |
2441 | | typedef token_list_t::iterator token_list_itr_t; |
2442 | | typedef details::char_t char_t; |
2443 | | |
2444 | | generator() |
2445 | 12.8k | : base_itr_(0) |
2446 | 12.8k | , s_itr_ (0) |
2447 | 12.8k | , s_end_ (0) |
2448 | 12.8k | { |
2449 | 12.8k | clear(); |
2450 | 12.8k | } |
2451 | | |
2452 | | inline void clear() |
2453 | 12.8k | { |
2454 | 12.8k | base_itr_ = 0; |
2455 | 12.8k | s_itr_ = 0; |
2456 | 12.8k | s_end_ = 0; |
2457 | 12.8k | token_list_.clear(); |
2458 | 12.8k | token_itr_ = token_list_.end(); |
2459 | 12.8k | store_token_itr_ = token_list_.end(); |
2460 | 12.8k | } |
2461 | | |
2462 | | inline bool process(const std::string& str) |
2463 | 12.8k | { |
2464 | 12.8k | base_itr_ = str.data(); |
2465 | 12.8k | s_itr_ = str.data(); |
2466 | 12.8k | s_end_ = str.data() + str.size(); |
2467 | | |
2468 | 12.8k | eof_token_.set_operator(token_t::e_eof, s_end_, s_end_, base_itr_); |
2469 | 12.8k | token_list_.clear(); |
2470 | | |
2471 | 4.38M | while (!is_end(s_itr_)) |
2472 | 4.37M | { |
2473 | 4.37M | scan_token(); |
2474 | | |
2475 | 4.37M | if (!token_list_.empty() && token_list_.back().is_error()) |
2476 | 1.86k | return false; |
2477 | 4.37M | } |
2478 | | |
2479 | 10.9k | return true; |
2480 | 12.8k | } |
2481 | | |
2482 | | inline bool empty() const |
2483 | 10.9k | { |
2484 | 10.9k | return token_list_.empty(); |
2485 | 10.9k | } |
2486 | | |
2487 | | inline std::size_t size() const |
2488 | 256k | { |
2489 | 256k | return token_list_.size(); |
2490 | 256k | } |
2491 | | |
2492 | | inline void begin() |
2493 | 20.8k | { |
2494 | 20.8k | token_itr_ = token_list_.begin(); |
2495 | 20.8k | store_token_itr_ = token_list_.begin(); |
2496 | 20.8k | } |
2497 | | |
2498 | | inline void store() |
2499 | 0 | { |
2500 | 0 | store_token_itr_ = token_itr_; |
2501 | 0 | } |
2502 | | |
2503 | | inline void restore() |
2504 | 0 | { |
2505 | 0 | token_itr_ = store_token_itr_; |
2506 | 0 | } |
2507 | | |
2508 | | inline token_t& next_token() |
2509 | 641k | { |
2510 | 641k | if (token_list_.end() != token_itr_) |
2511 | 632k | { |
2512 | 632k | return *token_itr_++; |
2513 | 632k | } |
2514 | 8.44k | else |
2515 | 8.44k | return eof_token_; |
2516 | 641k | } |
2517 | | |
2518 | | inline token_t& peek_next_token() |
2519 | 476k | { |
2520 | 476k | if (token_list_.end() != token_itr_) |
2521 | 468k | { |
2522 | 468k | return *token_itr_; |
2523 | 468k | } |
2524 | 7.56k | else |
2525 | 7.56k | return eof_token_; |
2526 | 476k | } |
2527 | | |
2528 | | inline token_t& operator[](const std::size_t& index) |
2529 | 23.2M | { |
2530 | 23.2M | if (index < token_list_.size()) |
2531 | 23.2M | { |
2532 | 23.2M | return token_list_[index]; |
2533 | 23.2M | } |
2534 | 0 | else |
2535 | 0 | return eof_token_; |
2536 | 23.2M | } |
2537 | | |
2538 | | inline token_t operator[](const std::size_t& index) const |
2539 | 0 | { |
2540 | 0 | if (index < token_list_.size()) |
2541 | 0 | { |
2542 | 0 | return token_list_[index]; |
2543 | 0 | } |
2544 | 0 | else |
2545 | 0 | return eof_token_; |
2546 | 0 | } |
2547 | | |
2548 | | inline bool finished() const |
2549 | 7.17k | { |
2550 | 7.17k | return (token_list_.end() == token_itr_); |
2551 | 7.17k | } |
2552 | | |
2553 | | inline void insert_front(token_t::token_type tk_type) |
2554 | 1.96k | { |
2555 | 1.96k | if ( |
2556 | 1.96k | !token_list_.empty() && |
2557 | 1.96k | (token_list_.end() != token_itr_) |
2558 | 1.96k | ) |
2559 | 1.96k | { |
2560 | 1.96k | token_t t = *token_itr_; |
2561 | | |
2562 | 1.96k | t.type = tk_type; |
2563 | 1.96k | token_itr_ = token_list_.insert(token_itr_,t); |
2564 | 1.96k | } |
2565 | 1.96k | } |
2566 | | |
2567 | | inline std::string substr(const std::size_t& begin, const std::size_t& end) const |
2568 | 7.65k | { |
2569 | 7.65k | const details::char_cptr begin_itr = ((base_itr_ + begin) < s_end_) ? (base_itr_ + begin) : s_end_; |
2570 | 7.65k | const details::char_cptr end_itr = ((base_itr_ + end ) < s_end_) ? (base_itr_ + end ) : s_end_; |
2571 | | |
2572 | 7.65k | return std::string(begin_itr,end_itr); |
2573 | 7.65k | } |
2574 | | |
2575 | | inline std::string remaining() const |
2576 | 0 | { |
2577 | 0 | if (finished()) |
2578 | 0 | return ""; |
2579 | 0 | else if (token_list_.begin() != token_itr_) |
2580 | 0 | return std::string(base_itr_ + (token_itr_ - 1)->position, s_end_); |
2581 | 0 | else |
2582 | 0 | return std::string(base_itr_ + token_itr_->position, s_end_); |
2583 | 0 | } |
2584 | | |
2585 | | private: |
2586 | | |
2587 | | inline bool is_end(details::char_cptr itr) const |
2588 | 78.3M | { |
2589 | 78.3M | return (s_end_ == itr); |
2590 | 78.3M | } |
2591 | | |
2592 | | #ifndef exprtk_disable_comments |
2593 | | inline bool is_comment_start(details::char_cptr itr) const |
2594 | 3.97M | { |
2595 | 3.97M | const char_t c0 = *(itr + 0); |
2596 | 3.97M | const char_t c1 = *(itr + 1); |
2597 | | |
2598 | 3.97M | if ('#' == c0) |
2599 | 67.1k | return true; |
2600 | 3.90M | else if (!is_end(itr + 1)) |
2601 | 3.90M | { |
2602 | 3.90M | if (('/' == c0) && ('/' == c1)) return true; |
2603 | 3.89M | if (('/' == c0) && ('*' == c1)) return true; |
2604 | 3.89M | } |
2605 | 3.90M | return false; |
2606 | 3.97M | } |
2607 | | #else |
2608 | | inline bool is_comment_start(details::char_cptr) const |
2609 | | { |
2610 | | return false; |
2611 | | } |
2612 | | #endif |
2613 | | |
2614 | | inline void skip_whitespace() |
2615 | 401k | { |
2616 | 925k | while (!is_end(s_itr_) && details::is_whitespace(*s_itr_)) |
2617 | 523k | { |
2618 | 523k | ++s_itr_; |
2619 | 523k | } |
2620 | 401k | } |
2621 | | |
2622 | | inline void skip_comments() |
2623 | 69.2k | { |
2624 | 69.2k | #ifndef exprtk_disable_comments |
2625 | | // The following comment styles are supported: |
2626 | | // 1. // .... \n |
2627 | | // 2. # .... \n |
2628 | | // 3. /* .... */ |
2629 | 69.2k | struct test |
2630 | 69.2k | { |
2631 | 69.2k | static inline bool comment_start(const char_t c0, const char_t c1, int& mode, int& incr) |
2632 | 69.2k | { |
2633 | 69.2k | mode = 0; |
2634 | 69.2k | if ('#' == c0) { mode = 1; incr = 1; } |
2635 | 2.06k | else if ('/' == c0) |
2636 | 2.06k | { |
2637 | 2.06k | if ('/' == c1) { mode = 1; incr = 2; } |
2638 | 264 | else if ('*' == c1) { mode = 2; incr = 2; } |
2639 | 2.06k | } |
2640 | 69.2k | return (0 != mode); |
2641 | 69.2k | } |
2642 | | |
2643 | 69.2k | static inline bool comment_end(const char_t c0, const char_t c1, int& mode) |
2644 | 2.79M | { |
2645 | 2.79M | if ( |
2646 | 2.79M | ((1 == mode) && ('\n' == c0)) || |
2647 | 2.79M | ((2 == mode) && ( '*' == c0) && ('/' == c1)) |
2648 | 2.79M | ) |
2649 | 69.0k | { |
2650 | 69.0k | mode = 0; |
2651 | 69.0k | return true; |
2652 | 69.0k | } |
2653 | 2.72M | else |
2654 | 2.72M | return false; |
2655 | 2.79M | } |
2656 | 69.2k | }; |
2657 | | |
2658 | 69.2k | int mode = 0; |
2659 | 69.2k | int increment = 0; |
2660 | | |
2661 | 69.2k | if (is_end(s_itr_)) |
2662 | 0 | return; |
2663 | 69.2k | else if (!test::comment_start(*s_itr_, *(s_itr_ + 1), mode, increment)) |
2664 | 0 | return; |
2665 | | |
2666 | 69.2k | details::char_cptr cmt_start = s_itr_; |
2667 | | |
2668 | 69.2k | s_itr_ += increment; |
2669 | | |
2670 | 2.79M | while (!is_end(s_itr_)) |
2671 | 2.79M | { |
2672 | 2.79M | if ((1 == mode) && test::comment_end(*s_itr_, 0, mode)) |
2673 | 68.8k | { |
2674 | 68.8k | ++s_itr_; |
2675 | 68.8k | return; |
2676 | 68.8k | } |
2677 | | |
2678 | 2.72M | if ((2 == mode)) |
2679 | 203k | { |
2680 | 203k | if (!is_end((s_itr_ + 1)) && test::comment_end(*s_itr_, *(s_itr_ + 1), mode)) |
2681 | 226 | { |
2682 | 226 | s_itr_ += 2; |
2683 | 226 | return; |
2684 | 226 | } |
2685 | 203k | } |
2686 | | |
2687 | 2.72M | ++s_itr_; |
2688 | 2.72M | } |
2689 | | |
2690 | 212 | if (2 == mode) |
2691 | 38 | { |
2692 | 38 | token_t t; |
2693 | 38 | t.set_error(token::e_error, cmt_start, cmt_start + mode, base_itr_); |
2694 | 38 | token_list_.push_back(t); |
2695 | 38 | } |
2696 | 212 | #endif |
2697 | 212 | } |
2698 | | |
2699 | | inline bool next_is_digit(const details::char_cptr itr) const |
2700 | 2.16k | { |
2701 | 2.16k | return ((itr + 1) != s_end_) && |
2702 | 2.16k | details::is_digit(*(itr + 1)); |
2703 | 2.16k | } |
2704 | | |
2705 | | inline void scan_token() |
2706 | 4.37M | { |
2707 | 4.37M | const char_t c = *s_itr_; |
2708 | | |
2709 | 4.37M | if (details::is_whitespace(c)) |
2710 | 401k | { |
2711 | 401k | skip_whitespace(); |
2712 | 401k | return; |
2713 | 401k | } |
2714 | 3.97M | else if (is_comment_start(s_itr_)) |
2715 | 69.2k | { |
2716 | 69.2k | skip_comments(); |
2717 | 69.2k | return; |
2718 | 69.2k | } |
2719 | 3.90M | else if (details::is_operator_char(c)) |
2720 | 2.30M | { |
2721 | 2.30M | scan_operator(); |
2722 | 2.30M | return; |
2723 | 2.30M | } |
2724 | 1.60M | else if (details::is_letter(c)) |
2725 | 746k | { |
2726 | 746k | scan_symbol(); |
2727 | 746k | return; |
2728 | 746k | } |
2729 | 859k | else if (('.' == c) && !next_is_digit(s_itr_)) |
2730 | 1.65k | { |
2731 | 1.65k | scan_operator(); |
2732 | 1.65k | return; |
2733 | 1.65k | } |
2734 | 857k | else if (details::is_digit(c) || ('.' == c)) |
2735 | 612k | { |
2736 | 612k | scan_number(); |
2737 | 612k | return; |
2738 | 612k | } |
2739 | 244k | else if ('$' == c) |
2740 | 866 | { |
2741 | 866 | scan_special_function(); |
2742 | 866 | return; |
2743 | 866 | } |
2744 | 243k | #ifndef exprtk_disable_string_capabilities |
2745 | 243k | else if ('\'' == c) |
2746 | 209k | { |
2747 | 209k | scan_string(); |
2748 | 209k | return; |
2749 | 209k | } |
2750 | 34.1k | #endif |
2751 | 34.1k | else if ('~' == c) |
2752 | 33.7k | { |
2753 | 33.7k | token_t t; |
2754 | 33.7k | t.set_symbol(s_itr_, s_itr_ + 1, base_itr_); |
2755 | 33.7k | token_list_.push_back(t); |
2756 | 33.7k | ++s_itr_; |
2757 | 33.7k | return; |
2758 | 33.7k | } |
2759 | 462 | else |
2760 | 462 | { |
2761 | 462 | token_t t; |
2762 | 462 | t.set_error(token::e_error, s_itr_, s_itr_ + 2, base_itr_); |
2763 | 462 | token_list_.push_back(t); |
2764 | 462 | ++s_itr_; |
2765 | 462 | } |
2766 | 4.37M | } |
2767 | | |
2768 | | inline void scan_operator() |
2769 | 2.30M | { |
2770 | 2.30M | token_t t; |
2771 | | |
2772 | 2.30M | const char_t c0 = s_itr_[0]; |
2773 | | |
2774 | 2.30M | if (!is_end(s_itr_ + 1)) |
2775 | 2.30M | { |
2776 | 2.30M | const char_t c1 = s_itr_[1]; |
2777 | | |
2778 | 2.30M | if (!is_end(s_itr_ + 2)) |
2779 | 2.29M | { |
2780 | 2.29M | const char_t c2 = s_itr_[2]; |
2781 | | |
2782 | 2.29M | if ((c0 == '<') && (c1 == '=') && (c2 == '>')) |
2783 | 766 | { |
2784 | 766 | t.set_operator(token_t::e_swap, s_itr_, s_itr_ + 3, base_itr_); |
2785 | 766 | token_list_.push_back(t); |
2786 | 766 | s_itr_ += 3; |
2787 | 766 | return; |
2788 | 766 | } |
2789 | 2.29M | } |
2790 | | |
2791 | 2.29M | token_t::token_type ttype = token_t::e_none; |
2792 | | |
2793 | 2.29M | if ((c0 == '<') && (c1 == '=')) ttype = token_t::e_lte; |
2794 | 2.29M | else if ((c0 == '>') && (c1 == '=')) ttype = token_t::e_gte; |
2795 | 2.29M | else if ((c0 == '<') && (c1 == '>')) ttype = token_t::e_ne; |
2796 | 2.28M | else if ((c0 == '!') && (c1 == '=')) ttype = token_t::e_ne; |
2797 | 2.28M | else if ((c0 == '=') && (c1 == '=')) ttype = token_t::e_eq; |
2798 | 2.28M | else if ((c0 == ':') && (c1 == '=')) ttype = token_t::e_assign; |
2799 | 2.28M | else if ((c0 == '<') && (c1 == '<')) ttype = token_t::e_shl; |
2800 | 2.28M | else if ((c0 == '>') && (c1 == '>')) ttype = token_t::e_shr; |
2801 | 2.21M | else if ((c0 == '+') && (c1 == '=')) ttype = token_t::e_addass; |
2802 | 2.15M | else if ((c0 == '-') && (c1 == '=')) ttype = token_t::e_subass; |
2803 | 2.15M | else if ((c0 == '*') && (c1 == '=')) ttype = token_t::e_mulass; |
2804 | 2.15M | else if ((c0 == '/') && (c1 == '=')) ttype = token_t::e_divass; |
2805 | 2.15M | else if ((c0 == '%') && (c1 == '=')) ttype = token_t::e_modass; |
2806 | | |
2807 | 2.29M | if (token_t::e_none != ttype) |
2808 | 149k | { |
2809 | 149k | t.set_operator(ttype, s_itr_, s_itr_ + 2, base_itr_); |
2810 | 149k | token_list_.push_back(t); |
2811 | 149k | s_itr_ += 2; |
2812 | 149k | return; |
2813 | 149k | } |
2814 | 2.29M | } |
2815 | | |
2816 | 2.15M | if ('<' == c0) |
2817 | 72.6k | t.set_operator(token_t::e_lt , s_itr_, s_itr_ + 1, base_itr_); |
2818 | 2.07M | else if ('>' == c0) |
2819 | 61.3k | t.set_operator(token_t::e_gt , s_itr_, s_itr_ + 1, base_itr_); |
2820 | 2.01M | else if (';' == c0) |
2821 | 1.82k | t.set_operator(token_t::e_eof, s_itr_, s_itr_ + 1, base_itr_); |
2822 | 2.01M | else if ('&' == c0) |
2823 | 14.3k | t.set_symbol(s_itr_, s_itr_ + 1, base_itr_); |
2824 | 2.00M | else if ('|' == c0) |
2825 | 2.43k | t.set_symbol(s_itr_, s_itr_ + 1, base_itr_); |
2826 | 1.99M | else |
2827 | 1.99M | t.set_operator(token_t::token_type(c0), s_itr_, s_itr_ + 1, base_itr_); |
2828 | | |
2829 | 2.15M | token_list_.push_back(t); |
2830 | 2.15M | ++s_itr_; |
2831 | 2.15M | } |
2832 | | |
2833 | | inline void scan_symbol() |
2834 | 746k | { |
2835 | 746k | details::char_cptr initial_itr = s_itr_; |
2836 | | |
2837 | 16.8M | while (!is_end(s_itr_)) |
2838 | 16.8M | { |
2839 | 16.8M | if (!details::is_letter_or_digit(*s_itr_) && ('_' != (*s_itr_))) |
2840 | 745k | { |
2841 | 745k | if ('.' != (*s_itr_)) |
2842 | 742k | break; |
2843 | | /* |
2844 | | Permit symbols that contain a 'dot' |
2845 | | Allowed : abc.xyz, a123.xyz, abc.123, abc_.xyz a123_.xyz abc._123 |
2846 | | Disallowed: .abc, abc.<white-space>, abc.<eof>, abc.<operator +,-,*,/...> |
2847 | | */ |
2848 | 2.88k | if ( |
2849 | 2.88k | (s_itr_ != initial_itr) && |
2850 | 2.88k | !is_end(s_itr_ + 1) && |
2851 | 2.88k | !details::is_letter_or_digit(*(s_itr_ + 1)) && |
2852 | 2.88k | ('_' != (*(s_itr_ + 1))) |
2853 | 2.88k | ) |
2854 | 1.01k | break; |
2855 | 2.88k | } |
2856 | | |
2857 | 16.1M | ++s_itr_; |
2858 | 16.1M | } |
2859 | | |
2860 | 746k | token_t t; |
2861 | 746k | t.set_symbol(initial_itr, s_itr_, base_itr_); |
2862 | 746k | token_list_.push_back(t); |
2863 | 746k | } |
2864 | | |
2865 | | inline void scan_number() |
2866 | 612k | { |
2867 | | /* |
2868 | | Attempt to match a valid numeric value in one of the following formats: |
2869 | | (01) 123456 |
2870 | | (02) 123456. |
2871 | | (03) 123.456 |
2872 | | (04) 123.456e3 |
2873 | | (05) 123.456E3 |
2874 | | (06) 123.456e+3 |
2875 | | (07) 123.456E+3 |
2876 | | (08) 123.456e-3 |
2877 | | (09) 123.456E-3 |
2878 | | (00) .1234 |
2879 | | (11) .1234e3 |
2880 | | (12) .1234E+3 |
2881 | | (13) .1234e+3 |
2882 | | (14) .1234E-3 |
2883 | | (15) .1234e-3 |
2884 | | */ |
2885 | | |
2886 | 612k | details::char_cptr initial_itr = s_itr_; |
2887 | 612k | bool dot_found = false; |
2888 | 612k | bool e_found = false; |
2889 | 612k | bool post_e_sign_found = false; |
2890 | 612k | bool post_e_digit_found = false; |
2891 | 612k | token_t t; |
2892 | | |
2893 | 14.5M | while (!is_end(s_itr_)) |
2894 | 14.5M | { |
2895 | 14.5M | if ('.' == (*s_itr_)) |
2896 | 1.51k | { |
2897 | 1.51k | if (dot_found) |
2898 | 84 | { |
2899 | 84 | t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); |
2900 | 84 | token_list_.push_back(t); |
2901 | | |
2902 | 84 | return; |
2903 | 84 | } |
2904 | | |
2905 | 1.43k | dot_found = true; |
2906 | 1.43k | ++s_itr_; |
2907 | | |
2908 | 1.43k | continue; |
2909 | 1.51k | } |
2910 | 14.5M | else if ('e' == std::tolower(*s_itr_)) |
2911 | 2.87k | { |
2912 | 2.87k | const char_t& c = *(s_itr_ + 1); |
2913 | | |
2914 | 2.87k | if (is_end(s_itr_ + 1)) |
2915 | 174 | { |
2916 | 174 | t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); |
2917 | 174 | token_list_.push_back(t); |
2918 | | |
2919 | 174 | return; |
2920 | 174 | } |
2921 | 2.69k | else if ( |
2922 | 2.69k | ('+' != c) && |
2923 | 2.69k | ('-' != c) && |
2924 | 2.69k | !details::is_digit(c) |
2925 | 2.69k | ) |
2926 | 166 | { |
2927 | 166 | t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); |
2928 | 166 | token_list_.push_back(t); |
2929 | | |
2930 | 166 | return; |
2931 | 166 | } |
2932 | | |
2933 | 2.53k | e_found = true; |
2934 | 2.53k | ++s_itr_; |
2935 | | |
2936 | 2.53k | continue; |
2937 | 2.87k | } |
2938 | 14.5M | else if (e_found && details::is_sign(*s_itr_) && !post_e_digit_found) |
2939 | 1.30k | { |
2940 | 1.30k | if (post_e_sign_found) |
2941 | 140 | { |
2942 | 140 | t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_); |
2943 | 140 | token_list_.push_back(t); |
2944 | | |
2945 | 140 | return; |
2946 | 140 | } |
2947 | | |
2948 | 1.16k | post_e_sign_found = true; |
2949 | 1.16k | ++s_itr_; |
2950 | | |
2951 | 1.16k | continue; |
2952 | 1.30k | } |
2953 | 14.5M | else if (e_found && details::is_digit(*s_itr_)) |
2954 | 671k | { |
2955 | 671k | post_e_digit_found = true; |
2956 | 671k | ++s_itr_; |
2957 | | |
2958 | 671k | continue; |
2959 | 671k | } |
2960 | 13.8M | else if (('.' != (*s_itr_)) && !details::is_digit(*s_itr_)) |
2961 | 608k | break; |
2962 | 13.2M | else |
2963 | 13.2M | ++s_itr_; |
2964 | 14.5M | } |
2965 | | |
2966 | 612k | t.set_numeric(initial_itr, s_itr_, base_itr_); |
2967 | 612k | token_list_.push_back(t); |
2968 | | |
2969 | 612k | return; |
2970 | 612k | } |
2971 | | |
2972 | | inline void scan_special_function() |
2973 | 866 | { |
2974 | 866 | details::char_cptr initial_itr = s_itr_; |
2975 | 866 | token_t t; |
2976 | | |
2977 | | // $fdd(x,x,x) = at least 11 chars |
2978 | 866 | if (std::distance(s_itr_,s_end_) < 11) |
2979 | 22 | { |
2980 | 22 | t.set_error( |
2981 | 22 | token::e_err_sfunc, |
2982 | 22 | initial_itr, std::min(initial_itr + 11, s_end_), |
2983 | 22 | base_itr_); |
2984 | 22 | token_list_.push_back(t); |
2985 | | |
2986 | 22 | return; |
2987 | 22 | } |
2988 | | |
2989 | 844 | if ( |
2990 | 844 | !(('$' == *s_itr_) && |
2991 | 844 | (details::imatch ('f',*(s_itr_ + 1))) && |
2992 | 844 | (details::is_digit(*(s_itr_ + 2))) && |
2993 | 844 | (details::is_digit(*(s_itr_ + 3)))) |
2994 | 844 | ) |
2995 | 28 | { |
2996 | 28 | t.set_error( |
2997 | 28 | token::e_err_sfunc, |
2998 | 28 | initial_itr, std::min(initial_itr + 4, s_end_), |
2999 | 28 | base_itr_); |
3000 | 28 | token_list_.push_back(t); |
3001 | | |
3002 | 28 | return; |
3003 | 28 | } |
3004 | | |
3005 | 816 | s_itr_ += 4; // $fdd = 4chars |
3006 | | |
3007 | 816 | t.set_symbol(initial_itr, s_itr_, base_itr_); |
3008 | 816 | token_list_.push_back(t); |
3009 | | |
3010 | 816 | return; |
3011 | 844 | } |
3012 | | |
3013 | | #ifndef exprtk_disable_string_capabilities |
3014 | | inline void scan_string() |
3015 | 209k | { |
3016 | 209k | details::char_cptr initial_itr = s_itr_ + 1; |
3017 | 209k | token_t t; |
3018 | | |
3019 | 209k | if (std::distance(s_itr_,s_end_) < 2) |
3020 | 26 | { |
3021 | 26 | t.set_error(token::e_err_string, s_itr_, s_end_, base_itr_); |
3022 | 26 | token_list_.push_back(t); |
3023 | | |
3024 | 26 | return; |
3025 | 26 | } |
3026 | | |
3027 | 209k | ++s_itr_; |
3028 | | |
3029 | 209k | bool escaped_found = false; |
3030 | 209k | bool escaped = false; |
3031 | | |
3032 | 29.7M | while (!is_end(s_itr_)) |
3033 | 29.7M | { |
3034 | 29.7M | if (!details::is_valid_string_char(*s_itr_)) |
3035 | 160 | { |
3036 | 160 | t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_); |
3037 | 160 | token_list_.push_back(t); |
3038 | | |
3039 | 160 | return; |
3040 | 160 | } |
3041 | 29.7M | else if (!escaped && ('\\' == *s_itr_)) |
3042 | 22.2k | { |
3043 | 22.2k | escaped_found = true; |
3044 | 22.2k | escaped = true; |
3045 | 22.2k | ++s_itr_; |
3046 | | |
3047 | 22.2k | continue; |
3048 | 22.2k | } |
3049 | 29.7M | else if (!escaped) |
3050 | 29.7M | { |
3051 | 29.7M | if ('\'' == *s_itr_) |
3052 | 209k | break; |
3053 | 29.7M | } |
3054 | 22.2k | else if (escaped) |
3055 | 22.2k | { |
3056 | 22.2k | if ( |
3057 | 22.2k | !is_end(s_itr_) && ('0' == *(s_itr_)) && |
3058 | 22.2k | ((s_itr_ + 4) <= s_end_) |
3059 | 22.2k | ) |
3060 | 5.61k | { |
3061 | 5.61k | const bool x_separator = ('X' == std::toupper(*(s_itr_ + 1))); |
3062 | | |
3063 | 5.61k | const bool both_digits = details::is_hex_digit(*(s_itr_ + 2)) && |
3064 | 5.61k | details::is_hex_digit(*(s_itr_ + 3)) ; |
3065 | | |
3066 | 5.61k | if (!(x_separator && both_digits)) |
3067 | 182 | { |
3068 | 182 | t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_); |
3069 | 182 | token_list_.push_back(t); |
3070 | | |
3071 | 182 | return; |
3072 | 182 | } |
3073 | 5.43k | else |
3074 | 5.43k | s_itr_ += 3; |
3075 | 5.61k | } |
3076 | | |
3077 | 22.0k | escaped = false; |
3078 | 22.0k | } |
3079 | | |
3080 | 29.5M | ++s_itr_; |
3081 | 29.5M | } |
3082 | | |
3083 | 209k | if (is_end(s_itr_)) |
3084 | 386 | { |
3085 | 386 | t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_); |
3086 | 386 | token_list_.push_back(t); |
3087 | | |
3088 | 386 | return; |
3089 | 386 | } |
3090 | | |
3091 | 209k | if (!escaped_found) |
3092 | 205k | t.set_string(initial_itr, s_itr_, base_itr_); |
3093 | 3.86k | else |
3094 | 3.86k | { |
3095 | 3.86k | std::string parsed_string(initial_itr,s_itr_); |
3096 | | |
3097 | 3.86k | if (!details::cleanup_escapes(parsed_string)) |
3098 | 0 | { |
3099 | 0 | t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_); |
3100 | 0 | token_list_.push_back(t); |
3101 | |
|
3102 | 0 | return; |
3103 | 0 | } |
3104 | | |
3105 | 3.86k | t.set_string( |
3106 | 3.86k | parsed_string, |
3107 | 3.86k | static_cast<std::size_t>(std::distance(base_itr_,initial_itr))); |
3108 | 3.86k | } |
3109 | | |
3110 | 209k | token_list_.push_back(t); |
3111 | 209k | ++s_itr_; |
3112 | | |
3113 | 209k | return; |
3114 | 209k | } |
3115 | | #endif |
3116 | | |
3117 | | private: |
3118 | | |
3119 | | token_list_t token_list_; |
3120 | | token_list_itr_t token_itr_; |
3121 | | token_list_itr_t store_token_itr_; |
3122 | | token_t eof_token_; |
3123 | | details::char_cptr base_itr_; |
3124 | | details::char_cptr s_itr_; |
3125 | | details::char_cptr s_end_; |
3126 | | |
3127 | | friend class token_scanner; |
3128 | | friend class token_modifier; |
3129 | | friend class token_inserter; |
3130 | | friend class token_joiner; |
3131 | | }; // class generator |
3132 | | |
3133 | | class helper_interface |
3134 | | { |
3135 | | public: |
3136 | | |
3137 | 0 | virtual void init() { } |
3138 | 63.4k | virtual void reset() { } |
3139 | 43.2k | virtual bool result() { return true; } |
3140 | 0 | virtual std::size_t process(generator&) { return 0; } |
3141 | 102k | virtual ~helper_interface() { } |
3142 | | }; |
3143 | | |
3144 | | class token_scanner : public helper_interface |
3145 | | { |
3146 | | public: |
3147 | | |
3148 | | virtual ~token_scanner() |
3149 | 0 | {} |
3150 | | |
3151 | | explicit token_scanner(const std::size_t& stride) |
3152 | 51.3k | : stride_(stride) |
3153 | 51.3k | { |
3154 | 51.3k | if (stride > 4) |
3155 | 0 | { |
3156 | 0 | throw std::invalid_argument("token_scanner() - Invalid stride value"); |
3157 | 0 | } |
3158 | 51.3k | } |
3159 | | |
3160 | | inline std::size_t process(generator& g) exprtk_override |
3161 | 41.6k | { |
3162 | 41.6k | if (g.token_list_.size() >= stride_) |
3163 | 39.7k | { |
3164 | 10.7M | for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i) |
3165 | 10.6M | { |
3166 | 10.6M | token t; |
3167 | | |
3168 | 10.6M | switch (stride_) |
3169 | 10.6M | { |
3170 | 6.57M | case 1 : |
3171 | 6.57M | { |
3172 | 6.57M | const token& t0 = g.token_list_[i]; |
3173 | | |
3174 | 6.57M | if (!operator()(t0)) |
3175 | 170 | { |
3176 | 170 | return 0; |
3177 | 170 | } |
3178 | 6.57M | } |
3179 | 6.57M | break; |
3180 | | |
3181 | 6.57M | case 2 : |
3182 | 2.35M | { |
3183 | 2.35M | const token& t0 = g.token_list_[i ]; |
3184 | 2.35M | const token& t1 = g.token_list_[i + 1]; |
3185 | | |
3186 | 2.35M | if (!operator()(t0, t1)) |
3187 | 0 | { |
3188 | 0 | return 0; |
3189 | 0 | } |
3190 | 2.35M | } |
3191 | 2.35M | break; |
3192 | | |
3193 | 2.35M | case 3 : |
3194 | 1.76M | { |
3195 | 1.76M | const token& t0 = g.token_list_[i ]; |
3196 | 1.76M | const token& t1 = g.token_list_[i + 1]; |
3197 | 1.76M | const token& t2 = g.token_list_[i + 2]; |
3198 | | |
3199 | 1.76M | if (!operator()(t0, t1, t2)) |
3200 | 0 | { |
3201 | 0 | return 0; |
3202 | 0 | } |
3203 | 1.76M | } |
3204 | 1.76M | break; |
3205 | | |
3206 | 1.76M | case 4 : |
3207 | 0 | { |
3208 | 0 | const token& t0 = g.token_list_[i ]; |
3209 | 0 | const token& t1 = g.token_list_[i + 1]; |
3210 | 0 | const token& t2 = g.token_list_[i + 2]; |
3211 | 0 | const token& t3 = g.token_list_[i + 3]; |
3212 | |
|
3213 | 0 | if (!operator()(t0, t1, t2, t3)) |
3214 | 0 | { |
3215 | 0 | return 0; |
3216 | 0 | } |
3217 | 0 | } |
3218 | 0 | break; |
3219 | 10.6M | } |
3220 | 10.6M | } |
3221 | 39.7k | } |
3222 | | |
3223 | 41.4k | return 0; |
3224 | 41.6k | } |
3225 | | |
3226 | | virtual bool operator() (const token&) |
3227 | 0 | { |
3228 | 0 | return false; |
3229 | 0 | } |
3230 | | |
3231 | | virtual bool operator() (const token&, const token&) |
3232 | 0 | { |
3233 | 0 | return false; |
3234 | 0 | } |
3235 | | |
3236 | | virtual bool operator() (const token&, const token&, const token&) |
3237 | 0 | { |
3238 | 0 | return false; |
3239 | 0 | } |
3240 | | |
3241 | | virtual bool operator() (const token&, const token&, const token&, const token&) |
3242 | 0 | { |
3243 | 0 | return false; |
3244 | 0 | } |
3245 | | |
3246 | | private: |
3247 | | |
3248 | | const std::size_t stride_; |
3249 | | }; // class token_scanner |
3250 | | |
3251 | | class token_modifier : public helper_interface |
3252 | | { |
3253 | | public: |
3254 | | |
3255 | | inline std::size_t process(generator& g) exprtk_override |
3256 | 10.8k | { |
3257 | 10.8k | std::size_t changes = 0; |
3258 | | |
3259 | 3.32M | for (std::size_t i = 0; i < g.token_list_.size(); ++i) |
3260 | 3.31M | { |
3261 | 3.31M | if (modify(g.token_list_[i])) changes++; |
3262 | 3.31M | } |
3263 | | |
3264 | 10.8k | return changes; |
3265 | 10.8k | } |
3266 | | |
3267 | | virtual bool modify(token& t) = 0; |
3268 | | }; |
3269 | | |
3270 | | class token_inserter : public helper_interface |
3271 | | { |
3272 | | public: |
3273 | | |
3274 | | explicit token_inserter(const std::size_t& stride) |
3275 | 12.8k | : stride_(stride) |
3276 | 12.8k | { |
3277 | 12.8k | if (stride > 5) |
3278 | 0 | { |
3279 | 0 | throw std::invalid_argument("token_inserter() - Invalid stride value"); |
3280 | 0 | } |
3281 | 12.8k | } |
3282 | | |
3283 | | inline std::size_t process(generator& g) exprtk_override |
3284 | 10.8k | { |
3285 | 10.8k | if (g.token_list_.empty()) |
3286 | 0 | return 0; |
3287 | 10.8k | else if (g.token_list_.size() < stride_) |
3288 | 876 | return 0; |
3289 | | |
3290 | 9.94k | std::size_t changes = 0; |
3291 | | |
3292 | 9.94k | typedef std::pair<std::size_t, token> insert_t; |
3293 | 9.94k | std::vector<insert_t> insert_list; |
3294 | 9.94k | insert_list.reserve(10000); |
3295 | | |
3296 | 3.12M | for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i) |
3297 | 3.11M | { |
3298 | 3.11M | int insert_index = -1; |
3299 | 3.11M | token t; |
3300 | | |
3301 | 3.11M | switch (stride_) |
3302 | 3.11M | { |
3303 | 0 | case 1 : insert_index = insert(g.token_list_[i],t); |
3304 | 0 | break; |
3305 | | |
3306 | 3.11M | case 2 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], t); |
3307 | 3.11M | break; |
3308 | | |
3309 | 0 | case 3 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], t); |
3310 | 0 | break; |
3311 | | |
3312 | 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); |
3313 | 0 | break; |
3314 | | |
3315 | 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); |
3316 | 0 | break; |
3317 | 3.11M | } |
3318 | | |
3319 | 3.11M | if ((insert_index >= 0) && (insert_index <= (static_cast<int>(stride_) + 1))) |
3320 | 229k | { |
3321 | 229k | insert_list.push_back(insert_t(i, t)); |
3322 | 229k | changes++; |
3323 | 229k | } |
3324 | 3.11M | } |
3325 | | |
3326 | 9.94k | if (!insert_list.empty()) |
3327 | 3.18k | { |
3328 | 3.18k | generator::token_list_t token_list; |
3329 | | |
3330 | 3.18k | std::size_t insert_index = 0; |
3331 | | |
3332 | 2.97M | for (std::size_t i = 0; i < g.token_list_.size(); ++i) |
3333 | 2.96M | { |
3334 | 2.96M | token_list.push_back(g.token_list_[i]); |
3335 | | |
3336 | 2.96M | if ( |
3337 | 2.96M | (insert_index < insert_list.size()) && |
3338 | 2.96M | (insert_list[insert_index].first == i) |
3339 | 2.96M | ) |
3340 | 229k | { |
3341 | 229k | token_list.push_back(insert_list[insert_index].second); |
3342 | 229k | insert_index++; |
3343 | 229k | } |
3344 | 2.96M | } |
3345 | | |
3346 | 3.18k | std::swap(g.token_list_,token_list); |
3347 | 3.18k | } |
3348 | | |
3349 | 9.94k | return changes; |
3350 | 9.94k | } |
3351 | | |
3352 | | #define token_inserter_empty_body \ |
3353 | 0 | { \ |
3354 | 0 | return -1; \ |
3355 | 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&) |
3356 | | |
3357 | | inline virtual int insert(const token&, token&) |
3358 | | token_inserter_empty_body |
3359 | | |
3360 | | inline virtual int insert(const token&, const token&, token&) |
3361 | | token_inserter_empty_body |
3362 | | |
3363 | | inline virtual int insert(const token&, const token&, const token&, token&) |
3364 | | token_inserter_empty_body |
3365 | | |
3366 | | inline virtual int insert(const token&, const token&, const token&, const token&, token&) |
3367 | | token_inserter_empty_body |
3368 | | |
3369 | | inline virtual int insert(const token&, const token&, const token&, const token&, const token&, token&) |
3370 | | token_inserter_empty_body |
3371 | | |
3372 | | #undef token_inserter_empty_body |
3373 | | |
3374 | | private: |
3375 | | |
3376 | | const std::size_t stride_; |
3377 | | }; |
3378 | | |
3379 | | class token_joiner : public helper_interface |
3380 | | { |
3381 | | public: |
3382 | | |
3383 | | explicit token_joiner(const std::size_t& stride) |
3384 | 25.6k | : stride_(stride) |
3385 | 25.6k | {} |
3386 | | |
3387 | | inline std::size_t process(generator& g) exprtk_override |
3388 | 21.6k | { |
3389 | 21.6k | if (g.token_list_.empty()) |
3390 | 0 | return 0; |
3391 | | |
3392 | 21.6k | switch (stride_) |
3393 | 21.6k | { |
3394 | 10.8k | case 2 : return process_stride_2(g); |
3395 | 10.8k | case 3 : return process_stride_3(g); |
3396 | 0 | default : return 0; |
3397 | 21.6k | } |
3398 | 21.6k | } |
3399 | | |
3400 | 0 | virtual bool join(const token&, const token&, token&) { return false; } |
3401 | 0 | virtual bool join(const token&, const token&, const token&, token&) { return false; } |
3402 | | |
3403 | | private: |
3404 | | |
3405 | | inline std::size_t process_stride_2(generator& g) |
3406 | 10.8k | { |
3407 | 10.8k | if (g.token_list_.size() < 2) |
3408 | 876 | return 0; |
3409 | | |
3410 | 9.94k | std::size_t changes = 0; |
3411 | | |
3412 | 9.94k | generator::token_list_t token_list; |
3413 | 9.94k | token_list.reserve(10000); |
3414 | | |
3415 | 3.26M | for (int i = 0; i < static_cast<int>(g.token_list_.size() - 1); ++i) |
3416 | 3.25M | { |
3417 | 3.25M | token t; |
3418 | | |
3419 | 3.25M | for ( ; ; ) |
3420 | 3.30M | { |
3421 | 3.30M | if (!join(g[i], g[i + 1], t)) |
3422 | 3.25M | { |
3423 | 3.25M | token_list.push_back(g[i]); |
3424 | 3.25M | break; |
3425 | 3.25M | } |
3426 | | |
3427 | 43.0k | token_list.push_back(t); |
3428 | | |
3429 | 43.0k | ++changes; |
3430 | | |
3431 | 43.0k | i += 2; |
3432 | | |
3433 | 43.0k | if (static_cast<std::size_t>(i) >= (g.token_list_.size() - 1)) |
3434 | 160 | break; |
3435 | 43.0k | } |
3436 | 3.25M | } |
3437 | | |
3438 | 9.94k | token_list.push_back(g.token_list_.back()); |
3439 | | |
3440 | 9.94k | assert(token_list.size() <= g.token_list_.size()); |
3441 | | |
3442 | 9.94k | std::swap(token_list, g.token_list_); |
3443 | | |
3444 | 9.94k | return changes; |
3445 | 9.94k | } |
3446 | | |
3447 | | inline std::size_t process_stride_3(generator& g) |
3448 | 10.8k | { |
3449 | 10.8k | if (g.token_list_.size() < 3) |
3450 | 1.31k | return 0; |
3451 | | |
3452 | 9.51k | std::size_t changes = 0; |
3453 | | |
3454 | 9.51k | generator::token_list_t token_list; |
3455 | 9.51k | token_list.reserve(10000); |
3456 | | |
3457 | 3.30M | for (int i = 0; i < static_cast<int>(g.token_list_.size() - 2); ++i) |
3458 | 3.29M | { |
3459 | 3.29M | token t; |
3460 | | |
3461 | 3.29M | for ( ; ; ) |
3462 | 3.29M | { |
3463 | 3.29M | if (!join(g[i], g[i + 1], g[i + 2], t)) |
3464 | 3.29M | { |
3465 | 3.29M | token_list.push_back(g[i]); |
3466 | 3.29M | break; |
3467 | 3.29M | } |
3468 | | |
3469 | 6 | token_list.push_back(t); |
3470 | | |
3471 | 6 | ++changes; |
3472 | | |
3473 | 6 | i += 3; |
3474 | | |
3475 | 6 | if (static_cast<std::size_t>(i) >= (g.token_list_.size() - 2)) |
3476 | 4 | break; |
3477 | 6 | } |
3478 | 3.29M | } |
3479 | | |
3480 | 9.51k | token_list.push_back(*(g.token_list_.begin() + g.token_list_.size() - 2)); |
3481 | 9.51k | token_list.push_back(*(g.token_list_.begin() + g.token_list_.size() - 1)); |
3482 | | |
3483 | 9.51k | assert(token_list.size() <= g.token_list_.size()); |
3484 | | |
3485 | 9.51k | std::swap(token_list, g.token_list_); |
3486 | | |
3487 | 9.51k | return changes; |
3488 | 9.51k | } |
3489 | | |
3490 | | const std::size_t stride_; |
3491 | | }; |
3492 | | |
3493 | | namespace helper |
3494 | | { |
3495 | | |
3496 | | inline void dump(const lexer::generator& generator) |
3497 | 0 | { |
3498 | 0 | for (std::size_t i = 0; i < generator.size(); ++i) |
3499 | 0 | { |
3500 | 0 | const lexer::token& t = generator[i]; |
3501 | 0 | printf("Token[%02d] @ %03d %6s --> '%s'\n", |
3502 | 0 | static_cast<int>(i), |
3503 | 0 | static_cast<int>(t.position), |
3504 | 0 | t.to_str(t.type).c_str(), |
3505 | 0 | t.value.c_str()); |
3506 | 0 | } |
3507 | 0 | } |
3508 | | |
3509 | | class commutative_inserter : public lexer::token_inserter |
3510 | | { |
3511 | | public: |
3512 | | |
3513 | | using lexer::token_inserter::insert; |
3514 | | |
3515 | | commutative_inserter() |
3516 | 12.8k | : lexer::token_inserter(2) |
3517 | 12.8k | {} |
3518 | | |
3519 | | inline void ignore_symbol(const std::string& symbol) |
3520 | 423k | { |
3521 | 423k | ignore_set_.insert(symbol); |
3522 | 423k | } |
3523 | | |
3524 | | inline int insert(const lexer::token& t0, const lexer::token& t1, lexer::token& new_token) exprtk_override |
3525 | 3.11M | { |
3526 | 3.11M | bool match = false; |
3527 | 3.11M | new_token.type = lexer::token::e_mul; |
3528 | 3.11M | new_token.value = "*"; |
3529 | 3.11M | new_token.position = t1.position; |
3530 | | |
3531 | 3.11M | if (t0.type == lexer::token::e_symbol) |
3532 | 605k | { |
3533 | 605k | if (ignore_set_.end() != ignore_set_.find(t0.value)) |
3534 | 21.5k | { |
3535 | 21.5k | return -1; |
3536 | 21.5k | } |
3537 | 584k | else if (!t0.value.empty() && ('$' == t0.value[0])) |
3538 | 554 | { |
3539 | 554 | return -1; |
3540 | 554 | } |
3541 | 605k | } |
3542 | | |
3543 | 3.09M | if (t1.type == lexer::token::e_symbol) |
3544 | 599k | { |
3545 | 599k | if (ignore_set_.end() != ignore_set_.find(t1.value)) |
3546 | 21.1k | { |
3547 | 21.1k | return -1; |
3548 | 21.1k | } |
3549 | 599k | } |
3550 | 3.07M | if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_symbol )) match = true; |
3551 | 2.90M | else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lbracket )) match = true; |
3552 | 2.90M | else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lcrlbracket)) match = true; |
3553 | 2.90M | else if ((t0.type == lexer::token::e_number ) && (t1.type == lexer::token::e_lsqrbracket)) match = true; |
3554 | 2.90M | else if ((t0.type == lexer::token::e_symbol ) && (t1.type == lexer::token::e_number )) match = true; |
3555 | 2.89M | else if ((t0.type == lexer::token::e_rbracket ) && (t1.type == lexer::token::e_number )) match = true; |
3556 | 2.89M | else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_number )) match = true; |
3557 | 2.88M | else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_number )) match = true; |
3558 | 2.88M | else if ((t0.type == lexer::token::e_rbracket ) && (t1.type == lexer::token::e_symbol )) match = true; |
3559 | 2.88M | else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_symbol )) match = true; |
3560 | 2.88M | else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_symbol )) match = true; |
3561 | 2.88M | else if ((t0.type == lexer::token::e_symbol ) && (t1.type == lexer::token::e_symbol )) match = true; |
3562 | | |
3563 | 3.07M | return (match) ? 1 : -1; |
3564 | 3.09M | } |
3565 | | |
3566 | | private: |
3567 | | |
3568 | | std::set<std::string,details::ilesscompare> ignore_set_; |
3569 | | }; |
3570 | | |
3571 | | class operator_joiner exprtk_final : public token_joiner |
3572 | | { |
3573 | | public: |
3574 | | |
3575 | | explicit operator_joiner(const std::size_t& stride) |
3576 | 25.6k | : token_joiner(stride) |
3577 | 25.6k | {} |
3578 | | |
3579 | | inline bool join(const lexer::token& t0, const lexer::token& t1, lexer::token& t) exprtk_override |
3580 | 3.30M | { |
3581 | | // ': =' --> ':=' |
3582 | 3.30M | if ((t0.type == lexer::token::e_colon) && (t1.type == lexer::token::e_eq)) |
3583 | 2 | { |
3584 | 2 | t.type = lexer::token::e_assign; |
3585 | 2 | t.value = ":="; |
3586 | 2 | t.position = t0.position; |
3587 | | |
3588 | 2 | return true; |
3589 | 2 | } |
3590 | | // '+ =' --> '+=' |
3591 | 3.30M | else if ((t0.type == lexer::token::e_add) && (t1.type == lexer::token::e_eq)) |
3592 | 4 | { |
3593 | 4 | t.type = lexer::token::e_addass; |
3594 | 4 | t.value = "+="; |
3595 | 4 | t.position = t0.position; |
3596 | | |
3597 | 4 | return true; |
3598 | 4 | } |
3599 | | // '- =' --> '-=' |
3600 | 3.30M | else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_eq)) |
3601 | 4.48k | { |
3602 | 4.48k | t.type = lexer::token::e_subass; |
3603 | 4.48k | t.value = "-="; |
3604 | 4.48k | t.position = t0.position; |
3605 | | |
3606 | 4.48k | return true; |
3607 | 4.48k | } |
3608 | | // '* =' --> '*=' |
3609 | 3.29M | else if ((t0.type == lexer::token::e_mul) && (t1.type == lexer::token::e_eq)) |
3610 | 2 | { |
3611 | 2 | t.type = lexer::token::e_mulass; |
3612 | 2 | t.value = "*="; |
3613 | 2 | t.position = t0.position; |
3614 | | |
3615 | 2 | return true; |
3616 | 2 | } |
3617 | | // '/ =' --> '/=' |
3618 | 3.29M | else if ((t0.type == lexer::token::e_div) && (t1.type == lexer::token::e_eq)) |
3619 | 4 | { |
3620 | 4 | t.type = lexer::token::e_divass; |
3621 | 4 | t.value = "/="; |
3622 | 4 | t.position = t0.position; |
3623 | | |
3624 | 4 | return true; |
3625 | 4 | } |
3626 | | // '% =' --> '%=' |
3627 | 3.29M | else if ((t0.type == lexer::token::e_mod) && (t1.type == lexer::token::e_eq)) |
3628 | 2 | { |
3629 | 2 | t.type = lexer::token::e_modass; |
3630 | 2 | t.value = "%="; |
3631 | 2 | t.position = t0.position; |
3632 | | |
3633 | 2 | return true; |
3634 | 2 | } |
3635 | | // '> =' --> '>=' |
3636 | 3.29M | else if ((t0.type == lexer::token::e_gt) && (t1.type == lexer::token::e_eq)) |
3637 | 6 | { |
3638 | 6 | t.type = lexer::token::e_gte; |
3639 | 6 | t.value = ">="; |
3640 | 6 | t.position = t0.position; |
3641 | | |
3642 | 6 | return true; |
3643 | 6 | } |
3644 | | // '< =' --> '<=' |
3645 | 3.29M | else if ((t0.type == lexer::token::e_lt) && (t1.type == lexer::token::e_eq)) |
3646 | 14 | { |
3647 | 14 | t.type = lexer::token::e_lte; |
3648 | 14 | t.value = "<="; |
3649 | 14 | t.position = t0.position; |
3650 | | |
3651 | 14 | return true; |
3652 | 14 | } |
3653 | | // '= =' --> '==' |
3654 | 3.29M | else if ((t0.type == lexer::token::e_eq) && (t1.type == lexer::token::e_eq)) |
3655 | 138 | { |
3656 | 138 | t.type = lexer::token::e_eq; |
3657 | 138 | t.value = "=="; |
3658 | 138 | t.position = t0.position; |
3659 | | |
3660 | 138 | return true; |
3661 | 138 | } |
3662 | | // '! =' --> '!=' |
3663 | 3.29M | else if ((static_cast<details::char_t>(t0.type) == '!') && (t1.type == lexer::token::e_eq)) |
3664 | 2 | { |
3665 | 2 | t.type = lexer::token::e_ne; |
3666 | 2 | t.value = "!="; |
3667 | 2 | t.position = t0.position; |
3668 | | |
3669 | 2 | return true; |
3670 | 2 | } |
3671 | | // '< >' --> '<>' |
3672 | 3.29M | else if ((t0.type == lexer::token::e_lt) && (t1.type == lexer::token::e_gt)) |
3673 | 4 | { |
3674 | 4 | t.type = lexer::token::e_ne; |
3675 | 4 | t.value = "<>"; |
3676 | 4 | t.position = t0.position; |
3677 | | |
3678 | 4 | return true; |
3679 | 4 | } |
3680 | | // '<= >' --> '<=>' |
3681 | 3.29M | else if ((t0.type == lexer::token::e_lte) && (t1.type == lexer::token::e_gt)) |
3682 | 0 | { |
3683 | 0 | t.type = lexer::token::e_swap; |
3684 | 0 | t.value = "<=>"; |
3685 | 0 | t.position = t0.position; |
3686 | |
|
3687 | 0 | return true; |
3688 | 0 | } |
3689 | | // '+ -' --> '-' |
3690 | 3.29M | else if ((t0.type == lexer::token::e_add) && (t1.type == lexer::token::e_sub)) |
3691 | 221 | { |
3692 | 221 | t.type = lexer::token::e_sub; |
3693 | 221 | t.value = "-"; |
3694 | 221 | t.position = t0.position; |
3695 | | |
3696 | 221 | return true; |
3697 | 221 | } |
3698 | | // '- +' --> '-' |
3699 | 3.29M | else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_add)) |
3700 | 388 | { |
3701 | 388 | t.type = lexer::token::e_sub; |
3702 | 388 | t.value = "-"; |
3703 | 388 | t.position = t0.position; |
3704 | | |
3705 | 388 | return true; |
3706 | 388 | } |
3707 | | // '- -' --> '+' |
3708 | 3.29M | else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_sub)) |
3709 | 37.8k | { |
3710 | | /* |
3711 | | Note: May need to reconsider this when wanting to implement |
3712 | | pre/postfix decrement operator |
3713 | | */ |
3714 | 37.8k | t.type = lexer::token::e_add; |
3715 | 37.8k | t.value = "+"; |
3716 | 37.8k | t.position = t0.position; |
3717 | | |
3718 | 37.8k | return true; |
3719 | 37.8k | } |
3720 | 3.25M | else |
3721 | 3.25M | return false; |
3722 | 3.30M | } |
3723 | | |
3724 | | inline bool join(const lexer::token& t0, |
3725 | | const lexer::token& t1, |
3726 | | const lexer::token& t2, |
3727 | | lexer::token& t) exprtk_override |
3728 | 3.29M | { |
3729 | | // '[ * ]' --> '[*]' |
3730 | 3.29M | if ( |
3731 | 3.29M | (t0.type == lexer::token::e_lsqrbracket) && |
3732 | 3.29M | (t1.type == lexer::token::e_mul ) && |
3733 | 3.29M | (t2.type == lexer::token::e_rsqrbracket) |
3734 | 3.29M | ) |
3735 | 6 | { |
3736 | 6 | t.type = lexer::token::e_symbol; |
3737 | 6 | t.value = "[*]"; |
3738 | 6 | t.position = t0.position; |
3739 | | |
3740 | 6 | return true; |
3741 | 6 | } |
3742 | 3.29M | else |
3743 | 3.29M | return false; |
3744 | 3.29M | } |
3745 | | }; |
3746 | | |
3747 | | class bracket_checker exprtk_final : public lexer::token_scanner |
3748 | | { |
3749 | | public: |
3750 | | |
3751 | | using lexer::token_scanner::operator(); |
3752 | | |
3753 | | bracket_checker() |
3754 | 12.8k | : token_scanner(1) |
3755 | 12.8k | , state_(true) |
3756 | 12.8k | {} |
3757 | | |
3758 | | bool result() exprtk_override |
3759 | 10.6k | { |
3760 | 10.6k | if (!stack_.empty()) |
3761 | 188 | { |
3762 | 188 | lexer::token t; |
3763 | 188 | t.value = stack_.top().first; |
3764 | 188 | t.position = stack_.top().second; |
3765 | 188 | error_token_ = t; |
3766 | 188 | state_ = false; |
3767 | | |
3768 | 188 | return false; |
3769 | 188 | } |
3770 | 10.4k | else |
3771 | 10.4k | return state_; |
3772 | 10.6k | } |
3773 | | |
3774 | | lexer::token error_token() |
3775 | 698 | { |
3776 | 698 | return error_token_; |
3777 | 698 | } |
3778 | | |
3779 | | void reset() exprtk_override |
3780 | 10.6k | { |
3781 | | // Why? because msvc doesn't support swap properly. |
3782 | 10.6k | stack_ = std::stack<std::pair<char,std::size_t> >(); |
3783 | 10.6k | state_ = true; |
3784 | 10.6k | error_token_.clear(); |
3785 | 10.6k | } |
3786 | | |
3787 | | bool operator() (const lexer::token& t) exprtk_override |
3788 | 3.26M | { |
3789 | 3.26M | if ( |
3790 | 3.26M | !t.value.empty() && |
3791 | 3.26M | (lexer::token::e_string != t.type) && |
3792 | 3.26M | (lexer::token::e_symbol != t.type) && |
3793 | 3.26M | exprtk::details::is_bracket(t.value[0]) |
3794 | 3.26M | ) |
3795 | 589k | { |
3796 | 589k | details::char_t c = t.value[0]; |
3797 | | |
3798 | 589k | if (t.type == lexer::token::e_lbracket ) stack_.push(std::make_pair(')',t.position)); |
3799 | 586k | else if (t.type == lexer::token::e_lcrlbracket) stack_.push(std::make_pair('}',t.position)); |
3800 | 579k | else if (t.type == lexer::token::e_lsqrbracket) stack_.push(std::make_pair(']',t.position)); |
3801 | 12.4k | else if (exprtk::details::is_right_bracket(c)) |
3802 | 12.4k | { |
3803 | 12.4k | if (stack_.empty()) |
3804 | 161 | { |
3805 | 161 | state_ = false; |
3806 | 161 | error_token_ = t; |
3807 | | |
3808 | 161 | return false; |
3809 | 161 | } |
3810 | 12.3k | else if (c != stack_.top().first) |
3811 | 9 | { |
3812 | 9 | state_ = false; |
3813 | 9 | error_token_ = t; |
3814 | | |
3815 | 9 | return false; |
3816 | 9 | } |
3817 | 12.2k | else |
3818 | 12.2k | stack_.pop(); |
3819 | 12.4k | } |
3820 | 589k | } |
3821 | | |
3822 | 3.26M | return true; |
3823 | 3.26M | } |
3824 | | |
3825 | | private: |
3826 | | |
3827 | | bool state_; |
3828 | | std::stack<std::pair<char,std::size_t> > stack_; |
3829 | | lexer::token error_token_; |
3830 | | }; |
3831 | | |
3832 | | template <typename T> |
3833 | | class numeric_checker exprtk_final : public lexer::token_scanner |
3834 | | { |
3835 | | public: |
3836 | | |
3837 | | using lexer::token_scanner::operator(); |
3838 | | |
3839 | | numeric_checker() |
3840 | 12.8k | : token_scanner (1) |
3841 | 12.8k | , current_index_(0) |
3842 | 12.8k | {} exprtk::lexer::helper::numeric_checker<double>::numeric_checker() Line | Count | Source | 3840 | 6.42k | : token_scanner (1) | 3841 | 6.42k | , current_index_(0) | 3842 | 6.42k | {} |
exprtk::lexer::helper::numeric_checker<float>::numeric_checker() Line | Count | Source | 3840 | 6.42k | : token_scanner (1) | 3841 | 6.42k | , current_index_(0) | 3842 | 6.42k | {} |
|
3843 | | |
3844 | | bool result() exprtk_override |
3845 | 10.8k | { |
3846 | 10.8k | return error_list_.empty(); |
3847 | 10.8k | } exprtk::lexer::helper::numeric_checker<double>::result() Line | Count | Source | 3845 | 5.41k | { | 3846 | 5.41k | return error_list_.empty(); | 3847 | 5.41k | } |
exprtk::lexer::helper::numeric_checker<float>::result() Line | Count | Source | 3845 | 5.41k | { | 3846 | 5.41k | return error_list_.empty(); | 3847 | 5.41k | } |
|
3848 | | |
3849 | | void reset() exprtk_override |
3850 | 10.8k | { |
3851 | 10.8k | error_list_.clear(); |
3852 | 10.8k | current_index_ = 0; |
3853 | 10.8k | } exprtk::lexer::helper::numeric_checker<double>::reset() Line | Count | Source | 3850 | 5.41k | { | 3851 | 5.41k | error_list_.clear(); | 3852 | 5.41k | current_index_ = 0; | 3853 | 5.41k | } |
exprtk::lexer::helper::numeric_checker<float>::reset() Line | Count | Source | 3850 | 5.41k | { | 3851 | 5.41k | error_list_.clear(); | 3852 | 5.41k | current_index_ = 0; | 3853 | 5.41k | } |
|
3854 | | |
3855 | | bool operator() (const lexer::token& t) exprtk_override |
3856 | 3.31M | { |
3857 | 3.31M | if (token::e_number == t.type) |
3858 | 505k | { |
3859 | 505k | T v; |
3860 | | |
3861 | 505k | if (!exprtk::details::string_to_real(t.value,v)) |
3862 | 1.00k | { |
3863 | 1.00k | error_list_.push_back(current_index_); |
3864 | 1.00k | } |
3865 | 505k | } |
3866 | | |
3867 | 3.31M | ++current_index_; |
3868 | | |
3869 | 3.31M | return true; |
3870 | 3.31M | } exprtk::lexer::helper::numeric_checker<double>::operator()(exprtk::lexer::token const&) Line | Count | Source | 3856 | 1.93M | { | 3857 | 1.93M | if (token::e_number == t.type) | 3858 | 301k | { | 3859 | 301k | T v; | 3860 | | | 3861 | 301k | if (!exprtk::details::string_to_real(t.value,v)) | 3862 | 432 | { | 3863 | 432 | error_list_.push_back(current_index_); | 3864 | 432 | } | 3865 | 301k | } | 3866 | | | 3867 | 1.93M | ++current_index_; | 3868 | | | 3869 | 1.93M | return true; | 3870 | 1.93M | } |
exprtk::lexer::helper::numeric_checker<float>::operator()(exprtk::lexer::token const&) Line | Count | Source | 3856 | 1.37M | { | 3857 | 1.37M | if (token::e_number == t.type) | 3858 | 204k | { | 3859 | 204k | T v; | 3860 | | | 3861 | 204k | if (!exprtk::details::string_to_real(t.value,v)) | 3862 | 573 | { | 3863 | 573 | error_list_.push_back(current_index_); | 3864 | 573 | } | 3865 | 204k | } | 3866 | | | 3867 | 1.37M | ++current_index_; | 3868 | | | 3869 | 1.37M | return true; | 3870 | 1.37M | } |
|
3871 | | |
3872 | | std::size_t error_count() const |
3873 | 1.37k | { |
3874 | 1.37k | return error_list_.size(); |
3875 | 1.37k | } exprtk::lexer::helper::numeric_checker<double>::error_count() const Line | Count | Source | 3873 | 568 | { | 3874 | 568 | return error_list_.size(); | 3875 | 568 | } |
exprtk::lexer::helper::numeric_checker<float>::error_count() const Line | Count | Source | 3873 | 807 | { | 3874 | 807 | return error_list_.size(); | 3875 | 807 | } |
|
3876 | | |
3877 | | std::size_t error_index(const std::size_t& i) |
3878 | 1.00k | { |
3879 | 1.00k | if (i < error_list_.size()) |
3880 | 1.00k | return error_list_[i]; |
3881 | 0 | else |
3882 | 0 | return std::numeric_limits<std::size_t>::max(); |
3883 | 1.00k | } exprtk::lexer::helper::numeric_checker<double>::error_index(unsigned long const&) Line | Count | Source | 3878 | 432 | { | 3879 | 432 | if (i < error_list_.size()) | 3880 | 432 | return error_list_[i]; | 3881 | 0 | else | 3882 | 0 | return std::numeric_limits<std::size_t>::max(); | 3883 | 432 | } |
exprtk::lexer::helper::numeric_checker<float>::error_index(unsigned long const&) Line | Count | Source | 3878 | 573 | { | 3879 | 573 | if (i < error_list_.size()) | 3880 | 573 | return error_list_[i]; | 3881 | 0 | else | 3882 | 0 | return std::numeric_limits<std::size_t>::max(); | 3883 | 573 | } |
|
3884 | | |
3885 | | void clear_errors() |
3886 | 185 | { |
3887 | 185 | error_list_.clear(); |
3888 | 185 | } exprtk::lexer::helper::numeric_checker<double>::clear_errors() Line | Count | Source | 3886 | 68 | { | 3887 | 68 | error_list_.clear(); | 3888 | 68 | } |
exprtk::lexer::helper::numeric_checker<float>::clear_errors() Line | Count | Source | 3886 | 117 | { | 3887 | 117 | error_list_.clear(); | 3888 | 117 | } |
|
3889 | | |
3890 | | private: |
3891 | | |
3892 | | std::size_t current_index_; |
3893 | | std::vector<std::size_t> error_list_; |
3894 | | }; |
3895 | | |
3896 | | class symbol_replacer exprtk_final : public lexer::token_modifier |
3897 | | { |
3898 | | private: |
3899 | | |
3900 | | typedef std::map<std::string,std::pair<std::string,token::token_type>,details::ilesscompare> replace_map_t; |
3901 | | |
3902 | | public: |
3903 | | |
3904 | | bool remove(const std::string& target_symbol) |
3905 | 0 | { |
3906 | 0 | const replace_map_t::iterator itr = replace_map_.find(target_symbol); |
3907 | 0 |
|
3908 | 0 | if (replace_map_.end() == itr) |
3909 | 0 | return false; |
3910 | 0 |
|
3911 | 0 | replace_map_.erase(itr); |
3912 | 0 |
|
3913 | 0 | return true; |
3914 | 0 | } |
3915 | | |
3916 | | bool add_replace(const std::string& target_symbol, |
3917 | | const std::string& replace_symbol, |
3918 | | const lexer::token::token_type token_type = lexer::token::e_symbol) |
3919 | 25.6k | { |
3920 | 25.6k | const replace_map_t::iterator itr = replace_map_.find(target_symbol); |
3921 | | |
3922 | 25.6k | if (replace_map_.end() != itr) |
3923 | 0 | { |
3924 | 0 | return false; |
3925 | 0 | } |
3926 | | |
3927 | 25.6k | replace_map_[target_symbol] = std::make_pair(replace_symbol,token_type); |
3928 | | |
3929 | 25.6k | return true; |
3930 | 25.6k | } |
3931 | | |
3932 | | void clear() |
3933 | 12.8k | { |
3934 | 12.8k | replace_map_.clear(); |
3935 | 12.8k | } |
3936 | | |
3937 | | private: |
3938 | | |
3939 | | bool modify(lexer::token& t) exprtk_override |
3940 | 3.31M | { |
3941 | 3.31M | if (lexer::token::e_symbol == t.type) |
3942 | 609k | { |
3943 | 609k | if (replace_map_.empty()) |
3944 | 0 | return false; |
3945 | | |
3946 | 609k | const replace_map_t::iterator itr = replace_map_.find(t.value); |
3947 | | |
3948 | 609k | if (replace_map_.end() != itr) |
3949 | 2 | { |
3950 | 2 | t.value = itr->second.first; |
3951 | 2 | t.type = itr->second.second; |
3952 | | |
3953 | 2 | return true; |
3954 | 2 | } |
3955 | 609k | } |
3956 | | |
3957 | 3.31M | return false; |
3958 | 3.31M | } |
3959 | | |
3960 | | replace_map_t replace_map_; |
3961 | | }; |
3962 | | |
3963 | | class sequence_validator exprtk_final : public lexer::token_scanner |
3964 | | { |
3965 | | private: |
3966 | | |
3967 | | typedef std::pair<lexer::token::token_type,lexer::token::token_type> token_pair_t; |
3968 | | typedef std::set<token_pair_t> set_t; |
3969 | | |
3970 | | public: |
3971 | | |
3972 | | using lexer::token_scanner::operator(); |
3973 | | |
3974 | | sequence_validator() |
3975 | 12.8k | : lexer::token_scanner(2) |
3976 | 12.8k | { |
3977 | 12.8k | add_invalid(lexer::token::e_number, lexer::token::e_number); |
3978 | 12.8k | add_invalid(lexer::token::e_string, lexer::token::e_string); |
3979 | 12.8k | add_invalid(lexer::token::e_number, lexer::token::e_string); |
3980 | 12.8k | add_invalid(lexer::token::e_string, lexer::token::e_number); |
3981 | | |
3982 | 12.8k | add_invalid_set1(lexer::token::e_assign ); |
3983 | 12.8k | add_invalid_set1(lexer::token::e_shr ); |
3984 | 12.8k | add_invalid_set1(lexer::token::e_shl ); |
3985 | 12.8k | add_invalid_set1(lexer::token::e_lte ); |
3986 | 12.8k | add_invalid_set1(lexer::token::e_ne ); |
3987 | 12.8k | add_invalid_set1(lexer::token::e_gte ); |
3988 | 12.8k | add_invalid_set1(lexer::token::e_lt ); |
3989 | 12.8k | add_invalid_set1(lexer::token::e_gt ); |
3990 | 12.8k | add_invalid_set1(lexer::token::e_eq ); |
3991 | 12.8k | add_invalid_set1(lexer::token::e_comma ); |
3992 | 12.8k | add_invalid_set1(lexer::token::e_add ); |
3993 | 12.8k | add_invalid_set1(lexer::token::e_sub ); |
3994 | 12.8k | add_invalid_set1(lexer::token::e_div ); |
3995 | 12.8k | add_invalid_set1(lexer::token::e_mul ); |
3996 | 12.8k | add_invalid_set1(lexer::token::e_mod ); |
3997 | 12.8k | add_invalid_set1(lexer::token::e_pow ); |
3998 | 12.8k | add_invalid_set1(lexer::token::e_colon ); |
3999 | 12.8k | add_invalid_set1(lexer::token::e_ternary); |
4000 | 12.8k | } |
4001 | | |
4002 | | bool result() exprtk_override |
4003 | 10.2k | { |
4004 | 10.2k | return error_list_.empty(); |
4005 | 10.2k | } |
4006 | | |
4007 | | bool operator() (const lexer::token& t0, const lexer::token& t1) exprtk_override |
4008 | 2.35M | { |
4009 | 2.35M | const set_t::value_type p = std::make_pair(t0.type,t1.type); |
4010 | | |
4011 | 2.35M | if (invalid_bracket_check(t0.type,t1.type)) |
4012 | 32 | { |
4013 | 32 | error_list_.push_back(std::make_pair(t0,t1)); |
4014 | 32 | } |
4015 | 2.35M | else if (invalid_comb_.find(p) != invalid_comb_.end()) |
4016 | 118k | { |
4017 | 118k | error_list_.push_back(std::make_pair(t0,t1)); |
4018 | 118k | } |
4019 | | |
4020 | 2.35M | return true; |
4021 | 2.35M | } |
4022 | | |
4023 | | std::size_t error_count() const |
4024 | 119k | { |
4025 | 119k | return error_list_.size(); |
4026 | 119k | } |
4027 | | |
4028 | | std::pair<lexer::token,lexer::token> error(const std::size_t index) |
4029 | 118k | { |
4030 | 118k | if (index < error_list_.size()) |
4031 | 118k | { |
4032 | 118k | return error_list_[index]; |
4033 | 118k | } |
4034 | 0 | else |
4035 | 0 | { |
4036 | 0 | static const lexer::token error_token; |
4037 | 0 | return std::make_pair(error_token,error_token); |
4038 | 0 | } |
4039 | 118k | } |
4040 | | |
4041 | | void clear_errors() |
4042 | 410 | { |
4043 | 410 | error_list_.clear(); |
4044 | 410 | } |
4045 | | |
4046 | | private: |
4047 | | |
4048 | | void add_invalid(const lexer::token::token_type base, const lexer::token::token_type t) |
4049 | 3.51M | { |
4050 | 3.51M | invalid_comb_.insert(std::make_pair(base,t)); |
4051 | 3.51M | } |
4052 | | |
4053 | | void add_invalid_set1(const lexer::token::token_type t) |
4054 | 231k | { |
4055 | 231k | add_invalid(t, lexer::token::e_assign); |
4056 | 231k | add_invalid(t, lexer::token::e_shr ); |
4057 | 231k | add_invalid(t, lexer::token::e_shl ); |
4058 | 231k | add_invalid(t, lexer::token::e_lte ); |
4059 | 231k | add_invalid(t, lexer::token::e_ne ); |
4060 | 231k | add_invalid(t, lexer::token::e_gte ); |
4061 | 231k | add_invalid(t, lexer::token::e_lt ); |
4062 | 231k | add_invalid(t, lexer::token::e_gt ); |
4063 | 231k | add_invalid(t, lexer::token::e_eq ); |
4064 | 231k | add_invalid(t, lexer::token::e_comma ); |
4065 | 231k | add_invalid(t, lexer::token::e_div ); |
4066 | 231k | add_invalid(t, lexer::token::e_mul ); |
4067 | 231k | add_invalid(t, lexer::token::e_mod ); |
4068 | 231k | add_invalid(t, lexer::token::e_pow ); |
4069 | 231k | add_invalid(t, lexer::token::e_colon ); |
4070 | 231k | } |
4071 | | |
4072 | | bool invalid_bracket_check(const lexer::token::token_type base, const lexer::token::token_type t) |
4073 | 2.35M | { |
4074 | 2.35M | if (details::is_right_bracket(static_cast<details::char_t>(base))) |
4075 | 9.92k | { |
4076 | 9.92k | switch (t) |
4077 | 9.92k | { |
4078 | 0 | case lexer::token::e_assign : return (']' != base); |
4079 | 8 | case lexer::token::e_string : return (')' != base); |
4080 | 9.91k | default : return false; |
4081 | 9.92k | } |
4082 | 9.92k | } |
4083 | 2.34M | else if (details::is_left_bracket(static_cast<details::char_t>(base))) |
4084 | 10.2k | { |
4085 | 10.2k | if (details::is_right_bracket(static_cast<details::char_t>(t))) |
4086 | 201 | return false; |
4087 | 10.0k | else if (details::is_left_bracket(static_cast<details::char_t>(t))) |
4088 | 21 | return false; |
4089 | 10.0k | else |
4090 | 10.0k | { |
4091 | 10.0k | switch (t) |
4092 | 10.0k | { |
4093 | 2.02k | case lexer::token::e_number : return false; |
4094 | 7.56k | case lexer::token::e_symbol : return false; |
4095 | 4 | case lexer::token::e_string : return false; |
4096 | 236 | case lexer::token::e_add : return false; |
4097 | 171 | case lexer::token::e_sub : return false; |
4098 | 34 | case lexer::token::e_colon : return false; |
4099 | 0 | case lexer::token::e_ternary : return false; |
4100 | 8 | default : return true ; |
4101 | 10.0k | } |
4102 | 10.0k | } |
4103 | 10.2k | } |
4104 | 2.33M | else if (details::is_right_bracket(static_cast<details::char_t>(t))) |
4105 | 10.0k | { |
4106 | 10.0k | switch (base) |
4107 | 10.0k | { |
4108 | 4.18k | case lexer::token::e_number : return false; |
4109 | 5.63k | case lexer::token::e_symbol : return false; |
4110 | 2 | case lexer::token::e_string : return false; |
4111 | 2 | case lexer::token::e_eof : return false; |
4112 | 214 | case lexer::token::e_colon : return false; |
4113 | 0 | case lexer::token::e_ternary : return false; |
4114 | 20 | default : return true ; |
4115 | 10.0k | } |
4116 | 10.0k | } |
4117 | 2.32M | else if (details::is_left_bracket(static_cast<details::char_t>(t))) |
4118 | 9.13k | { |
4119 | 9.13k | switch (base) |
4120 | 9.13k | { |
4121 | 0 | case lexer::token::e_rbracket : return true; |
4122 | 0 | case lexer::token::e_rsqrbracket : return true; |
4123 | 0 | case lexer::token::e_rcrlbracket : return true; |
4124 | 9.13k | default : return false; |
4125 | 9.13k | } |
4126 | 9.13k | } |
4127 | | |
4128 | 2.31M | return false; |
4129 | 2.35M | } |
4130 | | |
4131 | | set_t invalid_comb_; |
4132 | | std::vector<std::pair<lexer::token,lexer::token> > error_list_; |
4133 | | }; |
4134 | | |
4135 | | class sequence_validator_3tokens exprtk_final : public lexer::token_scanner |
4136 | | { |
4137 | | private: |
4138 | | |
4139 | | typedef lexer::token::token_type token_t; |
4140 | | typedef std::pair<token_t,std::pair<token_t,token_t> > token_triplet_t; |
4141 | | typedef std::set<token_triplet_t> set_t; |
4142 | | |
4143 | | public: |
4144 | | |
4145 | | using lexer::token_scanner::operator(); |
4146 | | |
4147 | | sequence_validator_3tokens() |
4148 | 12.8k | : lexer::token_scanner(3) |
4149 | 12.8k | { |
4150 | 12.8k | add_invalid(lexer::token::e_number , lexer::token::e_number , lexer::token::e_number); |
4151 | 12.8k | add_invalid(lexer::token::e_string , lexer::token::e_string , lexer::token::e_string); |
4152 | 12.8k | add_invalid(lexer::token::e_comma , lexer::token::e_comma , lexer::token::e_comma ); |
4153 | | |
4154 | 12.8k | add_invalid(lexer::token::e_add , lexer::token::e_add , lexer::token::e_add ); |
4155 | 12.8k | add_invalid(lexer::token::e_sub , lexer::token::e_sub , lexer::token::e_sub ); |
4156 | 12.8k | add_invalid(lexer::token::e_div , lexer::token::e_div , lexer::token::e_div ); |
4157 | 12.8k | add_invalid(lexer::token::e_mul , lexer::token::e_mul , lexer::token::e_mul ); |
4158 | 12.8k | add_invalid(lexer::token::e_mod , lexer::token::e_mod , lexer::token::e_mod ); |
4159 | 12.8k | add_invalid(lexer::token::e_pow , lexer::token::e_pow , lexer::token::e_pow ); |
4160 | | |
4161 | 12.8k | add_invalid(lexer::token::e_add , lexer::token::e_sub , lexer::token::e_add ); |
4162 | 12.8k | add_invalid(lexer::token::e_sub , lexer::token::e_add , lexer::token::e_sub ); |
4163 | 12.8k | add_invalid(lexer::token::e_div , lexer::token::e_mul , lexer::token::e_div ); |
4164 | 12.8k | add_invalid(lexer::token::e_mul , lexer::token::e_div , lexer::token::e_mul ); |
4165 | 12.8k | add_invalid(lexer::token::e_mod , lexer::token::e_pow , lexer::token::e_mod ); |
4166 | 12.8k | add_invalid(lexer::token::e_pow , lexer::token::e_mod , lexer::token::e_pow ); |
4167 | 12.8k | } |
4168 | | |
4169 | | bool result() exprtk_override |
4170 | 9.87k | { |
4171 | 9.87k | return error_list_.empty(); |
4172 | 9.87k | } |
4173 | | |
4174 | | bool operator() (const lexer::token& t0, const lexer::token& t1, const lexer::token& t2) exprtk_override |
4175 | 1.76M | { |
4176 | 1.76M | const set_t::value_type p = std::make_pair(t0.type,std::make_pair(t1.type,t2.type)); |
4177 | | |
4178 | 1.76M | if (invalid_comb_.find(p) != invalid_comb_.end()) |
4179 | 534 | { |
4180 | 534 | error_list_.push_back(std::make_pair(t0,t1)); |
4181 | 534 | } |
4182 | | |
4183 | 1.76M | return true; |
4184 | 1.76M | } |
4185 | | |
4186 | | std::size_t error_count() const |
4187 | 594 | { |
4188 | 594 | return error_list_.size(); |
4189 | 594 | } |
4190 | | |
4191 | | std::pair<lexer::token,lexer::token> error(const std::size_t index) |
4192 | 534 | { |
4193 | 534 | if (index < error_list_.size()) |
4194 | 534 | { |
4195 | 534 | return error_list_[index]; |
4196 | 534 | } |
4197 | 0 | else |
4198 | 0 | { |
4199 | 0 | static const lexer::token error_token; |
4200 | 0 | return std::make_pair(error_token,error_token); |
4201 | 0 | } |
4202 | 534 | } |
4203 | | |
4204 | | void clear_errors() |
4205 | 30 | { |
4206 | 30 | error_list_.clear(); |
4207 | 30 | } |
4208 | | |
4209 | | private: |
4210 | | |
4211 | | void add_invalid(const token_t t0, const token_t t1, const token_t t2) |
4212 | 192k | { |
4213 | 192k | invalid_comb_.insert(std::make_pair(t0,std::make_pair(t1,t2))); |
4214 | 192k | } |
4215 | | |
4216 | | set_t invalid_comb_; |
4217 | | std::vector<std::pair<lexer::token,lexer::token> > error_list_; |
4218 | | }; |
4219 | | |
4220 | | struct helper_assembly |
4221 | | { |
4222 | | inline bool register_scanner(lexer::token_scanner* scanner) |
4223 | 51.3k | { |
4224 | 51.3k | if (token_scanner_list.end() != std::find(token_scanner_list.begin(), |
4225 | 51.3k | token_scanner_list.end (), |
4226 | 51.3k | scanner)) |
4227 | 0 | { |
4228 | 0 | return false; |
4229 | 0 | } |
4230 | | |
4231 | 51.3k | token_scanner_list.push_back(scanner); |
4232 | | |
4233 | 51.3k | return true; |
4234 | 51.3k | } |
4235 | | |
4236 | | inline bool register_modifier(lexer::token_modifier* modifier) |
4237 | 12.8k | { |
4238 | 12.8k | if (token_modifier_list.end() != std::find(token_modifier_list.begin(), |
4239 | 12.8k | token_modifier_list.end (), |
4240 | 12.8k | modifier)) |
4241 | 0 | { |
4242 | 0 | return false; |
4243 | 0 | } |
4244 | | |
4245 | 12.8k | token_modifier_list.push_back(modifier); |
4246 | | |
4247 | 12.8k | return true; |
4248 | 12.8k | } |
4249 | | |
4250 | | inline bool register_joiner(lexer::token_joiner* joiner) |
4251 | 25.6k | { |
4252 | 25.6k | if (token_joiner_list.end() != std::find(token_joiner_list.begin(), |
4253 | 25.6k | token_joiner_list.end (), |
4254 | 25.6k | joiner)) |
4255 | 0 | { |
4256 | 0 | return false; |
4257 | 0 | } |
4258 | | |
4259 | 25.6k | token_joiner_list.push_back(joiner); |
4260 | | |
4261 | 25.6k | return true; |
4262 | 25.6k | } |
4263 | | |
4264 | | inline bool register_inserter(lexer::token_inserter* inserter) |
4265 | 12.8k | { |
4266 | 12.8k | if (token_inserter_list.end() != std::find(token_inserter_list.begin(), |
4267 | 12.8k | token_inserter_list.end (), |
4268 | 12.8k | inserter)) |
4269 | 0 | { |
4270 | 0 | return false; |
4271 | 0 | } |
4272 | | |
4273 | 12.8k | token_inserter_list.push_back(inserter); |
4274 | | |
4275 | 12.8k | return true; |
4276 | 12.8k | } |
4277 | | |
4278 | | inline bool run_modifiers(lexer::generator& g) |
4279 | 10.8k | { |
4280 | 10.8k | error_token_modifier = reinterpret_cast<lexer::token_modifier*>(0); |
4281 | | |
4282 | 21.6k | for (std::size_t i = 0; i < token_modifier_list.size(); ++i) |
4283 | 10.8k | { |
4284 | 10.8k | lexer::token_modifier& modifier = (*token_modifier_list[i]); |
4285 | | |
4286 | 10.8k | modifier.reset(); |
4287 | 10.8k | modifier.process(g); |
4288 | | |
4289 | 10.8k | if (!modifier.result()) |
4290 | 0 | { |
4291 | 0 | error_token_modifier = token_modifier_list[i]; |
4292 | |
|
4293 | 0 | return false; |
4294 | 0 | } |
4295 | 10.8k | } |
4296 | | |
4297 | 10.8k | return true; |
4298 | 10.8k | } |
4299 | | |
4300 | | inline bool run_joiners(lexer::generator& g) |
4301 | 10.8k | { |
4302 | 10.8k | error_token_joiner = reinterpret_cast<lexer::token_joiner*>(0); |
4303 | | |
4304 | 32.4k | for (std::size_t i = 0; i < token_joiner_list.size(); ++i) |
4305 | 21.6k | { |
4306 | 21.6k | lexer::token_joiner& joiner = (*token_joiner_list[i]); |
4307 | | |
4308 | 21.6k | joiner.reset(); |
4309 | 21.6k | joiner.process(g); |
4310 | | |
4311 | 21.6k | if (!joiner.result()) |
4312 | 0 | { |
4313 | 0 | error_token_joiner = token_joiner_list[i]; |
4314 | |
|
4315 | 0 | return false; |
4316 | 0 | } |
4317 | 21.6k | } |
4318 | | |
4319 | 10.8k | return true; |
4320 | 10.8k | } |
4321 | | |
4322 | | inline bool run_inserters(lexer::generator& g) |
4323 | 10.8k | { |
4324 | 10.8k | error_token_inserter = reinterpret_cast<lexer::token_inserter*>(0); |
4325 | | |
4326 | 21.6k | for (std::size_t i = 0; i < token_inserter_list.size(); ++i) |
4327 | 10.8k | { |
4328 | 10.8k | lexer::token_inserter& inserter = (*token_inserter_list[i]); |
4329 | | |
4330 | 10.8k | inserter.reset(); |
4331 | 10.8k | inserter.process(g); |
4332 | | |
4333 | 10.8k | if (!inserter.result()) |
4334 | 0 | { |
4335 | 0 | error_token_inserter = token_inserter_list[i]; |
4336 | |
|
4337 | 0 | return false; |
4338 | 0 | } |
4339 | 10.8k | } |
4340 | | |
4341 | 10.8k | return true; |
4342 | 10.8k | } |
4343 | | |
4344 | | inline bool run_scanners(lexer::generator& g) |
4345 | 10.8k | { |
4346 | 10.8k | error_token_scanner = reinterpret_cast<lexer::token_scanner*>(0); |
4347 | | |
4348 | 51.4k | for (std::size_t i = 0; i < token_scanner_list.size(); ++i) |
4349 | 41.6k | { |
4350 | 41.6k | lexer::token_scanner& scanner = (*token_scanner_list[i]); |
4351 | | |
4352 | 41.6k | scanner.reset(); |
4353 | 41.6k | scanner.process(g); |
4354 | | |
4355 | 41.6k | if (!scanner.result()) |
4356 | 974 | { |
4357 | 974 | error_token_scanner = token_scanner_list[i]; |
4358 | | |
4359 | 974 | return false; |
4360 | 974 | } |
4361 | 41.6k | } |
4362 | | |
4363 | 9.84k | return true; |
4364 | 10.8k | } |
4365 | | |
4366 | | std::vector<lexer::token_scanner*> token_scanner_list; |
4367 | | std::vector<lexer::token_modifier*> token_modifier_list; |
4368 | | std::vector<lexer::token_joiner*> token_joiner_list; |
4369 | | std::vector<lexer::token_inserter*> token_inserter_list; |
4370 | | |
4371 | | lexer::token_scanner* error_token_scanner; |
4372 | | lexer::token_modifier* error_token_modifier; |
4373 | | lexer::token_joiner* error_token_joiner; |
4374 | | lexer::token_inserter* error_token_inserter; |
4375 | | }; |
4376 | | } |
4377 | | |
4378 | | class parser_helper |
4379 | | { |
4380 | | public: |
4381 | | |
4382 | | typedef token token_t; |
4383 | | typedef generator generator_t; |
4384 | | |
4385 | | inline bool init(const std::string& str) |
4386 | 12.8k | { |
4387 | 12.8k | if (!lexer_.process(str)) |
4388 | 1.86k | { |
4389 | 1.86k | return false; |
4390 | 1.86k | } |
4391 | | |
4392 | 10.9k | lexer_.begin(); |
4393 | | |
4394 | 10.9k | next_token(); |
4395 | | |
4396 | 10.9k | return true; |
4397 | 12.8k | } |
4398 | | |
4399 | | inline generator_t& lexer() |
4400 | 598k | { |
4401 | 598k | return lexer_; |
4402 | 598k | } |
4403 | | |
4404 | | inline const generator_t& lexer() const |
4405 | 0 | { |
4406 | 0 | return lexer_; |
4407 | 0 | } |
4408 | | |
4409 | | inline void store_token() |
4410 | 0 | { |
4411 | 0 | lexer_.store(); |
4412 | 0 | store_current_token_ = current_token_; |
4413 | 0 | } |
4414 | | |
4415 | | inline void restore_token() |
4416 | 0 | { |
4417 | 0 | lexer_.restore(); |
4418 | 0 | current_token_ = store_current_token_; |
4419 | 0 | } |
4420 | | |
4421 | | inline void next_token() |
4422 | 641k | { |
4423 | 641k | current_token_ = lexer_.next_token(); |
4424 | 641k | } |
4425 | | |
4426 | | inline const token_t& current_token() const |
4427 | 3.61M | { |
4428 | 3.61M | return current_token_; |
4429 | 3.61M | } |
4430 | | |
4431 | | inline const token_t& peek_next_token() |
4432 | 0 | { |
4433 | 0 | return lexer_.peek_next_token(); |
4434 | 0 | } |
4435 | | |
4436 | | enum token_advance_mode |
4437 | | { |
4438 | | e_hold = 0, |
4439 | | e_advance = 1 |
4440 | | }; |
4441 | | |
4442 | | inline void advance_token(const token_advance_mode mode) |
4443 | 29.0k | { |
4444 | 29.0k | if (e_advance == mode) |
4445 | 11.6k | { |
4446 | 11.6k | next_token(); |
4447 | 11.6k | } |
4448 | 29.0k | } |
4449 | | |
4450 | | inline bool token_is(const token_t::token_type& ttype, const token_advance_mode mode = e_advance) |
4451 | 674k | { |
4452 | 674k | if (current_token().type != ttype) |
4453 | 645k | { |
4454 | 645k | return false; |
4455 | 645k | } |
4456 | | |
4457 | 29.0k | advance_token(mode); |
4458 | | |
4459 | 29.0k | return true; |
4460 | 674k | } |
4461 | | |
4462 | | inline bool token_is(const token_t::token_type& ttype, |
4463 | | const std::string& value, |
4464 | | const token_advance_mode mode = e_advance) |
4465 | 0 | { |
4466 | 0 | if ( |
4467 | 0 | (current_token().type != ttype) || |
4468 | 0 | !exprtk::details::imatch(value,current_token().value) |
4469 | 0 | ) |
4470 | 0 | { |
4471 | 0 | return false; |
4472 | 0 | } |
4473 | | |
4474 | 0 | advance_token(mode); |
4475 | |
|
4476 | 0 | return true; |
4477 | 0 | } |
4478 | | |
4479 | | inline bool token_is(const std::string& value, |
4480 | | const token_advance_mode mode = e_advance) |
4481 | 8 | { |
4482 | 8 | if (!exprtk::details::imatch(value,current_token().value)) |
4483 | 4 | { |
4484 | 4 | return false; |
4485 | 4 | } |
4486 | | |
4487 | 4 | advance_token(mode); |
4488 | | |
4489 | 4 | return true; |
4490 | 8 | } |
4491 | | |
4492 | | inline bool token_is_arithmetic_opr(const token_advance_mode mode = e_advance) |
4493 | 0 | { |
4494 | 0 | switch (current_token().type) |
4495 | 0 | { |
4496 | 0 | case token_t::e_add : |
4497 | 0 | case token_t::e_sub : |
4498 | 0 | case token_t::e_div : |
4499 | 0 | case token_t::e_mul : |
4500 | 0 | case token_t::e_mod : |
4501 | 0 | case token_t::e_pow : break; |
4502 | 0 | default : return false; |
4503 | 0 | } |
4504 | | |
4505 | 0 | advance_token(mode); |
4506 | |
|
4507 | 0 | return true; |
4508 | 0 | } |
4509 | | |
4510 | | inline bool token_is_ineq_opr(const token_advance_mode mode = e_advance) |
4511 | 0 | { |
4512 | 0 | switch (current_token().type) |
4513 | 0 | { |
4514 | 0 | case token_t::e_eq : |
4515 | 0 | case token_t::e_lte : |
4516 | 0 | case token_t::e_ne : |
4517 | 0 | case token_t::e_gte : |
4518 | 0 | case token_t::e_lt : |
4519 | 0 | case token_t::e_gt : break; |
4520 | 0 | default : return false; |
4521 | 0 | } |
4522 | | |
4523 | 0 | advance_token(mode); |
4524 | |
|
4525 | 0 | return true; |
4526 | 0 | } |
4527 | | |
4528 | | inline bool token_is_left_bracket(const token_advance_mode mode = e_advance) |
4529 | 0 | { |
4530 | 0 | switch (current_token().type) |
4531 | 0 | { |
4532 | 0 | case token_t::e_lbracket : |
4533 | 0 | case token_t::e_lcrlbracket : |
4534 | 0 | case token_t::e_lsqrbracket : break; |
4535 | 0 | default : return false; |
4536 | 0 | } |
4537 | 0 |
|
4538 | 0 | advance_token(mode); |
4539 | 0 |
|
4540 | 0 | return true; |
4541 | 0 | } |
4542 | | |
4543 | | inline bool token_is_right_bracket(const token_advance_mode mode = e_advance) |
4544 | 0 | { |
4545 | 0 | switch (current_token().type) |
4546 | 0 | { |
4547 | 0 | case token_t::e_rbracket : |
4548 | 0 | case token_t::e_rcrlbracket : |
4549 | 0 | case token_t::e_rsqrbracket : break; |
4550 | 0 | default : return false; |
4551 | 0 | } |
4552 | | |
4553 | 0 | advance_token(mode); |
4554 | |
|
4555 | 0 | return true; |
4556 | 0 | } |
4557 | | |
4558 | | inline bool token_is_bracket(const token_advance_mode mode = e_advance) |
4559 | 0 | { |
4560 | 0 | switch (current_token().type) |
4561 | 0 | { |
4562 | 0 | case token_t::e_rbracket : |
4563 | 0 | case token_t::e_rcrlbracket : |
4564 | 0 | case token_t::e_rsqrbracket : |
4565 | 0 | case token_t::e_lbracket : |
4566 | 0 | case token_t::e_lcrlbracket : |
4567 | 0 | case token_t::e_lsqrbracket : break; |
4568 | 0 | default : return false; |
4569 | 0 | } |
4570 | | |
4571 | 0 | advance_token(mode); |
4572 | |
|
4573 | 0 | return true; |
4574 | 0 | } |
4575 | | |
4576 | | inline bool token_is_loop(const token_advance_mode mode = e_advance) |
4577 | 0 | { |
4578 | 0 | return token_is("for" , mode) || |
4579 | 0 | token_is("while" , mode) || |
4580 | 0 | token_is("repeat", mode) ; |
4581 | 0 | } |
4582 | | |
4583 | | inline bool peek_token_is(const token_t::token_type& ttype) |
4584 | 476k | { |
4585 | 476k | return (lexer_.peek_next_token().type == ttype); |
4586 | 476k | } |
4587 | | |
4588 | | inline bool peek_token_is(const std::string& s) |
4589 | 0 | { |
4590 | 0 | return (exprtk::details::imatch(lexer_.peek_next_token().value,s)); |
4591 | 0 | } |
4592 | | |
4593 | | private: |
4594 | | |
4595 | | generator_t lexer_; |
4596 | | token_t current_token_; |
4597 | | token_t store_current_token_; |
4598 | | }; |
4599 | | } |
4600 | | |
4601 | | template <typename T> |
4602 | | class vector_view |
4603 | | { |
4604 | | public: |
4605 | | |
4606 | | typedef T* data_ptr_t; |
4607 | | |
4608 | | vector_view(data_ptr_t data, const std::size_t& size) |
4609 | | : base_size_(size) |
4610 | | , size_(size) |
4611 | | , data_(data) |
4612 | | , data_ref_(0) |
4613 | | { |
4614 | | assert(size_ > 0); |
4615 | | } |
4616 | | |
4617 | | vector_view(const vector_view<T>& vv) |
4618 | | : base_size_(vv.base_size_) |
4619 | | , size_(vv.size_) |
4620 | | , data_(vv.data_) |
4621 | | , data_ref_(0) |
4622 | | { |
4623 | | assert(size_ > 0); |
4624 | | } |
4625 | | |
4626 | | inline void rebase(data_ptr_t data) |
4627 | | { |
4628 | | data_ = data; |
4629 | | |
4630 | | if (!data_ref_.empty()) |
4631 | | { |
4632 | | for (std::size_t i = 0; i < data_ref_.size(); ++i) |
4633 | | { |
4634 | | (*data_ref_[i]) = data; |
4635 | | } |
4636 | | } |
4637 | | } |
4638 | | |
4639 | | inline data_ptr_t data() const |
4640 | | { |
4641 | | return data_; |
4642 | | } |
4643 | | |
4644 | | inline std::size_t base_size() const |
4645 | 0 | { |
4646 | 0 | return base_size_; |
4647 | 0 | } Unexecuted instantiation: exprtk::vector_view<double>::base_size() const Unexecuted instantiation: exprtk::vector_view<float>::base_size() const |
4648 | | |
4649 | | inline std::size_t size() const |
4650 | 0 | { |
4651 | 0 | return size_; |
4652 | 0 | } Unexecuted instantiation: exprtk::vector_view<double>::size() const Unexecuted instantiation: exprtk::vector_view<float>::size() const |
4653 | | |
4654 | | inline const T& operator[](const std::size_t index) const |
4655 | | { |
4656 | | assert(index < size_); |
4657 | | return data_[index]; |
4658 | | } |
4659 | | |
4660 | | inline T& operator[](const std::size_t index) |
4661 | | { |
4662 | | assert(index < size_); |
4663 | | return data_[index]; |
4664 | | } |
4665 | | |
4666 | | void set_ref(data_ptr_t* data_ref) |
4667 | 0 | { |
4668 | 0 | data_ref_.push_back(data_ref); |
4669 | 0 | exprtk_debug(("vector_view::set_ref() - data_ref: %p data_ref_.size(): %d\n", |
4670 | 0 | reinterpret_cast<void*>(data_ref), |
4671 | 0 | static_cast<int>(data_ref_.size()))); |
4672 | 0 | } Unexecuted instantiation: exprtk::vector_view<double>::set_ref(double**) Unexecuted instantiation: exprtk::vector_view<float>::set_ref(float**) |
4673 | | |
4674 | | void remove_ref(data_ptr_t* data_ref) |
4675 | 0 | { |
4676 | 0 | data_ref_.erase( |
4677 | 0 | std::remove(data_ref_.begin(), data_ref_.end(), data_ref), |
4678 | 0 | data_ref_.end()); |
4679 | 0 | exprtk_debug(("vector_view::remove_ref() - data_ref: %p data_ref_.size(): %d\n", |
4680 | 0 | reinterpret_cast<void*>(data_ref), |
4681 | 0 | static_cast<int>(data_ref_.size()))); |
4682 | 0 | } Unexecuted instantiation: exprtk::vector_view<double>::remove_ref(double**) Unexecuted instantiation: exprtk::vector_view<float>::remove_ref(float**) |
4683 | | |
4684 | | bool set_size(const std::size_t new_size) |
4685 | | { |
4686 | | if ((new_size > 0) && (new_size <= base_size_)) |
4687 | | { |
4688 | | size_ = new_size; |
4689 | | exprtk_debug(("vector_view::set_size() - data_: %p size: %lu\n", |
4690 | | reinterpret_cast<void*>(data_), |
4691 | | size_)); |
4692 | | return true; |
4693 | | } |
4694 | | |
4695 | | exprtk_debug(("vector_view::set_size() - error invalid new_size: %lu base_size: %lu\n", |
4696 | | new_size, |
4697 | | base_size_)); |
4698 | | return false; |
4699 | | } |
4700 | | |
4701 | | private: |
4702 | | |
4703 | | const std::size_t base_size_; |
4704 | | std::size_t size_; |
4705 | | data_ptr_t data_; |
4706 | | std::vector<data_ptr_t*> data_ref_; |
4707 | | }; |
4708 | | |
4709 | | template <typename T> |
4710 | | inline vector_view<T> make_vector_view(T* data, |
4711 | | const std::size_t size, const std::size_t offset = 0) |
4712 | | { |
4713 | | return vector_view<T>(data + offset, size); |
4714 | | } |
4715 | | |
4716 | | template <typename T> |
4717 | | inline vector_view<T> make_vector_view(std::vector<T>& v, |
4718 | | const std::size_t size, const std::size_t offset = 0) |
4719 | | { |
4720 | | return vector_view<T>(v.data() + offset, size); |
4721 | | } |
4722 | | |
4723 | | template <typename T> class results_context; |
4724 | | |
4725 | | template <typename T> |
4726 | | struct type_store |
4727 | | { |
4728 | | enum store_type |
4729 | | { |
4730 | | e_unknown, |
4731 | | e_scalar , |
4732 | | e_vector , |
4733 | | e_string |
4734 | | }; |
4735 | | |
4736 | | type_store() |
4737 | 0 | : data(0) |
4738 | 0 | , size(0) |
4739 | 0 | , type(e_unknown) |
4740 | 0 | {} Unexecuted instantiation: exprtk::type_store<double>::type_store() Unexecuted instantiation: exprtk::type_store<float>::type_store() |
4741 | | |
4742 | | union |
4743 | | { |
4744 | | void* data; |
4745 | | T* vec_data; |
4746 | | }; |
4747 | | |
4748 | | std::size_t size; |
4749 | | store_type type; |
4750 | | |
4751 | | class parameter_list |
4752 | | { |
4753 | | public: |
4754 | | |
4755 | | explicit parameter_list(std::vector<type_store>& pl) |
4756 | 0 | : parameter_list_(pl) |
4757 | 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> > >&) |
4758 | | |
4759 | | inline bool empty() const |
4760 | | { |
4761 | | return parameter_list_.empty(); |
4762 | | } |
4763 | | |
4764 | | inline std::size_t size() const |
4765 | | { |
4766 | | return parameter_list_.size(); |
4767 | | } |
4768 | | |
4769 | | inline type_store& operator[](const std::size_t& index) |
4770 | | { |
4771 | | return parameter_list_[index]; |
4772 | | } |
4773 | | |
4774 | | inline const type_store& operator[](const std::size_t& index) const |
4775 | | { |
4776 | | return parameter_list_[index]; |
4777 | | } |
4778 | | |
4779 | | inline type_store& front() |
4780 | | { |
4781 | | return parameter_list_[0]; |
4782 | | } |
4783 | | |
4784 | | inline const type_store& front() const |
4785 | | { |
4786 | | return parameter_list_[0]; |
4787 | | } |
4788 | | |
4789 | | inline type_store& back() |
4790 | | { |
4791 | | return parameter_list_.back(); |
4792 | | } |
4793 | | |
4794 | | inline const type_store& back() const |
4795 | | { |
4796 | | return parameter_list_.back(); |
4797 | | } |
4798 | | |
4799 | | private: |
4800 | | |
4801 | | std::vector<type_store>& parameter_list_; |
4802 | | |
4803 | | friend class results_context<T>; |
4804 | | }; |
4805 | | |
4806 | | template <typename ViewType> |
4807 | | struct type_view |
4808 | | { |
4809 | | typedef type_store<T> type_store_t; |
4810 | | typedef ViewType value_t; |
4811 | | |
4812 | | explicit type_view(type_store_t& ts) |
4813 | | : ts_(ts) |
4814 | | , data_(reinterpret_cast<value_t*>(ts_.data)) |
4815 | | {} |
4816 | | |
4817 | | explicit type_view(const type_store_t& ts) |
4818 | | : ts_(const_cast<type_store_t&>(ts)) |
4819 | | , data_(reinterpret_cast<value_t*>(ts_.data)) |
4820 | | {} |
4821 | | |
4822 | | inline std::size_t size() const |
4823 | | { |
4824 | | return ts_.size; |
4825 | | } |
4826 | | |
4827 | | inline value_t& operator[](const std::size_t& i) |
4828 | | { |
4829 | | return data_[i]; |
4830 | | } |
4831 | | |
4832 | | inline const value_t& operator[](const std::size_t& i) const |
4833 | | { |
4834 | | return data_[i]; |
4835 | | } |
4836 | | |
4837 | | inline const value_t* begin() const { return data_; } |
4838 | | inline value_t* begin() { return data_; } |
4839 | | |
4840 | | inline const value_t* end() const |
4841 | | { |
4842 | | return static_cast<value_t*>(data_ + ts_.size); |
4843 | | } |
4844 | | |
4845 | | inline value_t* end() |
4846 | | { |
4847 | | return static_cast<value_t*>(data_ + ts_.size); |
4848 | | } |
4849 | | |
4850 | | type_store_t& ts_; |
4851 | | value_t* data_; |
4852 | | }; |
4853 | | |
4854 | | typedef type_view<T> vector_view; |
4855 | | typedef type_view<char> string_view; |
4856 | | |
4857 | | struct scalar_view |
4858 | | { |
4859 | | typedef type_store<T> type_store_t; |
4860 | | typedef T value_t; |
4861 | | |
4862 | | explicit scalar_view(type_store_t& ts) |
4863 | | : v_(*reinterpret_cast<value_t*>(ts.data)) |
4864 | | {} |
4865 | | |
4866 | | explicit scalar_view(const type_store_t& ts) |
4867 | | : v_(*reinterpret_cast<value_t*>(const_cast<type_store_t&>(ts).data)) |
4868 | | {} |
4869 | | |
4870 | | inline value_t& operator() () |
4871 | | { |
4872 | | return v_; |
4873 | | } |
4874 | | |
4875 | | inline const value_t& operator() () const |
4876 | | { |
4877 | | return v_; |
4878 | | } |
4879 | | |
4880 | | inline operator value_t() const |
4881 | | { |
4882 | | return v_; |
4883 | | } |
4884 | | |
4885 | | inline operator value_t() |
4886 | | { |
4887 | | return v_; |
4888 | | } |
4889 | | |
4890 | | template <typename IntType> |
4891 | | inline bool to_int(IntType& i) const |
4892 | | { |
4893 | | if (!exprtk::details::numeric::is_integer(v_)) |
4894 | | return false; |
4895 | | |
4896 | | i = static_cast<IntType>(v_); |
4897 | | |
4898 | | return true; |
4899 | | } |
4900 | | |
4901 | | template <typename UIntType> |
4902 | | inline bool to_uint(UIntType& u) const |
4903 | | { |
4904 | | if (v_ < T(0)) |
4905 | | return false; |
4906 | | else if (!exprtk::details::numeric::is_integer(v_)) |
4907 | | return false; |
4908 | | |
4909 | | u = static_cast<UIntType>(v_); |
4910 | | |
4911 | | return true; |
4912 | | } |
4913 | | |
4914 | | T& v_; |
4915 | | }; |
4916 | | }; |
4917 | | |
4918 | | template <typename StringView> |
4919 | | inline std::string to_str(const StringView& view) |
4920 | | { |
4921 | | return std::string(view.begin(),view.size()); |
4922 | | } |
4923 | | |
4924 | | #ifndef exprtk_disable_return_statement |
4925 | | namespace details |
4926 | | { |
4927 | | template <typename T> class return_node; |
4928 | | template <typename T> class return_envelope_node; |
4929 | | } |
4930 | | #endif |
4931 | | |
4932 | | template <typename T> |
4933 | | class results_context |
4934 | | { |
4935 | | public: |
4936 | | |
4937 | | typedef type_store<T> type_store_t; |
4938 | | typedef typename type_store_t::scalar_view scalar_t; |
4939 | | typedef typename type_store_t::vector_view vector_t; |
4940 | | typedef typename type_store_t::string_view string_t; |
4941 | | |
4942 | | results_context() |
4943 | 0 | : results_available_(false) |
4944 | 0 | {} Unexecuted instantiation: exprtk::results_context<double>::results_context() Unexecuted instantiation: exprtk::results_context<float>::results_context() |
4945 | | |
4946 | | inline std::size_t count() const |
4947 | | { |
4948 | | if (results_available_) |
4949 | | return parameter_list_.size(); |
4950 | | else |
4951 | | return 0; |
4952 | | } |
4953 | | |
4954 | | inline type_store_t& operator[](const std::size_t& index) |
4955 | | { |
4956 | | return parameter_list_[index]; |
4957 | | } |
4958 | | |
4959 | | inline const type_store_t& operator[](const std::size_t& index) const |
4960 | | { |
4961 | | return parameter_list_[index]; |
4962 | | } |
4963 | | |
4964 | | inline bool get_scalar(const std::size_t& index, T& out) const |
4965 | | { |
4966 | | if ( |
4967 | | (index < parameter_list_.size()) && |
4968 | | (parameter_list_[index].type == type_store_t::e_scalar) |
4969 | | ) |
4970 | | { |
4971 | | const scalar_t scalar(parameter_list_[index]); |
4972 | | out = scalar(); |
4973 | | return true; |
4974 | | } |
4975 | | |
4976 | | return false; |
4977 | | } |
4978 | | |
4979 | | template <typename OutputIterator> |
4980 | | inline bool get_vector(const std::size_t& index, OutputIterator out_itr) const |
4981 | | { |
4982 | | if ( |
4983 | | (index < parameter_list_.size()) && |
4984 | | (parameter_list_[index].type == type_store_t::e_vector) |
4985 | | ) |
4986 | | { |
4987 | | const vector_t vector(parameter_list_[index]); |
4988 | | for (std::size_t i = 0; i < vector.size(); ++i) |
4989 | | { |
4990 | | *(out_itr++) = vector[i]; |
4991 | | } |
4992 | | |
4993 | | return true; |
4994 | | } |
4995 | | |
4996 | | return false; |
4997 | | } |
4998 | | |
4999 | | inline bool get_vector(const std::size_t& index, std::vector<T>& out) const |
5000 | | { |
5001 | | return get_vector(index,std::back_inserter(out)); |
5002 | | } |
5003 | | |
5004 | | inline bool get_string(const std::size_t& index, std::string& out) const |
5005 | | { |
5006 | | if ( |
5007 | | (index < parameter_list_.size()) && |
5008 | | (parameter_list_[index].type == type_store_t::e_string) |
5009 | | ) |
5010 | | { |
5011 | | const string_t str(parameter_list_[index]); |
5012 | | out.assign(str.begin(),str.size()); |
5013 | | return true; |
5014 | | } |
5015 | | |
5016 | | return false; |
5017 | | } |
5018 | | |
5019 | | private: |
5020 | | |
5021 | | inline void clear() |
5022 | 0 | { |
5023 | 0 | results_available_ = false; |
5024 | 0 | } Unexecuted instantiation: exprtk::results_context<double>::clear() Unexecuted instantiation: exprtk::results_context<float>::clear() |
5025 | | |
5026 | | typedef std::vector<type_store_t> ts_list_t; |
5027 | | typedef typename type_store_t::parameter_list parameter_list_t; |
5028 | | |
5029 | | inline void assign(const parameter_list_t& pl) |
5030 | 0 | { |
5031 | 0 | parameter_list_ = pl.parameter_list_; |
5032 | 0 | results_available_ = true; |
5033 | 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&) |
5034 | | |
5035 | | bool results_available_; |
5036 | | ts_list_t parameter_list_; |
5037 | | |
5038 | | #ifndef exprtk_disable_return_statement |
5039 | | friend class details::return_node<T>; |
5040 | | friend class details::return_envelope_node<T>; |
5041 | | #endif |
5042 | | }; |
5043 | | |
5044 | | namespace details |
5045 | | { |
5046 | | enum operator_type |
5047 | | { |
5048 | | e_default , e_null , e_add , e_sub , |
5049 | | e_mul , e_div , e_mod , e_pow , |
5050 | | e_atan2 , e_min , e_max , e_avg , |
5051 | | e_sum , e_prod , e_lt , e_lte , |
5052 | | e_eq , e_equal , e_ne , e_nequal , |
5053 | | e_gte , e_gt , e_and , e_nand , |
5054 | | e_or , e_nor , e_xor , e_xnor , |
5055 | | e_mand , e_mor , e_scand , e_scor , |
5056 | | e_shr , e_shl , e_abs , e_acos , |
5057 | | e_acosh , e_asin , e_asinh , e_atan , |
5058 | | e_atanh , e_ceil , e_cos , e_cosh , |
5059 | | e_exp , e_expm1 , e_floor , e_log , |
5060 | | e_log10 , e_log2 , e_log1p , e_logn , |
5061 | | e_neg , e_pos , e_round , e_roundn , |
5062 | | e_root , e_sqrt , e_sin , e_sinc , |
5063 | | e_sinh , e_sec , e_csc , e_tan , |
5064 | | e_tanh , e_cot , e_clamp , e_iclamp , |
5065 | | e_inrange , e_sgn , e_r2d , e_d2r , |
5066 | | e_d2g , e_g2d , e_hypot , e_notl , |
5067 | | e_erf , e_erfc , e_ncdf , e_frac , |
5068 | | e_trunc , e_assign , e_addass , e_subass , |
5069 | | e_mulass , e_divass , e_modass , e_in , |
5070 | | e_like , e_ilike , e_multi , e_smulti , |
5071 | | e_swap , |
5072 | | |
5073 | | // Do not add new functions/operators after this point. |
5074 | | e_sf00 = 1000, e_sf01 = 1001, e_sf02 = 1002, e_sf03 = 1003, |
5075 | | e_sf04 = 1004, e_sf05 = 1005, e_sf06 = 1006, e_sf07 = 1007, |
5076 | | e_sf08 = 1008, e_sf09 = 1009, e_sf10 = 1010, e_sf11 = 1011, |
5077 | | e_sf12 = 1012, e_sf13 = 1013, e_sf14 = 1014, e_sf15 = 1015, |
5078 | | e_sf16 = 1016, e_sf17 = 1017, e_sf18 = 1018, e_sf19 = 1019, |
5079 | | e_sf20 = 1020, e_sf21 = 1021, e_sf22 = 1022, e_sf23 = 1023, |
5080 | | e_sf24 = 1024, e_sf25 = 1025, e_sf26 = 1026, e_sf27 = 1027, |
5081 | | e_sf28 = 1028, e_sf29 = 1029, e_sf30 = 1030, e_sf31 = 1031, |
5082 | | e_sf32 = 1032, e_sf33 = 1033, e_sf34 = 1034, e_sf35 = 1035, |
5083 | | e_sf36 = 1036, e_sf37 = 1037, e_sf38 = 1038, e_sf39 = 1039, |
5084 | | e_sf40 = 1040, e_sf41 = 1041, e_sf42 = 1042, e_sf43 = 1043, |
5085 | | e_sf44 = 1044, e_sf45 = 1045, e_sf46 = 1046, e_sf47 = 1047, |
5086 | | e_sf48 = 1048, e_sf49 = 1049, e_sf50 = 1050, e_sf51 = 1051, |
5087 | | e_sf52 = 1052, e_sf53 = 1053, e_sf54 = 1054, e_sf55 = 1055, |
5088 | | e_sf56 = 1056, e_sf57 = 1057, e_sf58 = 1058, e_sf59 = 1059, |
5089 | | e_sf60 = 1060, e_sf61 = 1061, e_sf62 = 1062, e_sf63 = 1063, |
5090 | | e_sf64 = 1064, e_sf65 = 1065, e_sf66 = 1066, e_sf67 = 1067, |
5091 | | e_sf68 = 1068, e_sf69 = 1069, e_sf70 = 1070, e_sf71 = 1071, |
5092 | | e_sf72 = 1072, e_sf73 = 1073, e_sf74 = 1074, e_sf75 = 1075, |
5093 | | e_sf76 = 1076, e_sf77 = 1077, e_sf78 = 1078, e_sf79 = 1079, |
5094 | | e_sf80 = 1080, e_sf81 = 1081, e_sf82 = 1082, e_sf83 = 1083, |
5095 | | e_sf84 = 1084, e_sf85 = 1085, e_sf86 = 1086, e_sf87 = 1087, |
5096 | | e_sf88 = 1088, e_sf89 = 1089, e_sf90 = 1090, e_sf91 = 1091, |
5097 | | e_sf92 = 1092, e_sf93 = 1093, e_sf94 = 1094, e_sf95 = 1095, |
5098 | | e_sf96 = 1096, e_sf97 = 1097, e_sf98 = 1098, e_sf99 = 1099, |
5099 | | e_sffinal = 1100, |
5100 | | e_sf4ext00 = 2000, e_sf4ext01 = 2001, e_sf4ext02 = 2002, e_sf4ext03 = 2003, |
5101 | | e_sf4ext04 = 2004, e_sf4ext05 = 2005, e_sf4ext06 = 2006, e_sf4ext07 = 2007, |
5102 | | e_sf4ext08 = 2008, e_sf4ext09 = 2009, e_sf4ext10 = 2010, e_sf4ext11 = 2011, |
5103 | | e_sf4ext12 = 2012, e_sf4ext13 = 2013, e_sf4ext14 = 2014, e_sf4ext15 = 2015, |
5104 | | e_sf4ext16 = 2016, e_sf4ext17 = 2017, e_sf4ext18 = 2018, e_sf4ext19 = 2019, |
5105 | | e_sf4ext20 = 2020, e_sf4ext21 = 2021, e_sf4ext22 = 2022, e_sf4ext23 = 2023, |
5106 | | e_sf4ext24 = 2024, e_sf4ext25 = 2025, e_sf4ext26 = 2026, e_sf4ext27 = 2027, |
5107 | | e_sf4ext28 = 2028, e_sf4ext29 = 2029, e_sf4ext30 = 2030, e_sf4ext31 = 2031, |
5108 | | e_sf4ext32 = 2032, e_sf4ext33 = 2033, e_sf4ext34 = 2034, e_sf4ext35 = 2035, |
5109 | | e_sf4ext36 = 2036, e_sf4ext37 = 2037, e_sf4ext38 = 2038, e_sf4ext39 = 2039, |
5110 | | e_sf4ext40 = 2040, e_sf4ext41 = 2041, e_sf4ext42 = 2042, e_sf4ext43 = 2043, |
5111 | | e_sf4ext44 = 2044, e_sf4ext45 = 2045, e_sf4ext46 = 2046, e_sf4ext47 = 2047, |
5112 | | e_sf4ext48 = 2048, e_sf4ext49 = 2049, e_sf4ext50 = 2050, e_sf4ext51 = 2051, |
5113 | | e_sf4ext52 = 2052, e_sf4ext53 = 2053, e_sf4ext54 = 2054, e_sf4ext55 = 2055, |
5114 | | e_sf4ext56 = 2056, e_sf4ext57 = 2057, e_sf4ext58 = 2058, e_sf4ext59 = 2059, |
5115 | | e_sf4ext60 = 2060, e_sf4ext61 = 2061 |
5116 | | }; |
5117 | | |
5118 | | inline std::string to_str(const operator_type opr) |
5119 | 110 | { |
5120 | 110 | switch (opr) |
5121 | 110 | { |
5122 | 2 | case e_add : return "+" ; |
5123 | 2 | case e_sub : return "-" ; |
5124 | 4 | case e_mul : return "*" ; |
5125 | 4 | case e_div : return "/" ; |
5126 | 4 | case e_mod : return "%" ; |
5127 | 2 | case e_pow : return "^" ; |
5128 | 10 | case e_assign : return ":=" ; |
5129 | 14 | case e_addass : return "+=" ; |
5130 | 22 | case e_subass : return "-=" ; |
5131 | 2 | case e_mulass : return "*=" ; |
5132 | 12 | case e_divass : return "/=" ; |
5133 | 18 | case e_modass : return "%=" ; |
5134 | 6 | case e_lt : return "<" ; |
5135 | 0 | case e_lte : return "<=" ; |
5136 | 4 | case e_eq : return "==" ; |
5137 | 0 | case e_equal : return "=" ; |
5138 | 0 | case e_ne : return "!=" ; |
5139 | 0 | case e_nequal : return "<>" ; |
5140 | 0 | case e_gte : return ">=" ; |
5141 | 2 | case e_gt : return ">" ; |
5142 | 0 | case e_and : return "and" ; |
5143 | 0 | case e_or : return "or" ; |
5144 | 0 | case e_xor : return "xor" ; |
5145 | 0 | case e_nand : return "nand"; |
5146 | 0 | case e_nor : return "nor" ; |
5147 | 0 | case e_xnor : return "xnor"; |
5148 | 2 | default : return "N/A" ; |
5149 | 110 | } |
5150 | 110 | } |
5151 | | |
5152 | | struct base_operation_t |
5153 | | { |
5154 | | base_operation_t(const operator_type t, const unsigned int& np) |
5155 | 667k | : type(t) |
5156 | 667k | , num_params(np) |
5157 | 667k | {} |
5158 | | |
5159 | | operator_type type; |
5160 | | unsigned int num_params; |
5161 | | }; |
5162 | | |
5163 | | namespace loop_unroll |
5164 | | { |
5165 | | const unsigned int global_loop_batch_size = |
5166 | | #ifndef exprtk_disable_superscalar_unroll |
5167 | | 16; |
5168 | | #else |
5169 | | 4; |
5170 | | #endif |
5171 | | |
5172 | | struct details |
5173 | | { |
5174 | | explicit details(const std::size_t& vsize, |
5175 | | const unsigned int loop_batch_size = global_loop_batch_size) |
5176 | 10 | : batch_size(loop_batch_size ) |
5177 | 10 | , remainder (vsize % batch_size) |
5178 | 10 | , upper_bound(static_cast<int>(vsize - (remainder ? loop_batch_size : 0))) |
5179 | 10 | {} |
5180 | | |
5181 | | unsigned int batch_size; |
5182 | | int remainder; |
5183 | | int upper_bound; |
5184 | | }; |
5185 | | } |
5186 | | |
5187 | | #ifdef exprtk_enable_debugging |
5188 | | inline void dump_ptr(const std::string& s, const void* ptr, const std::size_t size = 0) |
5189 | | { |
5190 | | if (size) |
5191 | | exprtk_debug(("%s - addr: %p size: %d\n", |
5192 | | s.c_str(), |
5193 | | ptr, |
5194 | | static_cast<unsigned int>(size))); |
5195 | | else |
5196 | | exprtk_debug(("%s - addr: %p\n", s.c_str(), ptr)); |
5197 | | } |
5198 | | |
5199 | | template <typename T> |
5200 | | inline void dump_vector(const std::string& vec_name, const T* data, const std::size_t size) |
5201 | | { |
5202 | | printf("----- %s (%p) -----\n", |
5203 | | vec_name.c_str(), |
5204 | | static_cast<const void*>(data)); |
5205 | | printf("[ "); |
5206 | | for (std::size_t i = 0; i < size; ++i) |
5207 | | { |
5208 | | printf("%8.3f\t", data[i]); |
5209 | | } |
5210 | | printf(" ]\n"); |
5211 | | printf("---------------------\n"); |
5212 | | } |
5213 | | #else |
5214 | 35.5k | inline void dump_ptr(const std::string&, const void*) {} |
5215 | 0 | inline void dump_ptr(const std::string&, const void*, const std::size_t) {} |
5216 | | template <typename T> |
5217 | | inline void dump_vector(const std::string&, const T*, const std::size_t) {} |
5218 | | #endif |
5219 | | |
5220 | | template <typename T> |
5221 | | class vec_data_store |
5222 | | { |
5223 | | public: |
5224 | | |
5225 | | typedef vec_data_store<T> type; |
5226 | | typedef T* data_t; |
5227 | | |
5228 | | private: |
5229 | | |
5230 | | struct control_block |
5231 | | { |
5232 | | control_block() |
5233 | 0 | : ref_count(1) |
5234 | 0 | , size (0) |
5235 | 0 | , data (0) |
5236 | 0 | , destruct (true) |
5237 | 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() |
5238 | | |
5239 | | explicit control_block(const std::size_t& dsize) |
5240 | 0 | : ref_count(1 ) |
5241 | 0 | , size (dsize) |
5242 | 0 | , data (0 ) |
5243 | 0 | , destruct (true ) |
5244 | 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&) |
5245 | | |
5246 | | control_block(const std::size_t& dsize, data_t dptr, bool dstrct = false) |
5247 | 0 | : ref_count(1 ) |
5248 | 0 | , size (dsize ) |
5249 | 0 | , data (dptr ) |
5250 | 0 | , destruct (dstrct) |
5251 | 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) |
5252 | | |
5253 | | ~control_block() |
5254 | 0 | { |
5255 | 0 | if (data && destruct && (0 == ref_count)) |
5256 | 0 | { |
5257 | 0 | dump_ptr("~vec_data_store::control_block() data",data); |
5258 | 0 | delete[] data; |
5259 | 0 | data = reinterpret_cast<data_t>(0); |
5260 | 0 | } |
5261 | 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() |
5262 | | |
5263 | | static inline control_block* create(const std::size_t& dsize, data_t data_ptr = data_t(0), bool dstrct = false) |
5264 | 0 | { |
5265 | 0 | if (dsize) |
5266 | 0 | { |
5267 | 0 | if (0 == data_ptr) |
5268 | 0 | return (new control_block(dsize)); |
5269 | 0 | else |
5270 | 0 | return (new control_block(dsize, data_ptr, dstrct)); |
5271 | 0 | } |
5272 | 0 | else |
5273 | 0 | return (new control_block); |
5274 | 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) |
5275 | | |
5276 | | static inline void destroy(control_block*& cntrl_blck) |
5277 | 0 | { |
5278 | 0 | if (cntrl_blck) |
5279 | 0 | { |
5280 | 0 | if ( |
5281 | 0 | (0 != cntrl_blck->ref_count) && |
5282 | 0 | (0 == --cntrl_blck->ref_count) |
5283 | 0 | ) |
5284 | 0 | { |
5285 | 0 | delete cntrl_blck; |
5286 | 0 | } |
5287 | |
|
5288 | 0 | cntrl_blck = 0; |
5289 | 0 | } |
5290 | 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*&) |
5291 | | |
5292 | | std::size_t ref_count; |
5293 | | std::size_t size; |
5294 | | data_t data; |
5295 | | bool destruct; |
5296 | | |
5297 | | private: |
5298 | | |
5299 | | control_block(const control_block&) exprtk_delete; |
5300 | | control_block& operator=(const control_block&) exprtk_delete; |
5301 | | |
5302 | | inline void create_data() |
5303 | 0 | { |
5304 | 0 | destruct = true; |
5305 | 0 | data = new T[size]; |
5306 | 0 | std::fill_n(data, size, T(0)); |
5307 | 0 | dump_ptr("control_block::create_data() - data", data, size); |
5308 | 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() |
5309 | | }; |
5310 | | |
5311 | | public: |
5312 | | |
5313 | | vec_data_store() |
5314 | 0 | : control_block_(control_block::create(0)) |
5315 | 0 | {} Unexecuted instantiation: exprtk::details::vec_data_store<double>::vec_data_store() Unexecuted instantiation: exprtk::details::vec_data_store<float>::vec_data_store() |
5316 | | |
5317 | | explicit vec_data_store(const std::size_t& size) |
5318 | 0 | : control_block_(control_block::create(size,reinterpret_cast<data_t>(0),true)) |
5319 | 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&) |
5320 | | |
5321 | | vec_data_store(const std::size_t& size, data_t data, bool dstrct = false) |
5322 | 0 | : control_block_(control_block::create(size, data, dstrct)) |
5323 | 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) |
5324 | | |
5325 | | vec_data_store(const type& vds) |
5326 | 0 | { |
5327 | 0 | control_block_ = vds.control_block_; |
5328 | 0 | control_block_->ref_count++; |
5329 | 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&) |
5330 | | |
5331 | | ~vec_data_store() |
5332 | 0 | { |
5333 | 0 | control_block::destroy(control_block_); |
5334 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::~vec_data_store() Unexecuted instantiation: exprtk::details::vec_data_store<float>::~vec_data_store() |
5335 | | |
5336 | | type& operator=(const type& vds) |
5337 | 0 | { |
5338 | 0 | if (this != &vds) |
5339 | 0 | { |
5340 | 0 | const std::size_t final_size = min_size(control_block_, vds.control_block_); |
5341 | |
|
5342 | 0 | vds.control_block_->size = final_size; |
5343 | 0 | control_block_->size = final_size; |
5344 | |
|
5345 | 0 | if (control_block_->destruct || (0 == control_block_->data)) |
5346 | 0 | { |
5347 | 0 | control_block::destroy(control_block_); |
5348 | |
|
5349 | 0 | control_block_ = vds.control_block_; |
5350 | 0 | control_block_->ref_count++; |
5351 | 0 | } |
5352 | 0 | } |
5353 | |
|
5354 | 0 | return (*this); |
5355 | 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&) |
5356 | | |
5357 | | inline data_t data() |
5358 | 0 | { |
5359 | 0 | return control_block_->data; |
5360 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::data() Unexecuted instantiation: exprtk::details::vec_data_store<float>::data() |
5361 | | |
5362 | | inline data_t data() const |
5363 | 0 | { |
5364 | 0 | return control_block_->data; |
5365 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::data() const Unexecuted instantiation: exprtk::details::vec_data_store<float>::data() const |
5366 | | |
5367 | | inline std::size_t size() const |
5368 | 0 | { |
5369 | 0 | return control_block_->size; |
5370 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::size() const Unexecuted instantiation: exprtk::details::vec_data_store<float>::size() const |
5371 | | |
5372 | | inline data_t& ref() |
5373 | 0 | { |
5374 | 0 | return control_block_->data; |
5375 | 0 | } Unexecuted instantiation: exprtk::details::vec_data_store<double>::ref() Unexecuted instantiation: exprtk::details::vec_data_store<float>::ref() |
5376 | | |
5377 | | inline void dump() const |
5378 | | { |
5379 | | #ifdef exprtk_enable_debugging |
5380 | | exprtk_debug(("size: %d\taddress:%p\tdestruct:%c\n", |
5381 | | size(), |
5382 | | data(), |
5383 | | (control_block_->destruct ? 'T' : 'F'))); |
5384 | | |
5385 | | for (std::size_t i = 0; i < size(); ++i) |
5386 | | { |
5387 | | if (5 == i) |
5388 | | exprtk_debug(("\n")); |
5389 | | |
5390 | | exprtk_debug(("%15.10f ", data()[i])); |
5391 | | } |
5392 | | exprtk_debug(("\n")); |
5393 | | #endif |
5394 | | } |
5395 | | |
5396 | | static inline void match_sizes(type& vds0, type& vds1) |
5397 | 0 | { |
5398 | 0 | const std::size_t size = min_size(vds0.control_block_,vds1.control_block_); |
5399 | 0 | vds0.control_block_->size = size; |
5400 | 0 | vds1.control_block_->size = size; |
5401 | 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>&) |
5402 | | |
5403 | | private: |
5404 | | |
5405 | | static inline std::size_t min_size(const control_block* cb0, const control_block* cb1) |
5406 | 0 | { |
5407 | 0 | const std::size_t size0 = cb0->size; |
5408 | 0 | const std::size_t size1 = cb1->size; |
5409 | |
|
5410 | 0 | if (size0 && size1) |
5411 | 0 | return std::min(size0,size1); |
5412 | 0 | else |
5413 | 0 | return (size0) ? size0 : size1; |
5414 | 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*) |
5415 | | |
5416 | | control_block* control_block_; |
5417 | | }; |
5418 | | |
5419 | | namespace numeric |
5420 | | { |
5421 | | namespace details |
5422 | | { |
5423 | | template <typename T> |
5424 | | inline T process_impl(const operator_type operation, const T arg) |
5425 | 53.2k | { |
5426 | 53.2k | switch (operation) |
5427 | 53.2k | { |
5428 | 0 | case e_abs : return numeric::abs (arg); |
5429 | 2 | case e_acos : return numeric::acos (arg); |
5430 | 0 | case e_acosh : return numeric::acosh(arg); |
5431 | 0 | case e_asin : return numeric::asin (arg); |
5432 | 0 | case e_asinh : return numeric::asinh(arg); |
5433 | 0 | case e_atan : return numeric::atan (arg); |
5434 | 0 | case e_atanh : return numeric::atanh(arg); |
5435 | 0 | case e_ceil : return numeric::ceil (arg); |
5436 | 0 | case e_cos : return numeric::cos (arg); |
5437 | 0 | case e_cosh : return numeric::cosh (arg); |
5438 | 0 | case e_exp : return numeric::exp (arg); |
5439 | 0 | case e_expm1 : return numeric::expm1(arg); |
5440 | 0 | case e_floor : return numeric::floor(arg); |
5441 | 0 | case e_log : return numeric::log (arg); |
5442 | 0 | case e_log10 : return numeric::log10(arg); |
5443 | 0 | case e_log2 : return numeric::log2 (arg); |
5444 | 0 | case e_log1p : return numeric::log1p(arg); |
5445 | 53.2k | case e_neg : return numeric::neg (arg); |
5446 | 0 | case e_pos : return numeric::pos (arg); |
5447 | 0 | case e_round : return numeric::round(arg); |
5448 | 0 | case e_sin : return numeric::sin (arg); |
5449 | 0 | case e_sinc : return numeric::sinc (arg); |
5450 | 0 | case e_sinh : return numeric::sinh (arg); |
5451 | 0 | case e_sqrt : return numeric::sqrt (arg); |
5452 | 0 | case e_tan : return numeric::tan (arg); |
5453 | 0 | case e_tanh : return numeric::tanh (arg); |
5454 | 0 | case e_cot : return numeric::cot (arg); |
5455 | 0 | case e_sec : return numeric::sec (arg); |
5456 | 0 | case e_csc : return numeric::csc (arg); |
5457 | 0 | case e_r2d : return numeric::r2d (arg); |
5458 | 0 | case e_d2r : return numeric::d2r (arg); |
5459 | 0 | case e_d2g : return numeric::d2g (arg); |
5460 | 0 | case e_g2d : return numeric::g2d (arg); |
5461 | 0 | case e_notl : return numeric::notl (arg); |
5462 | 0 | case e_sgn : return numeric::sgn (arg); |
5463 | 0 | case e_erf : return numeric::erf (arg); |
5464 | 0 | case e_erfc : return numeric::erfc (arg); |
5465 | 0 | case e_ncdf : return numeric::ncdf (arg); |
5466 | 0 | case e_frac : return numeric::frac (arg); |
5467 | 0 | case e_trunc : return numeric::trunc(arg); |
5468 | | |
5469 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n")); |
5470 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
5471 | 53.2k | } |
5472 | 53.2k | } double exprtk::details::numeric::details::process_impl<double>(exprtk::details::operator_type, double) Line | Count | Source | 5425 | 30.8k | { | 5426 | 30.8k | switch (operation) | 5427 | 30.8k | { | 5428 | 0 | case e_abs : return numeric::abs (arg); | 5429 | 1 | case e_acos : return numeric::acos (arg); | 5430 | 0 | case e_acosh : return numeric::acosh(arg); | 5431 | 0 | case e_asin : return numeric::asin (arg); | 5432 | 0 | case e_asinh : return numeric::asinh(arg); | 5433 | 0 | case e_atan : return numeric::atan (arg); | 5434 | 0 | case e_atanh : return numeric::atanh(arg); | 5435 | 0 | case e_ceil : return numeric::ceil (arg); | 5436 | 0 | case e_cos : return numeric::cos (arg); | 5437 | 0 | case e_cosh : return numeric::cosh (arg); | 5438 | 0 | case e_exp : return numeric::exp (arg); | 5439 | 0 | case e_expm1 : return numeric::expm1(arg); | 5440 | 0 | case e_floor : return numeric::floor(arg); | 5441 | 0 | case e_log : return numeric::log (arg); | 5442 | 0 | case e_log10 : return numeric::log10(arg); | 5443 | 0 | case e_log2 : return numeric::log2 (arg); | 5444 | 0 | case e_log1p : return numeric::log1p(arg); | 5445 | 30.8k | case e_neg : return numeric::neg (arg); | 5446 | 0 | case e_pos : return numeric::pos (arg); | 5447 | 0 | case e_round : return numeric::round(arg); | 5448 | 0 | case e_sin : return numeric::sin (arg); | 5449 | 0 | case e_sinc : return numeric::sinc (arg); | 5450 | 0 | case e_sinh : return numeric::sinh (arg); | 5451 | 0 | case e_sqrt : return numeric::sqrt (arg); | 5452 | 0 | case e_tan : return numeric::tan (arg); | 5453 | 0 | case e_tanh : return numeric::tanh (arg); | 5454 | 0 | case e_cot : return numeric::cot (arg); | 5455 | 0 | case e_sec : return numeric::sec (arg); | 5456 | 0 | case e_csc : return numeric::csc (arg); | 5457 | 0 | case e_r2d : return numeric::r2d (arg); | 5458 | 0 | case e_d2r : return numeric::d2r (arg); | 5459 | 0 | case e_d2g : return numeric::d2g (arg); | 5460 | 0 | case e_g2d : return numeric::g2d (arg); | 5461 | 0 | case e_notl : return numeric::notl (arg); | 5462 | 0 | case e_sgn : return numeric::sgn (arg); | 5463 | 0 | case e_erf : return numeric::erf (arg); | 5464 | 0 | case e_erfc : return numeric::erfc (arg); | 5465 | 0 | case e_ncdf : return numeric::ncdf (arg); | 5466 | 0 | case e_frac : return numeric::frac (arg); | 5467 | 0 | case e_trunc : return numeric::trunc(arg); | 5468 | | | 5469 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n")); | 5470 | 0 | return std::numeric_limits<T>::quiet_NaN(); | 5471 | 30.8k | } | 5472 | 30.8k | } |
float exprtk::details::numeric::details::process_impl<float>(exprtk::details::operator_type, float) Line | Count | Source | 5425 | 22.4k | { | 5426 | 22.4k | switch (operation) | 5427 | 22.4k | { | 5428 | 0 | case e_abs : return numeric::abs (arg); | 5429 | 1 | case e_acos : return numeric::acos (arg); | 5430 | 0 | case e_acosh : return numeric::acosh(arg); | 5431 | 0 | case e_asin : return numeric::asin (arg); | 5432 | 0 | case e_asinh : return numeric::asinh(arg); | 5433 | 0 | case e_atan : return numeric::atan (arg); | 5434 | 0 | case e_atanh : return numeric::atanh(arg); | 5435 | 0 | case e_ceil : return numeric::ceil (arg); | 5436 | 0 | case e_cos : return numeric::cos (arg); | 5437 | 0 | case e_cosh : return numeric::cosh (arg); | 5438 | 0 | case e_exp : return numeric::exp (arg); | 5439 | 0 | case e_expm1 : return numeric::expm1(arg); | 5440 | 0 | case e_floor : return numeric::floor(arg); | 5441 | 0 | case e_log : return numeric::log (arg); | 5442 | 0 | case e_log10 : return numeric::log10(arg); | 5443 | 0 | case e_log2 : return numeric::log2 (arg); | 5444 | 0 | case e_log1p : return numeric::log1p(arg); | 5445 | 22.4k | case e_neg : return numeric::neg (arg); | 5446 | 0 | case e_pos : return numeric::pos (arg); | 5447 | 0 | case e_round : return numeric::round(arg); | 5448 | 0 | case e_sin : return numeric::sin (arg); | 5449 | 0 | case e_sinc : return numeric::sinc (arg); | 5450 | 0 | case e_sinh : return numeric::sinh (arg); | 5451 | 0 | case e_sqrt : return numeric::sqrt (arg); | 5452 | 0 | case e_tan : return numeric::tan (arg); | 5453 | 0 | case e_tanh : return numeric::tanh (arg); | 5454 | 0 | case e_cot : return numeric::cot (arg); | 5455 | 0 | case e_sec : return numeric::sec (arg); | 5456 | 0 | case e_csc : return numeric::csc (arg); | 5457 | 0 | case e_r2d : return numeric::r2d (arg); | 5458 | 0 | case e_d2r : return numeric::d2r (arg); | 5459 | 0 | case e_d2g : return numeric::d2g (arg); | 5460 | 0 | case e_g2d : return numeric::g2d (arg); | 5461 | 0 | case e_notl : return numeric::notl (arg); | 5462 | 0 | case e_sgn : return numeric::sgn (arg); | 5463 | 0 | case e_erf : return numeric::erf (arg); | 5464 | 0 | case e_erfc : return numeric::erfc (arg); | 5465 | 0 | case e_ncdf : return numeric::ncdf (arg); | 5466 | 0 | case e_frac : return numeric::frac (arg); | 5467 | 0 | case e_trunc : return numeric::trunc(arg); | 5468 | | | 5469 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n")); | 5470 | 0 | return std::numeric_limits<T>::quiet_NaN(); | 5471 | 22.4k | } | 5472 | 22.4k | } |
|
5473 | | |
5474 | | template <typename T> |
5475 | | inline T process_impl(const operator_type operation, const T arg0, const T arg1) |
5476 | 8.36k | { |
5477 | 8.36k | switch (operation) |
5478 | 8.36k | { |
5479 | 1.14k | case e_add : return (arg0 + arg1); |
5480 | 225 | case e_sub : return (arg0 - arg1); |
5481 | 191 | case e_mul : return (arg0 * arg1); |
5482 | 365 | case e_div : return (arg0 / arg1); |
5483 | 5.13k | case e_mod : return modulus<T>(arg0,arg1); |
5484 | 1.07k | case e_pow : return pow<T>(arg0,arg1); |
5485 | 0 | case e_atan2 : return atan2<T>(arg0,arg1); |
5486 | 0 | case e_min : return std::min<T>(arg0,arg1); |
5487 | 0 | case e_max : return std::max<T>(arg0,arg1); |
5488 | 0 | case e_logn : return logn<T>(arg0,arg1); |
5489 | 92 | case e_lt : return (arg0 < arg1) ? T(1) : T(0); |
5490 | 7 | case e_lte : return (arg0 <= arg1) ? T(1) : T(0); |
5491 | 36 | case e_eq : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0); |
5492 | 4 | case e_ne : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0); |
5493 | 9 | case e_gte : return (arg0 >= arg1) ? T(1) : T(0); |
5494 | 50 | case e_gt : return (arg0 > arg1) ? T(1) : T(0); |
5495 | 22 | case e_and : return and_opr <T>(arg0,arg1); |
5496 | 9 | case e_nand : return nand_opr<T>(arg0,arg1); |
5497 | 4 | case e_or : return or_opr <T>(arg0,arg1); |
5498 | 0 | case e_nor : return nor_opr <T>(arg0,arg1); |
5499 | 0 | case e_xor : return xor_opr <T>(arg0,arg1); |
5500 | 2 | case e_xnor : return xnor_opr<T>(arg0,arg1); |
5501 | 0 | case e_root : return root <T>(arg0,arg1); |
5502 | 0 | case e_roundn : return roundn <T>(arg0,arg1); |
5503 | 0 | case e_equal : return equal <T>(arg0,arg1); |
5504 | 0 | case e_nequal : return nequal <T>(arg0,arg1); |
5505 | 0 | case e_hypot : return hypot <T>(arg0,arg1); |
5506 | 0 | case e_shr : return shr <T>(arg0,arg1); |
5507 | 0 | case e_shl : return shl <T>(arg0,arg1); |
5508 | | |
5509 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n")); |
5510 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
5511 | 8.36k | } |
5512 | 8.36k | } double exprtk::details::numeric::details::process_impl<double>(exprtk::details::operator_type, double, double) Line | Count | Source | 5476 | 6.85k | { | 5477 | 6.85k | switch (operation) | 5478 | 6.85k | { | 5479 | 575 | case e_add : return (arg0 + arg1); | 5480 | 115 | case e_sub : return (arg0 - arg1); | 5481 | 120 | case e_mul : return (arg0 * arg1); | 5482 | 251 | case e_div : return (arg0 / arg1); | 5483 | 5.11k | case e_mod : return modulus<T>(arg0,arg1); | 5484 | 565 | case e_pow : return pow<T>(arg0,arg1); | 5485 | 0 | case e_atan2 : return atan2<T>(arg0,arg1); | 5486 | 0 | case e_min : return std::min<T>(arg0,arg1); | 5487 | 0 | case e_max : return std::max<T>(arg0,arg1); | 5488 | 0 | case e_logn : return logn<T>(arg0,arg1); | 5489 | 46 | case e_lt : return (arg0 < arg1) ? T(1) : T(0); | 5490 | 4 | case e_lte : return (arg0 <= arg1) ? T(1) : T(0); | 5491 | 18 | case e_eq : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0); | 5492 | 2 | case e_ne : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0); | 5493 | 6 | case e_gte : return (arg0 >= arg1) ? T(1) : T(0); | 5494 | 25 | case e_gt : return (arg0 > arg1) ? T(1) : T(0); | 5495 | 11 | case e_and : return and_opr <T>(arg0,arg1); | 5496 | 5 | case e_nand : return nand_opr<T>(arg0,arg1); | 5497 | 2 | case e_or : return or_opr <T>(arg0,arg1); | 5498 | 0 | case e_nor : return nor_opr <T>(arg0,arg1); | 5499 | 0 | case e_xor : return xor_opr <T>(arg0,arg1); | 5500 | 1 | case e_xnor : return xnor_opr<T>(arg0,arg1); | 5501 | 0 | case e_root : return root <T>(arg0,arg1); | 5502 | 0 | case e_roundn : return roundn <T>(arg0,arg1); | 5503 | 0 | case e_equal : return equal <T>(arg0,arg1); | 5504 | 0 | case e_nequal : return nequal <T>(arg0,arg1); | 5505 | 0 | case e_hypot : return hypot <T>(arg0,arg1); | 5506 | 0 | case e_shr : return shr <T>(arg0,arg1); | 5507 | 0 | case e_shl : return shl <T>(arg0,arg1); | 5508 | | | 5509 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n")); | 5510 | 0 | return std::numeric_limits<T>::quiet_NaN(); | 5511 | 6.85k | } | 5512 | 6.85k | } |
float exprtk::details::numeric::details::process_impl<float>(exprtk::details::operator_type, float, float) Line | Count | Source | 5476 | 1.50k | { | 5477 | 1.50k | switch (operation) | 5478 | 1.50k | { | 5479 | 567 | case e_add : return (arg0 + arg1); | 5480 | 110 | case e_sub : return (arg0 - arg1); | 5481 | 71 | case e_mul : return (arg0 * arg1); | 5482 | 114 | case e_div : return (arg0 / arg1); | 5483 | 20 | case e_mod : return modulus<T>(arg0,arg1); | 5484 | 505 | case e_pow : return pow<T>(arg0,arg1); | 5485 | 0 | case e_atan2 : return atan2<T>(arg0,arg1); | 5486 | 0 | case e_min : return std::min<T>(arg0,arg1); | 5487 | 0 | case e_max : return std::max<T>(arg0,arg1); | 5488 | 0 | case e_logn : return logn<T>(arg0,arg1); | 5489 | 46 | case e_lt : return (arg0 < arg1) ? T(1) : T(0); | 5490 | 3 | case e_lte : return (arg0 <= arg1) ? T(1) : T(0); | 5491 | 18 | case e_eq : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0); | 5492 | 2 | case e_ne : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0); | 5493 | 3 | case e_gte : return (arg0 >= arg1) ? T(1) : T(0); | 5494 | 25 | case e_gt : return (arg0 > arg1) ? T(1) : T(0); | 5495 | 11 | case e_and : return and_opr <T>(arg0,arg1); | 5496 | 4 | case e_nand : return nand_opr<T>(arg0,arg1); | 5497 | 2 | case e_or : return or_opr <T>(arg0,arg1); | 5498 | 0 | case e_nor : return nor_opr <T>(arg0,arg1); | 5499 | 0 | case e_xor : return xor_opr <T>(arg0,arg1); | 5500 | 1 | case e_xnor : return xnor_opr<T>(arg0,arg1); | 5501 | 0 | case e_root : return root <T>(arg0,arg1); | 5502 | 0 | case e_roundn : return roundn <T>(arg0,arg1); | 5503 | 0 | case e_equal : return equal <T>(arg0,arg1); | 5504 | 0 | case e_nequal : return nequal <T>(arg0,arg1); | 5505 | 0 | case e_hypot : return hypot <T>(arg0,arg1); | 5506 | 0 | case e_shr : return shr <T>(arg0,arg1); | 5507 | 0 | case e_shl : return shl <T>(arg0,arg1); | 5508 | | | 5509 | 0 | default : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n")); | 5510 | 0 | return std::numeric_limits<T>::quiet_NaN(); | 5511 | 1.50k | } | 5512 | 1.50k | } |
|
5513 | | |
5514 | | template <typename T> |
5515 | | inline T process_impl(const operator_type operation, const T arg0, const T arg1, int_type_tag) |
5516 | | { |
5517 | | switch (operation) |
5518 | | { |
5519 | | case e_add : return (arg0 + arg1); |
5520 | | case e_sub : return (arg0 - arg1); |
5521 | | case e_mul : return (arg0 * arg1); |
5522 | | case e_div : return (arg0 / arg1); |
5523 | | case e_mod : return arg0 % arg1; |
5524 | | case e_pow : return pow<T>(arg0,arg1); |
5525 | | case e_min : return std::min<T>(arg0,arg1); |
5526 | | case e_max : return std::max<T>(arg0,arg1); |
5527 | | case e_logn : return logn<T>(arg0,arg1); |
5528 | | case e_lt : return (arg0 < arg1) ? T(1) : T(0); |
5529 | | case e_lte : return (arg0 <= arg1) ? T(1) : T(0); |
5530 | | case e_eq : return (arg0 == arg1) ? T(1) : T(0); |
5531 | | case e_ne : return (arg0 != arg1) ? T(1) : T(0); |
5532 | | case e_gte : return (arg0 >= arg1) ? T(1) : T(0); |
5533 | | case e_gt : return (arg0 > arg1) ? T(1) : T(0); |
5534 | | case e_and : return ((arg0 != T(0)) && (arg1 != T(0))) ? T(1) : T(0); |
5535 | | case e_nand : return ((arg0 != T(0)) && (arg1 != T(0))) ? T(0) : T(1); |
5536 | | case e_or : return ((arg0 != T(0)) || (arg1 != T(0))) ? T(1) : T(0); |
5537 | | case e_nor : return ((arg0 != T(0)) || (arg1 != T(0))) ? T(0) : T(1); |
5538 | | case e_xor : return arg0 ^ arg1; |
5539 | | case e_xnor : return !(arg0 ^ arg1); |
5540 | | case e_root : return root<T>(arg0,arg1); |
5541 | | case e_equal : return arg0 == arg1; |
5542 | | case e_nequal : return arg0 != arg1; |
5543 | | case e_hypot : return hypot<T>(arg0,arg1); |
5544 | | case e_shr : return arg0 >> arg1; |
5545 | | case e_shl : return arg0 << arg1; |
5546 | | |
5547 | | default : exprtk_debug(("numeric::details::process_impl<IntType> - Invalid binary operation.\n")); |
5548 | | return std::numeric_limits<T>::quiet_NaN(); |
5549 | | } |
5550 | | } |
5551 | | } |
5552 | | |
5553 | | template <typename T> |
5554 | | inline T process(const operator_type operation, const T arg) |
5555 | 53.2k | { |
5556 | 53.2k | return exprtk::details::numeric::details::process_impl(operation,arg); |
5557 | 53.2k | } double exprtk::details::numeric::process<double>(exprtk::details::operator_type, double) Line | Count | Source | 5555 | 30.8k | { | 5556 | 30.8k | return exprtk::details::numeric::details::process_impl(operation,arg); | 5557 | 30.8k | } |
float exprtk::details::numeric::process<float>(exprtk::details::operator_type, float) Line | Count | Source | 5555 | 22.4k | { | 5556 | 22.4k | return exprtk::details::numeric::details::process_impl(operation,arg); | 5557 | 22.4k | } |
|
5558 | | |
5559 | | template <typename T> |
5560 | | inline T process(const operator_type operation, const T arg0, const T arg1) |
5561 | 8.36k | { |
5562 | 8.36k | return exprtk::details::numeric::details::process_impl(operation, arg0, arg1); |
5563 | 8.36k | } double exprtk::details::numeric::process<double>(exprtk::details::operator_type, double, double) Line | Count | Source | 5561 | 6.85k | { | 5562 | 6.85k | return exprtk::details::numeric::details::process_impl(operation, arg0, arg1); | 5563 | 6.85k | } |
float exprtk::details::numeric::process<float>(exprtk::details::operator_type, float, float) Line | Count | Source | 5561 | 1.50k | { | 5562 | 1.50k | return exprtk::details::numeric::details::process_impl(operation, arg0, arg1); | 5563 | 1.50k | } |
|
5564 | | } |
5565 | | |
5566 | | template <typename Node> |
5567 | | struct node_collector_interface |
5568 | | { |
5569 | | typedef Node* node_ptr_t; |
5570 | | typedef Node** node_pp_t; |
5571 | | typedef std::vector<node_pp_t> noderef_list_t; |
5572 | | |
5573 | | virtual ~node_collector_interface() |
5574 | 587k | {} exprtk::details::node_collector_interface<exprtk::details::expression_node<double> >::~node_collector_interface() Line | Count | Source | 5574 | 372k | {} |
exprtk::details::node_collector_interface<exprtk::details::expression_node<float> >::~node_collector_interface() Line | Count | Source | 5574 | 214k | {} |
|
5575 | | |
5576 | | virtual void collect_nodes(noderef_list_t&) |
5577 | 316k | {} 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 | 5577 | 206k | {} |
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 | 5577 | 109k | {} |
|
5578 | | }; |
5579 | | |
5580 | | template <typename Node> |
5581 | | struct node_depth_base; |
5582 | | |
5583 | | template <typename T> |
5584 | | class expression_node : public node_collector_interface<expression_node<T> > |
5585 | | , public node_depth_base<expression_node<T> > |
5586 | | { |
5587 | | public: |
5588 | | |
5589 | | enum node_type |
5590 | | { |
5591 | | e_none , e_null , e_constant , e_unary , |
5592 | | e_binary , e_binary_ext , e_trinary , e_quaternary , |
5593 | | e_vararg , e_conditional , e_while , e_repeat , |
5594 | | e_for , e_switch , e_mswitch , e_return , |
5595 | | e_retenv , e_variable , e_stringvar , e_stringconst , |
5596 | | e_stringvarrng , e_cstringvarrng , e_strgenrange , e_strconcat , |
5597 | | e_stringvarsize , e_strswap , e_stringsize , e_stringvararg , |
5598 | | e_function , e_vafunction , e_genfunction , e_strfunction , |
5599 | | e_strcondition , e_strccondition , e_add , e_sub , |
5600 | | e_mul , e_div , e_mod , e_pow , |
5601 | | e_lt , e_lte , e_gt , e_gte , |
5602 | | e_eq , e_ne , e_and , e_nand , |
5603 | | e_or , e_nor , e_xor , e_xnor , |
5604 | | e_in , e_like , e_ilike , e_inranges , |
5605 | | e_ipow , e_ipowinv , e_abs , e_acos , |
5606 | | e_acosh , e_asin , e_asinh , e_atan , |
5607 | | e_atanh , e_ceil , e_cos , e_cosh , |
5608 | | e_exp , e_expm1 , e_floor , e_log , |
5609 | | e_log10 , e_log2 , e_log1p , e_neg , |
5610 | | e_pos , e_round , e_sin , e_sinc , |
5611 | | e_sinh , e_sqrt , e_tan , e_tanh , |
5612 | | e_cot , e_sec , e_csc , e_r2d , |
5613 | | e_d2r , e_d2g , e_g2d , e_notl , |
5614 | | e_sgn , e_erf , e_erfc , e_ncdf , |
5615 | | e_frac , e_trunc , e_uvouv , e_vov , |
5616 | | e_cov , e_voc , e_vob , e_bov , |
5617 | | e_cob , e_boc , e_vovov , e_vovoc , |
5618 | | e_vocov , e_covov , e_covoc , e_vovovov , |
5619 | | e_vovovoc , e_vovocov , e_vocovov , e_covovov , |
5620 | | e_covocov , e_vocovoc , e_covovoc , e_vococov , |
5621 | | e_sf3ext , e_sf4ext , e_nulleq , e_strass , |
5622 | | e_vector , e_vecsize , e_vecelem , e_veccelem , |
5623 | | e_vecelemrtc , e_veccelemrtc , e_rbvecelem , e_rbvecelemrtc , |
5624 | | e_rbveccelem , e_rbveccelemrtc , e_vecinit , e_vecvalass , |
5625 | | e_vecvecass , e_vecopvalass , e_vecopvecass , e_vecfunc , |
5626 | | e_vecvecswap , e_vecvecineq , e_vecvalineq , e_valvecineq , |
5627 | | e_vecvecarith , e_vecvalarith , e_valvecarith , e_vecunaryop , |
5628 | | e_vecondition , e_break , e_continue , e_swap , |
5629 | | e_assert |
5630 | | }; |
5631 | | |
5632 | | typedef T value_type; |
5633 | | typedef expression_node<T>* expression_ptr; |
5634 | | typedef node_collector_interface<expression_node<T> > nci_t; |
5635 | | typedef typename nci_t::noderef_list_t noderef_list_t; |
5636 | | typedef node_depth_base<expression_node<T> > ndb_t; |
5637 | | |
5638 | | virtual ~expression_node() |
5639 | 587k | {} exprtk::details::expression_node<double>::~expression_node() Line | Count | Source | 5639 | 372k | {} |
exprtk::details::expression_node<float>::~expression_node() Line | Count | Source | 5639 | 214k | {} |
|
5640 | | |
5641 | | inline virtual T value() const |
5642 | 0 | { |
5643 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
5644 | 0 | } Unexecuted instantiation: exprtk::details::expression_node<double>::value() const Unexecuted instantiation: exprtk::details::expression_node<float>::value() const |
5645 | | |
5646 | | inline virtual expression_node<T>* branch(const std::size_t& index = 0) const |
5647 | 0 | { |
5648 | 0 | return reinterpret_cast<expression_ptr>(index * 0); |
5649 | 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 |
5650 | | |
5651 | | inline virtual node_type type() const |
5652 | 1.35M | { |
5653 | 1.35M | return e_none; |
5654 | 1.35M | } exprtk::details::expression_node<double>::type() const Line | Count | Source | 5652 | 1.10M | { | 5653 | 1.10M | return e_none; | 5654 | 1.10M | } |
exprtk::details::expression_node<float>::type() const Line | Count | Source | 5652 | 252k | { | 5653 | 252k | return e_none; | 5654 | 252k | } |
|
5655 | | |
5656 | | inline virtual bool valid() const |
5657 | 691M | { |
5658 | 691M | return true; |
5659 | 691M | } exprtk::details::expression_node<double>::valid() const Line | Count | Source | 5657 | 502M | { | 5658 | 502M | return true; | 5659 | 502M | } |
exprtk::details::expression_node<float>::valid() const Line | Count | Source | 5657 | 189M | { | 5658 | 189M | return true; | 5659 | 189M | } |
|
5660 | | }; // class expression_node |
5661 | | |
5662 | | template <typename T> |
5663 | | inline bool is_generally_string_node(const expression_node<T>* node); |
5664 | | |
5665 | | inline bool is_true(const double v) |
5666 | 211 | { |
5667 | 211 | return std::not_equal_to<double>()(0.0,v); |
5668 | 211 | } |
5669 | | |
5670 | | inline bool is_true(const long double v) |
5671 | 0 | { |
5672 | 0 | return std::not_equal_to<long double>()(0.0L,v); |
5673 | 0 | } |
5674 | | |
5675 | | inline bool is_true(const float v) |
5676 | 204 | { |
5677 | 204 | return std::not_equal_to<float>()(0.0f,v); |
5678 | 204 | } |
5679 | | |
5680 | | template <typename T> |
5681 | | inline bool is_true(const expression_node<T>* node) |
5682 | 4 | { |
5683 | 4 | return std::not_equal_to<T>()(T(0),node->value()); |
5684 | 4 | } bool exprtk::details::is_true<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5682 | 2 | { | 5683 | 2 | return std::not_equal_to<T>()(T(0),node->value()); | 5684 | 2 | } |
bool exprtk::details::is_true<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5682 | 2 | { | 5683 | 2 | return std::not_equal_to<T>()(T(0),node->value()); | 5684 | 2 | } |
|
5685 | | |
5686 | | template <typename T> |
5687 | | inline bool is_true(const std::pair<expression_node<T>*,bool>& node) |
5688 | 34 | { |
5689 | 34 | return std::not_equal_to<T>()(T(0),node.first->value()); |
5690 | 34 | } bool exprtk::details::is_true<double>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) Line | Count | Source | 5688 | 17 | { | 5689 | 17 | return std::not_equal_to<T>()(T(0),node.first->value()); | 5690 | 17 | } |
bool exprtk::details::is_true<float>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) Line | Count | Source | 5688 | 17 | { | 5689 | 17 | return std::not_equal_to<T>()(T(0),node.first->value()); | 5690 | 17 | } |
|
5691 | | |
5692 | | template <typename T> |
5693 | | inline bool is_false(const expression_node<T>* node) |
5694 | 0 | { |
5695 | 0 | return std::equal_to<T>()(T(0),node->value()); |
5696 | 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*) |
5697 | | |
5698 | | template <typename T> |
5699 | | inline bool is_false(const std::pair<expression_node<T>*,bool>& node) |
5700 | | { |
5701 | | return std::equal_to<T>()(T(0),node.first->value()); |
5702 | | } |
5703 | | |
5704 | | template <typename T> |
5705 | | inline bool is_literal_node(const expression_node<T>* node) |
5706 | 465 | { |
5707 | 465 | return node && (details::expression_node<T>::e_constant == node->type()); |
5708 | 465 | } bool exprtk::details::is_literal_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5706 | 237 | { | 5707 | 237 | return node && (details::expression_node<T>::e_constant == node->type()); | 5708 | 237 | } |
bool exprtk::details::is_literal_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5706 | 228 | { | 5707 | 228 | return node && (details::expression_node<T>::e_constant == node->type()); | 5708 | 228 | } |
|
5709 | | |
5710 | | template <typename T> |
5711 | | inline bool is_unary_node(const expression_node<T>* node) |
5712 | | { |
5713 | | return node && (details::expression_node<T>::e_unary == node->type()); |
5714 | | } |
5715 | | |
5716 | | template <typename T> |
5717 | | inline bool is_neg_unary_node(const expression_node<T>* node) |
5718 | 203k | { |
5719 | 203k | return node && (details::expression_node<T>::e_neg == node->type()); |
5720 | 203k | } bool exprtk::details::is_neg_unary_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5718 | 129k | { | 5719 | 129k | return node && (details::expression_node<T>::e_neg == node->type()); | 5720 | 129k | } |
bool exprtk::details::is_neg_unary_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5718 | 74.2k | { | 5719 | 74.2k | return node && (details::expression_node<T>::e_neg == node->type()); | 5720 | 74.2k | } |
|
5721 | | |
5722 | | template <typename T> |
5723 | | inline bool is_binary_node(const expression_node<T>* node) |
5724 | | { |
5725 | | return node && (details::expression_node<T>::e_binary == node->type()); |
5726 | | } |
5727 | | |
5728 | | template <typename T> |
5729 | | inline bool is_variable_node(const expression_node<T>* node) |
5730 | 1.33M | { |
5731 | 1.33M | return node && (details::expression_node<T>::e_variable == node->type()); |
5732 | 1.33M | } bool exprtk::details::is_variable_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5730 | 913k | { | 5731 | 913k | return node && (details::expression_node<T>::e_variable == node->type()); | 5732 | 913k | } |
bool exprtk::details::is_variable_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5730 | 424k | { | 5731 | 424k | return node && (details::expression_node<T>::e_variable == node->type()); | 5732 | 424k | } |
|
5733 | | |
5734 | | template <typename T> |
5735 | | inline bool is_ivariable_node(const expression_node<T>* node) |
5736 | 48 | { |
5737 | 48 | return node && |
5738 | 48 | ( |
5739 | 48 | details::expression_node<T>::e_variable == node->type() || |
5740 | 48 | details::expression_node<T>::e_vecelem == node->type() || |
5741 | 48 | details::expression_node<T>::e_veccelem == node->type() || |
5742 | 48 | details::expression_node<T>::e_vecelemrtc == node->type() || |
5743 | 48 | details::expression_node<T>::e_veccelemrtc == node->type() || |
5744 | 48 | details::expression_node<T>::e_rbvecelem == node->type() || |
5745 | 48 | details::expression_node<T>::e_rbveccelem == node->type() || |
5746 | 48 | details::expression_node<T>::e_rbvecelemrtc == node->type() || |
5747 | 48 | details::expression_node<T>::e_rbveccelemrtc == node->type() |
5748 | 48 | ); |
5749 | 48 | } bool exprtk::details::is_ivariable_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5736 | 24 | { | 5737 | 24 | return node && | 5738 | 24 | ( | 5739 | 24 | details::expression_node<T>::e_variable == node->type() || | 5740 | 24 | details::expression_node<T>::e_vecelem == node->type() || | 5741 | 24 | details::expression_node<T>::e_veccelem == node->type() || | 5742 | 24 | details::expression_node<T>::e_vecelemrtc == node->type() || | 5743 | 24 | details::expression_node<T>::e_veccelemrtc == node->type() || | 5744 | 24 | details::expression_node<T>::e_rbvecelem == node->type() || | 5745 | 24 | details::expression_node<T>::e_rbveccelem == node->type() || | 5746 | 24 | details::expression_node<T>::e_rbvecelemrtc == node->type() || | 5747 | 24 | details::expression_node<T>::e_rbveccelemrtc == node->type() | 5748 | 24 | ); | 5749 | 24 | } |
bool exprtk::details::is_ivariable_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5736 | 24 | { | 5737 | 24 | return node && | 5738 | 24 | ( | 5739 | 24 | details::expression_node<T>::e_variable == node->type() || | 5740 | 24 | details::expression_node<T>::e_vecelem == node->type() || | 5741 | 24 | details::expression_node<T>::e_veccelem == node->type() || | 5742 | 24 | details::expression_node<T>::e_vecelemrtc == node->type() || | 5743 | 24 | details::expression_node<T>::e_veccelemrtc == node->type() || | 5744 | 24 | details::expression_node<T>::e_rbvecelem == node->type() || | 5745 | 24 | details::expression_node<T>::e_rbveccelem == node->type() || | 5746 | 24 | details::expression_node<T>::e_rbvecelemrtc == node->type() || | 5747 | 24 | details::expression_node<T>::e_rbveccelemrtc == node->type() | 5748 | 24 | ); | 5749 | 24 | } |
|
5750 | | |
5751 | | template <typename T> |
5752 | | inline bool is_vector_elem_node(const expression_node<T>* node) |
5753 | 74 | { |
5754 | 74 | return node && (details::expression_node<T>::e_vecelem == node->type()); |
5755 | 74 | } bool exprtk::details::is_vector_elem_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5753 | 37 | { | 5754 | 37 | return node && (details::expression_node<T>::e_vecelem == node->type()); | 5755 | 37 | } |
bool exprtk::details::is_vector_elem_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5753 | 37 | { | 5754 | 37 | return node && (details::expression_node<T>::e_vecelem == node->type()); | 5755 | 37 | } |
|
5756 | | |
5757 | | template <typename T> |
5758 | | inline bool is_vector_celem_node(const expression_node<T>* node) |
5759 | 74 | { |
5760 | 74 | return node && (details::expression_node<T>::e_veccelem == node->type()); |
5761 | 74 | } bool exprtk::details::is_vector_celem_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5759 | 37 | { | 5760 | 37 | return node && (details::expression_node<T>::e_veccelem == node->type()); | 5761 | 37 | } |
bool exprtk::details::is_vector_celem_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5759 | 37 | { | 5760 | 37 | return node && (details::expression_node<T>::e_veccelem == node->type()); | 5761 | 37 | } |
|
5762 | | |
5763 | | template <typename T> |
5764 | | inline bool is_vector_elem_rtc_node(const expression_node<T>* node) |
5765 | 74 | { |
5766 | 74 | return node && (details::expression_node<T>::e_vecelemrtc == node->type()); |
5767 | 74 | } bool exprtk::details::is_vector_elem_rtc_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5765 | 37 | { | 5766 | 37 | return node && (details::expression_node<T>::e_vecelemrtc == node->type()); | 5767 | 37 | } |
bool exprtk::details::is_vector_elem_rtc_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5765 | 37 | { | 5766 | 37 | return node && (details::expression_node<T>::e_vecelemrtc == node->type()); | 5767 | 37 | } |
|
5768 | | |
5769 | | template <typename T> |
5770 | | inline bool is_vector_celem_rtc_node(const expression_node<T>* node) |
5771 | 74 | { |
5772 | 74 | return node && (details::expression_node<T>::e_veccelemrtc == node->type()); |
5773 | 74 | } bool exprtk::details::is_vector_celem_rtc_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5771 | 37 | { | 5772 | 37 | return node && (details::expression_node<T>::e_veccelemrtc == node->type()); | 5773 | 37 | } |
bool exprtk::details::is_vector_celem_rtc_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5771 | 37 | { | 5772 | 37 | return node && (details::expression_node<T>::e_veccelemrtc == node->type()); | 5773 | 37 | } |
|
5774 | | |
5775 | | template <typename T> |
5776 | | inline bool is_rebasevector_elem_node(const expression_node<T>* node) |
5777 | 74 | { |
5778 | 74 | return node && (details::expression_node<T>::e_rbvecelem == node->type()); |
5779 | 74 | } bool exprtk::details::is_rebasevector_elem_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5777 | 37 | { | 5778 | 37 | return node && (details::expression_node<T>::e_rbvecelem == node->type()); | 5779 | 37 | } |
bool exprtk::details::is_rebasevector_elem_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5777 | 37 | { | 5778 | 37 | return node && (details::expression_node<T>::e_rbvecelem == node->type()); | 5779 | 37 | } |
|
5780 | | |
5781 | | template <typename T> |
5782 | | inline bool is_rebasevector_elem_rtc_node(const expression_node<T>* node) |
5783 | 74 | { |
5784 | 74 | return node && (details::expression_node<T>::e_rbvecelemrtc == node->type()); |
5785 | 74 | } bool exprtk::details::is_rebasevector_elem_rtc_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5783 | 37 | { | 5784 | 37 | return node && (details::expression_node<T>::e_rbvecelemrtc == node->type()); | 5785 | 37 | } |
bool exprtk::details::is_rebasevector_elem_rtc_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5783 | 37 | { | 5784 | 37 | return node && (details::expression_node<T>::e_rbvecelemrtc == node->type()); | 5785 | 37 | } |
|
5786 | | |
5787 | | template <typename T> |
5788 | | inline bool is_rebasevector_celem_rtc_node(const expression_node<T>* node) |
5789 | 62 | { |
5790 | 62 | return node && (details::expression_node<T>::e_rbveccelemrtc == node->type()); |
5791 | 62 | } bool exprtk::details::is_rebasevector_celem_rtc_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5789 | 31 | { | 5790 | 31 | return node && (details::expression_node<T>::e_rbveccelemrtc == node->type()); | 5791 | 31 | } |
bool exprtk::details::is_rebasevector_celem_rtc_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5789 | 31 | { | 5790 | 31 | return node && (details::expression_node<T>::e_rbveccelemrtc == node->type()); | 5791 | 31 | } |
|
5792 | | |
5793 | | template <typename T> |
5794 | | inline bool is_rebasevector_celem_node(const expression_node<T>* node) |
5795 | 74 | { |
5796 | 74 | return node && (details::expression_node<T>::e_rbveccelem == node->type()); |
5797 | 74 | } bool exprtk::details::is_rebasevector_celem_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5795 | 37 | { | 5796 | 37 | return node && (details::expression_node<T>::e_rbveccelem == node->type()); | 5797 | 37 | } |
bool exprtk::details::is_rebasevector_celem_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5795 | 37 | { | 5796 | 37 | return node && (details::expression_node<T>::e_rbveccelem == node->type()); | 5797 | 37 | } |
|
5798 | | |
5799 | | template <typename T> |
5800 | | inline bool is_vector_node(const expression_node<T>* node) |
5801 | 14.2k | { |
5802 | 14.2k | return node && (details::expression_node<T>::e_vector == node->type()); |
5803 | 14.2k | } bool exprtk::details::is_vector_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5801 | 10.6k | { | 5802 | 10.6k | return node && (details::expression_node<T>::e_vector == node->type()); | 5803 | 10.6k | } |
bool exprtk::details::is_vector_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5801 | 3.65k | { | 5802 | 3.65k | return node && (details::expression_node<T>::e_vector == node->type()); | 5803 | 3.65k | } |
|
5804 | | |
5805 | | template <typename T> |
5806 | | inline bool is_ivector_node(const expression_node<T>* node) |
5807 | 1.04M | { |
5808 | 1.04M | if (node) |
5809 | 1.04M | { |
5810 | 1.04M | switch (node->type()) |
5811 | 1.04M | { |
5812 | 0 | case details::expression_node<T>::e_vector : |
5813 | 0 | case details::expression_node<T>::e_vecvalass : |
5814 | 0 | case details::expression_node<T>::e_vecvecass : |
5815 | 0 | case details::expression_node<T>::e_vecopvalass : |
5816 | 0 | case details::expression_node<T>::e_vecopvecass : |
5817 | 0 | case details::expression_node<T>::e_vecvecswap : |
5818 | 0 | case details::expression_node<T>::e_vecvecarith : |
5819 | 0 | case details::expression_node<T>::e_vecvalarith : |
5820 | 0 | case details::expression_node<T>::e_valvecarith : |
5821 | 0 | case details::expression_node<T>::e_vecunaryop : |
5822 | 0 | case details::expression_node<T>::e_vecondition : return true; |
5823 | 1.04M | default : return false; |
5824 | 1.04M | } |
5825 | 1.04M | } |
5826 | 0 | else |
5827 | 0 | return false; |
5828 | 1.04M | } bool exprtk::details::is_ivector_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5807 | 728k | { | 5808 | 728k | if (node) | 5809 | 728k | { | 5810 | 728k | switch (node->type()) | 5811 | 728k | { | 5812 | 0 | case details::expression_node<T>::e_vector : | 5813 | 0 | case details::expression_node<T>::e_vecvalass : | 5814 | 0 | case details::expression_node<T>::e_vecvecass : | 5815 | 0 | case details::expression_node<T>::e_vecopvalass : | 5816 | 0 | case details::expression_node<T>::e_vecopvecass : | 5817 | 0 | case details::expression_node<T>::e_vecvecswap : | 5818 | 0 | case details::expression_node<T>::e_vecvecarith : | 5819 | 0 | case details::expression_node<T>::e_vecvalarith : | 5820 | 0 | case details::expression_node<T>::e_valvecarith : | 5821 | 0 | case details::expression_node<T>::e_vecunaryop : | 5822 | 0 | case details::expression_node<T>::e_vecondition : return true; | 5823 | 728k | default : return false; | 5824 | 728k | } | 5825 | 728k | } | 5826 | 0 | else | 5827 | 0 | return false; | 5828 | 728k | } |
bool exprtk::details::is_ivector_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5807 | 319k | { | 5808 | 319k | if (node) | 5809 | 319k | { | 5810 | 319k | switch (node->type()) | 5811 | 319k | { | 5812 | 0 | case details::expression_node<T>::e_vector : | 5813 | 0 | case details::expression_node<T>::e_vecvalass : | 5814 | 0 | case details::expression_node<T>::e_vecvecass : | 5815 | 0 | case details::expression_node<T>::e_vecopvalass : | 5816 | 0 | case details::expression_node<T>::e_vecopvecass : | 5817 | 0 | case details::expression_node<T>::e_vecvecswap : | 5818 | 0 | case details::expression_node<T>::e_vecvecarith : | 5819 | 0 | case details::expression_node<T>::e_vecvalarith : | 5820 | 0 | case details::expression_node<T>::e_valvecarith : | 5821 | 0 | case details::expression_node<T>::e_vecunaryop : | 5822 | 0 | case details::expression_node<T>::e_vecondition : return true; | 5823 | 319k | default : return false; | 5824 | 319k | } | 5825 | 319k | } | 5826 | 0 | else | 5827 | 0 | return false; | 5828 | 319k | } |
|
5829 | | |
5830 | | template <typename T> |
5831 | | inline bool is_constant_node(const expression_node<T>* node) |
5832 | 1.72M | { |
5833 | 1.72M | return node && |
5834 | 1.72M | ( |
5835 | 1.72M | details::expression_node<T>::e_constant == node->type() || |
5836 | 1.72M | details::expression_node<T>::e_stringconst == node->type() |
5837 | 1.72M | ); |
5838 | 1.72M | } bool exprtk::details::is_constant_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5832 | 1.15M | { | 5833 | 1.15M | return node && | 5834 | 1.15M | ( | 5835 | 1.15M | details::expression_node<T>::e_constant == node->type() || | 5836 | 1.15M | details::expression_node<T>::e_stringconst == node->type() | 5837 | 1.15M | ); | 5838 | 1.15M | } |
bool exprtk::details::is_constant_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5832 | 571k | { | 5833 | 571k | return node && | 5834 | 571k | ( | 5835 | 571k | details::expression_node<T>::e_constant == node->type() || | 5836 | 571k | details::expression_node<T>::e_stringconst == node->type() | 5837 | 571k | ); | 5838 | 571k | } |
|
5839 | | |
5840 | | template <typename T> |
5841 | | inline bool is_null_node(const expression_node<T>* node) |
5842 | 1.08M | { |
5843 | 1.08M | return node && (details::expression_node<T>::e_null == node->type()); |
5844 | 1.08M | } bool exprtk::details::is_null_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5842 | 751k | { | 5843 | 751k | return node && (details::expression_node<T>::e_null == node->type()); | 5844 | 751k | } |
bool exprtk::details::is_null_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5842 | 333k | { | 5843 | 333k | return node && (details::expression_node<T>::e_null == node->type()); | 5844 | 333k | } |
|
5845 | | |
5846 | | template <typename T> |
5847 | | inline bool is_break_node(const expression_node<T>* node) |
5848 | 577k | { |
5849 | 577k | return node && (details::expression_node<T>::e_break == node->type()); |
5850 | 577k | } bool exprtk::details::is_break_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5848 | 395k | { | 5849 | 395k | return node && (details::expression_node<T>::e_break == node->type()); | 5850 | 395k | } |
bool exprtk::details::is_break_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5848 | 181k | { | 5849 | 181k | return node && (details::expression_node<T>::e_break == node->type()); | 5850 | 181k | } |
|
5851 | | |
5852 | | template <typename T> |
5853 | | inline bool is_continue_node(const expression_node<T>* node) |
5854 | 577k | { |
5855 | 577k | return node && (details::expression_node<T>::e_continue == node->type()); |
5856 | 577k | } bool exprtk::details::is_continue_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5854 | 395k | { | 5855 | 395k | return node && (details::expression_node<T>::e_continue == node->type()); | 5856 | 395k | } |
bool exprtk::details::is_continue_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5854 | 181k | { | 5855 | 181k | return node && (details::expression_node<T>::e_continue == node->type()); | 5856 | 181k | } |
|
5857 | | |
5858 | | template <typename T> |
5859 | | inline bool is_swap_node(const expression_node<T>* node) |
5860 | | { |
5861 | | return node && (details::expression_node<T>::e_swap == node->type()); |
5862 | | } |
5863 | | |
5864 | | template <typename T> |
5865 | | inline bool is_function(const expression_node<T>* node) |
5866 | | { |
5867 | | return node && (details::expression_node<T>::e_function == node->type()); |
5868 | | } |
5869 | | |
5870 | | template <typename T> |
5871 | | inline bool is_vararg_node(const expression_node<T>* node) |
5872 | | { |
5873 | | return node && (details::expression_node<T>::e_vararg == node->type()); |
5874 | | } |
5875 | | |
5876 | | template <typename T> |
5877 | | inline bool is_return_node(const expression_node<T>* node) |
5878 | 526k | { |
5879 | 526k | return node && (details::expression_node<T>::e_return == node->type()); |
5880 | 526k | } bool exprtk::details::is_return_node<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5878 | 365k | { | 5879 | 365k | return node && (details::expression_node<T>::e_return == node->type()); | 5880 | 365k | } |
bool exprtk::details::is_return_node<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5878 | 161k | { | 5879 | 161k | return node && (details::expression_node<T>::e_return == node->type()); | 5880 | 161k | } |
|
5881 | | |
5882 | | template <typename T> class unary_node; |
5883 | | |
5884 | | template <typename T> |
5885 | | inline bool is_negate_node(const expression_node<T>* node) |
5886 | | { |
5887 | | if (node && is_unary_node(node)) |
5888 | | { |
5889 | | return (details::e_neg == static_cast<const unary_node<T>*>(node)->operation()); |
5890 | | } |
5891 | | else |
5892 | | return false; |
5893 | | } |
5894 | | |
5895 | | template <typename T> |
5896 | | inline bool is_assert_node(const expression_node<T>* node) |
5897 | | { |
5898 | | return node && (details::expression_node<T>::e_assert == node->type()); |
5899 | | } |
5900 | | |
5901 | | template <typename T> |
5902 | | inline bool branch_deletable(const expression_node<T>* node) |
5903 | 284k | { |
5904 | 284k | return (0 != node) && |
5905 | 284k | !is_variable_node(node) && |
5906 | 284k | !is_string_node (node) ; |
5907 | 284k | } bool exprtk::details::branch_deletable<double>(exprtk::details::expression_node<double> const*) Line | Count | Source | 5903 | 186k | { | 5904 | 186k | return (0 != node) && | 5905 | 186k | !is_variable_node(node) && | 5906 | 186k | !is_string_node (node) ; | 5907 | 186k | } |
bool exprtk::details::branch_deletable<float>(exprtk::details::expression_node<float> const*) Line | Count | Source | 5903 | 97.3k | { | 5904 | 97.3k | return (0 != node) && | 5905 | 97.3k | !is_variable_node(node) && | 5906 | 97.3k | !is_string_node (node) ; | 5907 | 97.3k | } |
|
5908 | | |
5909 | | template <std::size_t N, typename T> |
5910 | | inline bool all_nodes_valid(expression_node<T>* const (&b)[N]) |
5911 | 63.5k | { |
5912 | 137k | for (std::size_t i = 0; i < N; ++i) |
5913 | 73.9k | { |
5914 | 73.9k | if (0 == b[i]) return false; |
5915 | 73.9k | } |
5916 | | |
5917 | 63.5k | return true; |
5918 | 63.5k | } bool exprtk::details::all_nodes_valid<1ul, double>(exprtk::details::expression_node<double>* const (&) [1ul]) Line | Count | Source | 5911 | 30.8k | { | 5912 | 61.6k | for (std::size_t i = 0; i < N; ++i) | 5913 | 30.8k | { | 5914 | 30.8k | if (0 == b[i]) return false; | 5915 | 30.8k | } | 5916 | | | 5917 | 30.8k | return true; | 5918 | 30.8k | } |
bool exprtk::details::all_nodes_valid<2ul, double>(exprtk::details::expression_node<double>* const (&) [2ul]) Line | Count | Source | 5911 | 7.70k | { | 5912 | 23.1k | for (std::size_t i = 0; i < N; ++i) | 5913 | 15.4k | { | 5914 | 15.4k | if (0 == b[i]) return false; | 5915 | 15.4k | } | 5916 | | | 5917 | 7.70k | return true; | 5918 | 7.70k | } |
bool exprtk::details::all_nodes_valid<3ul, double>(exprtk::details::expression_node<double>* const (&) [3ul]) Line | Count | Source | 5911 | 101 | { | 5912 | 404 | for (std::size_t i = 0; i < N; ++i) | 5913 | 303 | { | 5914 | 303 | if (0 == b[i]) return false; | 5915 | 303 | } | 5916 | | | 5917 | 101 | return true; | 5918 | 101 | } |
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 | 5911 | 22.4k | { | 5912 | 44.9k | for (std::size_t i = 0; i < N; ++i) | 5913 | 22.4k | { | 5914 | 22.4k | if (0 == b[i]) return false; | 5915 | 22.4k | } | 5916 | | | 5917 | 22.4k | return true; | 5918 | 22.4k | } |
bool exprtk::details::all_nodes_valid<2ul, float>(exprtk::details::expression_node<float>* const (&) [2ul]) Line | Count | Source | 5911 | 2.33k | { | 5912 | 7.01k | for (std::size_t i = 0; i < N; ++i) | 5913 | 4.67k | { | 5914 | 4.67k | if (0 == b[i]) return false; | 5915 | 4.67k | } | 5916 | | | 5917 | 2.33k | return true; | 5918 | 2.33k | } |
bool exprtk::details::all_nodes_valid<3ul, float>(exprtk::details::expression_node<float>* const (&) [3ul]) Line | Count | Source | 5911 | 101 | { | 5912 | 404 | for (std::size_t i = 0; i < N; ++i) | 5913 | 303 | { | 5914 | 303 | if (0 == b[i]) return false; | 5915 | 303 | } | 5916 | | | 5917 | 101 | return true; | 5918 | 101 | } |
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]) |
5919 | | |
5920 | | template <typename T, |
5921 | | typename Allocator, |
5922 | | template <typename, typename> class Sequence> |
5923 | | inline bool all_nodes_valid(const Sequence<expression_node<T>*,Allocator>& b) |
5924 | 124 | { |
5925 | 719 | for (std::size_t i = 0; i < b.size(); ++i) |
5926 | 595 | { |
5927 | 595 | if (0 == b[i]) return false; |
5928 | 595 | } |
5929 | | |
5930 | 124 | return true; |
5931 | 124 | } 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 | 5924 | 63 | { | 5925 | 365 | for (std::size_t i = 0; i < b.size(); ++i) | 5926 | 302 | { | 5927 | 302 | if (0 == b[i]) return false; | 5928 | 302 | } | 5929 | | | 5930 | 63 | return true; | 5931 | 63 | } |
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 | 5924 | 61 | { | 5925 | 354 | for (std::size_t i = 0; i < b.size(); ++i) | 5926 | 293 | { | 5927 | 293 | if (0 == b[i]) return false; | 5928 | 293 | } | 5929 | | | 5930 | 61 | return true; | 5931 | 61 | } |
|
5932 | | |
5933 | | template <std::size_t N, typename T> |
5934 | | inline bool all_nodes_variables(expression_node<T>* const (&b)[N]) |
5935 | 202 | { |
5936 | 202 | for (std::size_t i = 0; i < N; ++i) |
5937 | 202 | { |
5938 | 202 | if (0 == b[i]) |
5939 | 0 | return false; |
5940 | 202 | else if (!is_variable_node(b[i])) |
5941 | 202 | return false; |
5942 | 202 | } |
5943 | | |
5944 | 0 | return true; |
5945 | 202 | } bool exprtk::details::all_nodes_variables<3ul, double>(exprtk::details::expression_node<double>* const (&) [3ul]) Line | Count | Source | 5935 | 101 | { | 5936 | 101 | for (std::size_t i = 0; i < N; ++i) | 5937 | 101 | { | 5938 | 101 | if (0 == b[i]) | 5939 | 0 | return false; | 5940 | 101 | else if (!is_variable_node(b[i])) | 5941 | 101 | return false; | 5942 | 101 | } | 5943 | | | 5944 | 0 | return true; | 5945 | 101 | } |
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 | 5935 | 101 | { | 5936 | 101 | for (std::size_t i = 0; i < N; ++i) | 5937 | 101 | { | 5938 | 101 | if (0 == b[i]) | 5939 | 0 | return false; | 5940 | 101 | else if (!is_variable_node(b[i])) | 5941 | 101 | return false; | 5942 | 101 | } | 5943 | | | 5944 | 0 | return true; | 5945 | 101 | } |
Unexecuted instantiation: bool exprtk::details::all_nodes_variables<4ul, float>(exprtk::details::expression_node<float>* const (&) [4ul]) |
5946 | | |
5947 | | template <typename T, |
5948 | | typename Allocator, |
5949 | | template <typename, typename> class Sequence> |
5950 | | inline bool all_nodes_variables(const Sequence<expression_node<T>*,Allocator>& b) |
5951 | 115 | { |
5952 | 217 | for (std::size_t i = 0; i < b.size(); ++i) |
5953 | 165 | { |
5954 | 165 | if (0 == b[i]) |
5955 | 0 | return false; |
5956 | 165 | else if (!is_variable_node(b[i])) |
5957 | 63 | return false; |
5958 | 165 | } |
5959 | | |
5960 | 52 | return true; |
5961 | 115 | } 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 | 5951 | 58 | { | 5952 | 109 | for (std::size_t i = 0; i < b.size(); ++i) | 5953 | 83 | { | 5954 | 83 | if (0 == b[i]) | 5955 | 0 | return false; | 5956 | 83 | else if (!is_variable_node(b[i])) | 5957 | 32 | return false; | 5958 | 83 | } | 5959 | | | 5960 | 26 | return true; | 5961 | 58 | } |
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 | 5951 | 57 | { | 5952 | 108 | for (std::size_t i = 0; i < b.size(); ++i) | 5953 | 82 | { | 5954 | 82 | if (0 == b[i]) | 5955 | 0 | return false; | 5956 | 82 | else if (!is_variable_node(b[i])) | 5957 | 31 | return false; | 5958 | 82 | } | 5959 | | | 5960 | 26 | return true; | 5961 | 57 | } |
|
5962 | | |
5963 | | template <typename Node> |
5964 | | class node_collection_destructor |
5965 | | { |
5966 | | public: |
5967 | | |
5968 | | typedef node_collector_interface<Node> nci_t; |
5969 | | |
5970 | | typedef typename nci_t::node_ptr_t node_ptr_t; |
5971 | | typedef typename nci_t::node_pp_t node_pp_t; |
5972 | | typedef typename nci_t::noderef_list_t noderef_list_t; |
5973 | | |
5974 | | static void delete_nodes(node_ptr_t& root) |
5975 | 233k | { |
5976 | 233k | std::vector<node_pp_t> node_delete_list; |
5977 | 233k | node_delete_list.reserve(1000); |
5978 | | |
5979 | 233k | collect_nodes(root, node_delete_list); |
5980 | | |
5981 | 729k | for (std::size_t i = 0; i < node_delete_list.size(); ++i) |
5982 | 496k | { |
5983 | 496k | node_ptr_t& node = *node_delete_list[i]; |
5984 | 496k | exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node))); |
5985 | 496k | delete node; |
5986 | 496k | node = reinterpret_cast<node_ptr_t>(0); |
5987 | 496k | } |
5988 | 233k | } exprtk::details::node_collection_destructor<exprtk::details::expression_node<double> >::delete_nodes(exprtk::details::expression_node<double>*&) Line | Count | Source | 5975 | 151k | { | 5976 | 151k | std::vector<node_pp_t> node_delete_list; | 5977 | 151k | node_delete_list.reserve(1000); | 5978 | | | 5979 | 151k | collect_nodes(root, node_delete_list); | 5980 | | | 5981 | 478k | for (std::size_t i = 0; i < node_delete_list.size(); ++i) | 5982 | 327k | { | 5983 | 327k | node_ptr_t& node = *node_delete_list[i]; | 5984 | 327k | exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node))); | 5985 | 327k | delete node; | 5986 | 327k | node = reinterpret_cast<node_ptr_t>(0); | 5987 | 327k | } | 5988 | 151k | } |
exprtk::details::node_collection_destructor<exprtk::details::expression_node<float> >::delete_nodes(exprtk::details::expression_node<float>*&) Line | Count | Source | 5975 | 82.0k | { | 5976 | 82.0k | std::vector<node_pp_t> node_delete_list; | 5977 | 82.0k | node_delete_list.reserve(1000); | 5978 | | | 5979 | 82.0k | collect_nodes(root, node_delete_list); | 5980 | | | 5981 | 250k | for (std::size_t i = 0; i < node_delete_list.size(); ++i) | 5982 | 168k | { | 5983 | 168k | node_ptr_t& node = *node_delete_list[i]; | 5984 | 168k | exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node))); | 5985 | 168k | delete node; | 5986 | 168k | node = reinterpret_cast<node_ptr_t>(0); | 5987 | 168k | } | 5988 | 82.0k | } |
|
5989 | | |
5990 | | private: |
5991 | | |
5992 | | static void collect_nodes(node_ptr_t& root, noderef_list_t& node_delete_list) |
5993 | 233k | { |
5994 | 233k | std::deque<node_ptr_t> node_list; |
5995 | 233k | node_list.push_back(root); |
5996 | 233k | node_delete_list.push_back(&root); |
5997 | | |
5998 | 233k | noderef_list_t child_node_delete_list; |
5999 | 233k | child_node_delete_list.reserve(1000); |
6000 | | |
6001 | 729k | while (!node_list.empty()) |
6002 | 496k | { |
6003 | 496k | node_list.front()->collect_nodes(child_node_delete_list); |
6004 | | |
6005 | 496k | if (!child_node_delete_list.empty()) |
6006 | 179k | { |
6007 | 442k | for (std::size_t i = 0; i < child_node_delete_list.size(); ++i) |
6008 | 263k | { |
6009 | 263k | node_pp_t& node = child_node_delete_list[i]; |
6010 | | |
6011 | 263k | if (0 == (*node)) |
6012 | 0 | { |
6013 | 0 | exprtk_debug(("ncd::collect_nodes() - null node encountered.\n")); |
6014 | 0 | } |
6015 | | |
6016 | 263k | node_list.push_back(*node); |
6017 | 263k | } |
6018 | | |
6019 | 179k | node_delete_list.insert( |
6020 | 179k | node_delete_list.end(), |
6021 | 179k | child_node_delete_list.begin(), child_node_delete_list.end()); |
6022 | | |
6023 | 179k | child_node_delete_list.clear(); |
6024 | 179k | } |
6025 | | |
6026 | 496k | node_list.pop_front(); |
6027 | 496k | } |
6028 | | |
6029 | 233k | std::reverse(node_delete_list.begin(), node_delete_list.end()); |
6030 | 233k | } 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 | 5993 | 151k | { | 5994 | 151k | std::deque<node_ptr_t> node_list; | 5995 | 151k | node_list.push_back(root); | 5996 | 151k | node_delete_list.push_back(&root); | 5997 | | | 5998 | 151k | noderef_list_t child_node_delete_list; | 5999 | 151k | child_node_delete_list.reserve(1000); | 6000 | | | 6001 | 478k | while (!node_list.empty()) | 6002 | 327k | { | 6003 | 327k | node_list.front()->collect_nodes(child_node_delete_list); | 6004 | | | 6005 | 327k | if (!child_node_delete_list.empty()) | 6006 | 120k | { | 6007 | 297k | for (std::size_t i = 0; i < child_node_delete_list.size(); ++i) | 6008 | 176k | { | 6009 | 176k | node_pp_t& node = child_node_delete_list[i]; | 6010 | | | 6011 | 176k | if (0 == (*node)) | 6012 | 0 | { | 6013 | 0 | exprtk_debug(("ncd::collect_nodes() - null node encountered.\n")); | 6014 | 0 | } | 6015 | | | 6016 | 176k | node_list.push_back(*node); | 6017 | 176k | } | 6018 | | | 6019 | 120k | node_delete_list.insert( | 6020 | 120k | node_delete_list.end(), | 6021 | 120k | child_node_delete_list.begin(), child_node_delete_list.end()); | 6022 | | | 6023 | 120k | child_node_delete_list.clear(); | 6024 | 120k | } | 6025 | | | 6026 | 327k | node_list.pop_front(); | 6027 | 327k | } | 6028 | | | 6029 | 151k | std::reverse(node_delete_list.begin(), node_delete_list.end()); | 6030 | 151k | } |
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 | 5993 | 82.0k | { | 5994 | 82.0k | std::deque<node_ptr_t> node_list; | 5995 | 82.0k | node_list.push_back(root); | 5996 | 82.0k | node_delete_list.push_back(&root); | 5997 | | | 5998 | 82.0k | noderef_list_t child_node_delete_list; | 5999 | 82.0k | child_node_delete_list.reserve(1000); | 6000 | | | 6001 | 250k | while (!node_list.empty()) | 6002 | 168k | { | 6003 | 168k | node_list.front()->collect_nodes(child_node_delete_list); | 6004 | | | 6005 | 168k | if (!child_node_delete_list.empty()) | 6006 | 58.9k | { | 6007 | 145k | for (std::size_t i = 0; i < child_node_delete_list.size(); ++i) | 6008 | 86.8k | { | 6009 | 86.8k | node_pp_t& node = child_node_delete_list[i]; | 6010 | | | 6011 | 86.8k | if (0 == (*node)) | 6012 | 0 | { | 6013 | 0 | exprtk_debug(("ncd::collect_nodes() - null node encountered.\n")); | 6014 | 0 | } | 6015 | | | 6016 | 86.8k | node_list.push_back(*node); | 6017 | 86.8k | } | 6018 | | | 6019 | 58.9k | node_delete_list.insert( | 6020 | 58.9k | node_delete_list.end(), | 6021 | 58.9k | child_node_delete_list.begin(), child_node_delete_list.end()); | 6022 | | | 6023 | 58.9k | child_node_delete_list.clear(); | 6024 | 58.9k | } | 6025 | | | 6026 | 168k | node_list.pop_front(); | 6027 | 168k | } | 6028 | | | 6029 | 82.0k | std::reverse(node_delete_list.begin(), node_delete_list.end()); | 6030 | 82.0k | } |
|
6031 | | }; |
6032 | | |
6033 | | template <typename NodeAllocator, typename T, std::size_t N> |
6034 | | inline void free_all_nodes(NodeAllocator& node_allocator, expression_node<T>* (&b)[N]) |
6035 | 240 | { |
6036 | 720 | for (std::size_t i = 0; i < N; ++i) |
6037 | 480 | { |
6038 | 480 | free_node(node_allocator,b[i]); |
6039 | 480 | } |
6040 | 240 | } 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 | 6035 | 120 | { | 6036 | 360 | for (std::size_t i = 0; i < N; ++i) | 6037 | 240 | { | 6038 | 240 | free_node(node_allocator,b[i]); | 6039 | 240 | } | 6040 | 120 | } |
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 | 6035 | 120 | { | 6036 | 360 | for (std::size_t i = 0; i < N; ++i) | 6037 | 240 | { | 6038 | 240 | free_node(node_allocator,b[i]); | 6039 | 240 | } | 6040 | 120 | } |
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]) |
6041 | | |
6042 | | template <typename NodeAllocator, |
6043 | | typename T, |
6044 | | typename Allocator, |
6045 | | template <typename, typename> class Sequence> |
6046 | | inline void free_all_nodes(NodeAllocator& node_allocator, Sequence<expression_node<T>*,Allocator>& b) |
6047 | 0 | { |
6048 | 0 | for (std::size_t i = 0; i < b.size(); ++i) |
6049 | 0 | { |
6050 | 0 | free_node(node_allocator,b[i]); |
6051 | 0 | } |
6052 | |
|
6053 | 0 | b.clear(); |
6054 | 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>*> >&) |
6055 | | |
6056 | | template <typename NodeAllocator, typename T> |
6057 | | inline void free_node(NodeAllocator&, expression_node<T>*& node) |
6058 | 218k | { |
6059 | 218k | if ((0 == node) || is_variable_node(node) || is_string_node(node)) |
6060 | 5.01k | { |
6061 | 5.01k | return; |
6062 | 5.01k | } |
6063 | | |
6064 | 213k | node_collection_destructor<expression_node<T> > |
6065 | 213k | ::delete_nodes(node); |
6066 | 213k | } void exprtk::details::free_node<exprtk::details::node_allocator, double>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>*&) Line | Count | Source | 6058 | 143k | { | 6059 | 143k | if ((0 == node) || is_variable_node(node) || is_string_node(node)) | 6060 | 2.51k | { | 6061 | 2.51k | return; | 6062 | 2.51k | } | 6063 | | | 6064 | 141k | node_collection_destructor<expression_node<T> > | 6065 | 141k | ::delete_nodes(node); | 6066 | 141k | } |
void exprtk::details::free_node<exprtk::details::node_allocator, float>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>*&) Line | Count | Source | 6058 | 74.9k | { | 6059 | 74.9k | if ((0 == node) || is_variable_node(node) || is_string_node(node)) | 6060 | 2.49k | { | 6061 | 2.49k | return; | 6062 | 2.49k | } | 6063 | | | 6064 | 72.4k | node_collection_destructor<expression_node<T> > | 6065 | 72.4k | ::delete_nodes(node); | 6066 | 72.4k | } |
|
6067 | | |
6068 | | template <typename T> |
6069 | | inline void destroy_node(expression_node<T>*& node) |
6070 | 19.2k | { |
6071 | 19.2k | if (0 != node) |
6072 | 19.2k | { |
6073 | 19.2k | node_collection_destructor<expression_node<T> > |
6074 | 19.2k | ::delete_nodes(node); |
6075 | 19.2k | } |
6076 | 19.2k | } void exprtk::details::destroy_node<double>(exprtk::details::expression_node<double>*&) Line | Count | Source | 6070 | 9.63k | { | 6071 | 9.63k | if (0 != node) | 6072 | 9.63k | { | 6073 | 9.63k | node_collection_destructor<expression_node<T> > | 6074 | 9.63k | ::delete_nodes(node); | 6075 | 9.63k | } | 6076 | 9.63k | } |
void exprtk::details::destroy_node<float>(exprtk::details::expression_node<float>*&) Line | Count | Source | 6070 | 9.62k | { | 6071 | 9.62k | if (0 != node) | 6072 | 9.62k | { | 6073 | 9.62k | node_collection_destructor<expression_node<T> > | 6074 | 9.62k | ::delete_nodes(node); | 6075 | 9.62k | } | 6076 | 9.62k | } |
|
6077 | | |
6078 | | template <typename Node> |
6079 | | struct node_depth_base |
6080 | | { |
6081 | | typedef Node* node_ptr_t; |
6082 | | typedef std::pair<node_ptr_t,bool> nb_pair_t; |
6083 | | |
6084 | | node_depth_base() |
6085 | 587k | : depth_set(false) |
6086 | 587k | , depth(0) |
6087 | 587k | {} exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::node_depth_base() Line | Count | Source | 6085 | 372k | : depth_set(false) | 6086 | 372k | , depth(0) | 6087 | 372k | {} |
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::node_depth_base() Line | Count | Source | 6085 | 214k | : depth_set(false) | 6086 | 214k | , depth(0) | 6087 | 214k | {} |
|
6088 | | |
6089 | | virtual ~node_depth_base() |
6090 | 587k | {} exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::~node_depth_base() Line | Count | Source | 6090 | 372k | {} |
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::~node_depth_base() Line | Count | Source | 6090 | 214k | {} |
|
6091 | | |
6092 | 757k | 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 | 6092 | 496k | 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 | 6092 | 261k | virtual std::size_t node_depth() const { return 1; } |
|
6093 | | |
6094 | | std::size_t compute_node_depth(const Node* const& node) const |
6095 | 486 | { |
6096 | 486 | if (!depth_set) |
6097 | 65 | { |
6098 | 65 | depth = 1 + (node ? node->node_depth() : 0); |
6099 | 65 | depth_set = true; |
6100 | 65 | } |
6101 | | |
6102 | 486 | return depth; |
6103 | 486 | } exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth(exprtk::details::expression_node<double> const* const&) const Line | Count | Source | 6095 | 247 | { | 6096 | 247 | if (!depth_set) | 6097 | 33 | { | 6098 | 33 | depth = 1 + (node ? node->node_depth() : 0); | 6099 | 33 | depth_set = true; | 6100 | 33 | } | 6101 | | | 6102 | 247 | return depth; | 6103 | 247 | } |
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth(exprtk::details::expression_node<float> const* const&) const Line | Count | Source | 6095 | 239 | { | 6096 | 239 | if (!depth_set) | 6097 | 32 | { | 6098 | 32 | depth = 1 + (node ? node->node_depth() : 0); | 6099 | 32 | depth_set = true; | 6100 | 32 | } | 6101 | | | 6102 | 239 | return depth; | 6103 | 239 | } |
|
6104 | | |
6105 | | std::size_t compute_node_depth(const nb_pair_t& branch) const |
6106 | 212k | { |
6107 | 212k | if (!depth_set) |
6108 | 95.7k | { |
6109 | 95.7k | depth = 1 + (branch.first ? branch.first->node_depth() : 0); |
6110 | 95.7k | depth_set = true; |
6111 | 95.7k | } |
6112 | | |
6113 | 212k | return depth; |
6114 | 212k | } 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 | 6106 | 147k | { | 6107 | 147k | if (!depth_set) | 6108 | 64.9k | { | 6109 | 64.9k | depth = 1 + (branch.first ? branch.first->node_depth() : 0); | 6110 | 64.9k | depth_set = true; | 6111 | 64.9k | } | 6112 | | | 6113 | 147k | return depth; | 6114 | 147k | } |
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 | 6106 | 64.6k | { | 6107 | 64.6k | if (!depth_set) | 6108 | 30.8k | { | 6109 | 30.8k | depth = 1 + (branch.first ? branch.first->node_depth() : 0); | 6110 | 30.8k | depth_set = true; | 6111 | 30.8k | } | 6112 | | | 6113 | 64.6k | return depth; | 6114 | 64.6k | } |
|
6115 | | |
6116 | | template <std::size_t N> |
6117 | | std::size_t compute_node_depth(const nb_pair_t (&branch)[N]) const |
6118 | 174k | { |
6119 | 174k | if (!depth_set) |
6120 | 84.1k | { |
6121 | 84.1k | depth = 0; |
6122 | | |
6123 | 252k | for (std::size_t i = 0; i < N; ++i) |
6124 | 168k | { |
6125 | 168k | if (branch[i].first) |
6126 | 168k | { |
6127 | 168k | depth = std::max(depth,branch[i].first->node_depth()); |
6128 | 168k | } |
6129 | 168k | } |
6130 | | |
6131 | 84.1k | depth += 1; |
6132 | 84.1k | depth_set = true; |
6133 | 84.1k | } |
6134 | | |
6135 | 174k | return depth; |
6136 | 174k | } 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 | 6118 | 115k | { | 6119 | 115k | if (!depth_set) | 6120 | 55.8k | { | 6121 | 55.8k | depth = 0; | 6122 | | | 6123 | 167k | for (std::size_t i = 0; i < N; ++i) | 6124 | 111k | { | 6125 | 111k | if (branch[i].first) | 6126 | 111k | { | 6127 | 111k | depth = std::max(depth,branch[i].first->node_depth()); | 6128 | 111k | } | 6129 | 111k | } | 6130 | | | 6131 | 55.8k | depth += 1; | 6132 | 55.8k | depth_set = true; | 6133 | 55.8k | } | 6134 | | | 6135 | 115k | return depth; | 6136 | 115k | } |
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 | 6118 | 303 | { | 6119 | 303 | if (!depth_set) | 6120 | 101 | { | 6121 | 101 | depth = 0; | 6122 | | | 6123 | 404 | for (std::size_t i = 0; i < N; ++i) | 6124 | 303 | { | 6125 | 303 | if (branch[i].first) | 6126 | 303 | { | 6127 | 303 | depth = std::max(depth,branch[i].first->node_depth()); | 6128 | 303 | } | 6129 | 303 | } | 6130 | | | 6131 | 101 | depth += 1; | 6132 | 101 | depth_set = true; | 6133 | 101 | } | 6134 | | | 6135 | 303 | return depth; | 6136 | 303 | } |
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 | 6118 | 58.8k | { | 6119 | 58.8k | if (!depth_set) | 6120 | 28.1k | { | 6121 | 28.1k | depth = 0; | 6122 | | | 6123 | 84.3k | for (std::size_t i = 0; i < N; ++i) | 6124 | 56.2k | { | 6125 | 56.2k | if (branch[i].first) | 6126 | 56.2k | { | 6127 | 56.2k | depth = std::max(depth,branch[i].first->node_depth()); | 6128 | 56.2k | } | 6129 | 56.2k | } | 6130 | | | 6131 | 28.1k | depth += 1; | 6132 | 28.1k | depth_set = true; | 6133 | 28.1k | } | 6134 | | | 6135 | 58.8k | return depth; | 6136 | 58.8k | } |
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 | 6118 | 303 | { | 6119 | 303 | if (!depth_set) | 6120 | 101 | { | 6121 | 101 | depth = 0; | 6122 | | | 6123 | 404 | for (std::size_t i = 0; i < N; ++i) | 6124 | 303 | { | 6125 | 303 | if (branch[i].first) | 6126 | 303 | { | 6127 | 303 | depth = std::max(depth,branch[i].first->node_depth()); | 6128 | 303 | } | 6129 | 303 | } | 6130 | | | 6131 | 101 | depth += 1; | 6132 | 101 | depth_set = true; | 6133 | 101 | } | 6134 | | | 6135 | 303 | return depth; | 6136 | 303 | } |
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 |
6137 | | |
6138 | | template <typename BranchType> |
6139 | | std::size_t max_node_depth(const BranchType& n0, const BranchType& n1) const |
6140 | 2 | { |
6141 | 2 | return std::max(compute_node_depth(n0), compute_node_depth(n1)); |
6142 | 2 | } 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 Line | Count | Source | 6140 | 1 | { | 6141 | 1 | return std::max(compute_node_depth(n0), compute_node_depth(n1)); | 6142 | 1 | } |
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 Line | Count | Source | 6140 | 1 | { | 6141 | 1 | return std::max(compute_node_depth(n0), compute_node_depth(n1)); | 6142 | 1 | } |
|
6143 | | |
6144 | | template <typename BranchType> |
6145 | | std::size_t max_node_depth(const BranchType& n0, const BranchType& n1, const BranchType& n2) const |
6146 | 88 | { |
6147 | 88 | return std::max(compute_node_depth(n0), |
6148 | 88 | std::max(compute_node_depth(n1), compute_node_depth(n2))); |
6149 | 88 | } 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 | 6146 | 44 | { | 6147 | 44 | return std::max(compute_node_depth(n0), | 6148 | 44 | std::max(compute_node_depth(n1), compute_node_depth(n2))); | 6149 | 44 | } |
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 | 6146 | 44 | { | 6147 | 44 | return std::max(compute_node_depth(n0), | 6148 | 44 | std::max(compute_node_depth(n1), compute_node_depth(n2))); | 6149 | 44 | } |
|
6150 | | |
6151 | | template <typename BranchType> |
6152 | | std::size_t max_node_depth(const BranchType& n0, const BranchType& n1, |
6153 | | const BranchType& n2, const BranchType& n3) const |
6154 | 0 | { |
6155 | 0 | return std::max( |
6156 | 0 | std::max(compute_node_depth(n0), compute_node_depth(n1)), |
6157 | 0 | std::max(compute_node_depth(n2), compute_node_depth(n3))); |
6158 | 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 |
6159 | | |
6160 | | template <typename BranchType> |
6161 | | std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1) const |
6162 | 2 | { |
6163 | 2 | if (!depth_set) |
6164 | 2 | { |
6165 | 2 | depth = 1 + max_node_depth(n0, n1); |
6166 | 2 | depth_set = true; |
6167 | 2 | } |
6168 | | |
6169 | 2 | return depth; |
6170 | 2 | } 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 Line | Count | Source | 6162 | 1 | { | 6163 | 1 | if (!depth_set) | 6164 | 1 | { | 6165 | 1 | depth = 1 + max_node_depth(n0, n1); | 6166 | 1 | depth_set = true; | 6167 | 1 | } | 6168 | | | 6169 | 1 | return depth; | 6170 | 1 | } |
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 Line | Count | Source | 6162 | 1 | { | 6163 | 1 | if (!depth_set) | 6164 | 1 | { | 6165 | 1 | depth = 1 + max_node_depth(n0, n1); | 6166 | 1 | depth_set = true; | 6167 | 1 | } | 6168 | | | 6169 | 1 | return depth; | 6170 | 1 | } |
|
6171 | | |
6172 | | template <typename BranchType> |
6173 | | std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1, |
6174 | | const BranchType& n2) const |
6175 | 186 | { |
6176 | 186 | if (!depth_set) |
6177 | 88 | { |
6178 | 88 | depth = 1 + max_node_depth(n0, n1, n2); |
6179 | 88 | depth_set = true; |
6180 | 88 | } |
6181 | | |
6182 | 186 | return depth; |
6183 | 186 | } 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 | 6175 | 93 | { | 6176 | 93 | if (!depth_set) | 6177 | 44 | { | 6178 | 44 | depth = 1 + max_node_depth(n0, n1, n2); | 6179 | 44 | depth_set = true; | 6180 | 44 | } | 6181 | | | 6182 | 93 | return depth; | 6183 | 93 | } |
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 | 6175 | 93 | { | 6176 | 93 | if (!depth_set) | 6177 | 44 | { | 6178 | 44 | depth = 1 + max_node_depth(n0, n1, n2); | 6179 | 44 | depth_set = true; | 6180 | 44 | } | 6181 | | | 6182 | 93 | return depth; | 6183 | 93 | } |
|
6184 | | |
6185 | | template <typename BranchType> |
6186 | | std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1, |
6187 | | const BranchType& n2, const BranchType& n3) const |
6188 | 0 | { |
6189 | 0 | if (!depth_set) |
6190 | 0 | { |
6191 | 0 | depth = 1 + max_node_depth(n0, n1, n2, n3); |
6192 | 0 | depth_set = true; |
6193 | 0 | } |
6194 | |
|
6195 | 0 | return depth; |
6196 | 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 |
6197 | | |
6198 | | template <typename Allocator, |
6199 | | template <typename, typename> class Sequence> |
6200 | | std::size_t compute_node_depth(const Sequence<node_ptr_t, Allocator>& branch_list) const |
6201 | 0 | { |
6202 | 0 | if (!depth_set) |
6203 | 0 | { |
6204 | 0 | for (std::size_t i = 0; i < branch_list.size(); ++i) |
6205 | 0 | { |
6206 | 0 | if (branch_list[i]) |
6207 | 0 | { |
6208 | 0 | depth = std::max(depth, compute_node_depth(branch_list[i])); |
6209 | 0 | } |
6210 | 0 | } |
6211 | |
|
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::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 |
6217 | | |
6218 | | template <typename Allocator, |
6219 | | template <typename, typename> class Sequence> |
6220 | | std::size_t compute_node_depth(const Sequence<nb_pair_t,Allocator>& branch_list) const |
6221 | 107 | { |
6222 | 107 | if (!depth_set) |
6223 | 65 | { |
6224 | 551 | for (std::size_t i = 0; i < branch_list.size(); ++i) |
6225 | 486 | { |
6226 | 486 | if (branch_list[i].first) |
6227 | 486 | { |
6228 | 486 | depth = std::max(depth, compute_node_depth(branch_list[i].first)); |
6229 | 486 | } |
6230 | 486 | } |
6231 | | |
6232 | 65 | depth_set = true; |
6233 | 65 | } |
6234 | | |
6235 | 107 | return depth; |
6236 | 107 | } 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 | 6221 | 54 | { | 6222 | 54 | if (!depth_set) | 6223 | 33 | { | 6224 | 280 | for (std::size_t i = 0; i < branch_list.size(); ++i) | 6225 | 247 | { | 6226 | 247 | if (branch_list[i].first) | 6227 | 247 | { | 6228 | 247 | depth = std::max(depth, compute_node_depth(branch_list[i].first)); | 6229 | 247 | } | 6230 | 247 | } | 6231 | | | 6232 | 33 | depth_set = true; | 6233 | 33 | } | 6234 | | | 6235 | 54 | return depth; | 6236 | 54 | } |
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 | 6221 | 53 | { | 6222 | 53 | if (!depth_set) | 6223 | 32 | { | 6224 | 271 | for (std::size_t i = 0; i < branch_list.size(); ++i) | 6225 | 239 | { | 6226 | 239 | if (branch_list[i].first) | 6227 | 239 | { | 6228 | 239 | depth = std::max(depth, compute_node_depth(branch_list[i].first)); | 6229 | 239 | } | 6230 | 239 | } | 6231 | | | 6232 | 32 | depth_set = true; | 6233 | 32 | } | 6234 | | | 6235 | 53 | return depth; | 6236 | 53 | } |
|
6237 | | |
6238 | | mutable bool depth_set; |
6239 | | mutable std::size_t depth; |
6240 | | |
6241 | | template <typename NodeSequence> |
6242 | | void collect(node_ptr_t const& node, |
6243 | | const bool deletable, |
6244 | | NodeSequence& delete_node_list) const |
6245 | 264k | { |
6246 | 264k | if ((0 != node) && deletable) |
6247 | 263k | { |
6248 | 263k | delete_node_list.push_back(const_cast<node_ptr_t*>(&node)); |
6249 | 263k | } |
6250 | 264k | } 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 | 6245 | 177k | { | 6246 | 177k | if ((0 != node) && deletable) | 6247 | 176k | { | 6248 | 176k | delete_node_list.push_back(const_cast<node_ptr_t*>(&node)); | 6249 | 176k | } | 6250 | 177k | } |
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 | 6245 | 87.6k | { | 6246 | 87.6k | if ((0 != node) && deletable) | 6247 | 86.8k | { | 6248 | 86.8k | delete_node_list.push_back(const_cast<node_ptr_t*>(&node)); | 6249 | 86.8k | } | 6250 | 87.6k | } |
|
6251 | | |
6252 | | template <typename NodeSequence> |
6253 | | void collect(const nb_pair_t& branch, |
6254 | | NodeSequence& delete_node_list) const |
6255 | 95.9k | { |
6256 | 95.9k | collect(branch.first, branch.second, delete_node_list); |
6257 | 95.9k | } 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 | 6255 | 65.0k | { | 6256 | 65.0k | collect(branch.first, branch.second, delete_node_list); | 6257 | 65.0k | } |
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 | 6255 | 30.9k | { | 6256 | 30.9k | collect(branch.first, branch.second, delete_node_list); | 6257 | 30.9k | } |
|
6258 | | |
6259 | | template <typename NodeSequence> |
6260 | | void collect(Node*& node, |
6261 | | NodeSequence& delete_node_list) const |
6262 | | { |
6263 | | collect(node, branch_deletable(node), delete_node_list); |
6264 | | } |
6265 | | |
6266 | | template <std::size_t N, typename NodeSequence> |
6267 | | void collect(const nb_pair_t(&branch)[N], |
6268 | | NodeSequence& delete_node_list) const |
6269 | 84.1k | { |
6270 | 252k | for (std::size_t i = 0; i < N; ++i) |
6271 | 168k | { |
6272 | 168k | collect(branch[i].first, branch[i].second, delete_node_list); |
6273 | 168k | } |
6274 | 84.1k | } 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 | 6269 | 55.8k | { | 6270 | 167k | for (std::size_t i = 0; i < N; ++i) | 6271 | 111k | { | 6272 | 111k | collect(branch[i].first, branch[i].second, delete_node_list); | 6273 | 111k | } | 6274 | 55.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 | 6269 | 101 | { | 6270 | 404 | for (std::size_t i = 0; i < N; ++i) | 6271 | 303 | { | 6272 | 303 | collect(branch[i].first, branch[i].second, delete_node_list); | 6273 | 303 | } | 6274 | 101 | } |
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 | 6269 | 28.1k | { | 6270 | 84.3k | for (std::size_t i = 0; i < N; ++i) | 6271 | 56.2k | { | 6272 | 56.2k | collect(branch[i].first, branch[i].second, delete_node_list); | 6273 | 56.2k | } | 6274 | 28.1k | } |
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 | 6269 | 101 | { | 6270 | 404 | for (std::size_t i = 0; i < N; ++i) | 6271 | 303 | { | 6272 | 303 | collect(branch[i].first, branch[i].second, delete_node_list); | 6273 | 303 | } | 6274 | 101 | } |
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 |
6275 | | |
6276 | | template <typename Allocator, |
6277 | | template <typename, typename> class Sequence, |
6278 | | typename NodeSequence> |
6279 | | void collect(const Sequence<nb_pair_t, Allocator>& branch, |
6280 | | NodeSequence& delete_node_list) const |
6281 | 65 | { |
6282 | 551 | for (std::size_t i = 0; i < branch.size(); ++i) |
6283 | 486 | { |
6284 | 486 | collect(branch[i].first, branch[i].second, delete_node_list); |
6285 | 486 | } |
6286 | 65 | } 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 | 6281 | 33 | { | 6282 | 280 | for (std::size_t i = 0; i < branch.size(); ++i) | 6283 | 247 | { | 6284 | 247 | collect(branch[i].first, branch[i].second, delete_node_list); | 6285 | 247 | } | 6286 | 33 | } |
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 | 6281 | 32 | { | 6282 | 271 | for (std::size_t i = 0; i < branch.size(); ++i) | 6283 | 239 | { | 6284 | 239 | collect(branch[i].first, branch[i].second, delete_node_list); | 6285 | 239 | } | 6286 | 32 | } |
|
6287 | | |
6288 | | template <typename Allocator, |
6289 | | template <typename, typename> class Sequence, |
6290 | | typename NodeSequence> |
6291 | | void collect(const Sequence<node_ptr_t, Allocator>& branch_list, |
6292 | | NodeSequence& delete_node_list) const |
6293 | 0 | { |
6294 | 0 | for (std::size_t i = 0; i < branch_list.size(); ++i) |
6295 | 0 | { |
6296 | 0 | collect(branch_list[i], branch_deletable(branch_list[i]), delete_node_list); |
6297 | 0 | } |
6298 | 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 |
6299 | | |
6300 | | template <typename Boolean, |
6301 | | typename AllocatorT, |
6302 | | typename AllocatorB, |
6303 | | template <typename, typename> class Sequence, |
6304 | | typename NodeSequence> |
6305 | | void collect(const Sequence<node_ptr_t, AllocatorT>& branch_list, |
6306 | | const Sequence<Boolean, AllocatorB>& branch_deletable_list, |
6307 | | NodeSequence& delete_node_list) const |
6308 | | { |
6309 | | for (std::size_t i = 0; i < branch_list.size(); ++i) |
6310 | | { |
6311 | | collect(branch_list[i], branch_deletable_list[i], delete_node_list); |
6312 | | } |
6313 | | } |
6314 | | }; |
6315 | | |
6316 | | template <typename Type> |
6317 | | class vector_holder |
6318 | | { |
6319 | | private: |
6320 | | |
6321 | | typedef Type value_type; |
6322 | | typedef value_type* value_ptr; |
6323 | | typedef const value_ptr const_value_ptr; |
6324 | | typedef vector_holder<Type> vector_holder_t; |
6325 | | |
6326 | | class vector_holder_base |
6327 | | { |
6328 | | public: |
6329 | | |
6330 | | virtual ~vector_holder_base() |
6331 | 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() |
6332 | | |
6333 | | inline value_ptr operator[](const std::size_t& index) const |
6334 | 0 | { |
6335 | 0 | return value_at(index); |
6336 | 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 |
6337 | | |
6338 | | inline std::size_t size() const |
6339 | 0 | { |
6340 | 0 | return vector_size(); |
6341 | 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 |
6342 | | |
6343 | | inline std::size_t base_size() const |
6344 | 0 | { |
6345 | 0 | return vector_base_size(); |
6346 | 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 |
6347 | | |
6348 | | inline value_ptr data() const |
6349 | 0 | { |
6350 | 0 | return value_at(0); |
6351 | 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 |
6352 | | |
6353 | | virtual inline bool rebaseable() const |
6354 | 0 | { |
6355 | 0 | return false; |
6356 | 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 |
6357 | | |
6358 | | virtual void set_ref(value_ptr*) |
6359 | 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**) |
6360 | | |
6361 | | virtual void remove_ref(value_ptr*) |
6362 | 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**) |
6363 | | |
6364 | | virtual vector_view<Type>* rebaseable_instance() |
6365 | 0 | { |
6366 | 0 | return reinterpret_cast<vector_view<Type>*>(0); |
6367 | 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() |
6368 | | |
6369 | | protected: |
6370 | | |
6371 | | virtual value_ptr value_at(const std::size_t&) const = 0; |
6372 | | virtual std::size_t vector_size() const = 0; |
6373 | | virtual std::size_t vector_base_size() const = 0; |
6374 | | }; |
6375 | | |
6376 | | class array_vector_impl exprtk_final : public vector_holder_base |
6377 | | { |
6378 | | public: |
6379 | | |
6380 | | array_vector_impl(const Type* vec, const std::size_t& vec_size) |
6381 | 0 | : vec_(vec) |
6382 | 0 | , size_(vec_size) |
6383 | 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&) |
6384 | | |
6385 | | protected: |
6386 | | |
6387 | | value_ptr value_at(const std::size_t& index) const exprtk_override |
6388 | 0 | { |
6389 | 0 | assert(index < size_); |
6390 | 0 | return const_cast<const_value_ptr>(vec_ + index); |
6391 | 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 |
6392 | | |
6393 | | std::size_t vector_size() const exprtk_override |
6394 | 0 | { |
6395 | 0 | return size_; |
6396 | 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 |
6397 | | |
6398 | | std::size_t vector_base_size() const exprtk_override |
6399 | 0 | { |
6400 | 0 | return vector_size(); |
6401 | 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 |
6402 | | |
6403 | | private: |
6404 | | |
6405 | | array_vector_impl(const array_vector_impl&) exprtk_delete; |
6406 | | array_vector_impl& operator=(const array_vector_impl&) exprtk_delete; |
6407 | | |
6408 | | const Type* vec_; |
6409 | | const std::size_t size_; |
6410 | | }; |
6411 | | |
6412 | | template <typename Allocator, |
6413 | | template <typename, typename> class Sequence> |
6414 | | class sequence_vector_impl exprtk_final : public vector_holder_base |
6415 | | { |
6416 | | public: |
6417 | | |
6418 | | typedef Sequence<Type,Allocator> sequence_t; |
6419 | | |
6420 | | explicit sequence_vector_impl(sequence_t& seq) |
6421 | | : sequence_(seq) |
6422 | | {} |
6423 | | |
6424 | | protected: |
6425 | | |
6426 | | value_ptr value_at(const std::size_t& index) const exprtk_override |
6427 | | { |
6428 | | assert(index < sequence_.size()); |
6429 | | return (&sequence_[index]); |
6430 | | } |
6431 | | |
6432 | | std::size_t vector_size() const exprtk_override |
6433 | | { |
6434 | | return sequence_.size(); |
6435 | | } |
6436 | | |
6437 | | std::size_t vector_base_size() const exprtk_override |
6438 | | { |
6439 | | return vector_size(); |
6440 | | } |
6441 | | |
6442 | | private: |
6443 | | |
6444 | | sequence_vector_impl(const sequence_vector_impl&) exprtk_delete; |
6445 | | sequence_vector_impl& operator=(const sequence_vector_impl&) exprtk_delete; |
6446 | | |
6447 | | sequence_t& sequence_; |
6448 | | }; |
6449 | | |
6450 | | class vector_view_impl exprtk_final : public vector_holder_base |
6451 | | { |
6452 | | public: |
6453 | | |
6454 | | typedef exprtk::vector_view<Type> vector_view_t; |
6455 | | |
6456 | | vector_view_impl(vector_view_t& vec_view) |
6457 | | : vec_view_(vec_view) |
6458 | | { |
6459 | | assert(vec_view_.size() > 0); |
6460 | | } |
6461 | | |
6462 | | void set_ref(value_ptr* ref) exprtk_override |
6463 | | { |
6464 | | vec_view_.set_ref(ref); |
6465 | | } |
6466 | | |
6467 | | void remove_ref(value_ptr* ref) exprtk_override |
6468 | | { |
6469 | | vec_view_.remove_ref(ref); |
6470 | | } |
6471 | | |
6472 | | bool rebaseable() const exprtk_override |
6473 | | { |
6474 | | return true; |
6475 | | } |
6476 | | |
6477 | | vector_view<Type>* rebaseable_instance() exprtk_override |
6478 | | { |
6479 | | return &vec_view_; |
6480 | | } |
6481 | | |
6482 | | protected: |
6483 | | |
6484 | | value_ptr value_at(const std::size_t& index) const exprtk_override |
6485 | | { |
6486 | | assert(index < vec_view_.size()); |
6487 | | return (&vec_view_[index]); |
6488 | | } |
6489 | | |
6490 | | std::size_t vector_size() const exprtk_override |
6491 | | { |
6492 | | return vec_view_.size(); |
6493 | | } |
6494 | | |
6495 | | std::size_t vector_base_size() const exprtk_override |
6496 | | { |
6497 | | return vec_view_.base_size(); |
6498 | | } |
6499 | | |
6500 | | private: |
6501 | | |
6502 | | vector_view_impl(const vector_view_impl&) exprtk_delete; |
6503 | | vector_view_impl& operator=(const vector_view_impl&) exprtk_delete; |
6504 | | |
6505 | | vector_view_t& vec_view_; |
6506 | | }; |
6507 | | |
6508 | | class resizable_vector_impl exprtk_final : public vector_holder_base |
6509 | | { |
6510 | | public: |
6511 | | |
6512 | | resizable_vector_impl(vector_holder& vec_view_holder, |
6513 | | const Type* vec, |
6514 | | const std::size_t& vec_size) |
6515 | 0 | : vec_(vec) |
6516 | 0 | , size_(vec_size) |
6517 | 0 | , vec_view_holder_(*vec_view_holder.rebaseable_instance()) |
6518 | 0 | { |
6519 | 0 | assert(vec_view_holder.rebaseable_instance()); |
6520 | 0 | assert(size_ <= vector_base_size()); |
6521 | 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&) |
6522 | | |
6523 | | virtual ~resizable_vector_impl() |
6524 | | {} |
6525 | | |
6526 | | protected: |
6527 | | |
6528 | | value_ptr value_at(const std::size_t& index) const exprtk_override |
6529 | 0 | { |
6530 | 0 | assert(index < vector_size()); |
6531 | 0 | return const_cast<const_value_ptr>(vec_ + index); |
6532 | 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 |
6533 | | |
6534 | | std::size_t vector_size() const exprtk_override |
6535 | 0 | { |
6536 | 0 | return vec_view_holder_.size(); |
6537 | 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 |
6538 | | |
6539 | | std::size_t vector_base_size() const exprtk_override |
6540 | 0 | { |
6541 | 0 | return vec_view_holder_.base_size(); |
6542 | 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 |
6543 | | |
6544 | | bool rebaseable() const exprtk_override |
6545 | 0 | { |
6546 | 0 | return true; |
6547 | 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 |
6548 | | |
6549 | | virtual vector_view<Type>* rebaseable_instance() exprtk_override |
6550 | 0 | { |
6551 | 0 | return &vec_view_holder_; |
6552 | 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() |
6553 | | |
6554 | | private: |
6555 | | |
6556 | | resizable_vector_impl(const resizable_vector_impl&) exprtk_delete; |
6557 | | resizable_vector_impl& operator=(const resizable_vector_impl&) exprtk_delete; |
6558 | | |
6559 | | const Type* vec_; |
6560 | | const std::size_t size_; |
6561 | | vector_view<Type>& vec_view_holder_; |
6562 | | }; |
6563 | | |
6564 | | public: |
6565 | | |
6566 | | typedef typename details::vec_data_store<Type> vds_t; |
6567 | | |
6568 | | vector_holder(Type* vec, const std::size_t& vec_size) |
6569 | 0 | : vector_holder_base_(new(buffer)array_vector_impl(vec,vec_size)) |
6570 | 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&) |
6571 | | |
6572 | | explicit vector_holder(const vds_t& vds) |
6573 | 0 | : vector_holder_base_(new(buffer)array_vector_impl(vds.data(),vds.size())) |
6574 | 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&) |
6575 | | |
6576 | | template <typename Allocator> |
6577 | | explicit vector_holder(std::vector<Type,Allocator>& vec) |
6578 | | : vector_holder_base_(new(buffer)sequence_vector_impl<Allocator,std::vector>(vec)) |
6579 | | {} |
6580 | | |
6581 | | explicit vector_holder(exprtk::vector_view<Type>& vec) |
6582 | | : vector_holder_base_(new(buffer)vector_view_impl(vec)) |
6583 | | {} |
6584 | | |
6585 | | explicit vector_holder(vector_holder_t& vec_holder, const vds_t& vds) |
6586 | 0 | : vector_holder_base_(new(buffer)resizable_vector_impl(vec_holder, vds.data(), vds.size())) |
6587 | 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&) |
6588 | | |
6589 | | inline value_ptr operator[](const std::size_t& index) const |
6590 | 0 | { |
6591 | 0 | return (*vector_holder_base_)[index]; |
6592 | 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 |
6593 | | |
6594 | | inline std::size_t size() const |
6595 | 0 | { |
6596 | 0 | return vector_holder_base_->size(); |
6597 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::size() const Unexecuted instantiation: exprtk::details::vector_holder<float>::size() const |
6598 | | |
6599 | | inline std::size_t base_size() const |
6600 | 0 | { |
6601 | 0 | return vector_holder_base_->base_size(); |
6602 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::base_size() const Unexecuted instantiation: exprtk::details::vector_holder<float>::base_size() const |
6603 | | |
6604 | | inline value_ptr data() const |
6605 | 0 | { |
6606 | 0 | return vector_holder_base_->data(); |
6607 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::data() const Unexecuted instantiation: exprtk::details::vector_holder<float>::data() const |
6608 | | |
6609 | | void set_ref(value_ptr* ref) |
6610 | 0 | { |
6611 | 0 | if (rebaseable()) |
6612 | 0 | { |
6613 | 0 | vector_holder_base_->set_ref(ref); |
6614 | 0 | } |
6615 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::set_ref(double**) Unexecuted instantiation: exprtk::details::vector_holder<float>::set_ref(float**) |
6616 | | |
6617 | | void remove_ref(value_ptr* ref) |
6618 | 0 | { |
6619 | 0 | if (rebaseable()) |
6620 | 0 | { |
6621 | 0 | vector_holder_base_->remove_ref(ref); |
6622 | 0 | } |
6623 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::remove_ref(double**) Unexecuted instantiation: exprtk::details::vector_holder<float>::remove_ref(float**) |
6624 | | |
6625 | | bool rebaseable() const |
6626 | 0 | { |
6627 | 0 | return vector_holder_base_->rebaseable(); |
6628 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::rebaseable() const Unexecuted instantiation: exprtk::details::vector_holder<float>::rebaseable() const |
6629 | | |
6630 | | vector_view<Type>* rebaseable_instance() |
6631 | 0 | { |
6632 | 0 | return vector_holder_base_->rebaseable_instance(); |
6633 | 0 | } Unexecuted instantiation: exprtk::details::vector_holder<double>::rebaseable_instance() Unexecuted instantiation: exprtk::details::vector_holder<float>::rebaseable_instance() |
6634 | | |
6635 | | private: |
6636 | | |
6637 | | vector_holder(const vector_holder<Type>&) exprtk_delete; |
6638 | | vector_holder<Type>& operator=(const vector_holder<Type>&) exprtk_delete; |
6639 | | |
6640 | | mutable vector_holder_base* vector_holder_base_; |
6641 | | uchar_t buffer[64]; |
6642 | | }; |
6643 | | |
6644 | | template <typename T> |
6645 | | class null_node exprtk_final : public expression_node<T> |
6646 | | { |
6647 | | public: |
6648 | | |
6649 | | inline T value() const exprtk_override |
6650 | 6 | { |
6651 | 6 | return std::numeric_limits<T>::quiet_NaN(); |
6652 | 6 | } exprtk::details::null_node<double>::value() const Line | Count | Source | 6650 | 3 | { | 6651 | 3 | return std::numeric_limits<T>::quiet_NaN(); | 6652 | 3 | } |
exprtk::details::null_node<float>::value() const Line | Count | Source | 6650 | 3 | { | 6651 | 3 | return std::numeric_limits<T>::quiet_NaN(); | 6652 | 3 | } |
|
6653 | | |
6654 | | inline typename expression_node<T>::node_type type() const exprtk_override |
6655 | 27.4k | { |
6656 | 27.4k | return expression_node<T>::e_null; |
6657 | 27.4k | } exprtk::details::null_node<double>::type() const Line | Count | Source | 6655 | 13.7k | { | 6656 | 13.7k | return expression_node<T>::e_null; | 6657 | 13.7k | } |
exprtk::details::null_node<float>::type() const Line | Count | Source | 6655 | 13.7k | { | 6656 | 13.7k | return expression_node<T>::e_null; | 6657 | 13.7k | } |
|
6658 | | }; |
6659 | | |
6660 | | template <typename T, std::size_t N> |
6661 | | inline void construct_branch_pair(std::pair<expression_node<T>*,bool> (&branch)[N], |
6662 | | expression_node<T>* b, |
6663 | | const std::size_t& index) |
6664 | 841k | { |
6665 | 841k | if (b && (index < N)) |
6666 | 168k | { |
6667 | 168k | branch[index] = std::make_pair(b,branch_deletable(b)); |
6668 | 168k | } |
6669 | 841k | } 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 | 6664 | 558k | { | 6665 | 558k | if (b && (index < N)) | 6666 | 111k | { | 6667 | 111k | branch[index] = std::make_pair(b,branch_deletable(b)); | 6668 | 111k | } | 6669 | 558k | } |
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 | 6664 | 1.01k | { | 6665 | 1.01k | if (b && (index < N)) | 6666 | 303 | { | 6667 | 303 | branch[index] = std::make_pair(b,branch_deletable(b)); | 6668 | 303 | } | 6669 | 1.01k | } |
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 | 6664 | 281k | { | 6665 | 281k | if (b && (index < N)) | 6666 | 56.2k | { | 6667 | 56.2k | branch[index] = std::make_pair(b,branch_deletable(b)); | 6668 | 56.2k | } | 6669 | 281k | } |
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 | 6664 | 1.01k | { | 6665 | 1.01k | if (b && (index < N)) | 6666 | 303 | { | 6667 | 303 | branch[index] = std::make_pair(b,branch_deletable(b)); | 6668 | 303 | } | 6669 | 1.01k | } |
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&) |
6670 | | |
6671 | | template <typename T> |
6672 | | inline void construct_branch_pair(std::pair<expression_node<T>*,bool>& branch, expression_node<T>* b) |
6673 | 96.3k | { |
6674 | 96.3k | if (b) |
6675 | 96.3k | { |
6676 | 96.3k | branch = std::make_pair(b,branch_deletable(b)); |
6677 | 96.3k | } |
6678 | 96.3k | } void exprtk::details::construct_branch_pair<double>(std::__1::pair<exprtk::details::expression_node<double>*, bool>&, exprtk::details::expression_node<double>*) Line | Count | Source | 6673 | 65.2k | { | 6674 | 65.2k | if (b) | 6675 | 65.2k | { | 6676 | 65.2k | branch = std::make_pair(b,branch_deletable(b)); | 6677 | 65.2k | } | 6678 | 65.2k | } |
void exprtk::details::construct_branch_pair<float>(std::__1::pair<exprtk::details::expression_node<float>*, bool>&, exprtk::details::expression_node<float>*) Line | Count | Source | 6673 | 31.1k | { | 6674 | 31.1k | if (b) | 6675 | 31.1k | { | 6676 | 31.1k | branch = std::make_pair(b,branch_deletable(b)); | 6677 | 31.1k | } | 6678 | 31.1k | } |
|
6679 | | |
6680 | | template <std::size_t N, typename T> |
6681 | | inline void init_branches(std::pair<expression_node<T>*,bool> (&branch)[N], |
6682 | | expression_node<T>* b0, |
6683 | | expression_node<T>* b1 = reinterpret_cast<expression_node<T>*>(0), |
6684 | | expression_node<T>* b2 = reinterpret_cast<expression_node<T>*>(0), |
6685 | | expression_node<T>* b3 = reinterpret_cast<expression_node<T>*>(0), |
6686 | | expression_node<T>* b4 = reinterpret_cast<expression_node<T>*>(0), |
6687 | | expression_node<T>* b5 = reinterpret_cast<expression_node<T>*>(0), |
6688 | | expression_node<T>* b6 = reinterpret_cast<expression_node<T>*>(0), |
6689 | | expression_node<T>* b7 = reinterpret_cast<expression_node<T>*>(0), |
6690 | | expression_node<T>* b8 = reinterpret_cast<expression_node<T>*>(0), |
6691 | | expression_node<T>* b9 = reinterpret_cast<expression_node<T>*>(0)) |
6692 | 84.1k | { |
6693 | 84.1k | construct_branch_pair(branch, b0, 0); |
6694 | 84.1k | construct_branch_pair(branch, b1, 1); |
6695 | 84.1k | construct_branch_pair(branch, b2, 2); |
6696 | 84.1k | construct_branch_pair(branch, b3, 3); |
6697 | 84.1k | construct_branch_pair(branch, b4, 4); |
6698 | 84.1k | construct_branch_pair(branch, b5, 5); |
6699 | 84.1k | construct_branch_pair(branch, b6, 6); |
6700 | 84.1k | construct_branch_pair(branch, b7, 7); |
6701 | 84.1k | construct_branch_pair(branch, b8, 8); |
6702 | 84.1k | construct_branch_pair(branch, b9, 9); |
6703 | 84.1k | } 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 | 6692 | 55.8k | { | 6693 | 55.8k | construct_branch_pair(branch, b0, 0); | 6694 | 55.8k | construct_branch_pair(branch, b1, 1); | 6695 | 55.8k | construct_branch_pair(branch, b2, 2); | 6696 | 55.8k | construct_branch_pair(branch, b3, 3); | 6697 | 55.8k | construct_branch_pair(branch, b4, 4); | 6698 | 55.8k | construct_branch_pair(branch, b5, 5); | 6699 | 55.8k | construct_branch_pair(branch, b6, 6); | 6700 | 55.8k | construct_branch_pair(branch, b7, 7); | 6701 | 55.8k | construct_branch_pair(branch, b8, 8); | 6702 | 55.8k | construct_branch_pair(branch, b9, 9); | 6703 | 55.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 | 6692 | 101 | { | 6693 | 101 | construct_branch_pair(branch, b0, 0); | 6694 | 101 | construct_branch_pair(branch, b1, 1); | 6695 | 101 | construct_branch_pair(branch, b2, 2); | 6696 | 101 | construct_branch_pair(branch, b3, 3); | 6697 | 101 | construct_branch_pair(branch, b4, 4); | 6698 | 101 | construct_branch_pair(branch, b5, 5); | 6699 | 101 | construct_branch_pair(branch, b6, 6); | 6700 | 101 | construct_branch_pair(branch, b7, 7); | 6701 | 101 | construct_branch_pair(branch, b8, 8); | 6702 | 101 | construct_branch_pair(branch, b9, 9); | 6703 | 101 | } |
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 | 6692 | 28.1k | { | 6693 | 28.1k | construct_branch_pair(branch, b0, 0); | 6694 | 28.1k | construct_branch_pair(branch, b1, 1); | 6695 | 28.1k | construct_branch_pair(branch, b2, 2); | 6696 | 28.1k | construct_branch_pair(branch, b3, 3); | 6697 | 28.1k | construct_branch_pair(branch, b4, 4); | 6698 | 28.1k | construct_branch_pair(branch, b5, 5); | 6699 | 28.1k | construct_branch_pair(branch, b6, 6); | 6700 | 28.1k | construct_branch_pair(branch, b7, 7); | 6701 | 28.1k | construct_branch_pair(branch, b8, 8); | 6702 | 28.1k | construct_branch_pair(branch, b9, 9); | 6703 | 28.1k | } |
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 | 6692 | 101 | { | 6693 | 101 | construct_branch_pair(branch, b0, 0); | 6694 | 101 | construct_branch_pair(branch, b1, 1); | 6695 | 101 | construct_branch_pair(branch, b2, 2); | 6696 | 101 | construct_branch_pair(branch, b3, 3); | 6697 | 101 | construct_branch_pair(branch, b4, 4); | 6698 | 101 | construct_branch_pair(branch, b5, 5); | 6699 | 101 | construct_branch_pair(branch, b6, 6); | 6700 | 101 | construct_branch_pair(branch, b7, 7); | 6701 | 101 | construct_branch_pair(branch, b8, 8); | 6702 | 101 | construct_branch_pair(branch, b9, 9); | 6703 | 101 | } |
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>*) |
6704 | | |
6705 | | template <typename T> |
6706 | | class null_eq_node exprtk_final : public expression_node<T> |
6707 | | { |
6708 | | public: |
6709 | | |
6710 | | typedef expression_node<T>* expression_ptr; |
6711 | | typedef std::pair<expression_ptr,bool> branch_t; |
6712 | | |
6713 | | explicit null_eq_node(expression_ptr branch, const bool equality = true) |
6714 | 72 | : equality_(equality) |
6715 | 72 | { |
6716 | 72 | construct_branch_pair(branch_, branch); |
6717 | 72 | assert(valid()); |
6718 | 72 | } exprtk::details::null_eq_node<double>::null_eq_node(exprtk::details::expression_node<double>*, bool) Line | Count | Source | 6714 | 36 | : equality_(equality) | 6715 | 36 | { | 6716 | 36 | construct_branch_pair(branch_, branch); | 6717 | 36 | assert(valid()); | 6718 | 36 | } |
exprtk::details::null_eq_node<float>::null_eq_node(exprtk::details::expression_node<float>*, bool) Line | Count | Source | 6714 | 36 | : equality_(equality) | 6715 | 36 | { | 6716 | 36 | construct_branch_pair(branch_, branch); | 6717 | 36 | assert(valid()); | 6718 | 36 | } |
|
6719 | | |
6720 | | inline T value() const exprtk_override |
6721 | 2 | { |
6722 | 2 | const T v = branch_.first->value(); |
6723 | 2 | const bool result = details::numeric::is_nan(v); |
6724 | | |
6725 | 2 | if (result) |
6726 | 2 | return equality_ ? T(1) : T(0); |
6727 | 0 | else |
6728 | 0 | return equality_ ? T(0) : T(1); |
6729 | 2 | } exprtk::details::null_eq_node<double>::value() const Line | Count | Source | 6721 | 1 | { | 6722 | 1 | const T v = branch_.first->value(); | 6723 | 1 | const bool result = details::numeric::is_nan(v); | 6724 | | | 6725 | 1 | if (result) | 6726 | 1 | return equality_ ? T(1) : T(0); | 6727 | 0 | else | 6728 | 0 | return equality_ ? T(0) : T(1); | 6729 | 1 | } |
exprtk::details::null_eq_node<float>::value() const Line | Count | Source | 6721 | 1 | { | 6722 | 1 | const T v = branch_.first->value(); | 6723 | 1 | const bool result = details::numeric::is_nan(v); | 6724 | | | 6725 | 1 | if (result) | 6726 | 1 | return equality_ ? T(1) : T(0); | 6727 | 0 | else | 6728 | 0 | return equality_ ? T(0) : T(1); | 6729 | 1 | } |
|
6730 | | |
6731 | | inline typename expression_node<T>::node_type type() const exprtk_override |
6732 | 1.68k | { |
6733 | 1.68k | return expression_node<T>::e_nulleq; |
6734 | 1.68k | } exprtk::details::null_eq_node<double>::type() const Line | Count | Source | 6732 | 844 | { | 6733 | 844 | return expression_node<T>::e_nulleq; | 6734 | 844 | } |
exprtk::details::null_eq_node<float>::type() const Line | Count | Source | 6732 | 844 | { | 6733 | 844 | return expression_node<T>::e_nulleq; | 6734 | 844 | } |
|
6735 | | |
6736 | | inline expression_node<T>* branch(const std::size_t&) const exprtk_override |
6737 | 0 | { |
6738 | 0 | return branch_.first; |
6739 | 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 |
6740 | | |
6741 | | inline bool valid() const exprtk_override |
6742 | 176 | { |
6743 | 176 | return branch_.first; |
6744 | 176 | } exprtk::details::null_eq_node<double>::valid() const Line | Count | Source | 6742 | 88 | { | 6743 | 88 | return branch_.first; | 6744 | 88 | } |
exprtk::details::null_eq_node<float>::valid() const Line | Count | Source | 6742 | 88 | { | 6743 | 88 | return branch_.first; | 6744 | 88 | } |
|
6745 | | |
6746 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
6747 | 72 | { |
6748 | 72 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
6749 | 72 | } exprtk::details::null_eq_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 6747 | 36 | { | 6748 | 36 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 6749 | 36 | } |
exprtk::details::null_eq_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 6747 | 36 | { | 6748 | 36 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 6749 | 36 | } |
|
6750 | | |
6751 | | std::size_t node_depth() const exprtk_override |
6752 | 146 | { |
6753 | 146 | return expression_node<T>::ndb_t::compute_node_depth(branch_); |
6754 | 146 | } exprtk::details::null_eq_node<double>::node_depth() const Line | Count | Source | 6752 | 73 | { | 6753 | 73 | return expression_node<T>::ndb_t::compute_node_depth(branch_); | 6754 | 73 | } |
exprtk::details::null_eq_node<float>::node_depth() const Line | Count | Source | 6752 | 73 | { | 6753 | 73 | return expression_node<T>::ndb_t::compute_node_depth(branch_); | 6754 | 73 | } |
|
6755 | | |
6756 | | private: |
6757 | | |
6758 | | bool equality_; |
6759 | | branch_t branch_; |
6760 | | }; |
6761 | | |
6762 | | template <typename T> |
6763 | | class literal_node exprtk_final : public expression_node<T> |
6764 | | { |
6765 | | public: |
6766 | | |
6767 | | explicit literal_node(const T& v) |
6768 | 177k | : value_(v) |
6769 | 177k | {} exprtk::details::literal_node<double>::literal_node(double const&) Line | Count | Source | 6768 | 113k | : value_(v) | 6769 | 113k | {} |
exprtk::details::literal_node<float>::literal_node(float const&) Line | Count | Source | 6768 | 63.6k | : value_(v) | 6769 | 63.6k | {} |
|
6770 | | |
6771 | | inline T value() const exprtk_override |
6772 | 191k | { |
6773 | 191k | return value_; |
6774 | 191k | } exprtk::details::literal_node<double>::value() const Line | Count | Source | 6772 | 124k | { | 6773 | 124k | return value_; | 6774 | 124k | } |
exprtk::details::literal_node<float>::value() const Line | Count | Source | 6772 | 67.0k | { | 6773 | 67.0k | return value_; | 6774 | 67.0k | } |
|
6775 | | |
6776 | | inline typename expression_node<T>::node_type type() const exprtk_override |
6777 | 2.33M | { |
6778 | 2.33M | return expression_node<T>::e_constant; |
6779 | 2.33M | } exprtk::details::literal_node<double>::type() const Line | Count | Source | 6777 | 1.53M | { | 6778 | 1.53M | return expression_node<T>::e_constant; | 6779 | 1.53M | } |
exprtk::details::literal_node<float>::type() const Line | Count | Source | 6777 | 804k | { | 6778 | 804k | return expression_node<T>::e_constant; | 6779 | 804k | } |
|
6780 | | |
6781 | | inline expression_node<T>* branch(const std::size_t&) const exprtk_override |
6782 | 0 | { |
6783 | 0 | return reinterpret_cast<expression_node<T>*>(0); |
6784 | 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 |
6785 | | |
6786 | | private: |
6787 | | |
6788 | | literal_node(const literal_node<T>&) exprtk_delete; |
6789 | | literal_node<T>& operator=(const literal_node<T>&) exprtk_delete; |
6790 | | |
6791 | | const T value_; |
6792 | | }; |
6793 | | |
6794 | | template <typename T> |
6795 | | struct range_pack; |
6796 | | |
6797 | | template <typename T> |
6798 | | struct range_data_type; |
6799 | | |
6800 | | template <typename T> |
6801 | | class range_interface |
6802 | | { |
6803 | | public: |
6804 | | |
6805 | | typedef range_pack<T> range_t; |
6806 | | |
6807 | | virtual ~range_interface() |
6808 | 1.00k | {} exprtk::details::range_interface<double>::~range_interface() Line | Count | Source | 6808 | 504 | {} |
exprtk::details::range_interface<float>::~range_interface() Line | Count | Source | 6808 | 504 | {} |
|
6809 | | |
6810 | | virtual range_t& range_ref() = 0; |
6811 | | |
6812 | | virtual const range_t& range_ref() const = 0; |
6813 | | }; |
6814 | | |
6815 | | #ifndef exprtk_disable_string_capabilities |
6816 | | template <typename T> |
6817 | | class string_base_node |
6818 | | { |
6819 | | public: |
6820 | | |
6821 | | typedef range_data_type<T> range_data_type_t; |
6822 | | |
6823 | | virtual ~string_base_node() |
6824 | 1.00k | {} exprtk::details::string_base_node<double>::~string_base_node() Line | Count | Source | 6824 | 504 | {} |
exprtk::details::string_base_node<float>::~string_base_node() Line | Count | Source | 6824 | 504 | {} |
|
6825 | | |
6826 | | virtual std::string str () const = 0; |
6827 | | |
6828 | | virtual char_cptr base() const = 0; |
6829 | | |
6830 | | virtual std::size_t size() const = 0; |
6831 | | }; |
6832 | | |
6833 | | template <typename T> |
6834 | | class string_literal_node exprtk_final |
6835 | | : public expression_node <T> |
6836 | | , public string_base_node<T> |
6837 | | , public range_interface <T> |
6838 | | { |
6839 | | public: |
6840 | | |
6841 | | typedef range_pack<T> range_t; |
6842 | | |
6843 | | explicit string_literal_node(const std::string& v) |
6844 | 928 | : value_(v) |
6845 | 928 | { |
6846 | 928 | rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0); |
6847 | 928 | rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size()); |
6848 | 928 | rp_.cache.first = rp_.n0_c.second; |
6849 | 928 | rp_.cache.second = rp_.n1_c.second; |
6850 | 928 | } 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 | 6844 | 464 | : value_(v) | 6845 | 464 | { | 6846 | 464 | rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0); | 6847 | 464 | rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size()); | 6848 | 464 | rp_.cache.first = rp_.n0_c.second; | 6849 | 464 | rp_.cache.second = rp_.n1_c.second; | 6850 | 464 | } |
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 | 6844 | 464 | : value_(v) | 6845 | 464 | { | 6846 | 464 | rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0); | 6847 | 464 | rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size()); | 6848 | 464 | rp_.cache.first = rp_.n0_c.second; | 6849 | 464 | rp_.cache.second = rp_.n1_c.second; | 6850 | 464 | } |
|
6851 | | |
6852 | | inline T value() const exprtk_override |
6853 | 304 | { |
6854 | 304 | return std::numeric_limits<T>::quiet_NaN(); |
6855 | 304 | } exprtk::details::string_literal_node<double>::value() const Line | Count | Source | 6853 | 152 | { | 6854 | 152 | return std::numeric_limits<T>::quiet_NaN(); | 6855 | 152 | } |
exprtk::details::string_literal_node<float>::value() const Line | Count | Source | 6853 | 152 | { | 6854 | 152 | return std::numeric_limits<T>::quiet_NaN(); | 6855 | 152 | } |
|
6856 | | |
6857 | | inline typename expression_node<T>::node_type type() const exprtk_override |
6858 | 9.60k | { |
6859 | 9.60k | return expression_node<T>::e_stringconst; |
6860 | 9.60k | } exprtk::details::string_literal_node<double>::type() const Line | Count | Source | 6858 | 4.80k | { | 6859 | 4.80k | return expression_node<T>::e_stringconst; | 6860 | 4.80k | } |
exprtk::details::string_literal_node<float>::type() const Line | Count | Source | 6858 | 4.80k | { | 6859 | 4.80k | return expression_node<T>::e_stringconst; | 6860 | 4.80k | } |
|
6861 | | |
6862 | | inline expression_node<T>* branch(const std::size_t&) const exprtk_override |
6863 | 0 | { |
6864 | 0 | return reinterpret_cast<expression_node<T>*>(0); |
6865 | 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 |
6866 | | |
6867 | | std::string str() const exprtk_override |
6868 | 324 | { |
6869 | 324 | return value_; |
6870 | 324 | } exprtk::details::string_literal_node<double>::str() const Line | Count | Source | 6868 | 162 | { | 6869 | 162 | return value_; | 6870 | 162 | } |
exprtk::details::string_literal_node<float>::str() const Line | Count | Source | 6868 | 162 | { | 6869 | 162 | return value_; | 6870 | 162 | } |
|
6871 | | |
6872 | | char_cptr base() const exprtk_override |
6873 | 22 | { |
6874 | 22 | return value_.data(); |
6875 | 22 | } exprtk::details::string_literal_node<double>::base() const Line | Count | Source | 6873 | 11 | { | 6874 | 11 | return value_.data(); | 6875 | 11 | } |
exprtk::details::string_literal_node<float>::base() const Line | Count | Source | 6873 | 11 | { | 6874 | 11 | return value_.data(); | 6875 | 11 | } |
|
6876 | | |
6877 | | std::size_t size() const exprtk_override |
6878 | 22 | { |
6879 | 22 | return value_.size(); |
6880 | 22 | } exprtk::details::string_literal_node<double>::size() const Line | Count | Source | 6878 | 11 | { | 6879 | 11 | return value_.size(); | 6880 | 11 | } |
exprtk::details::string_literal_node<float>::size() const Line | Count | Source | 6878 | 11 | { | 6879 | 11 | return value_.size(); | 6880 | 11 | } |
|
6881 | | |
6882 | | range_t& range_ref() exprtk_override |
6883 | 34 | { |
6884 | 34 | return rp_; |
6885 | 34 | } exprtk::details::string_literal_node<double>::range_ref() Line | Count | Source | 6883 | 17 | { | 6884 | 17 | return rp_; | 6885 | 17 | } |
exprtk::details::string_literal_node<float>::range_ref() Line | Count | Source | 6883 | 17 | { | 6884 | 17 | return rp_; | 6885 | 17 | } |
|
6886 | | |
6887 | | const range_t& range_ref() const exprtk_override |
6888 | 0 | { |
6889 | 0 | return rp_; |
6890 | 0 | } Unexecuted instantiation: exprtk::details::string_literal_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::string_literal_node<float>::range_ref() const |
6891 | | |
6892 | | private: |
6893 | | |
6894 | | string_literal_node(const string_literal_node<T>&) exprtk_delete; |
6895 | | string_literal_node<T>& operator=(const string_literal_node<T>&) exprtk_delete; |
6896 | | |
6897 | | const std::string value_; |
6898 | | range_t rp_; |
6899 | | }; |
6900 | | #endif |
6901 | | |
6902 | | template <typename T> |
6903 | | class unary_node : public expression_node<T> |
6904 | | { |
6905 | | public: |
6906 | | |
6907 | | typedef expression_node<T>* expression_ptr; |
6908 | | typedef std::pair<expression_ptr,bool> branch_t; |
6909 | | |
6910 | | unary_node(const operator_type& opr, expression_ptr branch) |
6911 | 53.2k | : operation_(opr) |
6912 | 53.2k | { |
6913 | 53.2k | construct_branch_pair(branch_,branch); |
6914 | 53.2k | assert(valid()); |
6915 | 53.2k | } exprtk::details::unary_node<double>::unary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*) Line | Count | Source | 6911 | 30.8k | : operation_(opr) | 6912 | 30.8k | { | 6913 | 30.8k | construct_branch_pair(branch_,branch); | 6914 | 30.8k | assert(valid()); | 6915 | 30.8k | } |
exprtk::details::unary_node<float>::unary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*) Line | Count | Source | 6911 | 22.4k | : operation_(opr) | 6912 | 22.4k | { | 6913 | 22.4k | construct_branch_pair(branch_,branch); | 6914 | 22.4k | assert(valid()); | 6915 | 22.4k | } |
|
6916 | | |
6917 | | inline T value() const exprtk_override |
6918 | 53.2k | { |
6919 | 53.2k | return numeric::process<T> |
6920 | 53.2k | (operation_,branch_.first->value()); |
6921 | 53.2k | } exprtk::details::unary_node<double>::value() const Line | Count | Source | 6918 | 30.8k | { | 6919 | 30.8k | return numeric::process<T> | 6920 | 30.8k | (operation_,branch_.first->value()); | 6921 | 30.8k | } |
exprtk::details::unary_node<float>::value() const Line | Count | Source | 6918 | 22.4k | { | 6919 | 22.4k | return numeric::process<T> | 6920 | 22.4k | (operation_,branch_.first->value()); | 6921 | 22.4k | } |
|
6922 | | |
6923 | | inline typename expression_node<T>::node_type type() const exprtk_override |
6924 | 106k | { |
6925 | 106k | return expression_node<T>::e_unary; |
6926 | 106k | } exprtk::details::unary_node<double>::type() const Line | Count | Source | 6924 | 61.6k | { | 6925 | 61.6k | return expression_node<T>::e_unary; | 6926 | 61.6k | } |
exprtk::details::unary_node<float>::type() const Line | Count | Source | 6924 | 44.9k | { | 6925 | 44.9k | return expression_node<T>::e_unary; | 6926 | 44.9k | } |
|
6927 | | |
6928 | | inline operator_type operation() |
6929 | | { |
6930 | | return operation_; |
6931 | | } |
6932 | | |
6933 | | inline expression_node<T>* branch(const std::size_t&) const exprtk_override |
6934 | 0 | { |
6935 | 0 | return branch_.first; |
6936 | 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 |
6937 | | |
6938 | | inline bool valid() const exprtk_override |
6939 | 53.2k | { |
6940 | 53.2k | return branch_.first && branch_.first->valid(); |
6941 | 53.2k | } exprtk::details::unary_node<double>::valid() const Line | Count | Source | 6939 | 30.8k | { | 6940 | 30.8k | return branch_.first && branch_.first->valid(); | 6941 | 30.8k | } |
exprtk::details::unary_node<float>::valid() const Line | Count | Source | 6939 | 22.4k | { | 6940 | 22.4k | return branch_.first && branch_.first->valid(); | 6941 | 22.4k | } |
|
6942 | | |
6943 | | inline void release() |
6944 | | { |
6945 | | branch_.second = false; |
6946 | | } |
6947 | | |
6948 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
6949 | 53.2k | { |
6950 | 53.2k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
6951 | 53.2k | } 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 | 6949 | 30.8k | { | 6950 | 30.8k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 6951 | 30.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 | 6949 | 22.4k | { | 6950 | 22.4k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 6951 | 22.4k | } |
|
6952 | | |
6953 | | std::size_t node_depth() const exprtk_final |
6954 | 106k | { |
6955 | 106k | return expression_node<T>::ndb_t::compute_node_depth(branch_); |
6956 | 106k | } exprtk::details::unary_node<double>::node_depth() const Line | Count | Source | 6954 | 61.6k | { | 6955 | 61.6k | return expression_node<T>::ndb_t::compute_node_depth(branch_); | 6956 | 61.6k | } |
exprtk::details::unary_node<float>::node_depth() const Line | Count | Source | 6954 | 44.9k | { | 6955 | 44.9k | return expression_node<T>::ndb_t::compute_node_depth(branch_); | 6956 | 44.9k | } |
|
6957 | | |
6958 | | private: |
6959 | | |
6960 | | operator_type operation_; |
6961 | | branch_t branch_; |
6962 | | }; |
6963 | | |
6964 | | template <typename T> |
6965 | | class binary_node : public expression_node<T> |
6966 | | { |
6967 | | public: |
6968 | | |
6969 | | typedef expression_node<T>* expression_ptr; |
6970 | | typedef std::pair<expression_ptr,bool> branch_t; |
6971 | | |
6972 | | binary_node(const operator_type& opr, |
6973 | | expression_ptr branch0, |
6974 | | expression_ptr branch1) |
6975 | 10.4k | : operation_(opr) |
6976 | 10.4k | { |
6977 | 10.4k | init_branches<2>(branch_, branch0, branch1); |
6978 | 10.4k | assert(valid()); |
6979 | 10.4k | } 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 | 6975 | 7.91k | : operation_(opr) | 6976 | 7.91k | { | 6977 | 7.91k | init_branches<2>(branch_, branch0, branch1); | 6978 | 7.91k | assert(valid()); | 6979 | 7.91k | } |
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 | 6975 | 2.53k | : operation_(opr) | 6976 | 2.53k | { | 6977 | 2.53k | init_branches<2>(branch_, branch0, branch1); | 6978 | 2.53k | assert(valid()); | 6979 | 2.53k | } |
|
6980 | | |
6981 | | inline T value() const exprtk_override |
6982 | 8.36k | { |
6983 | 8.36k | return numeric::process<T> |
6984 | 8.36k | ( |
6985 | 8.36k | operation_, |
6986 | 8.36k | branch_[0].first->value(), |
6987 | 8.36k | branch_[1].first->value() |
6988 | 8.36k | ); |
6989 | 8.36k | } exprtk::details::binary_node<double>::value() const Line | Count | Source | 6982 | 6.85k | { | 6983 | 6.85k | return numeric::process<T> | 6984 | 6.85k | ( | 6985 | 6.85k | operation_, | 6986 | 6.85k | branch_[0].first->value(), | 6987 | 6.85k | branch_[1].first->value() | 6988 | 6.85k | ); | 6989 | 6.85k | } |
exprtk::details::binary_node<float>::value() const Line | Count | Source | 6982 | 1.50k | { | 6983 | 1.50k | return numeric::process<T> | 6984 | 1.50k | ( | 6985 | 1.50k | operation_, | 6986 | 1.50k | branch_[0].first->value(), | 6987 | 1.50k | branch_[1].first->value() | 6988 | 1.50k | ); | 6989 | 1.50k | } |
|
6990 | | |
6991 | | inline typename expression_node<T>::node_type type() const exprtk_override |
6992 | 45.3k | { |
6993 | 45.3k | return expression_node<T>::e_binary; |
6994 | 45.3k | } exprtk::details::binary_node<double>::type() const Line | Count | Source | 6992 | 28.2k | { | 6993 | 28.2k | return expression_node<T>::e_binary; | 6994 | 28.2k | } |
exprtk::details::binary_node<float>::type() const Line | Count | Source | 6992 | 17.1k | { | 6993 | 17.1k | return expression_node<T>::e_binary; | 6994 | 17.1k | } |
|
6995 | | |
6996 | | inline operator_type operation() |
6997 | | { |
6998 | | return operation_; |
6999 | | } |
7000 | | |
7001 | | inline expression_node<T>* branch(const std::size_t& index = 0) const exprtk_override |
7002 | 2.80k | { |
7003 | 2.80k | assert(index < 2); |
7004 | 2.80k | return branch_[index].first; |
7005 | 2.80k | } exprtk::details::binary_node<double>::branch(unsigned long const&) const Line | Count | Source | 7002 | 1.41k | { | 7003 | 1.41k | assert(index < 2); | 7004 | 1.41k | return branch_[index].first; | 7005 | 1.41k | } |
exprtk::details::binary_node<float>::branch(unsigned long const&) const Line | Count | Source | 7002 | 1.38k | { | 7003 | 1.38k | assert(index < 2); | 7004 | 1.38k | return branch_[index].first; | 7005 | 1.38k | } |
|
7006 | | |
7007 | | inline bool valid() const exprtk_override |
7008 | 47.0k | { |
7009 | 47.0k | return |
7010 | 47.0k | branch_[0].first && branch_[0].first->valid() && |
7011 | 47.0k | branch_[1].first && branch_[1].first->valid() ; |
7012 | 47.0k | } exprtk::details::binary_node<double>::valid() const Line | Count | Source | 7008 | 26.2k | { | 7009 | 26.2k | return | 7010 | 26.2k | branch_[0].first && branch_[0].first->valid() && | 7011 | 26.2k | branch_[1].first && branch_[1].first->valid() ; | 7012 | 26.2k | } |
exprtk::details::binary_node<float>::valid() const Line | Count | Source | 7008 | 20.8k | { | 7009 | 20.8k | return | 7010 | 20.8k | branch_[0].first && branch_[0].first->valid() && | 7011 | 20.8k | branch_[1].first && branch_[1].first->valid() ; | 7012 | 20.8k | } |
|
7013 | | |
7014 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7015 | 10.4k | { |
7016 | 10.4k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
7017 | 10.4k | } 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 | 7015 | 7.91k | { | 7016 | 7.91k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7017 | 7.91k | } |
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 | 7015 | 2.53k | { | 7016 | 2.53k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7017 | 2.53k | } |
|
7018 | | |
7019 | | std::size_t node_depth() const exprtk_final |
7020 | 22.9k | { |
7021 | 22.9k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); |
7022 | 22.9k | } exprtk::details::binary_node<double>::node_depth() const Line | Count | Source | 7020 | 16.8k | { | 7021 | 16.8k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7022 | 16.8k | } |
exprtk::details::binary_node<float>::node_depth() const Line | Count | Source | 7020 | 6.09k | { | 7021 | 6.09k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7022 | 6.09k | } |
|
7023 | | |
7024 | | private: |
7025 | | |
7026 | | operator_type operation_; |
7027 | | branch_t branch_[2]; |
7028 | | }; |
7029 | | |
7030 | | template <typename T, typename Operation> |
7031 | | class binary_ext_node exprtk_final : public expression_node<T> |
7032 | | { |
7033 | | public: |
7034 | | |
7035 | | typedef expression_node<T>* expression_ptr; |
7036 | | typedef std::pair<expression_ptr,bool> branch_t; |
7037 | | |
7038 | | binary_ext_node(expression_ptr branch0, expression_ptr branch1) |
7039 | 73.5k | { |
7040 | 73.5k | init_branches<2>(branch_, branch0, branch1); |
7041 | 73.5k | assert(valid()); |
7042 | 73.5k | } 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 | 7039 | 1.60k | { | 7040 | 1.60k | init_branches<2>(branch_, branch0, branch1); | 7041 | 1.60k | assert(valid()); | 7042 | 1.60k | } |
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 | 7039 | 1.20k | { | 7040 | 1.20k | init_branches<2>(branch_, branch0, branch1); | 7041 | 1.20k | assert(valid()); | 7042 | 1.20k | } |
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 | 7039 | 20.6k | { | 7040 | 20.6k | init_branches<2>(branch_, branch0, branch1); | 7041 | 20.6k | assert(valid()); | 7042 | 20.6k | } |
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 | 7039 | 84 | { | 7040 | 84 | init_branches<2>(branch_, branch0, branch1); | 7041 | 84 | assert(valid()); | 7042 | 84 | } |
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 | 7039 | 105 | { | 7040 | 105 | init_branches<2>(branch_, branch0, branch1); | 7041 | 105 | assert(valid()); | 7042 | 105 | } |
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 | 7039 | 115 | { | 7040 | 115 | init_branches<2>(branch_, branch0, branch1); | 7041 | 115 | assert(valid()); | 7042 | 115 | } |
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 | 7039 | 10.9k | { | 7040 | 10.9k | init_branches<2>(branch_, branch0, branch1); | 7041 | 10.9k | assert(valid()); | 7042 | 10.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 | 7039 | 64 | { | 7040 | 64 | init_branches<2>(branch_, branch0, branch1); | 7041 | 64 | assert(valid()); | 7042 | 64 | } |
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 | 7039 | 10.2k | { | 7040 | 10.2k | init_branches<2>(branch_, branch0, branch1); | 7041 | 10.2k | assert(valid()); | 7042 | 10.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 | 7039 | 100 | { | 7040 | 100 | init_branches<2>(branch_, branch0, branch1); | 7041 | 100 | assert(valid()); | 7042 | 100 | } |
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 | 7039 | 1.92k | { | 7040 | 1.92k | init_branches<2>(branch_, branch0, branch1); | 7041 | 1.92k | assert(valid()); | 7042 | 1.92k | } |
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 | 7039 | 20 | { | 7040 | 20 | init_branches<2>(branch_, branch0, branch1); | 7041 | 20 | assert(valid()); | 7042 | 20 | } |
exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7039 | 239 | { | 7040 | 239 | init_branches<2>(branch_, branch0, branch1); | 7041 | 239 | assert(valid()); | 7042 | 239 | } |
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 | 7039 | 68 | { | 7040 | 68 | init_branches<2>(branch_, branch0, branch1); | 7041 | 68 | assert(valid()); | 7042 | 68 | } |
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 | 7039 | 190 | { | 7040 | 190 | init_branches<2>(branch_, branch0, branch1); | 7041 | 190 | assert(valid()); | 7042 | 190 | } |
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 | 7039 | 154 | { | 7040 | 154 | init_branches<2>(branch_, branch0, branch1); | 7041 | 154 | assert(valid()); | 7042 | 154 | } |
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 | 7039 | 70 | { | 7040 | 70 | init_branches<2>(branch_, branch0, branch1); | 7041 | 70 | assert(valid()); | 7042 | 70 | } |
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 | 7039 | 66 | { | 7040 | 66 | init_branches<2>(branch_, branch0, branch1); | 7041 | 66 | assert(valid()); | 7042 | 66 | } |
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 | 7039 | 637 | { | 7040 | 637 | init_branches<2>(branch_, branch0, branch1); | 7041 | 637 | assert(valid()); | 7042 | 637 | } |
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 | 7039 | 570 | { | 7040 | 570 | init_branches<2>(branch_, branch0, branch1); | 7041 | 570 | assert(valid()); | 7042 | 570 | } |
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 | 7039 | 20.1k | { | 7040 | 20.1k | init_branches<2>(branch_, branch0, branch1); | 7041 | 20.1k | assert(valid()); | 7042 | 20.1k | } |
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 | 7039 | 84 | { | 7040 | 84 | init_branches<2>(branch_, branch0, branch1); | 7041 | 84 | assert(valid()); | 7042 | 84 | } |
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 | 7039 | 32 | { | 7040 | 32 | init_branches<2>(branch_, branch0, branch1); | 7041 | 32 | assert(valid()); | 7042 | 32 | } |
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 | 7039 | 114 | { | 7040 | 114 | init_branches<2>(branch_, branch0, branch1); | 7041 | 114 | assert(valid()); | 7042 | 114 | } |
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 | 7039 | 845 | { | 7040 | 845 | init_branches<2>(branch_, branch0, branch1); | 7041 | 845 | assert(valid()); | 7042 | 845 | } |
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 | 7039 | 61 | { | 7040 | 61 | init_branches<2>(branch_, branch0, branch1); | 7041 | 61 | assert(valid()); | 7042 | 61 | } |
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 | 7039 | 315 | { | 7040 | 315 | init_branches<2>(branch_, branch0, branch1); | 7041 | 315 | assert(valid()); | 7042 | 315 | } |
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 | 7039 | 92 | { | 7040 | 92 | init_branches<2>(branch_, branch0, branch1); | 7041 | 92 | assert(valid()); | 7042 | 92 | } |
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 | 7039 | 1.87k | { | 7040 | 1.87k | init_branches<2>(branch_, branch0, branch1); | 7041 | 1.87k | assert(valid()); | 7042 | 1.87k | } |
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 | 7039 | 16 | { | 7040 | 16 | init_branches<2>(branch_, branch0, branch1); | 7041 | 16 | assert(valid()); | 7042 | 16 | } |
exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7039 | 239 | { | 7040 | 239 | init_branches<2>(branch_, branch0, branch1); | 7041 | 239 | assert(valid()); | 7042 | 239 | } |
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 | 7039 | 65 | { | 7040 | 65 | init_branches<2>(branch_, branch0, branch1); | 7041 | 65 | assert(valid()); | 7042 | 65 | } |
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 | 7039 | 190 | { | 7040 | 190 | init_branches<2>(branch_, branch0, branch1); | 7041 | 190 | assert(valid()); | 7042 | 190 | } |
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 | 7039 | 154 | { | 7040 | 154 | init_branches<2>(branch_, branch0, branch1); | 7041 | 154 | assert(valid()); | 7042 | 154 | } |
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 | 7039 | 62 | { | 7040 | 62 | init_branches<2>(branch_, branch0, branch1); | 7041 | 62 | assert(valid()); | 7042 | 62 | } |
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 | 7039 | 63 | { | 7040 | 63 | init_branches<2>(branch_, branch0, branch1); | 7041 | 63 | assert(valid()); | 7042 | 63 | } |
|
7043 | | |
7044 | | inline T value() const exprtk_override |
7045 | 1.63k | { |
7046 | 1.63k | const T arg0 = branch_[0].first->value(); |
7047 | 1.63k | const T arg1 = branch_[1].first->value(); |
7048 | 1.63k | return Operation::process(arg0,arg1); |
7049 | 1.63k | } exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::value() const Line | Count | Source | 7045 | 64 | { | 7046 | 64 | const T arg0 = branch_[0].first->value(); | 7047 | 64 | const T arg1 = branch_[1].first->value(); | 7048 | 64 | return Operation::process(arg0,arg1); | 7049 | 64 | } |
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::value() const Line | Count | Source | 7045 | 85 | { | 7046 | 85 | const T arg0 = branch_[0].first->value(); | 7047 | 85 | const T arg1 = branch_[1].first->value(); | 7048 | 85 | return Operation::process(arg0,arg1); | 7049 | 85 | } |
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::value() const Line | Count | Source | 7045 | 107 | { | 7046 | 107 | const T arg0 = branch_[0].first->value(); | 7047 | 107 | const T arg1 = branch_[1].first->value(); | 7048 | 107 | return Operation::process(arg0,arg1); | 7049 | 107 | } |
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::value() const Line | Count | Source | 7045 | 17 | { | 7046 | 17 | const T arg0 = branch_[0].first->value(); | 7047 | 17 | const T arg1 = branch_[1].first->value(); | 7048 | 17 | return Operation::process(arg0,arg1); | 7049 | 17 | } |
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::value() const Line | Count | Source | 7045 | 15 | { | 7046 | 15 | const T arg0 = branch_[0].first->value(); | 7047 | 15 | const T arg1 = branch_[1].first->value(); | 7048 | 15 | return Operation::process(arg0,arg1); | 7049 | 15 | } |
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::value() const Line | Count | Source | 7045 | 5 | { | 7046 | 5 | const T arg0 = branch_[0].first->value(); | 7047 | 5 | const T arg1 = branch_[1].first->value(); | 7048 | 5 | return Operation::process(arg0,arg1); | 7049 | 5 | } |
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::value() const Line | Count | Source | 7045 | 102 | { | 7046 | 102 | const T arg0 = branch_[0].first->value(); | 7047 | 102 | const T arg1 = branch_[1].first->value(); | 7048 | 102 | return Operation::process(arg0,arg1); | 7049 | 102 | } |
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::value() const Line | Count | Source | 7045 | 11 | { | 7046 | 11 | const T arg0 = branch_[0].first->value(); | 7047 | 11 | const T arg1 = branch_[1].first->value(); | 7048 | 11 | return Operation::process(arg0,arg1); | 7049 | 11 | } |
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::value() const Line | Count | Source | 7045 | 101 | { | 7046 | 101 | const T arg0 = branch_[0].first->value(); | 7047 | 101 | const T arg1 = branch_[1].first->value(); | 7048 | 101 | return Operation::process(arg0,arg1); | 7049 | 101 | } |
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::value() const Line | Count | Source | 7045 | 8 | { | 7046 | 8 | const T arg0 = branch_[0].first->value(); | 7047 | 8 | const T arg1 = branch_[1].first->value(); | 7048 | 8 | return Operation::process(arg0,arg1); | 7049 | 8 | } |
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::value() const Line | Count | Source | 7045 | 220 | { | 7046 | 220 | const T arg0 = branch_[0].first->value(); | 7047 | 220 | const T arg1 = branch_[1].first->value(); | 7048 | 220 | return Operation::process(arg0,arg1); | 7049 | 220 | } |
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::value() const Line | Count | Source | 7045 | 4 | { | 7046 | 4 | const T arg0 = branch_[0].first->value(); | 7047 | 4 | const T arg1 = branch_[1].first->value(); | 7048 | 4 | return Operation::process(arg0,arg1); | 7049 | 4 | } |
exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::value() const Line | Count | Source | 7045 | 61 | { | 7046 | 61 | const T arg0 = branch_[0].first->value(); | 7047 | 61 | const T arg1 = branch_[1].first->value(); | 7048 | 61 | return Operation::process(arg0,arg1); | 7049 | 61 | } |
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::value() const Line | Count | Source | 7045 | 17 | { | 7046 | 17 | const T arg0 = branch_[0].first->value(); | 7047 | 17 | const T arg1 = branch_[1].first->value(); | 7048 | 17 | return Operation::process(arg0,arg1); | 7049 | 17 | } |
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::value() const Line | Count | Source | 7045 | 6 | { | 7046 | 6 | const T arg0 = branch_[0].first->value(); | 7047 | 6 | const T arg1 = branch_[1].first->value(); | 7048 | 6 | return Operation::process(arg0,arg1); | 7049 | 6 | } |
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::value() const Line | Count | Source | 7045 | 8 | { | 7046 | 8 | const T arg0 = branch_[0].first->value(); | 7047 | 8 | const T arg1 = branch_[1].first->value(); | 7048 | 8 | return Operation::process(arg0,arg1); | 7049 | 8 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::value() const Line | Count | Source | 7045 | 4 | { | 7046 | 4 | const T arg0 = branch_[0].first->value(); | 7047 | 4 | const T arg1 = branch_[1].first->value(); | 7048 | 4 | return Operation::process(arg0,arg1); | 7049 | 4 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::value() const Line | Count | Source | 7045 | 6 | { | 7046 | 6 | const T arg0 = branch_[0].first->value(); | 7047 | 6 | const T arg1 = branch_[1].first->value(); | 7048 | 6 | return Operation::process(arg0,arg1); | 7049 | 6 | } |
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::value() const Line | Count | Source | 7045 | 60 | { | 7046 | 60 | const T arg0 = branch_[0].first->value(); | 7047 | 60 | const T arg1 = branch_[1].first->value(); | 7048 | 60 | return Operation::process(arg0,arg1); | 7049 | 60 | } |
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::value() const Line | Count | Source | 7045 | 81 | { | 7046 | 81 | const T arg0 = branch_[0].first->value(); | 7047 | 81 | const T arg1 = branch_[1].first->value(); | 7048 | 81 | return Operation::process(arg0,arg1); | 7049 | 81 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::value() const Line | Count | Source | 7045 | 105 | { | 7046 | 105 | const T arg0 = branch_[0].first->value(); | 7047 | 105 | const T arg1 = branch_[1].first->value(); | 7048 | 105 | return Operation::process(arg0,arg1); | 7049 | 105 | } |
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::value() const Line | Count | Source | 7045 | 17 | { | 7046 | 17 | const T arg0 = branch_[0].first->value(); | 7047 | 17 | const T arg1 = branch_[1].first->value(); | 7048 | 17 | return Operation::process(arg0,arg1); | 7049 | 17 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::value() const Line | Count | Source | 7045 | 14 | { | 7046 | 14 | const T arg0 = branch_[0].first->value(); | 7047 | 14 | const T arg1 = branch_[1].first->value(); | 7048 | 14 | return Operation::process(arg0,arg1); | 7049 | 14 | } |
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::value() const Line | Count | Source | 7045 | 4 | { | 7046 | 4 | const T arg0 = branch_[0].first->value(); | 7047 | 4 | const T arg1 = branch_[1].first->value(); | 7048 | 4 | return Operation::process(arg0,arg1); | 7049 | 4 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::value() const Line | Count | Source | 7045 | 99 | { | 7046 | 99 | const T arg0 = branch_[0].first->value(); | 7047 | 99 | const T arg1 = branch_[1].first->value(); | 7048 | 99 | return Operation::process(arg0,arg1); | 7049 | 99 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::value() const Line | Count | Source | 7045 | 9 | { | 7046 | 9 | const T arg0 = branch_[0].first->value(); | 7047 | 9 | const T arg1 = branch_[1].first->value(); | 7048 | 9 | return Operation::process(arg0,arg1); | 7049 | 9 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::value() const Line | Count | Source | 7045 | 99 | { | 7046 | 99 | const T arg0 = branch_[0].first->value(); | 7047 | 99 | const T arg1 = branch_[1].first->value(); | 7048 | 99 | return Operation::process(arg0,arg1); | 7049 | 99 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::value() const Line | Count | Source | 7045 | 7 | { | 7046 | 7 | const T arg0 = branch_[0].first->value(); | 7047 | 7 | const T arg1 = branch_[1].first->value(); | 7048 | 7 | return Operation::process(arg0,arg1); | 7049 | 7 | } |
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::value() const Line | Count | Source | 7045 | 200 | { | 7046 | 200 | const T arg0 = branch_[0].first->value(); | 7047 | 200 | const T arg1 = branch_[1].first->value(); | 7048 | 200 | return Operation::process(arg0,arg1); | 7049 | 200 | } |
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::value() const Line | Count | Source | 7045 | 3 | { | 7046 | 3 | const T arg0 = branch_[0].first->value(); | 7047 | 3 | const T arg1 = branch_[1].first->value(); | 7048 | 3 | return Operation::process(arg0,arg1); | 7049 | 3 | } |
exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::value() const Line | Count | Source | 7045 | 61 | { | 7046 | 61 | const T arg0 = branch_[0].first->value(); | 7047 | 61 | const T arg1 = branch_[1].first->value(); | 7048 | 61 | return Operation::process(arg0,arg1); | 7049 | 61 | } |
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::value() const Line | Count | Source | 7045 | 17 | { | 7046 | 17 | const T arg0 = branch_[0].first->value(); | 7047 | 17 | const T arg1 = branch_[1].first->value(); | 7048 | 17 | return Operation::process(arg0,arg1); | 7049 | 17 | } |
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::value() const Line | Count | Source | 7045 | 6 | { | 7046 | 6 | const T arg0 = branch_[0].first->value(); | 7047 | 6 | const T arg1 = branch_[1].first->value(); | 7048 | 6 | return Operation::process(arg0,arg1); | 7049 | 6 | } |
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::value() const Line | Count | Source | 7045 | 8 | { | 7046 | 8 | const T arg0 = branch_[0].first->value(); | 7047 | 8 | const T arg1 = branch_[1].first->value(); | 7048 | 8 | return Operation::process(arg0,arg1); | 7049 | 8 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::value() const Line | Count | Source | 7045 | 1 | { | 7046 | 1 | const T arg0 = branch_[0].first->value(); | 7047 | 1 | const T arg1 = branch_[1].first->value(); | 7048 | 1 | return Operation::process(arg0,arg1); | 7049 | 1 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::value() const Line | Count | Source | 7045 | 4 | { | 7046 | 4 | const T arg0 = branch_[0].first->value(); | 7047 | 4 | const T arg1 = branch_[1].first->value(); | 7048 | 4 | return Operation::process(arg0,arg1); | 7049 | 4 | } |
|
7050 | | |
7051 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7052 | 2.28M | { |
7053 | 2.28M | return expression_node<T>::e_binary_ext; |
7054 | 2.28M | } exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::type() const Line | Count | Source | 7052 | 42.9k | { | 7053 | 42.9k | return expression_node<T>::e_binary_ext; | 7054 | 42.9k | } |
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::type() const Line | Count | Source | 7052 | 30.5k | { | 7053 | 30.5k | return expression_node<T>::e_binary_ext; | 7054 | 30.5k | } |
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::type() const Line | Count | Source | 7052 | 696k | { | 7053 | 696k | return expression_node<T>::e_binary_ext; | 7054 | 696k | } |
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::type() const Line | Count | Source | 7052 | 1.13k | { | 7053 | 1.13k | return expression_node<T>::e_binary_ext; | 7054 | 1.13k | } |
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::type() const Line | Count | Source | 7052 | 2.80k | { | 7053 | 2.80k | return expression_node<T>::e_binary_ext; | 7054 | 2.80k | } |
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::type() const Line | Count | Source | 7052 | 3.31k | { | 7053 | 3.31k | return expression_node<T>::e_binary_ext; | 7054 | 3.31k | } |
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::type() const Line | Count | Source | 7052 | 319k | { | 7053 | 319k | return expression_node<T>::e_binary_ext; | 7054 | 319k | } |
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::type() const Line | Count | Source | 7052 | 1.37k | { | 7053 | 1.37k | return expression_node<T>::e_binary_ext; | 7054 | 1.37k | } |
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::type() const Line | Count | Source | 7052 | 300k | { | 7053 | 300k | return expression_node<T>::e_binary_ext; | 7054 | 300k | } |
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::type() const Line | Count | Source | 7052 | 2.44k | { | 7053 | 2.44k | return expression_node<T>::e_binary_ext; | 7054 | 2.44k | } |
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::type() const Line | Count | Source | 7052 | 50.0k | { | 7053 | 50.0k | return expression_node<T>::e_binary_ext; | 7054 | 50.0k | } |
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::type() const Line | Count | Source | 7052 | 524 | { | 7053 | 524 | return expression_node<T>::e_binary_ext; | 7054 | 524 | } |
exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::type() const Line | Count | Source | 7052 | 5.96k | { | 7053 | 5.96k | return expression_node<T>::e_binary_ext; | 7054 | 5.96k | } |
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::type() const Line | Count | Source | 7052 | 1.58k | { | 7053 | 1.58k | return expression_node<T>::e_binary_ext; | 7054 | 1.58k | } |
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::type() const Line | Count | Source | 7052 | 4.82k | { | 7053 | 4.82k | return expression_node<T>::e_binary_ext; | 7054 | 4.82k | } |
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::type() const Line | Count | Source | 7052 | 3.64k | { | 7053 | 3.64k | return expression_node<T>::e_binary_ext; | 7054 | 3.64k | } |
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::type() const Line | Count | Source | 7052 | 1.13k | { | 7053 | 1.13k | return expression_node<T>::e_binary_ext; | 7054 | 1.13k | } |
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::type() const Line | Count | Source | 7052 | 1.06k | { | 7053 | 1.06k | return expression_node<T>::e_binary_ext; | 7054 | 1.06k | } |
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::type() const Line | Count | Source | 7052 | 17.7k | { | 7053 | 17.7k | return expression_node<T>::e_binary_ext; | 7054 | 17.7k | } |
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::type() const Line | Count | Source | 7052 | 14.5k | { | 7053 | 14.5k | return expression_node<T>::e_binary_ext; | 7054 | 14.5k | } |
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::type() const Line | Count | Source | 7052 | 682k | { | 7053 | 682k | return expression_node<T>::e_binary_ext; | 7054 | 682k | } |
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::type() const Line | Count | Source | 7052 | 1.13k | { | 7053 | 1.13k | return expression_node<T>::e_binary_ext; | 7054 | 1.13k | } |
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::type() const Line | Count | Source | 7052 | 578 | { | 7053 | 578 | return expression_node<T>::e_binary_ext; | 7054 | 578 | } |
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::type() const Line | Count | Source | 7052 | 3.28k | { | 7053 | 3.28k | return expression_node<T>::e_binary_ext; | 7054 | 3.28k | } |
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::type() const Line | Count | Source | 7052 | 18.6k | { | 7053 | 18.6k | return expression_node<T>::e_binary_ext; | 7054 | 18.6k | } |
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::type() const Line | Count | Source | 7052 | 1.28k | { | 7053 | 1.28k | return expression_node<T>::e_binary_ext; | 7054 | 1.28k | } |
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::type() const Line | Count | Source | 7052 | 8.11k | { | 7053 | 8.11k | return expression_node<T>::e_binary_ext; | 7054 | 8.11k | } |
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::type() const Line | Count | Source | 7052 | 2.33k | { | 7053 | 2.33k | return expression_node<T>::e_binary_ext; | 7054 | 2.33k | } |
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::type() const Line | Count | Source | 7052 | 49.0k | { | 7053 | 49.0k | return expression_node<T>::e_binary_ext; | 7054 | 49.0k | } |
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::type() const Line | Count | Source | 7052 | 414 | { | 7053 | 414 | return expression_node<T>::e_binary_ext; | 7054 | 414 | } |
exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::type() const Line | Count | Source | 7052 | 5.96k | { | 7053 | 5.96k | return expression_node<T>::e_binary_ext; | 7054 | 5.96k | } |
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::type() const Line | Count | Source | 7052 | 1.51k | { | 7053 | 1.51k | return expression_node<T>::e_binary_ext; | 7054 | 1.51k | } |
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::type() const Line | Count | Source | 7052 | 4.82k | { | 7053 | 4.82k | return expression_node<T>::e_binary_ext; | 7054 | 4.82k | } |
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::type() const Line | Count | Source | 7052 | 3.64k | { | 7053 | 3.64k | return expression_node<T>::e_binary_ext; | 7054 | 3.64k | } |
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::type() const Line | Count | Source | 7052 | 975 | { | 7053 | 975 | return expression_node<T>::e_binary_ext; | 7054 | 975 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::type() const Line | Count | Source | 7052 | 1.03k | { | 7053 | 1.03k | return expression_node<T>::e_binary_ext; | 7054 | 1.03k | } |
|
7055 | | |
7056 | | inline operator_type operation() |
7057 | | { |
7058 | | return Operation::operation(); |
7059 | | } |
7060 | | |
7061 | | inline expression_node<T>* branch(const std::size_t& index = 0) const exprtk_override |
7062 | 0 | { |
7063 | 0 | assert(index < 2); |
7064 | 0 | return branch_[index].first; |
7065 | 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 |
7066 | | |
7067 | | inline bool valid() const exprtk_override |
7068 | 691M | { |
7069 | 691M | return |
7070 | 691M | branch_[0].first && branch_[0].first->valid() && |
7071 | 691M | branch_[1].first && branch_[1].first->valid() ; |
7072 | 691M | } exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::valid() const Line | Count | Source | 7068 | 13.5M | { | 7069 | 13.5M | return | 7070 | 13.5M | branch_[0].first && branch_[0].first->valid() && | 7071 | 13.5M | branch_[1].first && branch_[1].first->valid() ; | 7072 | 13.5M | } |
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::valid() const Line | Count | Source | 7068 | 8.81M | { | 7069 | 8.81M | return | 7070 | 8.81M | branch_[0].first && branch_[0].first->valid() && | 7071 | 8.81M | branch_[1].first && branch_[1].first->valid() ; | 7072 | 8.81M | } |
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::valid() const Line | Count | Source | 7068 | 196M | { | 7069 | 196M | return | 7070 | 196M | branch_[0].first && branch_[0].first->valid() && | 7071 | 196M | branch_[1].first && branch_[1].first->valid() ; | 7072 | 196M | } |
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::valid() const Line | Count | Source | 7068 | 746 | { | 7069 | 746 | return | 7070 | 746 | branch_[0].first && branch_[0].first->valid() && | 7071 | 746 | branch_[1].first && branch_[1].first->valid() ; | 7072 | 746 | } |
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::valid() const Line | Count | Source | 7068 | 962k | { | 7069 | 962k | return | 7070 | 962k | branch_[0].first && branch_[0].first->valid() && | 7071 | 962k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 962k | } |
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::valid() const Line | Count | Source | 7068 | 1.79k | { | 7069 | 1.79k | return | 7070 | 1.79k | branch_[0].first && branch_[0].first->valid() && | 7071 | 1.79k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 1.79k | } |
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::valid() const Line | Count | Source | 7068 | 142M | { | 7069 | 142M | return | 7070 | 142M | branch_[0].first && branch_[0].first->valid() && | 7071 | 142M | branch_[1].first && branch_[1].first->valid() ; | 7072 | 142M | } |
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::valid() const Line | Count | Source | 7068 | 650 | { | 7069 | 650 | return | 7070 | 650 | branch_[0].first && branch_[0].first->valid() && | 7071 | 650 | branch_[1].first && branch_[1].first->valid() ; | 7072 | 650 | } |
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::valid() const Line | Count | Source | 7068 | 139M | { | 7069 | 139M | return | 7070 | 139M | branch_[0].first && branch_[0].first->valid() && | 7071 | 139M | branch_[1].first && branch_[1].first->valid() ; | 7072 | 139M | } |
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::valid() const Line | Count | Source | 7068 | 6.80k | { | 7069 | 6.80k | return | 7070 | 6.80k | branch_[0].first && branch_[0].first->valid() && | 7071 | 6.80k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 6.80k | } |
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::valid() const Line | Count | Source | 7068 | 75.7k | { | 7069 | 75.7k | return | 7070 | 75.7k | branch_[0].first && branch_[0].first->valid() && | 7071 | 75.7k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 75.7k | } |
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::valid() const Line | Count | Source | 7068 | 131 | { | 7069 | 131 | return | 7070 | 131 | branch_[0].first && branch_[0].first->valid() && | 7071 | 131 | branch_[1].first && branch_[1].first->valid() ; | 7072 | 131 | } |
exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::valid() const Line | Count | Source | 7068 | 2.10k | { | 7069 | 2.10k | return | 7070 | 2.10k | branch_[0].first && branch_[0].first->valid() && | 7071 | 2.10k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 2.10k | } |
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::valid() const Line | Count | Source | 7068 | 631 | { | 7069 | 631 | return | 7070 | 631 | branch_[0].first && branch_[0].first->valid() && | 7071 | 631 | branch_[1].first && branch_[1].first->valid() ; | 7072 | 631 | } |
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::valid() const Line | Count | Source | 7068 | 3.31k | { | 7069 | 3.31k | return | 7070 | 3.31k | branch_[0].first && branch_[0].first->valid() && | 7071 | 3.31k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 3.31k | } |
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::valid() const Line | Count | Source | 7068 | 5.63k | { | 7069 | 5.63k | return | 7070 | 5.63k | branch_[0].first && branch_[0].first->valid() && | 7071 | 5.63k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 5.63k | } |
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::valid() const Line | Count | Source | 7068 | 350 | { | 7069 | 350 | return | 7070 | 350 | branch_[0].first && branch_[0].first->valid() && | 7071 | 350 | branch_[1].first && branch_[1].first->valid() ; | 7072 | 350 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::valid() const Line | Count | Source | 7068 | 1.20k | { | 7069 | 1.20k | return | 7070 | 1.20k | branch_[0].first && branch_[0].first->valid() && | 7071 | 1.20k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 1.20k | } |
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::valid() const Line | Count | Source | 7068 | 24.7k | { | 7069 | 24.7k | return | 7070 | 24.7k | branch_[0].first && branch_[0].first->valid() && | 7071 | 24.7k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 24.7k | } |
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::valid() const Line | Count | Source | 7068 | 16.3k | { | 7069 | 16.3k | return | 7070 | 16.3k | branch_[0].first && branch_[0].first->valid() && | 7071 | 16.3k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 16.3k | } |
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::valid() const Line | Count | Source | 7068 | 189M | { | 7069 | 189M | return | 7070 | 189M | branch_[0].first && branch_[0].first->valid() && | 7071 | 189M | branch_[1].first && branch_[1].first->valid() ; | 7072 | 189M | } |
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::valid() const Line | Count | Source | 7068 | 746 | { | 7069 | 746 | return | 7070 | 746 | branch_[0].first && branch_[0].first->valid() && | 7071 | 746 | branch_[1].first && branch_[1].first->valid() ; | 7072 | 746 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::valid() const Line | Count | Source | 7068 | 507 | { | 7069 | 507 | return | 7070 | 507 | branch_[0].first && branch_[0].first->valid() && | 7071 | 507 | branch_[1].first && branch_[1].first->valid() ; | 7072 | 507 | } |
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::valid() const Line | Count | Source | 7068 | 1.78k | { | 7069 | 1.78k | return | 7070 | 1.78k | branch_[0].first && branch_[0].first->valid() && | 7071 | 1.78k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 1.78k | } |
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::valid() const Line | Count | Source | 7068 | 35.7k | { | 7069 | 35.7k | return | 7070 | 35.7k | branch_[0].first && branch_[0].first->valid() && | 7071 | 35.7k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 35.7k | } |
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::valid() const Line | Count | Source | 7068 | 636 | { | 7069 | 636 | return | 7070 | 636 | branch_[0].first && branch_[0].first->valid() && | 7071 | 636 | branch_[1].first && branch_[1].first->valid() ; | 7072 | 636 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::valid() const Line | Count | Source | 7068 | 10.3k | { | 7069 | 10.3k | return | 7070 | 10.3k | branch_[0].first && branch_[0].first->valid() && | 7071 | 10.3k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 10.3k | } |
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::valid() const Line | Count | Source | 7068 | 6.74k | { | 7069 | 6.74k | return | 7070 | 6.74k | branch_[0].first && branch_[0].first->valid() && | 7071 | 6.74k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 6.74k | } |
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::valid() const Line | Count | Source | 7068 | 75.3k | { | 7069 | 75.3k | return | 7070 | 75.3k | branch_[0].first && branch_[0].first->valid() && | 7071 | 75.3k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 75.3k | } |
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::valid() const Line | Count | Source | 7068 | 115 | { | 7069 | 115 | return | 7070 | 115 | branch_[0].first && branch_[0].first->valid() && | 7071 | 115 | branch_[1].first && branch_[1].first->valid() ; | 7072 | 115 | } |
exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::valid() const Line | Count | Source | 7068 | 2.10k | { | 7069 | 2.10k | return | 7070 | 2.10k | branch_[0].first && branch_[0].first->valid() && | 7071 | 2.10k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 2.10k | } |
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::valid() const Line | Count | Source | 7068 | 618 | { | 7069 | 618 | return | 7070 | 618 | branch_[0].first && branch_[0].first->valid() && | 7071 | 618 | branch_[1].first && branch_[1].first->valid() ; | 7072 | 618 | } |
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::valid() const Line | Count | Source | 7068 | 3.31k | { | 7069 | 3.31k | return | 7070 | 3.31k | branch_[0].first && branch_[0].first->valid() && | 7071 | 3.31k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 3.31k | } |
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::valid() const Line | Count | Source | 7068 | 5.63k | { | 7069 | 5.63k | return | 7070 | 5.63k | branch_[0].first && branch_[0].first->valid() && | 7071 | 5.63k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 5.63k | } |
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::valid() const Line | Count | Source | 7068 | 324 | { | 7069 | 324 | return | 7070 | 324 | branch_[0].first && branch_[0].first->valid() && | 7071 | 324 | branch_[1].first && branch_[1].first->valid() ; | 7072 | 324 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::valid() const Line | Count | Source | 7068 | 1.19k | { | 7069 | 1.19k | return | 7070 | 1.19k | branch_[0].first && branch_[0].first->valid() && | 7071 | 1.19k | branch_[1].first && branch_[1].first->valid() ; | 7072 | 1.19k | } |
|
7073 | | |
7074 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7075 | 73.5k | { |
7076 | 73.5k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
7077 | 73.5k | } 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 | 7075 | 1.60k | { | 7076 | 1.60k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 1.60k | } |
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 | 7075 | 1.20k | { | 7076 | 1.20k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 1.20k | } |
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 | 7075 | 20.6k | { | 7076 | 20.6k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 20.6k | } |
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 | 7075 | 84 | { | 7076 | 84 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 84 | } |
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 | 7075 | 105 | { | 7076 | 105 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 105 | } |
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 | 7075 | 115 | { | 7076 | 115 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 115 | } |
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 | 7075 | 10.9k | { | 7076 | 10.9k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 10.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 | 7075 | 64 | { | 7076 | 64 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 64 | } |
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 | 7075 | 10.2k | { | 7076 | 10.2k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 10.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 | 7075 | 100 | { | 7076 | 100 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 100 | } |
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 | 7075 | 1.92k | { | 7076 | 1.92k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 1.92k | } |
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 | 7075 | 20 | { | 7076 | 20 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 20 | } |
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>**> >&) Line | Count | Source | 7075 | 239 | { | 7076 | 239 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 239 | } |
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 | 7075 | 68 | { | 7076 | 68 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 68 | } |
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 | 7075 | 190 | { | 7076 | 190 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 190 | } |
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 | 7075 | 154 | { | 7076 | 154 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 154 | } |
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 | 7075 | 70 | { | 7076 | 70 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 70 | } |
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 | 7075 | 66 | { | 7076 | 66 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 66 | } |
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 | 7075 | 637 | { | 7076 | 637 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 637 | } |
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 | 7075 | 570 | { | 7076 | 570 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 570 | } |
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 | 7075 | 20.1k | { | 7076 | 20.1k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 20.1k | } |
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 | 7075 | 84 | { | 7076 | 84 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 84 | } |
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 | 7075 | 32 | { | 7076 | 32 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 32 | } |
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 | 7075 | 114 | { | 7076 | 114 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 114 | } |
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 | 7075 | 845 | { | 7076 | 845 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 845 | } |
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 | 7075 | 61 | { | 7076 | 61 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 61 | } |
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 | 7075 | 315 | { | 7076 | 315 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 315 | } |
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 | 7075 | 92 | { | 7076 | 92 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 92 | } |
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 | 7075 | 1.87k | { | 7076 | 1.87k | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 1.87k | } |
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 | 7075 | 16 | { | 7076 | 16 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 16 | } |
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>**> >&) Line | Count | Source | 7075 | 239 | { | 7076 | 239 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 239 | } |
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 | 7075 | 65 | { | 7076 | 65 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 65 | } |
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 | 7075 | 190 | { | 7076 | 190 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 190 | } |
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 | 7075 | 154 | { | 7076 | 154 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 154 | } |
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 | 7075 | 62 | { | 7076 | 62 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 62 | } |
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 | 7075 | 63 | { | 7076 | 63 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7077 | 63 | } |
|
7078 | | |
7079 | | std::size_t node_depth() const exprtk_override |
7080 | 150k | { |
7081 | 150k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); |
7082 | 150k | } exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::node_depth() const Line | Count | Source | 7080 | 3.68k | { | 7081 | 3.68k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 3.68k | } |
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::node_depth() const Line | Count | Source | 7080 | 3.32k | { | 7081 | 3.32k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 3.32k | } |
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::node_depth() const Line | Count | Source | 7080 | 41.5k | { | 7081 | 41.5k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 41.5k | } |
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::node_depth() const Line | Count | Source | 7080 | 196 | { | 7081 | 196 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 196 | } |
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::node_depth() const Line | Count | Source | 7080 | 216 | { | 7081 | 216 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 216 | } |
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::node_depth() const Line | Count | Source | 7080 | 348 | { | 7081 | 348 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 348 | } |
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::node_depth() const Line | Count | Source | 7080 | 22.1k | { | 7081 | 22.1k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 22.1k | } |
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::node_depth() const Line | Count | Source | 7080 | 167 | { | 7081 | 167 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 167 | } |
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::node_depth() const Line | Count | Source | 7080 | 20.4k | { | 7081 | 20.4k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 20.4k | } |
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::node_depth() const Line | Count | Source | 7080 | 208 | { | 7081 | 208 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 208 | } |
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::node_depth() const Line | Count | Source | 7080 | 3.98k | { | 7081 | 3.98k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 3.98k | } |
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::node_depth() const Line | Count | Source | 7080 | 44 | { | 7081 | 44 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 44 | } |
exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::node_depth() const Line | Count | Source | 7080 | 535 | { | 7081 | 535 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 535 | } |
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::node_depth() const Line | Count | Source | 7080 | 159 | { | 7081 | 159 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 159 | } |
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::node_depth() const Line | Count | Source | 7080 | 404 | { | 7081 | 404 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 404 | } |
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::node_depth() const Line | Count | Source | 7080 | 316 | { | 7081 | 316 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 316 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::node_depth() const Line | Count | Source | 7080 | 178 | { | 7081 | 178 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 178 | } |
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::node_depth() const Line | Count | Source | 7080 | 145 | { | 7081 | 145 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 145 | } |
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::node_depth() const Line | Count | Source | 7080 | 1.63k | { | 7081 | 1.63k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 1.63k | } |
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::node_depth() const Line | Count | Source | 7080 | 1.42k | { | 7081 | 1.42k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 1.42k | } |
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::node_depth() const Line | Count | Source | 7080 | 40.5k | { | 7081 | 40.5k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 40.5k | } |
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::node_depth() const Line | Count | Source | 7080 | 196 | { | 7081 | 196 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 196 | } |
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::node_depth() const Line | Count | Source | 7080 | 66 | { | 7081 | 66 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 66 | } |
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::node_depth() const Line | Count | Source | 7080 | 345 | { | 7081 | 345 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 345 | } |
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::node_depth() const Line | Count | Source | 7080 | 1.89k | { | 7081 | 1.89k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 1.89k | } |
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::node_depth() const Line | Count | Source | 7080 | 161 | { | 7081 | 161 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 161 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::node_depth() const Line | Count | Source | 7080 | 656 | { | 7081 | 656 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 656 | } |
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::node_depth() const Line | Count | Source | 7080 | 186 | { | 7081 | 186 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 186 | } |
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::node_depth() const Line | Count | Source | 7080 | 3.88k | { | 7081 | 3.88k | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 3.88k | } |
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::node_depth() const Line | Count | Source | 7080 | 34 | { | 7081 | 34 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 34 | } |
exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::node_depth() const Line | Count | Source | 7080 | 535 | { | 7081 | 535 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 535 | } |
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::node_depth() const Line | Count | Source | 7080 | 153 | { | 7081 | 153 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 153 | } |
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::node_depth() const Line | Count | Source | 7080 | 404 | { | 7081 | 404 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 404 | } |
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::node_depth() const Line | Count | Source | 7080 | 316 | { | 7081 | 316 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 316 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::node_depth() const Line | Count | Source | 7080 | 161 | { | 7081 | 161 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 161 | } |
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::node_depth() const Line | Count | Source | 7080 | 138 | { | 7081 | 138 | return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_); | 7082 | 138 | } |
|
7083 | | |
7084 | | protected: |
7085 | | |
7086 | | branch_t branch_[2]; |
7087 | | }; |
7088 | | |
7089 | | template <typename T> |
7090 | | class trinary_node : public expression_node<T> |
7091 | | { |
7092 | | public: |
7093 | | |
7094 | | typedef expression_node<T>* expression_ptr; |
7095 | | typedef std::pair<expression_ptr,bool> branch_t; |
7096 | | |
7097 | | trinary_node(const operator_type& opr, |
7098 | | expression_ptr branch0, |
7099 | | expression_ptr branch1, |
7100 | | expression_ptr branch2) |
7101 | 202 | : operation_(opr) |
7102 | 202 | { |
7103 | 202 | init_branches<3>(branch_, branch0, branch1, branch2); |
7104 | 202 | assert(valid()); |
7105 | 202 | } 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 | 7101 | 101 | : operation_(opr) | 7102 | 101 | { | 7103 | 101 | init_branches<3>(branch_, branch0, branch1, branch2); | 7104 | 101 | assert(valid()); | 7105 | 101 | } |
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 | 7101 | 101 | : operation_(opr) | 7102 | 101 | { | 7103 | 101 | init_branches<3>(branch_, branch0, branch1, branch2); | 7104 | 101 | assert(valid()); | 7105 | 101 | } |
|
7106 | | |
7107 | | inline T value() const exprtk_override |
7108 | 0 | { |
7109 | 0 | const T arg0 = branch_[0].first->value(); |
7110 | 0 | const T arg1 = branch_[1].first->value(); |
7111 | 0 | const T arg2 = branch_[2].first->value(); |
7112 | |
|
7113 | 0 | switch (operation_) |
7114 | 0 | { |
7115 | 0 | case e_inrange : return (arg1 < arg0) ? T(0) : ((arg1 > arg2) ? T(0) : T(1)); |
7116 | | |
7117 | 0 | case e_clamp : return (arg1 < arg0) ? arg0 : (arg1 > arg2 ? arg2 : arg1); |
7118 | | |
7119 | 0 | case e_iclamp : if ((arg1 <= arg0) || (arg1 >= arg2)) |
7120 | 0 | return arg1; |
7121 | 0 | else |
7122 | 0 | return ((T(2) * arg1 <= (arg2 + arg0)) ? arg0 : arg2); |
7123 | | |
7124 | 0 | default : exprtk_debug(("trinary_node::value() - Error: Invalid operation\n")); |
7125 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
7126 | 0 | } |
7127 | 0 | } Unexecuted instantiation: exprtk::details::trinary_node<double>::value() const Unexecuted instantiation: exprtk::details::trinary_node<float>::value() const |
7128 | | |
7129 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7130 | 6.06k | { |
7131 | 6.06k | return expression_node<T>::e_trinary; |
7132 | 6.06k | } exprtk::details::trinary_node<double>::type() const Line | Count | Source | 7130 | 3.03k | { | 7131 | 3.03k | return expression_node<T>::e_trinary; | 7132 | 3.03k | } |
exprtk::details::trinary_node<float>::type() const Line | Count | Source | 7130 | 3.03k | { | 7131 | 3.03k | return expression_node<T>::e_trinary; | 7132 | 3.03k | } |
|
7133 | | |
7134 | | inline bool valid() const exprtk_override |
7135 | 3.02k | { |
7136 | 3.02k | return |
7137 | 3.02k | branch_[0].first && branch_[0].first->valid() && |
7138 | 3.02k | branch_[1].first && branch_[1].first->valid() && |
7139 | 3.02k | branch_[2].first && branch_[2].first->valid() ; |
7140 | 3.02k | } exprtk::details::trinary_node<double>::valid() const Line | Count | Source | 7135 | 1.51k | { | 7136 | 1.51k | return | 7137 | 1.51k | branch_[0].first && branch_[0].first->valid() && | 7138 | 1.51k | branch_[1].first && branch_[1].first->valid() && | 7139 | 1.51k | branch_[2].first && branch_[2].first->valid() ; | 7140 | 1.51k | } |
exprtk::details::trinary_node<float>::valid() const Line | Count | Source | 7135 | 1.51k | { | 7136 | 1.51k | return | 7137 | 1.51k | branch_[0].first && branch_[0].first->valid() && | 7138 | 1.51k | branch_[1].first && branch_[1].first->valid() && | 7139 | 1.51k | branch_[2].first && branch_[2].first->valid() ; | 7140 | 1.51k | } |
|
7141 | | |
7142 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7143 | 202 | { |
7144 | 202 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
7145 | 202 | } 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 | 7143 | 101 | { | 7144 | 101 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7145 | 101 | } |
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 | 7143 | 101 | { | 7144 | 101 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 7145 | 101 | } |
|
7146 | | |
7147 | | std::size_t node_depth() const exprtk_override exprtk_final |
7148 | 606 | { |
7149 | 606 | return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_); |
7150 | 606 | } exprtk::details::trinary_node<double>::node_depth() const Line | Count | Source | 7148 | 303 | { | 7149 | 303 | return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_); | 7150 | 303 | } |
exprtk::details::trinary_node<float>::node_depth() const Line | Count | Source | 7148 | 303 | { | 7149 | 303 | return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_); | 7150 | 303 | } |
|
7151 | | |
7152 | | protected: |
7153 | | |
7154 | | operator_type operation_; |
7155 | | branch_t branch_[3]; |
7156 | | }; |
7157 | | |
7158 | | template <typename T> |
7159 | | class quaternary_node : public expression_node<T> |
7160 | | { |
7161 | | public: |
7162 | | |
7163 | | typedef expression_node<T>* expression_ptr; |
7164 | | typedef std::pair<expression_ptr,bool> branch_t; |
7165 | | |
7166 | | quaternary_node(const operator_type& opr, |
7167 | | expression_ptr branch0, |
7168 | | expression_ptr branch1, |
7169 | | expression_ptr branch2, |
7170 | | expression_ptr branch3) |
7171 | 0 | : operation_(opr) |
7172 | 0 | { |
7173 | 0 | init_branches<4>(branch_, branch0, branch1, branch2, branch3); |
7174 | 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>*) |
7175 | | |
7176 | | inline T value() const exprtk_override |
7177 | 0 | { |
7178 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
7179 | 0 | } Unexecuted instantiation: exprtk::details::quaternary_node<double>::value() const Unexecuted instantiation: exprtk::details::quaternary_node<float>::value() const |
7180 | | |
7181 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7182 | 0 | { |
7183 | 0 | return expression_node<T>::e_quaternary; |
7184 | 0 | } Unexecuted instantiation: exprtk::details::quaternary_node<double>::type() const Unexecuted instantiation: exprtk::details::quaternary_node<float>::type() const |
7185 | | |
7186 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7187 | 0 | { |
7188 | 0 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
7189 | 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>**> >&) |
7190 | | |
7191 | | std::size_t node_depth() const exprtk_override exprtk_final |
7192 | 0 | { |
7193 | 0 | return expression_node<T>::ndb_t::template compute_node_depth<4>(branch_); |
7194 | 0 | } Unexecuted instantiation: exprtk::details::quaternary_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::quaternary_node<float>::node_depth() const |
7195 | | |
7196 | | inline bool valid() const exprtk_override |
7197 | 0 | { |
7198 | 0 | return |
7199 | 0 | branch_[0].first && branch_[0].first->valid() && |
7200 | 0 | branch_[1].first && branch_[1].first->valid() && |
7201 | 0 | branch_[2].first && branch_[2].first->valid() && |
7202 | 0 | branch_[3].first && branch_[3].first->valid() ; |
7203 | 0 | } Unexecuted instantiation: exprtk::details::quaternary_node<double>::valid() const Unexecuted instantiation: exprtk::details::quaternary_node<float>::valid() const |
7204 | | |
7205 | | protected: |
7206 | | |
7207 | | operator_type operation_; |
7208 | | branch_t branch_[4]; |
7209 | | }; |
7210 | | |
7211 | | template <typename T> |
7212 | | class conditional_node exprtk_final : public expression_node<T> |
7213 | | { |
7214 | | public: |
7215 | | |
7216 | | typedef expression_node<T>* expression_ptr; |
7217 | | typedef std::pair<expression_ptr,bool> branch_t; |
7218 | | |
7219 | | conditional_node(expression_ptr condition, |
7220 | | expression_ptr consequent, |
7221 | | expression_ptr alternative) |
7222 | 88 | { |
7223 | 88 | construct_branch_pair(condition_ , condition ); |
7224 | 88 | construct_branch_pair(consequent_ , consequent ); |
7225 | 88 | construct_branch_pair(alternative_, alternative); |
7226 | 88 | assert(valid()); |
7227 | 88 | } 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 | 7222 | 44 | { | 7223 | 44 | construct_branch_pair(condition_ , condition ); | 7224 | 44 | construct_branch_pair(consequent_ , consequent ); | 7225 | 44 | construct_branch_pair(alternative_, alternative); | 7226 | 44 | assert(valid()); | 7227 | 44 | } |
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 | 7222 | 44 | { | 7223 | 44 | construct_branch_pair(condition_ , condition ); | 7224 | 44 | construct_branch_pair(consequent_ , consequent ); | 7225 | 44 | construct_branch_pair(alternative_, alternative); | 7226 | 44 | assert(valid()); | 7227 | 44 | } |
|
7228 | | |
7229 | | inline T value() const exprtk_override |
7230 | 18 | { |
7231 | 18 | if (is_true(condition_)) |
7232 | 18 | return consequent_.first->value(); |
7233 | 0 | else |
7234 | 0 | return alternative_.first->value(); |
7235 | 18 | } exprtk::details::conditional_node<double>::value() const Line | Count | Source | 7230 | 9 | { | 7231 | 9 | if (is_true(condition_)) | 7232 | 9 | return consequent_.first->value(); | 7233 | 0 | else | 7234 | 0 | return alternative_.first->value(); | 7235 | 9 | } |
exprtk::details::conditional_node<float>::value() const Line | Count | Source | 7230 | 9 | { | 7231 | 9 | if (is_true(condition_)) | 7232 | 9 | return consequent_.first->value(); | 7233 | 0 | else | 7234 | 0 | return alternative_.first->value(); | 7235 | 9 | } |
|
7236 | | |
7237 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7238 | 510 | { |
7239 | 510 | return expression_node<T>::e_conditional; |
7240 | 510 | } exprtk::details::conditional_node<double>::type() const Line | Count | Source | 7238 | 255 | { | 7239 | 255 | return expression_node<T>::e_conditional; | 7240 | 255 | } |
exprtk::details::conditional_node<float>::type() const Line | Count | Source | 7238 | 255 | { | 7239 | 255 | return expression_node<T>::e_conditional; | 7240 | 255 | } |
|
7241 | | |
7242 | | inline bool valid() const exprtk_override |
7243 | 334 | { |
7244 | 334 | return |
7245 | 334 | condition_ .first && condition_ .first->valid() && |
7246 | 334 | consequent_ .first && consequent_ .first->valid() && |
7247 | 334 | alternative_.first && alternative_.first->valid() ; |
7248 | 334 | } exprtk::details::conditional_node<double>::valid() const Line | Count | Source | 7243 | 167 | { | 7244 | 167 | return | 7245 | 167 | condition_ .first && condition_ .first->valid() && | 7246 | 167 | consequent_ .first && consequent_ .first->valid() && | 7247 | 167 | alternative_.first && alternative_.first->valid() ; | 7248 | 167 | } |
exprtk::details::conditional_node<float>::valid() const Line | Count | Source | 7243 | 167 | { | 7244 | 167 | return | 7245 | 167 | condition_ .first && condition_ .first->valid() && | 7246 | 167 | consequent_ .first && consequent_ .first->valid() && | 7247 | 167 | alternative_.first && alternative_.first->valid() ; | 7248 | 167 | } |
|
7249 | | |
7250 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7251 | 88 | { |
7252 | 88 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); |
7253 | 88 | expression_node<T>::ndb_t::collect(consequent_ , node_delete_list); |
7254 | 88 | expression_node<T>::ndb_t::collect(alternative_ , node_delete_list); |
7255 | 88 | } 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 | 7251 | 44 | { | 7252 | 44 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); | 7253 | 44 | expression_node<T>::ndb_t::collect(consequent_ , node_delete_list); | 7254 | 44 | expression_node<T>::ndb_t::collect(alternative_ , node_delete_list); | 7255 | 44 | } |
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 | 7251 | 44 | { | 7252 | 44 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); | 7253 | 44 | expression_node<T>::ndb_t::collect(consequent_ , node_delete_list); | 7254 | 44 | expression_node<T>::ndb_t::collect(alternative_ , node_delete_list); | 7255 | 44 | } |
|
7256 | | |
7257 | | std::size_t node_depth() const exprtk_override |
7258 | 186 | { |
7259 | 186 | return expression_node<T>::ndb_t::compute_node_depth |
7260 | 186 | (condition_, consequent_, alternative_); |
7261 | 186 | } exprtk::details::conditional_node<double>::node_depth() const Line | Count | Source | 7258 | 93 | { | 7259 | 93 | return expression_node<T>::ndb_t::compute_node_depth | 7260 | 93 | (condition_, consequent_, alternative_); | 7261 | 93 | } |
exprtk::details::conditional_node<float>::node_depth() const Line | Count | Source | 7258 | 93 | { | 7259 | 93 | return expression_node<T>::ndb_t::compute_node_depth | 7260 | 93 | (condition_, consequent_, alternative_); | 7261 | 93 | } |
|
7262 | | |
7263 | | private: |
7264 | | |
7265 | | branch_t condition_; |
7266 | | branch_t consequent_; |
7267 | | branch_t alternative_; |
7268 | | }; |
7269 | | |
7270 | | template <typename T> |
7271 | | class cons_conditional_node exprtk_final : public expression_node<T> |
7272 | | { |
7273 | | public: |
7274 | | |
7275 | | // Consequent only conditional statement node |
7276 | | typedef expression_node<T>* expression_ptr; |
7277 | | typedef std::pair<expression_ptr,bool> branch_t; |
7278 | | |
7279 | | cons_conditional_node(expression_ptr condition, |
7280 | | expression_ptr consequent) |
7281 | 0 | { |
7282 | 0 | construct_branch_pair(condition_ , condition ); |
7283 | 0 | construct_branch_pair(consequent_, consequent); |
7284 | 0 | assert(valid()); |
7285 | 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>*) |
7286 | | |
7287 | | inline T value() const exprtk_override |
7288 | 0 | { |
7289 | 0 | if (is_true(condition_)) |
7290 | 0 | return consequent_.first->value(); |
7291 | 0 | else |
7292 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
7293 | 0 | } Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::value() const Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::value() const |
7294 | | |
7295 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7296 | 0 | { |
7297 | 0 | return expression_node<T>::e_conditional; |
7298 | 0 | } Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::type() const Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::type() const |
7299 | | |
7300 | | inline bool valid() const exprtk_override |
7301 | 0 | { |
7302 | 0 | return |
7303 | 0 | condition_ .first && condition_ .first->valid() && |
7304 | 0 | consequent_.first && consequent_.first->valid() ; |
7305 | 0 | } Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::valid() const Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::valid() const |
7306 | | |
7307 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7308 | 0 | { |
7309 | 0 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); |
7310 | 0 | expression_node<T>::ndb_t::collect(consequent_ , node_delete_list); |
7311 | 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>**> >&) |
7312 | | |
7313 | | std::size_t node_depth() const exprtk_override |
7314 | 0 | { |
7315 | 0 | return expression_node<T>::ndb_t:: |
7316 | 0 | compute_node_depth(condition_, consequent_); |
7317 | 0 | } Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::node_depth() const |
7318 | | |
7319 | | private: |
7320 | | |
7321 | | branch_t condition_; |
7322 | | branch_t consequent_; |
7323 | | }; |
7324 | | |
7325 | | #ifndef exprtk_disable_break_continue |
7326 | | template <typename T> |
7327 | | class break_exception |
7328 | | { |
7329 | | public: |
7330 | | |
7331 | | explicit break_exception(const T& v) |
7332 | 0 | : value(v) |
7333 | 0 | {} Unexecuted instantiation: exprtk::details::break_exception<double>::break_exception(double const&) Unexecuted instantiation: exprtk::details::break_exception<float>::break_exception(float const&) |
7334 | | |
7335 | | T value; |
7336 | | }; |
7337 | | |
7338 | | class continue_exception {}; |
7339 | | |
7340 | | template <typename T> |
7341 | | class break_node exprtk_final : public expression_node<T> |
7342 | | { |
7343 | | public: |
7344 | | |
7345 | | typedef expression_node<T>* expression_ptr; |
7346 | | typedef std::pair<expression_ptr,bool> branch_t; |
7347 | | |
7348 | | explicit break_node(expression_ptr ret = expression_ptr(0)) |
7349 | 1 | { |
7350 | 1 | construct_branch_pair(return_, ret); |
7351 | 1 | } exprtk::details::break_node<double>::break_node(exprtk::details::expression_node<double>*) Line | Count | Source | 7349 | 1 | { | 7350 | 1 | construct_branch_pair(return_, ret); | 7351 | 1 | } |
Unexecuted instantiation: exprtk::details::break_node<float>::break_node(exprtk::details::expression_node<float>*) |
7352 | | |
7353 | | inline T value() const exprtk_override |
7354 | 0 | { |
7355 | 0 | const T result = return_.first ? |
7356 | 0 | return_.first->value() : |
7357 | 0 | std::numeric_limits<T>::quiet_NaN(); |
7358 | |
|
7359 | 0 | throw break_exception<T>(result); |
7360 | | |
7361 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
7362 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
7363 | 0 | #endif |
7364 | 0 | } Unexecuted instantiation: exprtk::details::break_node<double>::value() const Unexecuted instantiation: exprtk::details::break_node<float>::value() const |
7365 | | |
7366 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7367 | 6 | { |
7368 | 6 | return expression_node<T>::e_break; |
7369 | 6 | } exprtk::details::break_node<double>::type() const Line | Count | Source | 7367 | 6 | { | 7368 | 6 | return expression_node<T>::e_break; | 7369 | 6 | } |
Unexecuted instantiation: exprtk::details::break_node<float>::type() const |
7370 | | |
7371 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7372 | 1 | { |
7373 | 1 | expression_node<T>::ndb_t::collect(return_, node_delete_list); |
7374 | 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 | 7372 | 1 | { | 7373 | 1 | expression_node<T>::ndb_t::collect(return_, node_delete_list); | 7374 | 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>**> >&) |
7375 | | |
7376 | | std::size_t node_depth() const exprtk_override |
7377 | 1 | { |
7378 | 1 | return expression_node<T>::ndb_t::compute_node_depth(return_); |
7379 | 1 | } exprtk::details::break_node<double>::node_depth() const Line | Count | Source | 7377 | 1 | { | 7378 | 1 | return expression_node<T>::ndb_t::compute_node_depth(return_); | 7379 | 1 | } |
Unexecuted instantiation: exprtk::details::break_node<float>::node_depth() const |
7380 | | |
7381 | | private: |
7382 | | |
7383 | | branch_t return_; |
7384 | | }; |
7385 | | |
7386 | | template <typename T> |
7387 | | class continue_node exprtk_final : public expression_node<T> |
7388 | | { |
7389 | | public: |
7390 | | |
7391 | | inline T value() const exprtk_override |
7392 | 0 | { |
7393 | 0 | throw continue_exception(); |
7394 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
7395 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
7396 | 0 | #endif |
7397 | 0 | } Unexecuted instantiation: exprtk::details::continue_node<double>::value() const Unexecuted instantiation: exprtk::details::continue_node<float>::value() const |
7398 | | |
7399 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7400 | 0 | { |
7401 | 0 | return expression_node<T>::e_break; |
7402 | 0 | } Unexecuted instantiation: exprtk::details::continue_node<double>::type() const Unexecuted instantiation: exprtk::details::continue_node<float>::type() const |
7403 | | }; |
7404 | | #endif |
7405 | | |
7406 | | struct loop_runtime_checker |
7407 | | { |
7408 | | loop_runtime_checker(loop_runtime_check_ptr loop_runtime_check, |
7409 | | loop_runtime_check::loop_types lp_typ = loop_runtime_check::e_invalid) |
7410 | 2 | : iteration_count_(0) |
7411 | 2 | , loop_runtime_check_(loop_runtime_check) |
7412 | 2 | , max_loop_iterations_(loop_runtime_check_->max_loop_iterations) |
7413 | 2 | , loop_type_(lp_typ) |
7414 | 2 | { |
7415 | 2 | assert(loop_runtime_check_); |
7416 | 2 | } |
7417 | | |
7418 | | inline void reset(const _uint64_t initial_value = 0) const |
7419 | 2 | { |
7420 | 2 | iteration_count_ = initial_value; |
7421 | 2 | } |
7422 | | |
7423 | | inline bool check() const |
7424 | 14 | { |
7425 | 14 | assert(loop_runtime_check_); |
7426 | | |
7427 | 14 | if ( |
7428 | 14 | (++iteration_count_ <= max_loop_iterations_) && |
7429 | 14 | loop_runtime_check_->check() |
7430 | 14 | ) |
7431 | 14 | { |
7432 | 14 | return true; |
7433 | 14 | } |
7434 | | |
7435 | 0 | loop_runtime_check::violation_context ctxt; |
7436 | 0 | ctxt.loop = loop_type_; |
7437 | 0 | ctxt.violation = loop_runtime_check::e_iteration_count; |
7438 | |
|
7439 | 0 | loop_runtime_check_->handle_runtime_violation(ctxt); |
7440 | |
|
7441 | 0 | return false; |
7442 | 14 | } |
7443 | | |
7444 | | bool valid() const |
7445 | 4 | { |
7446 | 4 | return 0 != loop_runtime_check_; |
7447 | 4 | } |
7448 | | |
7449 | | mutable _uint64_t iteration_count_; |
7450 | | mutable loop_runtime_check_ptr loop_runtime_check_; |
7451 | | const details::_uint64_t& max_loop_iterations_; |
7452 | | loop_runtime_check::loop_types loop_type_; |
7453 | | }; |
7454 | | |
7455 | | template <typename T> |
7456 | | class while_loop_node : public expression_node<T> |
7457 | | { |
7458 | | public: |
7459 | | |
7460 | | typedef expression_node<T>* expression_ptr; |
7461 | | typedef std::pair<expression_ptr,bool> branch_t; |
7462 | | |
7463 | | while_loop_node(expression_ptr condition, |
7464 | | expression_ptr loop_body) |
7465 | 2 | { |
7466 | 2 | construct_branch_pair(condition_, condition); |
7467 | 2 | construct_branch_pair(loop_body_, loop_body); |
7468 | 2 | assert(valid()); |
7469 | 2 | } exprtk::details::while_loop_node<double>::while_loop_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 7465 | 1 | { | 7466 | 1 | construct_branch_pair(condition_, condition); | 7467 | 1 | construct_branch_pair(loop_body_, loop_body); | 7468 | 1 | assert(valid()); | 7469 | 1 | } |
exprtk::details::while_loop_node<float>::while_loop_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 7465 | 1 | { | 7466 | 1 | construct_branch_pair(condition_, condition); | 7467 | 1 | construct_branch_pair(loop_body_, loop_body); | 7468 | 1 | assert(valid()); | 7469 | 1 | } |
|
7470 | | |
7471 | | inline T value() const exprtk_override |
7472 | 0 | { |
7473 | 0 | T result = T(0); |
7474 | |
|
7475 | 0 | while (is_true(condition_)) |
7476 | 0 | { |
7477 | 0 | result = loop_body_.first->value(); |
7478 | 0 | } |
7479 | |
|
7480 | 0 | return result; |
7481 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_node<double>::value() const Unexecuted instantiation: exprtk::details::while_loop_node<float>::value() const |
7482 | | |
7483 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7484 | 8 | { |
7485 | 8 | return expression_node<T>::e_while; |
7486 | 8 | } exprtk::details::while_loop_node<double>::type() const Line | Count | Source | 7484 | 4 | { | 7485 | 4 | return expression_node<T>::e_while; | 7486 | 4 | } |
exprtk::details::while_loop_node<float>::type() const Line | Count | Source | 7484 | 4 | { | 7485 | 4 | return expression_node<T>::e_while; | 7486 | 4 | } |
|
7487 | | |
7488 | | inline bool valid() const exprtk_override |
7489 | 6 | { |
7490 | 6 | return |
7491 | 6 | condition_.first && condition_.first->valid() && |
7492 | 6 | loop_body_.first && loop_body_.first->valid() ; |
7493 | 6 | } exprtk::details::while_loop_node<double>::valid() const Line | Count | Source | 7489 | 3 | { | 7490 | 3 | return | 7491 | 3 | condition_.first && condition_.first->valid() && | 7492 | 3 | loop_body_.first && loop_body_.first->valid() ; | 7493 | 3 | } |
exprtk::details::while_loop_node<float>::valid() const Line | Count | Source | 7489 | 3 | { | 7490 | 3 | return | 7491 | 3 | condition_.first && condition_.first->valid() && | 7492 | 3 | loop_body_.first && loop_body_.first->valid() ; | 7493 | 3 | } |
|
7494 | | |
7495 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7496 | 2 | { |
7497 | 2 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); |
7498 | 2 | expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list); |
7499 | 2 | } exprtk::details::while_loop_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) Line | Count | Source | 7496 | 1 | { | 7497 | 1 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); | 7498 | 1 | expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list); | 7499 | 1 | } |
exprtk::details::while_loop_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) Line | Count | Source | 7496 | 1 | { | 7497 | 1 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); | 7498 | 1 | expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list); | 7499 | 1 | } |
|
7500 | | |
7501 | | std::size_t node_depth() const exprtk_override |
7502 | 2 | { |
7503 | 2 | return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_); |
7504 | 2 | } exprtk::details::while_loop_node<double>::node_depth() const Line | Count | Source | 7502 | 1 | { | 7503 | 1 | return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_); | 7504 | 1 | } |
exprtk::details::while_loop_node<float>::node_depth() const Line | Count | Source | 7502 | 1 | { | 7503 | 1 | return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_); | 7504 | 1 | } |
|
7505 | | |
7506 | | protected: |
7507 | | |
7508 | | branch_t condition_; |
7509 | | branch_t loop_body_; |
7510 | | }; |
7511 | | |
7512 | | template <typename T> |
7513 | | class while_loop_rtc_node exprtk_final |
7514 | | : public while_loop_node<T> |
7515 | | , public loop_runtime_checker |
7516 | | { |
7517 | | public: |
7518 | | |
7519 | | typedef while_loop_node<T> parent_t; |
7520 | | typedef expression_node<T>* expression_ptr; |
7521 | | |
7522 | | while_loop_rtc_node(expression_ptr condition, |
7523 | | expression_ptr loop_body, |
7524 | | loop_runtime_check_ptr loop_rt_chk) |
7525 | 2 | : parent_t(condition, loop_body) |
7526 | 2 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop) |
7527 | 2 | { |
7528 | 2 | assert(valid()); |
7529 | 2 | } 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*) Line | Count | Source | 7525 | 1 | : parent_t(condition, loop_body) | 7526 | 1 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop) | 7527 | 1 | { | 7528 | 1 | assert(valid()); | 7529 | 1 | } |
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*) Line | Count | Source | 7525 | 1 | : parent_t(condition, loop_body) | 7526 | 1 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop) | 7527 | 1 | { | 7528 | 1 | assert(valid()); | 7529 | 1 | } |
|
7530 | | |
7531 | | inline T value() const exprtk_override |
7532 | 2 | { |
7533 | | |
7534 | 2 | T result = T(0); |
7535 | | |
7536 | 2 | loop_runtime_checker::reset(); |
7537 | | |
7538 | 16 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
7539 | 14 | { |
7540 | 14 | result = parent_t::loop_body_.first->value(); |
7541 | 14 | } |
7542 | | |
7543 | 2 | return result; |
7544 | 2 | } exprtk::details::while_loop_rtc_node<double>::value() const Line | Count | Source | 7532 | 1 | { | 7533 | | | 7534 | 1 | T result = T(0); | 7535 | | | 7536 | 1 | loop_runtime_checker::reset(); | 7537 | | | 7538 | 8 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) | 7539 | 7 | { | 7540 | 7 | result = parent_t::loop_body_.first->value(); | 7541 | 7 | } | 7542 | | | 7543 | 1 | return result; | 7544 | 1 | } |
exprtk::details::while_loop_rtc_node<float>::value() const Line | Count | Source | 7532 | 1 | { | 7533 | | | 7534 | 1 | T result = T(0); | 7535 | | | 7536 | 1 | loop_runtime_checker::reset(); | 7537 | | | 7538 | 8 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) | 7539 | 7 | { | 7540 | 7 | result = parent_t::loop_body_.first->value(); | 7541 | 7 | } | 7542 | | | 7543 | 1 | return result; | 7544 | 1 | } |
|
7545 | | |
7546 | | using parent_t::valid; |
7547 | | |
7548 | | bool valid() const exprtk_override exprtk_final |
7549 | 4 | { |
7550 | 4 | return parent_t::valid() && |
7551 | 4 | loop_runtime_checker::valid(); |
7552 | 4 | } exprtk::details::while_loop_rtc_node<double>::valid() const Line | Count | Source | 7549 | 2 | { | 7550 | 2 | return parent_t::valid() && | 7551 | 2 | loop_runtime_checker::valid(); | 7552 | 2 | } |
exprtk::details::while_loop_rtc_node<float>::valid() const Line | Count | Source | 7549 | 2 | { | 7550 | 2 | return parent_t::valid() && | 7551 | 2 | loop_runtime_checker::valid(); | 7552 | 2 | } |
|
7553 | | }; |
7554 | | |
7555 | | template <typename T> |
7556 | | class repeat_until_loop_node : public expression_node<T> |
7557 | | { |
7558 | | public: |
7559 | | |
7560 | | typedef expression_node<T>* expression_ptr; |
7561 | | typedef std::pair<expression_ptr,bool> branch_t; |
7562 | | |
7563 | | repeat_until_loop_node(expression_ptr condition, |
7564 | | expression_ptr loop_body) |
7565 | 0 | { |
7566 | 0 | construct_branch_pair(condition_, condition); |
7567 | 0 | construct_branch_pair(loop_body_, loop_body); |
7568 | 0 | assert(valid()); |
7569 | 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>*) |
7570 | | |
7571 | | inline T value() const exprtk_override |
7572 | 0 | { |
7573 | 0 | T result = T(0); |
7574 | |
|
7575 | 0 | do |
7576 | 0 | { |
7577 | 0 | result = loop_body_.first->value(); |
7578 | 0 | } |
7579 | 0 | while (is_false(condition_.first)); |
7580 | |
|
7581 | 0 | return result; |
7582 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::value() const Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::value() const |
7583 | | |
7584 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7585 | 0 | { |
7586 | 0 | return expression_node<T>::e_repeat; |
7587 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::type() const Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::type() const |
7588 | | |
7589 | | inline bool valid() const exprtk_override |
7590 | 0 | { |
7591 | 0 | return |
7592 | 0 | condition_.first && condition_.first->valid() && |
7593 | 0 | loop_body_.first && loop_body_.first->valid() ; |
7594 | 0 | } Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::valid() const Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::valid() const |
7595 | | |
7596 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7597 | 0 | { |
7598 | 0 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); |
7599 | 0 | expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list); |
7600 | 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>**> >&) |
7601 | | |
7602 | | std::size_t node_depth() const exprtk_override |
7603 | 0 | { |
7604 | 0 | return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_); |
7605 | 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 |
7606 | | |
7607 | | protected: |
7608 | | |
7609 | | branch_t condition_; |
7610 | | branch_t loop_body_; |
7611 | | }; |
7612 | | |
7613 | | template <typename T> |
7614 | | class repeat_until_loop_rtc_node exprtk_final |
7615 | | : public repeat_until_loop_node<T> |
7616 | | , public loop_runtime_checker |
7617 | | { |
7618 | | public: |
7619 | | |
7620 | | typedef repeat_until_loop_node<T> parent_t; |
7621 | | typedef expression_node<T>* expression_ptr; |
7622 | | |
7623 | | repeat_until_loop_rtc_node(expression_ptr condition, |
7624 | | expression_ptr loop_body, |
7625 | | loop_runtime_check_ptr loop_rt_chk) |
7626 | 0 | : parent_t(condition, loop_body) |
7627 | 0 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_repeat_until_loop) |
7628 | 0 | { |
7629 | 0 | assert(valid()); |
7630 | 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*) |
7631 | | |
7632 | | inline T value() const exprtk_override |
7633 | 0 | { |
7634 | 0 | T result = T(0); |
7635 | |
|
7636 | 0 | loop_runtime_checker::reset(1); |
7637 | |
|
7638 | 0 | do |
7639 | 0 | { |
7640 | 0 | result = parent_t::loop_body_.first->value(); |
7641 | 0 | } |
7642 | 0 | while (is_false(parent_t::condition_.first) && loop_runtime_checker::check()); |
7643 | |
|
7644 | 0 | return result; |
7645 | 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 |
7646 | | |
7647 | | using parent_t::valid; |
7648 | | |
7649 | | inline bool valid() const exprtk_override exprtk_final |
7650 | 0 | { |
7651 | 0 | return parent_t::valid() && |
7652 | 0 | loop_runtime_checker::valid(); |
7653 | 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 |
7654 | | }; |
7655 | | |
7656 | | template <typename T> |
7657 | | class for_loop_node : public expression_node<T> |
7658 | | { |
7659 | | public: |
7660 | | |
7661 | | typedef expression_node<T>* expression_ptr; |
7662 | | typedef std::pair<expression_ptr,bool> branch_t; |
7663 | | |
7664 | | for_loop_node(expression_ptr initialiser, |
7665 | | expression_ptr condition, |
7666 | | expression_ptr incrementor, |
7667 | | expression_ptr loop_body) |
7668 | 0 | { |
7669 | 0 | construct_branch_pair(initialiser_, initialiser); |
7670 | 0 | construct_branch_pair(condition_ , condition ); |
7671 | 0 | construct_branch_pair(incrementor_, incrementor); |
7672 | 0 | construct_branch_pair(loop_body_ , loop_body ); |
7673 | 0 | assert(valid()); |
7674 | 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>*) |
7675 | | |
7676 | | inline T value() const exprtk_override |
7677 | 0 | { |
7678 | 0 | T result = T(0); |
7679 | |
|
7680 | 0 | if (initialiser_.first) |
7681 | 0 | initialiser_.first->value(); |
7682 | |
|
7683 | 0 | if (incrementor_.first) |
7684 | 0 | { |
7685 | 0 | while (is_true(condition_)) |
7686 | 0 | { |
7687 | 0 | result = loop_body_.first->value(); |
7688 | 0 | incrementor_.first->value(); |
7689 | 0 | } |
7690 | 0 | } |
7691 | 0 | else |
7692 | 0 | { |
7693 | 0 | while (is_true(condition_)) |
7694 | 0 | { |
7695 | 0 | result = loop_body_.first->value(); |
7696 | 0 | } |
7697 | 0 | } |
7698 | |
|
7699 | 0 | return result; |
7700 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_node<double>::value() const Unexecuted instantiation: exprtk::details::for_loop_node<float>::value() const |
7701 | | |
7702 | | inline typename expression_node<T>::node_type type() const exprtk_override |
7703 | 0 | { |
7704 | 0 | return expression_node<T>::e_for; |
7705 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_node<double>::type() const Unexecuted instantiation: exprtk::details::for_loop_node<float>::type() const |
7706 | | |
7707 | | inline bool valid() const exprtk_override |
7708 | 0 | { |
7709 | 0 | return condition_.first && loop_body_.first; |
7710 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_node<double>::valid() const Unexecuted instantiation: exprtk::details::for_loop_node<float>::valid() const |
7711 | | |
7712 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
7713 | 0 | { |
7714 | 0 | expression_node<T>::ndb_t::collect(initialiser_ , node_delete_list); |
7715 | 0 | expression_node<T>::ndb_t::collect(condition_ , node_delete_list); |
7716 | 0 | expression_node<T>::ndb_t::collect(incrementor_ , node_delete_list); |
7717 | 0 | expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list); |
7718 | 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>**> >&) |
7719 | | |
7720 | | std::size_t node_depth() const exprtk_override |
7721 | 0 | { |
7722 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
7723 | 0 | (initialiser_, condition_, incrementor_, loop_body_); |
7724 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::for_loop_node<float>::node_depth() const |
7725 | | |
7726 | | protected: |
7727 | | |
7728 | | branch_t initialiser_; |
7729 | | branch_t condition_ ; |
7730 | | branch_t incrementor_; |
7731 | | branch_t loop_body_ ; |
7732 | | }; |
7733 | | |
7734 | | template <typename T> |
7735 | | class for_loop_rtc_node exprtk_final |
7736 | | : public for_loop_node<T> |
7737 | | , public loop_runtime_checker |
7738 | | { |
7739 | | public: |
7740 | | |
7741 | | typedef for_loop_node<T> parent_t; |
7742 | | typedef expression_node<T>* expression_ptr; |
7743 | | |
7744 | | for_loop_rtc_node(expression_ptr initialiser, |
7745 | | expression_ptr condition, |
7746 | | expression_ptr incrementor, |
7747 | | expression_ptr loop_body, |
7748 | | loop_runtime_check_ptr loop_rt_chk) |
7749 | 0 | : parent_t(initialiser, condition, incrementor, loop_body) |
7750 | 0 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_for_loop) |
7751 | 0 | { |
7752 | 0 | assert(valid()); |
7753 | 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*) |
7754 | | |
7755 | | inline T value() const exprtk_override |
7756 | 0 | { |
7757 | 0 | T result = T(0); |
7758 | |
|
7759 | 0 | loop_runtime_checker::reset(); |
7760 | |
|
7761 | 0 | if (parent_t::initialiser_.first) |
7762 | 0 | parent_t::initialiser_.first->value(); |
7763 | |
|
7764 | 0 | if (parent_t::incrementor_.first) |
7765 | 0 | { |
7766 | 0 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
7767 | 0 | { |
7768 | 0 | result = parent_t::loop_body_.first->value(); |
7769 | 0 | parent_t::incrementor_.first->value(); |
7770 | 0 | } |
7771 | 0 | } |
7772 | 0 | else |
7773 | 0 | { |
7774 | 0 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
7775 | 0 | { |
7776 | 0 | result = parent_t::loop_body_.first->value(); |
7777 | 0 | } |
7778 | 0 | } |
7779 | |
|
7780 | 0 | return result; |
7781 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::for_loop_rtc_node<float>::value() const |
7782 | | |
7783 | | using parent_t::valid; |
7784 | | |
7785 | | inline bool valid() const exprtk_override exprtk_final |
7786 | 0 | { |
7787 | 0 | return parent_t::valid() && |
7788 | 0 | loop_runtime_checker::valid(); |
7789 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::for_loop_rtc_node<float>::valid() const |
7790 | | }; |
7791 | | |
7792 | | #ifndef exprtk_disable_break_continue |
7793 | | template <typename T> |
7794 | | class while_loop_bc_node : public while_loop_node<T> |
7795 | | { |
7796 | | public: |
7797 | | |
7798 | | typedef while_loop_node<T> parent_t; |
7799 | | typedef expression_node<T>* expression_ptr; |
7800 | | |
7801 | | while_loop_bc_node(expression_ptr condition, |
7802 | | expression_ptr loop_body) |
7803 | 0 | : parent_t(condition, loop_body) |
7804 | 0 | { |
7805 | 0 | assert(parent_t::valid()); |
7806 | 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>*) |
7807 | | |
7808 | | inline T value() const exprtk_override |
7809 | 0 | { |
7810 | 0 | T result = T(0); |
7811 | |
|
7812 | 0 | while (is_true(parent_t::condition_)) |
7813 | 0 | { |
7814 | 0 | try |
7815 | 0 | { |
7816 | 0 | result = parent_t::loop_body_.first->value(); |
7817 | 0 | } |
7818 | 0 | catch(const break_exception<T>& e) |
7819 | 0 | { |
7820 | 0 | return e.value; |
7821 | 0 | } |
7822 | 0 | catch(const continue_exception&) |
7823 | 0 | {} |
7824 | 0 | } |
7825 | | |
7826 | 0 | return result; |
7827 | 0 | } Unexecuted instantiation: exprtk::details::while_loop_bc_node<double>::value() const Unexecuted instantiation: exprtk::details::while_loop_bc_node<float>::value() const |
7828 | | }; |
7829 | | |
7830 | | template <typename T> |
7831 | | class while_loop_bc_rtc_node exprtk_final |
7832 | | : public while_loop_bc_node<T> |
7833 | | , public loop_runtime_checker |
7834 | | { |
7835 | | public: |
7836 | | |
7837 | | typedef while_loop_bc_node<T> parent_t; |
7838 | | typedef expression_node<T>* expression_ptr; |
7839 | | |
7840 | | while_loop_bc_rtc_node(expression_ptr condition, |
7841 | | expression_ptr loop_body, |
7842 | | loop_runtime_check_ptr loop_rt_chk) |
7843 | 0 | : parent_t(condition, loop_body) |
7844 | 0 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop) |
7845 | 0 | { |
7846 | 0 | assert(valid()); |
7847 | 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*) |
7848 | | |
7849 | | inline T value() const exprtk_override |
7850 | 0 | { |
7851 | 0 | T result = T(0); |
7852 | |
|
7853 | 0 | loop_runtime_checker::reset(); |
7854 | |
|
7855 | 0 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
7856 | 0 | { |
7857 | 0 | try |
7858 | 0 | { |
7859 | 0 | result = parent_t::loop_body_.first->value(); |
7860 | 0 | } |
7861 | 0 | catch(const break_exception<T>& e) |
7862 | 0 | { |
7863 | 0 | return e.value; |
7864 | 0 | } |
7865 | 0 | catch(const continue_exception&) |
7866 | 0 | {} |
7867 | 0 | } |
7868 | | |
7869 | 0 | return result; |
7870 | 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 |
7871 | | |
7872 | | using parent_t::valid; |
7873 | | |
7874 | | inline bool valid() const exprtk_override exprtk_final |
7875 | 0 | { |
7876 | 0 | return parent_t::valid() && |
7877 | 0 | loop_runtime_checker::valid(); |
7878 | 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 |
7879 | | }; |
7880 | | |
7881 | | template <typename T> |
7882 | | class repeat_until_loop_bc_node : public repeat_until_loop_node<T> |
7883 | | { |
7884 | | public: |
7885 | | |
7886 | | typedef repeat_until_loop_node<T> parent_t; |
7887 | | typedef expression_node<T>* expression_ptr; |
7888 | | |
7889 | | repeat_until_loop_bc_node(expression_ptr condition, |
7890 | | expression_ptr loop_body) |
7891 | 0 | : parent_t(condition, loop_body) |
7892 | 0 | { |
7893 | 0 | assert(parent_t::valid()); |
7894 | 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>*) |
7895 | | |
7896 | | inline T value() const exprtk_override |
7897 | 0 | { |
7898 | 0 | T result = T(0); |
7899 | |
|
7900 | 0 | do |
7901 | 0 | { |
7902 | 0 | try |
7903 | 0 | { |
7904 | 0 | result = parent_t::loop_body_.first->value(); |
7905 | 0 | } |
7906 | 0 | catch(const break_exception<T>& e) |
7907 | 0 | { |
7908 | 0 | return e.value; |
7909 | 0 | } |
7910 | 0 | catch(const continue_exception&) |
7911 | 0 | {} |
7912 | 0 | } |
7913 | 0 | while (is_false(parent_t::condition_.first)); |
7914 | | |
7915 | 0 | return result; |
7916 | 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 |
7917 | | }; |
7918 | | |
7919 | | template <typename T> |
7920 | | class repeat_until_loop_bc_rtc_node exprtk_final |
7921 | | : public repeat_until_loop_bc_node<T> |
7922 | | , public loop_runtime_checker |
7923 | | { |
7924 | | public: |
7925 | | |
7926 | | typedef repeat_until_loop_bc_node<T> parent_t; |
7927 | | typedef expression_node<T>* expression_ptr; |
7928 | | |
7929 | | repeat_until_loop_bc_rtc_node(expression_ptr condition, |
7930 | | expression_ptr loop_body, |
7931 | | loop_runtime_check_ptr loop_rt_chk) |
7932 | 0 | : parent_t(condition, loop_body) |
7933 | 0 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_repeat_until_loop) |
7934 | 0 | { |
7935 | 0 | assert(valid()); |
7936 | 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*) |
7937 | | |
7938 | | inline T value() const exprtk_override |
7939 | 0 | { |
7940 | 0 | T result = T(0); |
7941 | |
|
7942 | 0 | loop_runtime_checker::reset(); |
7943 | |
|
7944 | 0 | do |
7945 | 0 | { |
7946 | 0 | try |
7947 | 0 | { |
7948 | 0 | result = parent_t::loop_body_.first->value(); |
7949 | 0 | } |
7950 | 0 | catch(const break_exception<T>& e) |
7951 | 0 | { |
7952 | 0 | return e.value; |
7953 | 0 | } |
7954 | 0 | catch(const continue_exception&) |
7955 | 0 | {} |
7956 | 0 | } |
7957 | 0 | while (is_false(parent_t::condition_.first) && loop_runtime_checker::check()); |
7958 | | |
7959 | 0 | return result; |
7960 | 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 |
7961 | | |
7962 | | using parent_t::valid; |
7963 | | |
7964 | | inline bool valid() const exprtk_override exprtk_final |
7965 | 0 | { |
7966 | 0 | return parent_t::valid() && |
7967 | 0 | loop_runtime_checker::valid(); |
7968 | 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 |
7969 | | }; |
7970 | | |
7971 | | template <typename T> |
7972 | | class for_loop_bc_node : public for_loop_node<T> |
7973 | | { |
7974 | | public: |
7975 | | |
7976 | | typedef for_loop_node<T> parent_t; |
7977 | | typedef expression_node<T>* expression_ptr; |
7978 | | |
7979 | | for_loop_bc_node(expression_ptr initialiser, |
7980 | | expression_ptr condition, |
7981 | | expression_ptr incrementor, |
7982 | | expression_ptr loop_body) |
7983 | 0 | : parent_t(initialiser, condition, incrementor, loop_body) |
7984 | 0 | { |
7985 | 0 | assert(parent_t::valid()); |
7986 | 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>*) |
7987 | | |
7988 | | inline T value() const exprtk_override |
7989 | 0 | { |
7990 | 0 | T result = T(0); |
7991 | |
|
7992 | 0 | if (parent_t::initialiser_.first) |
7993 | 0 | parent_t::initialiser_.first->value(); |
7994 | |
|
7995 | 0 | if (parent_t::incrementor_.first) |
7996 | 0 | { |
7997 | 0 | while (is_true(parent_t::condition_)) |
7998 | 0 | { |
7999 | 0 | try |
8000 | 0 | { |
8001 | 0 | result = parent_t::loop_body_.first->value(); |
8002 | 0 | } |
8003 | 0 | catch(const break_exception<T>& e) |
8004 | 0 | { |
8005 | 0 | return e.value; |
8006 | 0 | } |
8007 | 0 | catch(const continue_exception&) |
8008 | 0 | {} |
8009 | | |
8010 | 0 | parent_t::incrementor_.first->value(); |
8011 | 0 | } |
8012 | 0 | } |
8013 | 0 | else |
8014 | 0 | { |
8015 | 0 | while (is_true(parent_t::condition_)) |
8016 | 0 | { |
8017 | 0 | try |
8018 | 0 | { |
8019 | 0 | result = parent_t::loop_body_.first->value(); |
8020 | 0 | } |
8021 | 0 | catch(const break_exception<T>& e) |
8022 | 0 | { |
8023 | 0 | return e.value; |
8024 | 0 | } |
8025 | 0 | catch(const continue_exception&) |
8026 | 0 | {} |
8027 | 0 | } |
8028 | 0 | } |
8029 | | |
8030 | 0 | return result; |
8031 | 0 | } Unexecuted instantiation: exprtk::details::for_loop_bc_node<double>::value() const Unexecuted instantiation: exprtk::details::for_loop_bc_node<float>::value() const |
8032 | | }; |
8033 | | |
8034 | | template <typename T> |
8035 | | class for_loop_bc_rtc_node exprtk_final |
8036 | | : public for_loop_bc_node<T> |
8037 | | , public loop_runtime_checker |
8038 | | { |
8039 | | public: |
8040 | | |
8041 | | typedef for_loop_bc_node<T> parent_t; |
8042 | | typedef expression_node<T>* expression_ptr; |
8043 | | |
8044 | | for_loop_bc_rtc_node(expression_ptr initialiser, |
8045 | | expression_ptr condition, |
8046 | | expression_ptr incrementor, |
8047 | | expression_ptr loop_body, |
8048 | | loop_runtime_check_ptr loop_rt_chk) |
8049 | 0 | : parent_t(initialiser, condition, incrementor, loop_body) |
8050 | 0 | , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_for_loop) |
8051 | 0 | { |
8052 | 0 | assert(valid()); |
8053 | 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*) |
8054 | | |
8055 | | inline T value() const exprtk_override |
8056 | 0 | { |
8057 | 0 | T result = T(0); |
8058 | |
|
8059 | 0 | loop_runtime_checker::reset(); |
8060 | |
|
8061 | 0 | if (parent_t::initialiser_.first) |
8062 | 0 | parent_t::initialiser_.first->value(); |
8063 | |
|
8064 | 0 | if (parent_t::incrementor_.first) |
8065 | 0 | { |
8066 | 0 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
8067 | 0 | { |
8068 | 0 | try |
8069 | 0 | { |
8070 | 0 | result = parent_t::loop_body_.first->value(); |
8071 | 0 | } |
8072 | 0 | catch(const break_exception<T>& e) |
8073 | 0 | { |
8074 | 0 | return e.value; |
8075 | 0 | } |
8076 | 0 | catch(const continue_exception&) |
8077 | 0 | {} |
8078 | | |
8079 | 0 | parent_t::incrementor_.first->value(); |
8080 | 0 | } |
8081 | 0 | } |
8082 | 0 | else |
8083 | 0 | { |
8084 | 0 | while (is_true(parent_t::condition_) && loop_runtime_checker::check()) |
8085 | 0 | { |
8086 | 0 | try |
8087 | 0 | { |
8088 | 0 | result = parent_t::loop_body_.first->value(); |
8089 | 0 | } |
8090 | 0 | catch(const break_exception<T>& e) |
8091 | 0 | { |
8092 | 0 | return e.value; |
8093 | 0 | } |
8094 | 0 | catch(const continue_exception&) |
8095 | 0 | {} |
8096 | 0 | } |
8097 | 0 | } |
8098 | | |
8099 | 0 | return result; |
8100 | 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 |
8101 | | |
8102 | | using parent_t::valid; |
8103 | | |
8104 | | inline bool valid() const exprtk_override exprtk_final |
8105 | 0 | { |
8106 | 0 | return parent_t::valid() && |
8107 | 0 | loop_runtime_checker::valid(); |
8108 | 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 |
8109 | | }; |
8110 | | #endif |
8111 | | |
8112 | | template <typename T> |
8113 | | class switch_node : public expression_node<T> |
8114 | | { |
8115 | | public: |
8116 | | |
8117 | | typedef expression_node<T>* expression_ptr; |
8118 | | typedef std::pair<expression_ptr,bool> branch_t; |
8119 | | |
8120 | | template <typename Allocator, |
8121 | | template <typename, typename> class Sequence> |
8122 | | explicit switch_node(const Sequence<expression_ptr,Allocator>& arg_list) |
8123 | 0 | { |
8124 | 0 | if (1 != (arg_list.size() & 1)) |
8125 | 0 | return; |
8126 | | |
8127 | 0 | arg_list_.resize(arg_list.size()); |
8128 | |
|
8129 | 0 | for (std::size_t i = 0; i < arg_list.size(); ++i) |
8130 | 0 | { |
8131 | 0 | if (arg_list[i] && arg_list[i]->valid()) |
8132 | 0 | { |
8133 | 0 | construct_branch_pair(arg_list_[i], arg_list[i]); |
8134 | 0 | } |
8135 | 0 | else |
8136 | 0 | { |
8137 | 0 | arg_list_.clear(); |
8138 | 0 | return; |
8139 | 0 | } |
8140 | 0 | } |
8141 | | |
8142 | 0 | assert(valid()); |
8143 | 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&) |
8144 | | |
8145 | | inline T value() const exprtk_override |
8146 | 0 | { |
8147 | 0 | const std::size_t upper_bound = (arg_list_.size() - 1); |
8148 | |
|
8149 | 0 | for (std::size_t i = 0; i < upper_bound; i += 2) |
8150 | 0 | { |
8151 | 0 | expression_ptr condition = arg_list_[i ].first; |
8152 | 0 | expression_ptr consequent = arg_list_[i + 1].first; |
8153 | |
|
8154 | 0 | if (is_true(condition)) |
8155 | 0 | { |
8156 | 0 | return consequent->value(); |
8157 | 0 | } |
8158 | 0 | } |
8159 | | |
8160 | 0 | return arg_list_[upper_bound].first->value(); |
8161 | 0 | } Unexecuted instantiation: exprtk::details::switch_node<double>::value() const Unexecuted instantiation: exprtk::details::switch_node<float>::value() const |
8162 | | |
8163 | | inline typename expression_node<T>::node_type type() const exprtk_override exprtk_final |
8164 | 0 | { |
8165 | 0 | return expression_node<T>::e_switch; |
8166 | 0 | } Unexecuted instantiation: exprtk::details::switch_node<double>::type() const Unexecuted instantiation: exprtk::details::switch_node<float>::type() const |
8167 | | |
8168 | | inline bool valid() const exprtk_override |
8169 | 0 | { |
8170 | 0 | return !arg_list_.empty(); |
8171 | 0 | } Unexecuted instantiation: exprtk::details::switch_node<double>::valid() const Unexecuted instantiation: exprtk::details::switch_node<float>::valid() const |
8172 | | |
8173 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
8174 | 0 | { |
8175 | 0 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); |
8176 | 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>**> >&) |
8177 | | |
8178 | | std::size_t node_depth() const exprtk_override exprtk_final |
8179 | 0 | { |
8180 | 0 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); |
8181 | 0 | } Unexecuted instantiation: exprtk::details::switch_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::switch_node<float>::node_depth() const |
8182 | | |
8183 | | protected: |
8184 | | |
8185 | | std::vector<branch_t> arg_list_; |
8186 | | }; |
8187 | | |
8188 | | template <typename T, typename Switch_N> |
8189 | | class switch_n_node exprtk_final : public switch_node<T> |
8190 | | { |
8191 | | public: |
8192 | | |
8193 | | typedef expression_node<T>* expression_ptr; |
8194 | | |
8195 | | template <typename Allocator, |
8196 | | template <typename, typename> class Sequence> |
8197 | | explicit switch_n_node(const Sequence<expression_ptr,Allocator>& arg_list) |
8198 | 0 | : switch_node<T>(arg_list) |
8199 | 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&) |
8200 | | |
8201 | | inline T value() const exprtk_override |
8202 | 0 | { |
8203 | 0 | return Switch_N::process(switch_node<T>::arg_list_); |
8204 | 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 |
8205 | | }; |
8206 | | |
8207 | | template <typename T> |
8208 | | class multi_switch_node exprtk_final : public expression_node<T> |
8209 | | { |
8210 | | public: |
8211 | | |
8212 | | typedef expression_node<T>* expression_ptr; |
8213 | | typedef std::pair<expression_ptr,bool> branch_t; |
8214 | | |
8215 | | template <typename Allocator, |
8216 | | template <typename, typename> class Sequence> |
8217 | | explicit multi_switch_node(const Sequence<expression_ptr,Allocator>& arg_list) |
8218 | 0 | { |
8219 | 0 | if (0 != (arg_list.size() & 1)) |
8220 | 0 | return; |
8221 | | |
8222 | 0 | arg_list_.resize(arg_list.size()); |
8223 | |
|
8224 | 0 | for (std::size_t i = 0; i < arg_list.size(); ++i) |
8225 | 0 | { |
8226 | 0 | if (arg_list[i] && arg_list[i]->valid()) |
8227 | 0 | { |
8228 | 0 | construct_branch_pair(arg_list_[i], arg_list[i]); |
8229 | 0 | } |
8230 | 0 | else |
8231 | 0 | { |
8232 | 0 | arg_list_.clear(); |
8233 | 0 | return; |
8234 | 0 | } |
8235 | 0 | } |
8236 | | |
8237 | 0 | assert(valid()); |
8238 | 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&) |
8239 | | |
8240 | | inline T value() const exprtk_override |
8241 | 0 | { |
8242 | 0 | const std::size_t upper_bound = (arg_list_.size() - 1); |
8243 | |
|
8244 | 0 | T result = T(0); |
8245 | |
|
8246 | 0 | for (std::size_t i = 0; i < upper_bound; i += 2) |
8247 | 0 | { |
8248 | 0 | expression_ptr condition = arg_list_[i ].first; |
8249 | 0 | expression_ptr consequent = arg_list_[i + 1].first; |
8250 | |
|
8251 | 0 | if (is_true(condition)) |
8252 | 0 | { |
8253 | 0 | result = consequent->value(); |
8254 | 0 | } |
8255 | 0 | } |
8256 | |
|
8257 | 0 | return result; |
8258 | 0 | } Unexecuted instantiation: exprtk::details::multi_switch_node<double>::value() const Unexecuted instantiation: exprtk::details::multi_switch_node<float>::value() const |
8259 | | |
8260 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8261 | 0 | { |
8262 | 0 | return expression_node<T>::e_mswitch; |
8263 | 0 | } Unexecuted instantiation: exprtk::details::multi_switch_node<double>::type() const Unexecuted instantiation: exprtk::details::multi_switch_node<float>::type() const |
8264 | | |
8265 | | inline bool valid() const exprtk_override |
8266 | 0 | { |
8267 | 0 | return !arg_list_.empty() && (0 == (arg_list_.size() % 2)); |
8268 | 0 | } Unexecuted instantiation: exprtk::details::multi_switch_node<double>::valid() const Unexecuted instantiation: exprtk::details::multi_switch_node<float>::valid() const |
8269 | | |
8270 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
8271 | 0 | { |
8272 | 0 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); |
8273 | 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>**> >&) |
8274 | | |
8275 | | std::size_t node_depth() const exprtk_override exprtk_final |
8276 | 0 | { |
8277 | 0 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); |
8278 | 0 | } Unexecuted instantiation: exprtk::details::multi_switch_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::multi_switch_node<float>::node_depth() const |
8279 | | |
8280 | | private: |
8281 | | |
8282 | | std::vector<branch_t> arg_list_; |
8283 | | }; |
8284 | | |
8285 | | template <typename T> |
8286 | | class ivariable |
8287 | | { |
8288 | | public: |
8289 | | |
8290 | | virtual ~ivariable() |
8291 | 89.9k | {} exprtk::details::ivariable<double>::~ivariable() Line | Count | Source | 8291 | 44.9k | {} |
exprtk::details::ivariable<float>::~ivariable() Line | Count | Source | 8291 | 44.9k | {} |
|
8292 | | |
8293 | | virtual T& ref() = 0; |
8294 | | virtual const T& ref() const = 0; |
8295 | | }; |
8296 | | |
8297 | | template <typename T> |
8298 | | class variable_node exprtk_final |
8299 | | : public expression_node<T> |
8300 | | , public ivariable <T> |
8301 | | { |
8302 | | public: |
8303 | | |
8304 | | static T null_value; |
8305 | | |
8306 | | explicit variable_node() |
8307 | | : value_(&null_value) |
8308 | | {} |
8309 | | |
8310 | | explicit variable_node(T& v) |
8311 | 89.9k | : value_(&v) |
8312 | 89.9k | {} exprtk::details::variable_node<double>::variable_node(double&) Line | Count | Source | 8311 | 44.9k | : value_(&v) | 8312 | 44.9k | {} |
exprtk::details::variable_node<float>::variable_node(float&) Line | Count | Source | 8311 | 44.9k | : value_(&v) | 8312 | 44.9k | {} |
|
8313 | | |
8314 | | inline bool operator <(const variable_node<T>& v) const |
8315 | | { |
8316 | | return this < (&v); |
8317 | | } |
8318 | | |
8319 | | inline T value() const exprtk_override |
8320 | 610 | { |
8321 | 610 | return (*value_); |
8322 | 610 | } exprtk::details::variable_node<double>::value() const Line | Count | Source | 8320 | 305 | { | 8321 | 305 | return (*value_); | 8322 | 305 | } |
exprtk::details::variable_node<float>::value() const Line | Count | Source | 8320 | 305 | { | 8321 | 305 | return (*value_); | 8322 | 305 | } |
|
8323 | | |
8324 | | inline T& ref() exprtk_override |
8325 | 163k | { |
8326 | 163k | return (*value_); |
8327 | 163k | } exprtk::details::variable_node<double>::ref() Line | Count | Source | 8325 | 116k | { | 8326 | 116k | return (*value_); | 8327 | 116k | } |
exprtk::details::variable_node<float>::ref() Line | Count | Source | 8325 | 47.2k | { | 8326 | 47.2k | return (*value_); | 8327 | 47.2k | } |
|
8328 | | |
8329 | | inline const T& ref() const exprtk_override |
8330 | 704 | { |
8331 | 704 | return (*value_); |
8332 | 704 | } exprtk::details::variable_node<double>::ref() const Line | Count | Source | 8330 | 352 | { | 8331 | 352 | return (*value_); | 8332 | 352 | } |
exprtk::details::variable_node<float>::ref() const Line | Count | Source | 8330 | 352 | { | 8331 | 352 | return (*value_); | 8332 | 352 | } |
|
8333 | | |
8334 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8335 | 2.53M | { |
8336 | 2.53M | return expression_node<T>::e_variable; |
8337 | 2.53M | } exprtk::details::variable_node<double>::type() const Line | Count | Source | 8335 | 1.79M | { | 8336 | 1.79M | return expression_node<T>::e_variable; | 8337 | 1.79M | } |
exprtk::details::variable_node<float>::type() const Line | Count | Source | 8335 | 738k | { | 8336 | 738k | return expression_node<T>::e_variable; | 8337 | 738k | } |
|
8338 | | |
8339 | | private: |
8340 | | |
8341 | | T* value_; |
8342 | | }; |
8343 | | |
8344 | | template <typename T> |
8345 | | T variable_node<T>::null_value = T(std::numeric_limits<T>::quiet_NaN()); |
8346 | | |
8347 | | template <typename T> |
8348 | | struct range_pack |
8349 | | { |
8350 | | typedef expression_node<T>* expression_node_ptr; |
8351 | | typedef std::pair<std::size_t,std::size_t> cached_range_t; |
8352 | | |
8353 | | range_pack() |
8354 | 1.05k | : n0_e (std::make_pair(false,expression_node_ptr(0))) |
8355 | 1.05k | , n1_e (std::make_pair(false,expression_node_ptr(0))) |
8356 | 1.05k | , n0_c (std::make_pair(false,0)) |
8357 | 1.05k | , n1_c (std::make_pair(false,0)) |
8358 | 1.05k | , cache(std::make_pair(0,0)) |
8359 | 1.05k | {} exprtk::details::range_pack<double>::range_pack() Line | Count | Source | 8354 | 525 | : n0_e (std::make_pair(false,expression_node_ptr(0))) | 8355 | 525 | , n1_e (std::make_pair(false,expression_node_ptr(0))) | 8356 | 525 | , n0_c (std::make_pair(false,0)) | 8357 | 525 | , n1_c (std::make_pair(false,0)) | 8358 | 525 | , cache(std::make_pair(0,0)) | 8359 | 525 | {} |
exprtk::details::range_pack<float>::range_pack() Line | Count | Source | 8354 | 525 | : n0_e (std::make_pair(false,expression_node_ptr(0))) | 8355 | 525 | , n1_e (std::make_pair(false,expression_node_ptr(0))) | 8356 | 525 | , n0_c (std::make_pair(false,0)) | 8357 | 525 | , n1_c (std::make_pair(false,0)) | 8358 | 525 | , cache(std::make_pair(0,0)) | 8359 | 525 | {} |
|
8360 | | |
8361 | | void clear() |
8362 | 206 | { |
8363 | 206 | n0_e = std::make_pair(false,expression_node_ptr(0)); |
8364 | 206 | n1_e = std::make_pair(false,expression_node_ptr(0)); |
8365 | 206 | n0_c = std::make_pair(false,0); |
8366 | 206 | n1_c = std::make_pair(false,0); |
8367 | 206 | cache = std::make_pair(0,0); |
8368 | 206 | } exprtk::details::range_pack<double>::clear() Line | Count | Source | 8362 | 103 | { | 8363 | 103 | n0_e = std::make_pair(false,expression_node_ptr(0)); | 8364 | 103 | n1_e = std::make_pair(false,expression_node_ptr(0)); | 8365 | 103 | n0_c = std::make_pair(false,0); | 8366 | 103 | n1_c = std::make_pair(false,0); | 8367 | 103 | cache = std::make_pair(0,0); | 8368 | 103 | } |
exprtk::details::range_pack<float>::clear() Line | Count | Source | 8362 | 103 | { | 8363 | 103 | n0_e = std::make_pair(false,expression_node_ptr(0)); | 8364 | 103 | n1_e = std::make_pair(false,expression_node_ptr(0)); | 8365 | 103 | n0_c = std::make_pair(false,0); | 8366 | 103 | n1_c = std::make_pair(false,0); | 8367 | 103 | cache = std::make_pair(0,0); | 8368 | 103 | } |
|
8369 | | |
8370 | | void free() |
8371 | 140 | { |
8372 | 140 | if (n0_e.first && n0_e.second) |
8373 | 76 | { |
8374 | 76 | n0_e.first = false; |
8375 | | |
8376 | 76 | if ( |
8377 | 76 | !is_variable_node(n0_e.second) && |
8378 | 76 | !is_string_node (n0_e.second) |
8379 | 76 | ) |
8380 | 12 | { |
8381 | 12 | destroy_node(n0_e.second); |
8382 | 12 | } |
8383 | 76 | } |
8384 | | |
8385 | 140 | if (n1_e.first && n1_e.second) |
8386 | 8 | { |
8387 | 8 | n1_e.first = false; |
8388 | | |
8389 | 8 | if ( |
8390 | 8 | !is_variable_node(n1_e.second) && |
8391 | 8 | !is_string_node (n1_e.second) |
8392 | 8 | ) |
8393 | 4 | { |
8394 | 4 | destroy_node(n1_e.second); |
8395 | 4 | } |
8396 | 8 | } |
8397 | 140 | } |
8398 | | |
8399 | | bool const_range() const |
8400 | 92 | { |
8401 | 92 | return ( n0_c.first && n1_c.first) && |
8402 | 92 | (!n0_e.first && !n1_e.first); |
8403 | 92 | } exprtk::details::range_pack<double>::const_range() const Line | Count | Source | 8400 | 46 | { | 8401 | 46 | return ( n0_c.first && n1_c.first) && | 8402 | 46 | (!n0_e.first && !n1_e.first); | 8403 | 46 | } |
exprtk::details::range_pack<float>::const_range() const Line | Count | Source | 8400 | 46 | { | 8401 | 46 | return ( n0_c.first && n1_c.first) && | 8402 | 46 | (!n0_e.first && !n1_e.first); | 8403 | 46 | } |
|
8404 | | |
8405 | | bool var_range() const |
8406 | | { |
8407 | | return ( n0_e.first && n1_e.first) && |
8408 | | (!n0_c.first && !n1_c.first); |
8409 | | } |
8410 | | |
8411 | | bool operator() (std::size_t& r0, std::size_t& r1, |
8412 | | const std::size_t& size = std::numeric_limits<std::size_t>::max()) const |
8413 | 84 | { |
8414 | 84 | if (n0_c.first) |
8415 | 42 | r0 = n0_c.second; |
8416 | 42 | else if (n0_e.first) |
8417 | 42 | { |
8418 | 42 | r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value())); |
8419 | 42 | } |
8420 | 0 | else |
8421 | 0 | return false; |
8422 | | |
8423 | 84 | if (n1_c.first) |
8424 | 78 | r1 = n1_c.second; |
8425 | 6 | else if (n1_e.first) |
8426 | 6 | { |
8427 | 6 | r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value())); |
8428 | 6 | } |
8429 | 0 | else |
8430 | 0 | return false; |
8431 | | |
8432 | 84 | if ( |
8433 | 84 | (std::numeric_limits<std::size_t>::max() != size) && |
8434 | 84 | (std::numeric_limits<std::size_t>::max() == r1 ) |
8435 | 84 | ) |
8436 | 2 | { |
8437 | 2 | r1 = size; |
8438 | 2 | } |
8439 | | |
8440 | 84 | cache.first = r0; |
8441 | 84 | cache.second = r1; |
8442 | | |
8443 | | #ifndef exprtk_enable_range_runtime_checks |
8444 | | return (r0 <= r1); |
8445 | | #else |
8446 | 84 | return range_runtime_check(r0, r1, size); |
8447 | 84 | #endif |
8448 | 84 | } exprtk::details::range_pack<double>::operator()(unsigned long&, unsigned long&, unsigned long const&) const Line | Count | Source | 8413 | 42 | { | 8414 | 42 | if (n0_c.first) | 8415 | 21 | r0 = n0_c.second; | 8416 | 21 | else if (n0_e.first) | 8417 | 21 | { | 8418 | 21 | r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value())); | 8419 | 21 | } | 8420 | 0 | else | 8421 | 0 | return false; | 8422 | | | 8423 | 42 | if (n1_c.first) | 8424 | 39 | r1 = n1_c.second; | 8425 | 3 | else if (n1_e.first) | 8426 | 3 | { | 8427 | 3 | r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value())); | 8428 | 3 | } | 8429 | 0 | else | 8430 | 0 | return false; | 8431 | | | 8432 | 42 | if ( | 8433 | 42 | (std::numeric_limits<std::size_t>::max() != size) && | 8434 | 42 | (std::numeric_limits<std::size_t>::max() == r1 ) | 8435 | 42 | ) | 8436 | 1 | { | 8437 | 1 | r1 = size; | 8438 | 1 | } | 8439 | | | 8440 | 42 | cache.first = r0; | 8441 | 42 | cache.second = r1; | 8442 | | | 8443 | | #ifndef exprtk_enable_range_runtime_checks | 8444 | | return (r0 <= r1); | 8445 | | #else | 8446 | 42 | return range_runtime_check(r0, r1, size); | 8447 | 42 | #endif | 8448 | 42 | } |
exprtk::details::range_pack<float>::operator()(unsigned long&, unsigned long&, unsigned long const&) const Line | Count | Source | 8413 | 42 | { | 8414 | 42 | if (n0_c.first) | 8415 | 21 | r0 = n0_c.second; | 8416 | 21 | else if (n0_e.first) | 8417 | 21 | { | 8418 | 21 | r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value())); | 8419 | 21 | } | 8420 | 0 | else | 8421 | 0 | return false; | 8422 | | | 8423 | 42 | if (n1_c.first) | 8424 | 39 | r1 = n1_c.second; | 8425 | 3 | else if (n1_e.first) | 8426 | 3 | { | 8427 | 3 | r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value())); | 8428 | 3 | } | 8429 | 0 | else | 8430 | 0 | return false; | 8431 | | | 8432 | 42 | if ( | 8433 | 42 | (std::numeric_limits<std::size_t>::max() != size) && | 8434 | 42 | (std::numeric_limits<std::size_t>::max() == r1 ) | 8435 | 42 | ) | 8436 | 1 | { | 8437 | 1 | r1 = size; | 8438 | 1 | } | 8439 | | | 8440 | 42 | cache.first = r0; | 8441 | 42 | cache.second = r1; | 8442 | | | 8443 | | #ifndef exprtk_enable_range_runtime_checks | 8444 | | return (r0 <= r1); | 8445 | | #else | 8446 | 42 | return range_runtime_check(r0, r1, size); | 8447 | 42 | #endif | 8448 | 42 | } |
|
8449 | | |
8450 | | inline std::size_t const_size() const |
8451 | 0 | { |
8452 | 0 | return (n1_c.second - n0_c.second); |
8453 | 0 | } Unexecuted instantiation: exprtk::details::range_pack<double>::const_size() const Unexecuted instantiation: exprtk::details::range_pack<float>::const_size() const |
8454 | | |
8455 | | inline std::size_t cache_size() const |
8456 | 20 | { |
8457 | 20 | return (cache.second - cache.first); |
8458 | 20 | } exprtk::details::range_pack<double>::cache_size() const Line | Count | Source | 8456 | 10 | { | 8457 | 10 | return (cache.second - cache.first); | 8458 | 10 | } |
exprtk::details::range_pack<float>::cache_size() const Line | Count | Source | 8456 | 10 | { | 8457 | 10 | return (cache.second - cache.first); | 8458 | 10 | } |
|
8459 | | |
8460 | | std::pair<bool,expression_node_ptr> n0_e; |
8461 | | std::pair<bool,expression_node_ptr> n1_e; |
8462 | | std::pair<bool,std::size_t > n0_c; |
8463 | | std::pair<bool,std::size_t > n1_c; |
8464 | | mutable cached_range_t cache; |
8465 | | |
8466 | | #ifdef exprtk_enable_range_runtime_checks |
8467 | | bool range_runtime_check(const std::size_t r0, |
8468 | | const std::size_t r1, |
8469 | | const std::size_t size) const |
8470 | 84 | { |
8471 | 84 | if (r0 > size) |
8472 | 4 | { |
8473 | 4 | throw std::runtime_error("range error: (r0 < 0) || (r0 > size)"); |
8474 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
8475 | 0 | return false; |
8476 | 4 | #endif |
8477 | 4 | } |
8478 | | |
8479 | 80 | if (r1 > size) |
8480 | 0 | { |
8481 | 0 | throw std::runtime_error("range error: (r1 < 0) || (r1 > size)"); |
8482 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) |
8483 | 0 | return false; |
8484 | 0 | #endif |
8485 | 0 | } |
8486 | | |
8487 | 80 | return (r0 <= r1); |
8488 | 80 | } exprtk::details::range_pack<double>::range_runtime_check(unsigned long, unsigned long, unsigned long) const Line | Count | Source | 8470 | 42 | { | 8471 | 42 | if (r0 > size) | 8472 | 2 | { | 8473 | 2 | throw std::runtime_error("range error: (r0 < 0) || (r0 > size)"); | 8474 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) | 8475 | 0 | return false; | 8476 | 2 | #endif | 8477 | 2 | } | 8478 | | | 8479 | 40 | if (r1 > size) | 8480 | 0 | { | 8481 | 0 | throw std::runtime_error("range error: (r1 < 0) || (r1 > size)"); | 8482 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) | 8483 | 0 | return false; | 8484 | 0 | #endif | 8485 | 0 | } | 8486 | | | 8487 | 40 | return (r0 <= r1); | 8488 | 40 | } |
exprtk::details::range_pack<float>::range_runtime_check(unsigned long, unsigned long, unsigned long) const Line | Count | Source | 8470 | 42 | { | 8471 | 42 | if (r0 > size) | 8472 | 2 | { | 8473 | 2 | throw std::runtime_error("range error: (r0 < 0) || (r0 > size)"); | 8474 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) | 8475 | 0 | return false; | 8476 | 2 | #endif | 8477 | 2 | } | 8478 | | | 8479 | 40 | if (r1 > size) | 8480 | 0 | { | 8481 | 0 | throw std::runtime_error("range error: (r1 < 0) || (r1 > size)"); | 8482 | 0 | #if !defined(_MSC_VER) && !defined(__NVCOMPILER) | 8483 | 0 | return false; | 8484 | 0 | #endif | 8485 | 0 | } | 8486 | | | 8487 | 40 | return (r0 <= r1); | 8488 | 40 | } |
|
8489 | | #endif |
8490 | | }; |
8491 | | |
8492 | | template <typename T> |
8493 | | class string_base_node; |
8494 | | |
8495 | | template <typename T> |
8496 | | struct range_data_type |
8497 | | { |
8498 | | typedef range_pack<T> range_t; |
8499 | | typedef string_base_node<T>* strbase_ptr_t; |
8500 | | |
8501 | | range_data_type() |
8502 | 0 | : range(0) |
8503 | 0 | , data (0) |
8504 | 0 | , size (0) |
8505 | 0 | , type_size(0) |
8506 | 0 | , str_node (0) |
8507 | 0 | {} Unexecuted instantiation: exprtk::details::range_data_type<double>::range_data_type() Unexecuted instantiation: exprtk::details::range_data_type<float>::range_data_type() |
8508 | | |
8509 | | range_t* range; |
8510 | | void* data; |
8511 | | std::size_t size; |
8512 | | std::size_t type_size; |
8513 | | strbase_ptr_t str_node; |
8514 | | }; |
8515 | | |
8516 | | template <typename T> class vector_node; |
8517 | | |
8518 | | template <typename T> |
8519 | | class vector_interface |
8520 | | { |
8521 | | public: |
8522 | | |
8523 | | typedef vector_node<T>* vector_node_ptr; |
8524 | | typedef vec_data_store<T> vds_t; |
8525 | | |
8526 | | virtual ~vector_interface() |
8527 | 0 | {} Unexecuted instantiation: exprtk::details::vector_interface<double>::~vector_interface() Unexecuted instantiation: exprtk::details::vector_interface<float>::~vector_interface() |
8528 | | |
8529 | | virtual std::size_t size () const = 0; |
8530 | | |
8531 | | virtual std::size_t base_size() const = 0; |
8532 | | |
8533 | | virtual vector_node_ptr vec () const = 0; |
8534 | | |
8535 | | virtual vector_node_ptr vec () = 0; |
8536 | | |
8537 | | virtual vds_t& vds () = 0; |
8538 | | |
8539 | | virtual const vds_t& vds () const = 0; |
8540 | | |
8541 | 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 |
8542 | | }; |
8543 | | |
8544 | | template <typename T> |
8545 | | class vector_node exprtk_final |
8546 | | : public expression_node <T> |
8547 | | , public vector_interface<T> |
8548 | | { |
8549 | | public: |
8550 | | |
8551 | | typedef expression_node<T>* expression_ptr; |
8552 | | typedef vector_holder<T> vector_holder_t; |
8553 | | typedef vector_node<T>* vector_node_ptr; |
8554 | | typedef vec_data_store<T> vds_t; |
8555 | | |
8556 | | explicit vector_node(vector_holder_t* vh) |
8557 | 0 | : vector_holder_(vh) |
8558 | 0 | , vds_((*vector_holder_).size(),(*vector_holder_)[0]) |
8559 | 0 | { |
8560 | 0 | vector_holder_->set_ref(&vds_.ref()); |
8561 | 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>*) |
8562 | | |
8563 | | vector_node(const vds_t& vds, vector_holder_t* vh) |
8564 | 0 | : vector_holder_(vh) |
8565 | 0 | , vds_(vds) |
8566 | 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>*) |
8567 | | |
8568 | | ~vector_node() |
8569 | 0 | { |
8570 | 0 | assert(valid()); |
8571 | 0 | vector_holder_->remove_ref(&vds_.ref()); |
8572 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::~vector_node() Unexecuted instantiation: exprtk::details::vector_node<float>::~vector_node() |
8573 | | |
8574 | | inline T value() const exprtk_override |
8575 | 0 | { |
8576 | 0 | return vds().data()[0]; |
8577 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_node<float>::value() const |
8578 | | |
8579 | | vector_node_ptr vec() const exprtk_override |
8580 | 0 | { |
8581 | 0 | return const_cast<vector_node_ptr>(this); |
8582 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vec() const Unexecuted instantiation: exprtk::details::vector_node<float>::vec() const |
8583 | | |
8584 | | vector_node_ptr vec() exprtk_override |
8585 | 0 | { |
8586 | 0 | return this; |
8587 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vec() Unexecuted instantiation: exprtk::details::vector_node<float>::vec() |
8588 | | |
8589 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8590 | 0 | { |
8591 | 0 | return expression_node<T>::e_vector; |
8592 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_node<float>::type() const |
8593 | | |
8594 | | inline bool valid() const exprtk_override |
8595 | 0 | { |
8596 | 0 | return vector_holder_; |
8597 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_node<float>::valid() const |
8598 | | |
8599 | | std::size_t size() const exprtk_override |
8600 | 0 | { |
8601 | 0 | return vec_holder().size(); |
8602 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::size() const Unexecuted instantiation: exprtk::details::vector_node<float>::size() const |
8603 | | |
8604 | | std::size_t base_size() const exprtk_override |
8605 | 0 | { |
8606 | 0 | return vec_holder().base_size(); |
8607 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::base_size() const Unexecuted instantiation: exprtk::details::vector_node<float>::base_size() const |
8608 | | |
8609 | | vds_t& vds() exprtk_override |
8610 | 0 | { |
8611 | 0 | return vds_; |
8612 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vds() Unexecuted instantiation: exprtk::details::vector_node<float>::vds() |
8613 | | |
8614 | | const vds_t& vds() const exprtk_override |
8615 | 0 | { |
8616 | 0 | return vds_; |
8617 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vds() const Unexecuted instantiation: exprtk::details::vector_node<float>::vds() const |
8618 | | |
8619 | | inline vector_holder_t& vec_holder() |
8620 | 0 | { |
8621 | 0 | return (*vector_holder_); |
8622 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vec_holder() Unexecuted instantiation: exprtk::details::vector_node<float>::vec_holder() |
8623 | | |
8624 | | inline vector_holder_t& vec_holder() const |
8625 | 0 | { |
8626 | 0 | return (*vector_holder_); |
8627 | 0 | } Unexecuted instantiation: exprtk::details::vector_node<double>::vec_holder() const Unexecuted instantiation: exprtk::details::vector_node<float>::vec_holder() const |
8628 | | |
8629 | | private: |
8630 | | |
8631 | | vector_holder_t* vector_holder_; |
8632 | | vds_t vds_; |
8633 | | }; |
8634 | | |
8635 | | template <typename T> |
8636 | | class vector_size_node exprtk_final |
8637 | | : public expression_node <T> |
8638 | | { |
8639 | | public: |
8640 | | |
8641 | | typedef expression_node<T>* expression_ptr; |
8642 | | typedef vector_holder<T> vector_holder_t; |
8643 | | |
8644 | | explicit vector_size_node(vector_holder_t* vh) |
8645 | 0 | : vector_holder_(vh) |
8646 | 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>*) |
8647 | | |
8648 | | ~vector_size_node() |
8649 | 0 | { |
8650 | 0 | assert(valid()); |
8651 | 0 | } Unexecuted instantiation: exprtk::details::vector_size_node<double>::~vector_size_node() Unexecuted instantiation: exprtk::details::vector_size_node<float>::~vector_size_node() |
8652 | | |
8653 | | inline T value() const exprtk_override |
8654 | 0 | { |
8655 | 0 | assert(vector_holder_); |
8656 | 0 | return static_cast<T>(vector_holder_->size()); |
8657 | 0 | } Unexecuted instantiation: exprtk::details::vector_size_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_size_node<float>::value() const |
8658 | | |
8659 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8660 | 0 | { |
8661 | 0 | return expression_node<T>::e_vecsize; |
8662 | 0 | } Unexecuted instantiation: exprtk::details::vector_size_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_size_node<float>::type() const |
8663 | | |
8664 | | inline bool valid() const exprtk_override |
8665 | 0 | { |
8666 | 0 | return vector_holder_ && vector_holder_->size(); |
8667 | 0 | } Unexecuted instantiation: exprtk::details::vector_size_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_size_node<float>::valid() const |
8668 | | |
8669 | | inline vector_holder_t* vec_holder() |
8670 | 0 | { |
8671 | 0 | return vector_holder_; |
8672 | 0 | } Unexecuted instantiation: exprtk::details::vector_size_node<double>::vec_holder() Unexecuted instantiation: exprtk::details::vector_size_node<float>::vec_holder() |
8673 | | |
8674 | | private: |
8675 | | |
8676 | | vector_holder_t* vector_holder_; |
8677 | | }; |
8678 | | |
8679 | | template <typename T> |
8680 | | class vector_elem_node exprtk_final |
8681 | | : public expression_node<T> |
8682 | | , public ivariable <T> |
8683 | | { |
8684 | | public: |
8685 | | |
8686 | | typedef expression_node<T>* expression_ptr; |
8687 | | typedef vector_holder<T> vector_holder_t; |
8688 | | typedef vector_holder_t* vector_holder_ptr; |
8689 | | typedef std::pair<expression_ptr,bool> branch_t; |
8690 | | |
8691 | | vector_elem_node(expression_ptr vec_node, |
8692 | | expression_ptr index, |
8693 | | vector_holder_ptr vec_holder) |
8694 | 0 | : vector_holder_(vec_holder) |
8695 | 0 | , vector_base_((*vec_holder)[0]) |
8696 | 0 | { |
8697 | 0 | construct_branch_pair(vector_node_, vec_node); |
8698 | 0 | construct_branch_pair(index_ , index ); |
8699 | 0 | assert(valid()); |
8700 | 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>*) |
8701 | | |
8702 | | inline T value() const exprtk_override |
8703 | 0 | { |
8704 | 0 | return *access_vector(); |
8705 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::value() const |
8706 | | |
8707 | | inline T& ref() exprtk_override |
8708 | 0 | { |
8709 | 0 | return *access_vector(); |
8710 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::ref() Unexecuted instantiation: exprtk::details::vector_elem_node<float>::ref() |
8711 | | |
8712 | | inline const T& ref() const exprtk_override |
8713 | 0 | { |
8714 | 0 | return *access_vector(); |
8715 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::ref() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::ref() const |
8716 | | |
8717 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8718 | 0 | { |
8719 | 0 | return expression_node<T>::e_vecelem; |
8720 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::type() const |
8721 | | |
8722 | | inline bool valid() const exprtk_override |
8723 | 0 | { |
8724 | 0 | return |
8725 | 0 | vector_holder_ && |
8726 | 0 | index_.first && |
8727 | 0 | vector_node_.first && |
8728 | 0 | index_.first->valid() && |
8729 | 0 | vector_node_.first->valid(); |
8730 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::valid() const |
8731 | | |
8732 | | inline vector_holder_t& vec_holder() |
8733 | 0 | { |
8734 | 0 | return (*vector_holder_); |
8735 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::vec_holder() Unexecuted instantiation: exprtk::details::vector_elem_node<float>::vec_holder() |
8736 | | |
8737 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
8738 | 0 | { |
8739 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
8740 | 0 | expression_node<T>::ndb_t::collect(index_ , node_delete_list); |
8741 | 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>**> >&) |
8742 | | |
8743 | | std::size_t node_depth() const exprtk_override |
8744 | 0 | { |
8745 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
8746 | 0 | (vector_node_, index_); |
8747 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::node_depth() const |
8748 | | |
8749 | | private: |
8750 | | |
8751 | | inline T* access_vector() const |
8752 | 0 | { |
8753 | 0 | vector_node_.first->value(); |
8754 | 0 | return (vector_base_ + details::numeric::to_uint64(index_.first->value())); |
8755 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_node<double>::access_vector() const Unexecuted instantiation: exprtk::details::vector_elem_node<float>::access_vector() const |
8756 | | |
8757 | | vector_holder_ptr vector_holder_; |
8758 | | T* vector_base_; |
8759 | | branch_t vector_node_; |
8760 | | branch_t index_; |
8761 | | }; |
8762 | | |
8763 | | template <typename T> |
8764 | | class vector_celem_node exprtk_final |
8765 | | : public expression_node<T> |
8766 | | , public ivariable <T> |
8767 | | { |
8768 | | public: |
8769 | | |
8770 | | typedef expression_node<T>* expression_ptr; |
8771 | | typedef vector_holder<T> vector_holder_t; |
8772 | | typedef vector_holder_t* vector_holder_ptr; |
8773 | | typedef std::pair<expression_ptr,bool> branch_t; |
8774 | | |
8775 | | vector_celem_node(expression_ptr vec_node, |
8776 | | const std::size_t index, |
8777 | | vector_holder_ptr vec_holder) |
8778 | 0 | : index_(index) |
8779 | 0 | , vector_holder_(vec_holder) |
8780 | 0 | , vector_base_((*vec_holder)[0]) |
8781 | 0 | { |
8782 | 0 | construct_branch_pair(vector_node_, vec_node); |
8783 | 0 | assert(valid()); |
8784 | 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>*) |
8785 | | |
8786 | | inline T value() const exprtk_override |
8787 | 0 | { |
8788 | 0 | return *access_vector(); |
8789 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::value() const |
8790 | | |
8791 | | inline T& ref() exprtk_override |
8792 | 0 | { |
8793 | 0 | return *access_vector(); |
8794 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::ref() Unexecuted instantiation: exprtk::details::vector_celem_node<float>::ref() |
8795 | | |
8796 | | inline const T& ref() const exprtk_override |
8797 | 0 | { |
8798 | 0 | return *access_vector(); |
8799 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::ref() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::ref() const |
8800 | | |
8801 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8802 | 0 | { |
8803 | 0 | return expression_node<T>::e_veccelem; |
8804 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::type() const |
8805 | | |
8806 | | inline bool valid() const exprtk_override |
8807 | 0 | { |
8808 | 0 | return |
8809 | 0 | vector_holder_ && |
8810 | 0 | vector_node_.first && |
8811 | 0 | vector_node_.first->valid(); |
8812 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::valid() const |
8813 | | |
8814 | | inline vector_holder_t& vec_holder() |
8815 | | { |
8816 | | return (*vector_holder_); |
8817 | | } |
8818 | | |
8819 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
8820 | 0 | { |
8821 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
8822 | 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>**> >&) |
8823 | | |
8824 | | std::size_t node_depth() const exprtk_override |
8825 | 0 | { |
8826 | 0 | return expression_node<T>::ndb_t::compute_node_depth(vector_node_); |
8827 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::node_depth() const |
8828 | | |
8829 | | private: |
8830 | | |
8831 | | inline T* access_vector() const |
8832 | 0 | { |
8833 | 0 | vector_node_.first->value(); |
8834 | 0 | return (vector_base_ + index_); |
8835 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_node<double>::access_vector() const Unexecuted instantiation: exprtk::details::vector_celem_node<float>::access_vector() const |
8836 | | |
8837 | | const std::size_t index_; |
8838 | | vector_holder_ptr vector_holder_; |
8839 | | T* vector_base_; |
8840 | | branch_t vector_node_; |
8841 | | }; |
8842 | | |
8843 | | template <typename T> |
8844 | | class vector_elem_rtc_node exprtk_final |
8845 | | : public expression_node<T> |
8846 | | , public ivariable <T> |
8847 | | { |
8848 | | public: |
8849 | | |
8850 | | typedef expression_node<T>* expression_ptr; |
8851 | | typedef vector_holder<T> vector_holder_t; |
8852 | | typedef vector_holder_t* vector_holder_ptr; |
8853 | | typedef std::pair<expression_ptr,bool> branch_t; |
8854 | | |
8855 | | vector_elem_rtc_node(expression_ptr vec_node, |
8856 | | expression_ptr index, |
8857 | | vector_holder_ptr vec_holder, |
8858 | | vector_access_runtime_check_ptr vec_rt_chk) |
8859 | 0 | : vector_holder_(vec_holder) |
8860 | 0 | , vector_base_((*vec_holder)[0]) |
8861 | 0 | , vec_rt_chk_(vec_rt_chk) |
8862 | 0 | , max_vector_index_(vector_holder_->size() - 1) |
8863 | 0 | { |
8864 | 0 | construct_branch_pair(vector_node_, vec_node); |
8865 | 0 | construct_branch_pair(index_ , index ); |
8866 | 0 | assert(valid()); |
8867 | 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*) |
8868 | | |
8869 | | inline T value() const exprtk_override |
8870 | 0 | { |
8871 | 0 | return *access_vector(); |
8872 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::value() const |
8873 | | |
8874 | | inline T& ref() exprtk_override |
8875 | 0 | { |
8876 | 0 | return *access_vector(); |
8877 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::ref() Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::ref() |
8878 | | |
8879 | | inline const T& ref() const exprtk_override |
8880 | 0 | { |
8881 | 0 | return *access_vector(); |
8882 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::ref() const Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::ref() const |
8883 | | |
8884 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8885 | 0 | { |
8886 | 0 | return expression_node<T>::e_vecelemrtc; |
8887 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::type() const |
8888 | | |
8889 | | inline bool valid() const exprtk_override |
8890 | 0 | { |
8891 | 0 | return |
8892 | 0 | vector_holder_ && |
8893 | 0 | index_.first && |
8894 | 0 | vector_node_.first && |
8895 | 0 | index_.first->valid() && |
8896 | 0 | vector_node_.first->valid(); |
8897 | 0 | } Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::valid() const |
8898 | | |
8899 | | inline vector_holder_t& vec_holder() |
8900 | | { |
8901 | | return (*vector_holder_); |
8902 | | } |
8903 | | |
8904 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
8905 | 0 | { |
8906 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
8907 | 0 | expression_node<T>::ndb_t::collect(index_, node_delete_list); |
8908 | 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>**> >&) |
8909 | | |
8910 | | std::size_t node_depth() const exprtk_override |
8911 | 0 | { |
8912 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
8913 | 0 | (vector_node_, index_); |
8914 | 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 |
8915 | | |
8916 | | private: |
8917 | | |
8918 | | inline T* access_vector() const |
8919 | 0 | { |
8920 | 0 | const _uint64_t index = details::numeric::to_uint64(index_.first->value()); |
8921 | 0 | vector_node_.first->value(); |
8922 | |
|
8923 | 0 | if (index <= max_vector_index_) |
8924 | 0 | { |
8925 | 0 | return (vector_holder_->data() + index); |
8926 | 0 | } |
8927 | | |
8928 | 0 | assert(vec_rt_chk_); |
8929 | | |
8930 | 0 | vector_access_runtime_check::violation_context context; |
8931 | 0 | context.base_ptr = reinterpret_cast<void*>(vector_base_); |
8932 | 0 | context.end_ptr = reinterpret_cast<void*>(vector_base_ + vector_holder_->size()); |
8933 | 0 | context.access_ptr = reinterpret_cast<void*>(vector_base_ + index); |
8934 | 0 | context.type_size = sizeof(T); |
8935 | |
|
8936 | 0 | return vec_rt_chk_->handle_runtime_violation(context) ? |
8937 | 0 | reinterpret_cast<T*>(context.access_ptr) : |
8938 | 0 | vector_base_ ; |
8939 | 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 |
8940 | | |
8941 | | vector_holder_ptr vector_holder_; |
8942 | | T* vector_base_; |
8943 | | branch_t vector_node_; |
8944 | | branch_t index_; |
8945 | | vector_access_runtime_check_ptr vec_rt_chk_; |
8946 | | const std::size_t max_vector_index_; |
8947 | | }; |
8948 | | |
8949 | | template <typename T> |
8950 | | class vector_celem_rtc_node exprtk_final |
8951 | | : public expression_node<T> |
8952 | | , public ivariable <T> |
8953 | | { |
8954 | | public: |
8955 | | |
8956 | | typedef expression_node<T>* expression_ptr; |
8957 | | typedef vector_holder<T> vector_holder_t; |
8958 | | typedef vector_holder_t* vector_holder_ptr; |
8959 | | typedef std::pair<expression_ptr,bool> branch_t; |
8960 | | |
8961 | | vector_celem_rtc_node(expression_ptr vec_node, |
8962 | | const std::size_t index, |
8963 | | vector_holder_ptr vec_holder, |
8964 | | vector_access_runtime_check_ptr vec_rt_chk) |
8965 | 0 | : index_(index) |
8966 | 0 | , max_vector_index_(vec_holder->size() - 1) |
8967 | 0 | , vector_holder_(vec_holder) |
8968 | 0 | , vector_base_((*vec_holder)[0]) |
8969 | 0 | , vec_rt_chk_(vec_rt_chk) |
8970 | 0 | { |
8971 | 0 | construct_branch_pair(vector_node_, vec_node); |
8972 | 0 | assert(valid()); |
8973 | 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*) |
8974 | | |
8975 | | inline T value() const exprtk_override |
8976 | 0 | { |
8977 | 0 | return *access_vector(); |
8978 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::value() const |
8979 | | |
8980 | | inline T& ref() exprtk_override |
8981 | 0 | { |
8982 | 0 | return *access_vector(); |
8983 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::ref() Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::ref() |
8984 | | |
8985 | | inline const T& ref() const exprtk_override |
8986 | 0 | { |
8987 | 0 | return *access_vector(); |
8988 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::ref() const Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::ref() const |
8989 | | |
8990 | | inline typename expression_node<T>::node_type type() const exprtk_override |
8991 | 0 | { |
8992 | 0 | return expression_node<T>::e_veccelemrtc; |
8993 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::type() const |
8994 | | |
8995 | | inline bool valid() const exprtk_override |
8996 | 0 | { |
8997 | 0 | return |
8998 | 0 | vector_holder_ && |
8999 | 0 | vector_node_.first && |
9000 | 0 | vector_node_.first->valid(); |
9001 | 0 | } Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::valid() const |
9002 | | |
9003 | | inline vector_holder_t& vec_holder() |
9004 | | { |
9005 | | return (*vector_holder_); |
9006 | | } |
9007 | | |
9008 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9009 | 0 | { |
9010 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
9011 | 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>**> >&) |
9012 | | |
9013 | | std::size_t node_depth() const exprtk_override |
9014 | 0 | { |
9015 | 0 | return expression_node<T>::ndb_t::compute_node_depth(vector_node_); |
9016 | 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 |
9017 | | |
9018 | | private: |
9019 | | |
9020 | | inline T* access_vector() const |
9021 | 0 | { |
9022 | 0 | vector_node_.first->value(); |
9023 | |
|
9024 | 0 | if (index_ <= max_vector_index_) |
9025 | 0 | { |
9026 | 0 | return (vector_holder_->data() + index_); |
9027 | 0 | } |
9028 | | |
9029 | 0 | assert(vec_rt_chk_); |
9030 | | |
9031 | 0 | vector_access_runtime_check::violation_context context; |
9032 | 0 | context.base_ptr = reinterpret_cast<void*>(vector_base_); |
9033 | 0 | context.end_ptr = reinterpret_cast<void*>(vector_base_ + vector_holder_->size()); |
9034 | 0 | context.access_ptr = reinterpret_cast<void*>(vector_base_ + index_); |
9035 | 0 | context.type_size = sizeof(T); |
9036 | |
|
9037 | 0 | return vec_rt_chk_->handle_runtime_violation(context) ? |
9038 | 0 | reinterpret_cast<T*>(context.access_ptr) : |
9039 | 0 | vector_base_ ; |
9040 | 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 |
9041 | | |
9042 | | const std::size_t index_; |
9043 | | const std::size_t max_vector_index_; |
9044 | | vector_holder_ptr vector_holder_; |
9045 | | T* vector_base_; |
9046 | | branch_t vector_node_; |
9047 | | vector_access_runtime_check_ptr vec_rt_chk_; |
9048 | | }; |
9049 | | |
9050 | | template <typename T> |
9051 | | class rebasevector_elem_node exprtk_final |
9052 | | : public expression_node<T> |
9053 | | , public ivariable <T> |
9054 | | { |
9055 | | public: |
9056 | | |
9057 | | typedef expression_node<T>* expression_ptr; |
9058 | | typedef vector_holder<T> vector_holder_t; |
9059 | | typedef vector_holder_t* vector_holder_ptr; |
9060 | | typedef vec_data_store<T> vds_t; |
9061 | | typedef std::pair<expression_ptr,bool> branch_t; |
9062 | | |
9063 | | rebasevector_elem_node(expression_ptr vec_node, |
9064 | | expression_ptr index, |
9065 | | vector_holder_ptr vec_holder) |
9066 | 0 | : vector_holder_(vec_holder) |
9067 | 0 | { |
9068 | 0 | construct_branch_pair(vector_node_, vec_node); |
9069 | 0 | construct_branch_pair(index_ , index ); |
9070 | 0 | assert(valid()); |
9071 | 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>*) |
9072 | | |
9073 | | inline T value() const exprtk_override |
9074 | 0 | { |
9075 | 0 | return *access_vector(); |
9076 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::value() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::value() const |
9077 | | |
9078 | | inline T& ref() exprtk_override |
9079 | 0 | { |
9080 | 0 | return *access_vector(); |
9081 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::ref() Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::ref() |
9082 | | |
9083 | | inline const T& ref() const exprtk_override |
9084 | 0 | { |
9085 | 0 | return *access_vector(); |
9086 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::ref() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::ref() const |
9087 | | |
9088 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9089 | 0 | { |
9090 | 0 | return expression_node<T>::e_rbvecelem; |
9091 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::type() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::type() const |
9092 | | |
9093 | | inline bool valid() const exprtk_override |
9094 | 0 | { |
9095 | 0 | return |
9096 | 0 | vector_holder_ && |
9097 | 0 | index_.first && |
9098 | 0 | vector_node_.first && |
9099 | 0 | index_.first->valid() && |
9100 | 0 | vector_node_.first->valid(); |
9101 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::valid() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::valid() const |
9102 | | |
9103 | | inline vector_holder_t& vec_holder() |
9104 | | { |
9105 | | return (*vector_holder_); |
9106 | | } |
9107 | | |
9108 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9109 | 0 | { |
9110 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
9111 | 0 | expression_node<T>::ndb_t::collect(index_, node_delete_list); |
9112 | 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>**> >&) |
9113 | | |
9114 | | std::size_t node_depth() const exprtk_override |
9115 | 0 | { |
9116 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
9117 | 0 | (vector_node_, index_); |
9118 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::node_depth() const |
9119 | | |
9120 | | private: |
9121 | | |
9122 | | inline T* access_vector() const |
9123 | 0 | { |
9124 | 0 | vector_node_.first->value(); |
9125 | 0 | return (vector_holder_->data() + details::numeric::to_uint64(index_.first->value())); |
9126 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::access_vector() const Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::access_vector() const |
9127 | | |
9128 | | vector_holder_ptr vector_holder_; |
9129 | | branch_t vector_node_; |
9130 | | branch_t index_; |
9131 | | }; |
9132 | | |
9133 | | template <typename T> |
9134 | | class rebasevector_celem_node exprtk_final |
9135 | | : public expression_node<T> |
9136 | | , public ivariable <T> |
9137 | | { |
9138 | | public: |
9139 | | |
9140 | | typedef expression_node<T>* expression_ptr; |
9141 | | typedef vector_holder<T> vector_holder_t; |
9142 | | typedef vector_holder_t* vector_holder_ptr; |
9143 | | typedef std::pair<expression_ptr,bool> branch_t; |
9144 | | |
9145 | | rebasevector_celem_node(expression_ptr vec_node, |
9146 | | const std::size_t index, |
9147 | | vector_holder_ptr vec_holder) |
9148 | 0 | : index_(index) |
9149 | 0 | , vector_holder_(vec_holder) |
9150 | 0 | { |
9151 | 0 | construct_branch_pair(vector_node_, vec_node); |
9152 | 0 | assert(valid()); |
9153 | 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>*) |
9154 | | |
9155 | | inline T value() const exprtk_override |
9156 | 0 | { |
9157 | 0 | vector_node_.first->value(); |
9158 | 0 | return ref();; |
9159 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::value() const Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::value() const |
9160 | | |
9161 | | inline T& ref() exprtk_override |
9162 | 0 | { |
9163 | 0 | return *(vector_holder_->data() + index_); |
9164 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::ref() Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::ref() |
9165 | | |
9166 | | inline const T& ref() const exprtk_override |
9167 | 0 | { |
9168 | 0 | return *(vector_holder_->data() + index_); |
9169 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::ref() const Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::ref() const |
9170 | | |
9171 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9172 | 0 | { |
9173 | 0 | return expression_node<T>::e_rbveccelem; |
9174 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::type() const Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::type() const |
9175 | | |
9176 | | inline bool valid() const exprtk_override |
9177 | 0 | { |
9178 | 0 | return |
9179 | 0 | vector_holder_ && |
9180 | 0 | vector_node_.first && |
9181 | 0 | vector_node_.first->valid(); |
9182 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::valid() const Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::valid() const |
9183 | | |
9184 | | inline vector_holder_t& vec_holder() |
9185 | | { |
9186 | | return (*vector_holder_); |
9187 | | } |
9188 | | |
9189 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9190 | 0 | { |
9191 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
9192 | 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>**> >&) |
9193 | | |
9194 | | std::size_t node_depth() const exprtk_override |
9195 | 0 | { |
9196 | 0 | return expression_node<T>::ndb_t::compute_node_depth(vector_node_); |
9197 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::node_depth() const |
9198 | | |
9199 | | private: |
9200 | | |
9201 | | const std::size_t index_; |
9202 | | vector_holder_ptr vector_holder_; |
9203 | | branch_t vector_node_; |
9204 | | }; |
9205 | | |
9206 | | template <typename T> |
9207 | | class rebasevector_elem_rtc_node exprtk_final |
9208 | | : public expression_node<T> |
9209 | | , public ivariable <T> |
9210 | | { |
9211 | | public: |
9212 | | |
9213 | | typedef expression_node<T>* expression_ptr; |
9214 | | typedef vector_holder<T> vector_holder_t; |
9215 | | typedef vector_holder_t* vector_holder_ptr; |
9216 | | typedef std::pair<expression_ptr,bool> branch_t; |
9217 | | |
9218 | | rebasevector_elem_rtc_node(expression_ptr vec_node, |
9219 | | expression_ptr index, |
9220 | | vector_holder_ptr vec_holder, |
9221 | | vector_access_runtime_check_ptr vec_rt_chk) |
9222 | 0 | : vector_holder_(vec_holder) |
9223 | 0 | , vec_rt_chk_(vec_rt_chk) |
9224 | 0 | { |
9225 | 0 | construct_branch_pair(vector_node_, vec_node); |
9226 | 0 | construct_branch_pair(index_ , index ); |
9227 | 0 | assert(valid()); |
9228 | 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*) |
9229 | | |
9230 | | inline T value() const exprtk_override |
9231 | 0 | { |
9232 | 0 | return *access_vector(); |
9233 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::value() const |
9234 | | |
9235 | | inline T& ref() exprtk_override |
9236 | 0 | { |
9237 | 0 | return *access_vector(); |
9238 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::ref() Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::ref() |
9239 | | |
9240 | | inline const T& ref() const exprtk_override |
9241 | 0 | { |
9242 | 0 | return *access_vector(); |
9243 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::ref() const Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::ref() const |
9244 | | |
9245 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9246 | 0 | { |
9247 | 0 | return expression_node<T>::e_rbvecelemrtc; |
9248 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::type() const Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::type() const |
9249 | | |
9250 | | inline bool valid() const exprtk_override |
9251 | 0 | { |
9252 | 0 | return |
9253 | 0 | vector_holder_ && |
9254 | 0 | index_.first && |
9255 | 0 | vector_node_.first && |
9256 | 0 | index_.first->valid() && |
9257 | 0 | vector_node_.first->valid(); |
9258 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::valid() const |
9259 | | |
9260 | | inline vector_holder_t& vec_holder() |
9261 | | { |
9262 | | return (*vector_holder_); |
9263 | | } |
9264 | | |
9265 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9266 | 0 | { |
9267 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
9268 | 0 | expression_node<T>::ndb_t::collect(index_ , node_delete_list); |
9269 | 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>**> >&) |
9270 | | |
9271 | | std::size_t node_depth() const exprtk_override |
9272 | 0 | { |
9273 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
9274 | 0 | (vector_node_, index_); |
9275 | 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 |
9276 | | |
9277 | | private: |
9278 | | |
9279 | | inline T* access_vector() const |
9280 | 0 | { |
9281 | 0 | vector_node_.first->value(); |
9282 | 0 | const _uint64_t index = details::numeric::to_uint64(index_.first->value()); |
9283 | |
|
9284 | 0 | if (index <= (vector_holder_->size() - 1)) |
9285 | 0 | { |
9286 | 0 | return (vector_holder_->data() + index); |
9287 | 0 | } |
9288 | | |
9289 | 0 | assert(vec_rt_chk_); |
9290 | | |
9291 | 0 | vector_access_runtime_check::violation_context context; |
9292 | 0 | context.base_ptr = reinterpret_cast<void*>(vector_holder_->data()); |
9293 | 0 | context.end_ptr = reinterpret_cast<void*>(vector_holder_->data() + vector_holder_->size()); |
9294 | 0 | context.access_ptr = reinterpret_cast<void*>(vector_holder_->data() + index); |
9295 | 0 | context.type_size = sizeof(T); |
9296 | |
|
9297 | 0 | return vec_rt_chk_->handle_runtime_violation(context) ? |
9298 | 0 | reinterpret_cast<T*>(context.access_ptr) : |
9299 | 0 | vector_holder_->data() ; |
9300 | 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 |
9301 | | |
9302 | | vector_holder_ptr vector_holder_; |
9303 | | branch_t vector_node_; |
9304 | | branch_t index_; |
9305 | | vector_access_runtime_check_ptr vec_rt_chk_; |
9306 | | }; |
9307 | | |
9308 | | template <typename T> |
9309 | | class rebasevector_celem_rtc_node exprtk_final |
9310 | | : public expression_node<T> |
9311 | | , public ivariable <T> |
9312 | | { |
9313 | | public: |
9314 | | |
9315 | | typedef expression_node<T>* expression_ptr; |
9316 | | typedef vector_holder<T> vector_holder_t; |
9317 | | typedef vector_holder_t* vector_holder_ptr; |
9318 | | typedef std::pair<expression_ptr,bool> branch_t; |
9319 | | |
9320 | | rebasevector_celem_rtc_node(expression_ptr vec_node, |
9321 | | const std::size_t index, |
9322 | | vector_holder_ptr vec_holder, |
9323 | | vector_access_runtime_check_ptr vec_rt_chk) |
9324 | 0 | : index_(index) |
9325 | 0 | , vector_holder_(vec_holder) |
9326 | 0 | , vector_base_((*vec_holder)[0]) |
9327 | 0 | , vec_rt_chk_(vec_rt_chk) |
9328 | 0 | { |
9329 | 0 | construct_branch_pair(vector_node_, vec_node); |
9330 | 0 | assert(valid()); |
9331 | 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*) |
9332 | | |
9333 | | inline T value() const exprtk_override |
9334 | 0 | { |
9335 | 0 | return *access_vector(); |
9336 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::value() const Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::value() const |
9337 | | |
9338 | | inline T& ref() exprtk_override |
9339 | 0 | { |
9340 | 0 | return *access_vector(); |
9341 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::ref() Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::ref() |
9342 | | |
9343 | | inline const T& ref() const exprtk_override |
9344 | 0 | { |
9345 | 0 | return *access_vector(); |
9346 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::ref() const Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::ref() const |
9347 | | |
9348 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9349 | 0 | { |
9350 | 0 | return expression_node<T>::e_rbveccelemrtc; |
9351 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::type() const Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::type() const |
9352 | | |
9353 | | inline bool valid() const exprtk_override |
9354 | 0 | { |
9355 | 0 | return |
9356 | 0 | vector_holder_ && |
9357 | 0 | vector_node_.first && |
9358 | 0 | vector_node_.first->valid(); |
9359 | 0 | } Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::valid() const Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::valid() const |
9360 | | |
9361 | | inline vector_holder_t& vec_holder() |
9362 | | { |
9363 | | return (*vector_holder_); |
9364 | | } |
9365 | | |
9366 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9367 | 0 | { |
9368 | 0 | expression_node<T>::ndb_t::collect(vector_node_, node_delete_list); |
9369 | 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>**> >&) |
9370 | | |
9371 | | std::size_t node_depth() const exprtk_override |
9372 | 0 | { |
9373 | 0 | return expression_node<T>::ndb_t::compute_node_depth(vector_node_); |
9374 | 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 |
9375 | | |
9376 | | private: |
9377 | | |
9378 | | inline T* access_vector() const |
9379 | 0 | { |
9380 | 0 | vector_node_.first->value(); |
9381 | |
|
9382 | 0 | if (index_ <= vector_holder_->size() - 1) |
9383 | 0 | { |
9384 | 0 | return (vector_holder_->data() + index_); |
9385 | 0 | } |
9386 | | |
9387 | 0 | assert(vec_rt_chk_); |
9388 | | |
9389 | 0 | vector_access_runtime_check::violation_context context; |
9390 | 0 | context.base_ptr = reinterpret_cast<void*>(vector_base_); |
9391 | 0 | context.end_ptr = reinterpret_cast<void*>(vector_base_ + vector_holder_->size()); |
9392 | 0 | context.access_ptr = reinterpret_cast<void*>(vector_base_ + index_); |
9393 | 0 | context.type_size = sizeof(T); |
9394 | |
|
9395 | 0 | return vec_rt_chk_->handle_runtime_violation(context) ? |
9396 | 0 | reinterpret_cast<T*>(context.access_ptr) : |
9397 | 0 | vector_base_ ; |
9398 | 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 |
9399 | | |
9400 | | const std::size_t index_; |
9401 | | vector_holder_ptr vector_holder_; |
9402 | | T* vector_base_; |
9403 | | branch_t vector_node_; |
9404 | | vector_access_runtime_check_ptr vec_rt_chk_; |
9405 | | }; |
9406 | | |
9407 | | template <typename T> |
9408 | | class vector_initialisation_node exprtk_final : public expression_node<T> |
9409 | | { |
9410 | | public: |
9411 | | |
9412 | | typedef expression_node<T>* expression_ptr; |
9413 | | |
9414 | | vector_initialisation_node(T* vector_base, |
9415 | | const std::size_t& size, |
9416 | | const std::vector<expression_ptr>& initialiser_list, |
9417 | | const bool single_value_initialse) |
9418 | 0 | : vector_base_(vector_base) |
9419 | 0 | , initialiser_list_(initialiser_list) |
9420 | 0 | , size_(size) |
9421 | 0 | , single_value_initialse_(single_value_initialse) |
9422 | 0 | , zero_value_initialse_(false) |
9423 | 0 | , const_nonzero_literal_value_initialse_(false) |
9424 | 0 | , single_initialiser_value_(T(0)) |
9425 | 0 | { |
9426 | 0 | if (single_value_initialse_) |
9427 | 0 | { |
9428 | 0 | if (initialiser_list_.empty()) |
9429 | 0 | zero_value_initialse_ = true; |
9430 | 0 | else if ( |
9431 | 0 | (initialiser_list_.size() == 1) && |
9432 | 0 | details::is_constant_node(initialiser_list_[0]) && |
9433 | 0 | (T(0) == initialiser_list_[0]->value()) |
9434 | 0 | ) |
9435 | 0 | { |
9436 | 0 | zero_value_initialse_ = true; |
9437 | 0 | } |
9438 | 0 | else |
9439 | 0 | { |
9440 | 0 | assert(initialiser_list_.size() == 1); |
9441 | | |
9442 | 0 | if (details::is_constant_node(initialiser_list_[0])) |
9443 | 0 | { |
9444 | 0 | const_nonzero_literal_value_initialse_ = true; |
9445 | 0 | single_initialiser_value_ = initialiser_list_[0]->value(); |
9446 | 0 | assert(T(0) != single_initialiser_value_); |
9447 | 0 | } |
9448 | 0 | } |
9449 | 0 | } |
9450 | 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) |
9451 | | |
9452 | | inline T value() const exprtk_override |
9453 | 0 | { |
9454 | 0 | if (single_value_initialse_) |
9455 | 0 | { |
9456 | 0 | if (zero_value_initialse_) |
9457 | 0 | { |
9458 | 0 | details::set_zero_value(vector_base_, size_); |
9459 | 0 | } |
9460 | 0 | else if (const_nonzero_literal_value_initialse_) |
9461 | 0 | { |
9462 | 0 | for (std::size_t i = 0; i < size_; ++i) |
9463 | 0 | { |
9464 | 0 | *(vector_base_ + i) = single_initialiser_value_; |
9465 | 0 | } |
9466 | 0 | } |
9467 | 0 | else |
9468 | 0 | { |
9469 | 0 | for (std::size_t i = 0; i < size_; ++i) |
9470 | 0 | { |
9471 | 0 | *(vector_base_ + i) = initialiser_list_[0]->value(); |
9472 | 0 | } |
9473 | 0 | } |
9474 | 0 | } |
9475 | 0 | else |
9476 | 0 | { |
9477 | 0 | const std::size_t initialiser_list_size = initialiser_list_.size(); |
9478 | |
|
9479 | 0 | for (std::size_t i = 0; i < initialiser_list_size; ++i) |
9480 | 0 | { |
9481 | 0 | *(vector_base_ + i) = initialiser_list_[i]->value(); |
9482 | 0 | } |
9483 | |
|
9484 | 0 | if (initialiser_list_size < size_) |
9485 | 0 | { |
9486 | 0 | details::set_zero_value( |
9487 | 0 | vector_base_ + initialiser_list_size, |
9488 | 0 | (size_ - initialiser_list_size)); |
9489 | 0 | } |
9490 | 0 | } |
9491 | |
|
9492 | 0 | return *(vector_base_); |
9493 | 0 | } Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::value() const Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::value() const |
9494 | | |
9495 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9496 | 0 | { |
9497 | 0 | return expression_node<T>::e_vecinit; |
9498 | 0 | } Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::type() const Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::type() const |
9499 | | |
9500 | | inline bool valid() const exprtk_override |
9501 | 0 | { |
9502 | 0 | return vector_base_; |
9503 | 0 | } Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::valid() const Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::valid() const |
9504 | | |
9505 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9506 | 0 | { |
9507 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9508 | 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>**> >&) |
9509 | | |
9510 | | std::size_t node_depth() const exprtk_override |
9511 | 0 | { |
9512 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9513 | 0 | } Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::node_depth() const |
9514 | | |
9515 | | private: |
9516 | | |
9517 | | vector_initialisation_node(const vector_initialisation_node<T>&) exprtk_delete; |
9518 | | vector_initialisation_node<T>& operator=(const vector_initialisation_node<T>&) exprtk_delete; |
9519 | | |
9520 | | mutable T* vector_base_; |
9521 | | std::vector<expression_ptr> initialiser_list_; |
9522 | | const std::size_t size_; |
9523 | | const bool single_value_initialse_; |
9524 | | bool zero_value_initialse_; |
9525 | | bool const_nonzero_literal_value_initialse_; |
9526 | | T single_initialiser_value_; |
9527 | | }; |
9528 | | |
9529 | | template <typename T> |
9530 | | class vector_init_zero_value_node exprtk_final : public expression_node<T> |
9531 | | { |
9532 | | public: |
9533 | | |
9534 | | typedef expression_node<T>* expression_ptr; |
9535 | | |
9536 | | vector_init_zero_value_node(T* vector_base, |
9537 | | const std::size_t& size, |
9538 | | const std::vector<expression_ptr>& initialiser_list) |
9539 | 0 | : vector_base_(vector_base) |
9540 | 0 | , size_(size) |
9541 | 0 | , initialiser_list_(initialiser_list) |
9542 | 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&) |
9543 | | |
9544 | | inline T value() const exprtk_override |
9545 | 0 | { |
9546 | 0 | details::set_zero_value(vector_base_, size_); |
9547 | 0 | return *(vector_base_); |
9548 | 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 |
9549 | | |
9550 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9551 | 0 | { |
9552 | 0 | return expression_node<T>::e_vecinit; |
9553 | 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 |
9554 | | |
9555 | | inline bool valid() const exprtk_override |
9556 | 0 | { |
9557 | 0 | return vector_base_; |
9558 | 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 |
9559 | | |
9560 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9561 | 0 | { |
9562 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9563 | 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>**> >&) |
9564 | | |
9565 | | std::size_t node_depth() const exprtk_override |
9566 | 0 | { |
9567 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9568 | 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 |
9569 | | |
9570 | | private: |
9571 | | |
9572 | | vector_init_zero_value_node(const vector_init_zero_value_node<T>&) exprtk_delete; |
9573 | | vector_init_zero_value_node<T>& operator=(const vector_init_zero_value_node<T>&) exprtk_delete; |
9574 | | |
9575 | | mutable T* vector_base_; |
9576 | | const std::size_t size_; |
9577 | | std::vector<expression_ptr> initialiser_list_; |
9578 | | }; |
9579 | | |
9580 | | template <typename T> |
9581 | | class vector_init_single_constvalue_node exprtk_final : public expression_node<T> |
9582 | | { |
9583 | | public: |
9584 | | |
9585 | | typedef expression_node<T>* expression_ptr; |
9586 | | |
9587 | | vector_init_single_constvalue_node(T* vector_base, |
9588 | | const std::size_t& size, |
9589 | | const std::vector<expression_ptr>& initialiser_list) |
9590 | 0 | : vector_base_(vector_base) |
9591 | 0 | , size_(size) |
9592 | 0 | , initialiser_list_(initialiser_list) |
9593 | 0 | { |
9594 | 0 | single_initialiser_value_ = initialiser_list_[0]->value(); |
9595 | 0 | assert(valid()); |
9596 | 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&) |
9597 | | |
9598 | | inline T value() const exprtk_override |
9599 | 0 | { |
9600 | 0 | for (std::size_t i = 0; i < size_; ++i) |
9601 | 0 | { |
9602 | 0 | *(vector_base_ + i) = single_initialiser_value_; |
9603 | 0 | } |
9604 | |
|
9605 | 0 | return *(vector_base_); |
9606 | 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 |
9607 | | |
9608 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9609 | 0 | { |
9610 | 0 | return expression_node<T>::e_vecinit; |
9611 | 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 |
9612 | | |
9613 | | inline bool valid() const exprtk_override |
9614 | 0 | { |
9615 | 0 | return vector_base_ && |
9616 | 0 | (initialiser_list_.size() == 1) && |
9617 | 0 | (details::is_constant_node(initialiser_list_[0])) && |
9618 | 0 | (single_initialiser_value_ != T(0)); |
9619 | 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 |
9620 | | |
9621 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9622 | 0 | { |
9623 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9624 | 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>**> >&) |
9625 | | |
9626 | | std::size_t node_depth() const exprtk_override |
9627 | 0 | { |
9628 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9629 | 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 |
9630 | | |
9631 | | private: |
9632 | | |
9633 | | vector_init_single_constvalue_node(const vector_init_single_constvalue_node<T>&) exprtk_delete; |
9634 | | vector_init_single_constvalue_node<T>& operator=(const vector_init_single_constvalue_node<T>&) exprtk_delete; |
9635 | | |
9636 | | mutable T* vector_base_; |
9637 | | const std::size_t size_; |
9638 | | std::vector<expression_ptr> initialiser_list_; |
9639 | | T single_initialiser_value_; |
9640 | | }; |
9641 | | |
9642 | | template <typename T> |
9643 | | class vector_init_single_value_node exprtk_final : public expression_node<T> |
9644 | | { |
9645 | | public: |
9646 | | |
9647 | | typedef expression_node<T>* expression_ptr; |
9648 | | |
9649 | | vector_init_single_value_node(T* vector_base, |
9650 | | const std::size_t& size, |
9651 | | const std::vector<expression_ptr>& initialiser_list) |
9652 | 0 | : vector_base_(vector_base) |
9653 | 0 | , size_(size) |
9654 | 0 | , initialiser_list_(initialiser_list) |
9655 | 0 | { |
9656 | 0 | assert(valid()); |
9657 | 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&) |
9658 | | |
9659 | | inline T value() const exprtk_override |
9660 | 0 | { |
9661 | 0 | expression_node<T>& node = *initialiser_list_[0]; |
9662 | |
|
9663 | 0 | for (std::size_t i = 0; i < size_; ++i) |
9664 | 0 | { |
9665 | 0 | *(vector_base_ + i) = node.value(); |
9666 | 0 | } |
9667 | |
|
9668 | 0 | return *(vector_base_); |
9669 | 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 |
9670 | | |
9671 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9672 | 0 | { |
9673 | 0 | return expression_node<T>::e_vecinit; |
9674 | 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 |
9675 | | |
9676 | | inline bool valid() const exprtk_override |
9677 | 0 | { |
9678 | 0 | return vector_base_ && |
9679 | 0 | (initialiser_list_.size() == 1) && |
9680 | 0 | !details::is_constant_node(initialiser_list_[0]); |
9681 | 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 |
9682 | | |
9683 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9684 | 0 | { |
9685 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9686 | 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>**> >&) |
9687 | | |
9688 | | std::size_t node_depth() const exprtk_override |
9689 | 0 | { |
9690 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9691 | 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 |
9692 | | |
9693 | | private: |
9694 | | |
9695 | | vector_init_single_value_node(const vector_init_single_value_node<T>&) exprtk_delete; |
9696 | | vector_init_single_value_node<T>& operator=(const vector_init_single_value_node<T>&) exprtk_delete; |
9697 | | |
9698 | | mutable T* vector_base_; |
9699 | | const std::size_t size_; |
9700 | | std::vector<expression_ptr> initialiser_list_; |
9701 | | }; |
9702 | | |
9703 | | template <typename T> |
9704 | | class vector_init_iota_constconst_node exprtk_final : public expression_node<T> |
9705 | | { |
9706 | | public: |
9707 | | |
9708 | | typedef expression_node<T>* expression_ptr; |
9709 | | |
9710 | | vector_init_iota_constconst_node(T* vector_base, |
9711 | | const std::size_t& size, |
9712 | | const std::vector<expression_ptr>& initialiser_list) |
9713 | 0 | : vector_base_(vector_base) |
9714 | 0 | , size_(size) |
9715 | 0 | , initialiser_list_(initialiser_list) |
9716 | 0 | { |
9717 | 0 | base_value_ = initialiser_list_[0]->value(); |
9718 | 0 | increment_value_ = initialiser_list_[1]->value(); |
9719 | |
|
9720 | 0 | assert(valid()); |
9721 | 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&) |
9722 | | |
9723 | | inline T value() const exprtk_override |
9724 | 0 | { |
9725 | 0 | T value = base_value_; |
9726 | |
|
9727 | 0 | for (std::size_t i = 0; i < size_; ++i, value += increment_value_) |
9728 | 0 | { |
9729 | 0 | *(vector_base_ + i) = value; |
9730 | 0 | } |
9731 | |
|
9732 | 0 | return *(vector_base_); |
9733 | 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 |
9734 | | |
9735 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9736 | 0 | { |
9737 | 0 | return expression_node<T>::e_vecinit; |
9738 | 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 |
9739 | | |
9740 | | inline bool valid() const exprtk_override |
9741 | 0 | { |
9742 | 0 | return vector_base_ && |
9743 | 0 | (initialiser_list_.size() == 2) && |
9744 | 0 | (details::is_constant_node(initialiser_list_[0])) && |
9745 | 0 | (details::is_constant_node(initialiser_list_[1])) ; |
9746 | 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 |
9747 | | |
9748 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9749 | 0 | { |
9750 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9751 | 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>**> >&) |
9752 | | |
9753 | | std::size_t node_depth() const exprtk_override |
9754 | 0 | { |
9755 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9756 | 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 |
9757 | | |
9758 | | private: |
9759 | | |
9760 | | vector_init_iota_constconst_node(const vector_init_iota_constconst_node<T>&) exprtk_delete; |
9761 | | vector_init_iota_constconst_node<T>& operator=(const vector_init_iota_constconst_node<T>&) exprtk_delete; |
9762 | | |
9763 | | mutable T* vector_base_; |
9764 | | const std::size_t size_; |
9765 | | std::vector<expression_ptr> initialiser_list_; |
9766 | | T base_value_; |
9767 | | T increment_value_; |
9768 | | }; |
9769 | | |
9770 | | template <typename T> |
9771 | | class vector_init_iota_constnconst_node exprtk_final : public expression_node<T> |
9772 | | { |
9773 | | public: |
9774 | | |
9775 | | typedef expression_node<T>* expression_ptr; |
9776 | | |
9777 | | vector_init_iota_constnconst_node(T* vector_base, |
9778 | | const std::size_t& size, |
9779 | | const std::vector<expression_ptr>& initialiser_list) |
9780 | 0 | : vector_base_(vector_base) |
9781 | 0 | , size_(size) |
9782 | 0 | , initialiser_list_(initialiser_list) |
9783 | 0 | { |
9784 | 0 | assert(valid()); |
9785 | 0 | base_value_ = initialiser_list_[0]->value(); |
9786 | 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&) |
9787 | | |
9788 | | inline T value() const exprtk_override |
9789 | 0 | { |
9790 | 0 | T value = base_value_; |
9791 | 0 | expression_node<T>& increment = *initialiser_list_[1]; |
9792 | |
|
9793 | 0 | for (std::size_t i = 0; i < size_; ++i, value += increment.value()) |
9794 | 0 | { |
9795 | 0 | *(vector_base_ + i) = value; |
9796 | 0 | } |
9797 | |
|
9798 | 0 | return *(vector_base_); |
9799 | 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 |
9800 | | |
9801 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9802 | 0 | { |
9803 | 0 | return expression_node<T>::e_vecinit; |
9804 | 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 |
9805 | | |
9806 | | inline bool valid() const exprtk_override |
9807 | 0 | { |
9808 | 0 | return vector_base_ && |
9809 | 0 | (initialiser_list_.size() == 2) && |
9810 | 0 | ( details::is_constant_node(initialiser_list_[0])) && |
9811 | 0 | (!details::is_constant_node(initialiser_list_[1])); |
9812 | 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 |
9813 | | |
9814 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9815 | 0 | { |
9816 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9817 | 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>**> >&) |
9818 | | |
9819 | | std::size_t node_depth() const exprtk_override |
9820 | 0 | { |
9821 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9822 | 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 |
9823 | | |
9824 | | private: |
9825 | | |
9826 | | vector_init_iota_constnconst_node(const vector_init_iota_constnconst_node<T>&) exprtk_delete; |
9827 | | vector_init_iota_constnconst_node<T>& operator=(const vector_init_iota_constnconst_node<T>&) exprtk_delete; |
9828 | | |
9829 | | mutable T* vector_base_; |
9830 | | const std::size_t size_; |
9831 | | std::vector<expression_ptr> initialiser_list_; |
9832 | | T base_value_; |
9833 | | }; |
9834 | | |
9835 | | template <typename T> |
9836 | | class vector_init_iota_nconstconst_node exprtk_final : public expression_node<T> |
9837 | | { |
9838 | | public: |
9839 | | |
9840 | | typedef expression_node<T>* expression_ptr; |
9841 | | |
9842 | | vector_init_iota_nconstconst_node(T* vector_base, |
9843 | | const std::size_t& size, |
9844 | | const std::vector<expression_ptr>& initialiser_list) |
9845 | 0 | : vector_base_(vector_base) |
9846 | 0 | , size_(size) |
9847 | 0 | , initialiser_list_(initialiser_list) |
9848 | 0 | { |
9849 | 0 | assert(valid()); |
9850 | 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&) |
9851 | | |
9852 | | inline T value() const exprtk_override |
9853 | 0 | { |
9854 | 0 | T value = initialiser_list_[0]->value(); |
9855 | 0 | const T increment = initialiser_list_[1]->value(); |
9856 | |
|
9857 | 0 | for (std::size_t i = 0; i < size_; ++i, value += increment) |
9858 | 0 | { |
9859 | 0 | *(vector_base_ + i) = value; |
9860 | 0 | } |
9861 | |
|
9862 | 0 | return *(vector_base_); |
9863 | 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 |
9864 | | |
9865 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9866 | 0 | { |
9867 | 0 | return expression_node<T>::e_vecinit; |
9868 | 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 |
9869 | | |
9870 | | inline bool valid() const exprtk_override |
9871 | 0 | { |
9872 | 0 | return vector_base_ && |
9873 | 0 | (initialiser_list_.size() == 2) && |
9874 | 0 | (!details::is_constant_node(initialiser_list_[0])) && |
9875 | 0 | (details::is_constant_node(initialiser_list_[1])); |
9876 | 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 |
9877 | | |
9878 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9879 | 0 | { |
9880 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9881 | 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>**> >&) |
9882 | | |
9883 | | std::size_t node_depth() const exprtk_override |
9884 | 0 | { |
9885 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9886 | 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 |
9887 | | |
9888 | | private: |
9889 | | |
9890 | | vector_init_iota_nconstconst_node(const vector_init_iota_nconstconst_node<T>&) exprtk_delete; |
9891 | | vector_init_iota_nconstconst_node<T>& operator=(const vector_init_iota_nconstconst_node<T>&) exprtk_delete; |
9892 | | |
9893 | | mutable T* vector_base_; |
9894 | | const std::size_t size_; |
9895 | | std::vector<expression_ptr> initialiser_list_; |
9896 | | }; |
9897 | | |
9898 | | template <typename T> |
9899 | | class vector_init_iota_nconstnconst_node exprtk_final : public expression_node<T> |
9900 | | { |
9901 | | public: |
9902 | | |
9903 | | typedef expression_node<T>* expression_ptr; |
9904 | | |
9905 | | vector_init_iota_nconstnconst_node(T* vector_base, |
9906 | | const std::size_t& size, |
9907 | | const std::vector<expression_ptr>& initialiser_list) |
9908 | 0 | : vector_base_(vector_base) |
9909 | 0 | , size_(size) |
9910 | 0 | , initialiser_list_(initialiser_list) |
9911 | 0 | { |
9912 | 0 | assert(valid()); |
9913 | 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&) |
9914 | | |
9915 | | inline T value() const exprtk_override |
9916 | 0 | { |
9917 | 0 | T value = initialiser_list_[0]->value(); |
9918 | 0 | expression_node<T>& increment = *initialiser_list_[1]; |
9919 | |
|
9920 | 0 | for (std::size_t i = 0; i < size_; ++i, value += increment.value()) |
9921 | 0 | { |
9922 | 0 | *(vector_base_ + i) = value; |
9923 | 0 | } |
9924 | |
|
9925 | 0 | return *(vector_base_); |
9926 | 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 |
9927 | | |
9928 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9929 | 0 | { |
9930 | 0 | return expression_node<T>::e_vecinit; |
9931 | 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 |
9932 | | |
9933 | | inline bool valid() const exprtk_override |
9934 | 0 | { |
9935 | 0 | return vector_base_ && |
9936 | 0 | (initialiser_list_.size() == 2) && |
9937 | 0 | (!details::is_constant_node(initialiser_list_[0])) && |
9938 | 0 | (!details::is_constant_node(initialiser_list_[1])); |
9939 | 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 |
9940 | | |
9941 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
9942 | 0 | { |
9943 | 0 | expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list); |
9944 | 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>**> >&) |
9945 | | |
9946 | | std::size_t node_depth() const exprtk_override |
9947 | 0 | { |
9948 | 0 | return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_); |
9949 | 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 |
9950 | | |
9951 | | private: |
9952 | | |
9953 | | vector_init_iota_nconstnconst_node(const vector_init_iota_nconstnconst_node<T>&) exprtk_delete; |
9954 | | vector_init_iota_nconstnconst_node<T>& operator=(const vector_init_iota_nconstnconst_node<T>&) exprtk_delete; |
9955 | | |
9956 | | mutable T* vector_base_; |
9957 | | const std::size_t size_; |
9958 | | std::vector<expression_ptr> initialiser_list_; |
9959 | | }; |
9960 | | |
9961 | | template <typename T> |
9962 | | class swap_node exprtk_final : public expression_node<T> |
9963 | | { |
9964 | | public: |
9965 | | |
9966 | | typedef expression_node<T>* expression_ptr; |
9967 | | typedef variable_node<T>* variable_node_ptr; |
9968 | | |
9969 | | swap_node(variable_node_ptr var0, variable_node_ptr var1) |
9970 | 2 | : var0_(var0) |
9971 | 2 | , var1_(var1) |
9972 | 2 | {} exprtk::details::swap_node<double>::swap_node(exprtk::details::variable_node<double>*, exprtk::details::variable_node<double>*) Line | Count | Source | 9970 | 1 | : var0_(var0) | 9971 | 1 | , var1_(var1) | 9972 | 1 | {} |
exprtk::details::swap_node<float>::swap_node(exprtk::details::variable_node<float>*, exprtk::details::variable_node<float>*) Line | Count | Source | 9970 | 1 | : var0_(var0) | 9971 | 1 | , var1_(var1) | 9972 | 1 | {} |
|
9973 | | |
9974 | | inline T value() const exprtk_override |
9975 | 2 | { |
9976 | 2 | std::swap(var0_->ref(),var1_->ref()); |
9977 | 2 | return var1_->ref(); |
9978 | 2 | } exprtk::details::swap_node<double>::value() const Line | Count | Source | 9975 | 1 | { | 9976 | 1 | std::swap(var0_->ref(),var1_->ref()); | 9977 | 1 | return var1_->ref(); | 9978 | 1 | } |
exprtk::details::swap_node<float>::value() const Line | Count | Source | 9975 | 1 | { | 9976 | 1 | std::swap(var0_->ref(),var1_->ref()); | 9977 | 1 | return var1_->ref(); | 9978 | 1 | } |
|
9979 | | |
9980 | | inline typename expression_node<T>::node_type type() const exprtk_override |
9981 | 10 | { |
9982 | 10 | return expression_node<T>::e_swap; |
9983 | 10 | } exprtk::details::swap_node<double>::type() const Line | Count | Source | 9981 | 5 | { | 9982 | 5 | return expression_node<T>::e_swap; | 9983 | 5 | } |
exprtk::details::swap_node<float>::type() const Line | Count | Source | 9981 | 5 | { | 9982 | 5 | return expression_node<T>::e_swap; | 9983 | 5 | } |
|
9984 | | |
9985 | | private: |
9986 | | |
9987 | | variable_node_ptr var0_; |
9988 | | variable_node_ptr var1_; |
9989 | | }; |
9990 | | |
9991 | | template <typename T> |
9992 | | class swap_generic_node exprtk_final : public binary_node<T> |
9993 | | { |
9994 | | public: |
9995 | | |
9996 | | typedef expression_node<T>* expression_ptr; |
9997 | | typedef ivariable<T>* ivariable_ptr; |
9998 | | |
9999 | | swap_generic_node(expression_ptr var0, expression_ptr var1) |
10000 | 0 | : binary_node<T>(details::e_swap, var0, var1) |
10001 | 0 | , var0_(dynamic_cast<ivariable_ptr>(var0)) |
10002 | 0 | , var1_(dynamic_cast<ivariable_ptr>(var1)) |
10003 | 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>*) |
10004 | | |
10005 | | inline T value() const exprtk_override |
10006 | 0 | { |
10007 | 0 | std::swap(var0_->ref(),var1_->ref()); |
10008 | 0 | return var1_->ref(); |
10009 | 0 | } Unexecuted instantiation: exprtk::details::swap_generic_node<double>::value() const Unexecuted instantiation: exprtk::details::swap_generic_node<float>::value() const |
10010 | | |
10011 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10012 | 0 | { |
10013 | 0 | return expression_node<T>::e_swap; |
10014 | 0 | } Unexecuted instantiation: exprtk::details::swap_generic_node<double>::type() const Unexecuted instantiation: exprtk::details::swap_generic_node<float>::type() const |
10015 | | |
10016 | | private: |
10017 | | |
10018 | | ivariable_ptr var0_; |
10019 | | ivariable_ptr var1_; |
10020 | | }; |
10021 | | |
10022 | | template <typename T> |
10023 | | class swap_vecvec_node exprtk_final |
10024 | | : public binary_node <T> |
10025 | | , public vector_interface<T> |
10026 | | { |
10027 | | public: |
10028 | | |
10029 | | typedef expression_node<T>* expression_ptr; |
10030 | | typedef vector_node <T>* vector_node_ptr; |
10031 | | typedef vec_data_store <T> vds_t; |
10032 | | |
10033 | | using binary_node<T>::branch; |
10034 | | |
10035 | | swap_vecvec_node(expression_ptr branch0, |
10036 | | expression_ptr branch1) |
10037 | 0 | : binary_node<T>(details::e_swap, branch0, branch1) |
10038 | 0 | , vec0_node_ptr_(0) |
10039 | 0 | , vec1_node_ptr_(0) |
10040 | 0 | , initialised_ (false) |
10041 | 0 | { |
10042 | 0 | if (is_ivector_node(branch(0))) |
10043 | 0 | { |
10044 | 0 | vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0); |
10045 | |
|
10046 | 0 | if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(0)))) |
10047 | 0 | { |
10048 | 0 | vec0_node_ptr_ = vi->vec(); |
10049 | 0 | vds() = vi->vds(); |
10050 | 0 | } |
10051 | 0 | } |
10052 | |
|
10053 | 0 | if (is_ivector_node(branch(1))) |
10054 | 0 | { |
10055 | 0 | vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0); |
10056 | |
|
10057 | 0 | if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(1)))) |
10058 | 0 | { |
10059 | 0 | vec1_node_ptr_ = vi->vec(); |
10060 | 0 | } |
10061 | 0 | } |
10062 | |
|
10063 | 0 | if (vec0_node_ptr_ && vec1_node_ptr_) |
10064 | 0 | { |
10065 | 0 | initialised_ = size() <= base_size(); |
10066 | 0 | } |
10067 | |
|
10068 | 0 | assert(valid()); |
10069 | 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>*) |
10070 | | |
10071 | | inline T value() const exprtk_override |
10072 | 0 | { |
10073 | 0 | binary_node<T>::branch(0)->value(); |
10074 | 0 | binary_node<T>::branch(1)->value(); |
10075 | |
|
10076 | 0 | T* vec0 = vec0_node_ptr_->vds().data(); |
10077 | 0 | T* vec1 = vec1_node_ptr_->vds().data(); |
10078 | |
|
10079 | 0 | assert(size() <= base_size()); |
10080 | 0 | const std::size_t n = size(); |
10081 | |
|
10082 | 0 | for (std::size_t i = 0; i < n; ++i) |
10083 | 0 | { |
10084 | 0 | std::swap(vec0[i],vec1[i]); |
10085 | 0 | } |
10086 | |
|
10087 | 0 | return vec1_node_ptr_->value(); |
10088 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::value() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::value() const |
10089 | | |
10090 | | vector_node_ptr vec() const exprtk_override |
10091 | 0 | { |
10092 | 0 | return vec0_node_ptr_; |
10093 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vec() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vec() const |
10094 | | |
10095 | | vector_node_ptr vec() exprtk_override |
10096 | 0 | { |
10097 | 0 | return vec0_node_ptr_; |
10098 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vec() Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vec() |
10099 | | |
10100 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10101 | 0 | { |
10102 | 0 | return expression_node<T>::e_vecvecswap; |
10103 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::type() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::type() const |
10104 | | |
10105 | | inline bool valid() const exprtk_override |
10106 | 0 | { |
10107 | 0 | return initialised_ && binary_node<T>::valid(); |
10108 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::valid() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::valid() const |
10109 | | |
10110 | | std::size_t size() const exprtk_override |
10111 | 0 | { |
10112 | 0 | return std::min( |
10113 | 0 | vec0_node_ptr_->vec_holder().size(), |
10114 | 0 | vec1_node_ptr_->vec_holder().size()); |
10115 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::size() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::size() const |
10116 | | |
10117 | | std::size_t base_size() const exprtk_override |
10118 | 0 | { |
10119 | 0 | return std::min( |
10120 | 0 | vec0_node_ptr_->vec_holder().base_size(), |
10121 | 0 | vec1_node_ptr_->vec_holder().base_size()); |
10122 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::base_size() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::base_size() const |
10123 | | |
10124 | | vds_t& vds() exprtk_override |
10125 | 0 | { |
10126 | 0 | return vds_; |
10127 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vds() Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vds() |
10128 | | |
10129 | | const vds_t& vds() const exprtk_override |
10130 | 0 | { |
10131 | 0 | return vds_; |
10132 | 0 | } Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vds() const Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vds() const |
10133 | | |
10134 | | private: |
10135 | | |
10136 | | vector_node<T>* vec0_node_ptr_; |
10137 | | vector_node<T>* vec1_node_ptr_; |
10138 | | bool initialised_; |
10139 | | vds_t vds_; |
10140 | | }; |
10141 | | |
10142 | | #ifndef exprtk_disable_string_capabilities |
10143 | | template <typename T> |
10144 | | class stringvar_node exprtk_final |
10145 | | : public expression_node <T> |
10146 | | , public string_base_node<T> |
10147 | | , public range_interface <T> |
10148 | | { |
10149 | | public: |
10150 | | |
10151 | | typedef typename range_interface<T>::range_t range_t; |
10152 | | |
10153 | | static std::string null_value; |
10154 | | |
10155 | | explicit stringvar_node() |
10156 | | : value_(&null_value) |
10157 | | {} |
10158 | | |
10159 | | explicit stringvar_node(std::string& v) |
10160 | 0 | : value_(&v) |
10161 | 0 | { |
10162 | 0 | rp_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
10163 | 0 | rp_.n1_c = std::make_pair<bool,std::size_t>(true,v.size()); |
10164 | 0 | rp_.cache.first = rp_.n0_c.second; |
10165 | 0 | rp_.cache.second = rp_.n1_c.second; |
10166 | 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> >&) |
10167 | | |
10168 | | inline bool operator <(const stringvar_node<T>& v) const |
10169 | | { |
10170 | | return this < (&v); |
10171 | | } |
10172 | | |
10173 | | inline T value() const exprtk_override |
10174 | 0 | { |
10175 | 0 | rp_.n1_c.second = (*value_).size(); |
10176 | 0 | rp_.cache.second = rp_.n1_c.second; |
10177 | |
|
10178 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
10179 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::value() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::value() const |
10180 | | |
10181 | | std::string str() const exprtk_override |
10182 | 0 | { |
10183 | 0 | return ref(); |
10184 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::str() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::str() const |
10185 | | |
10186 | | char_cptr base() const exprtk_override |
10187 | 0 | { |
10188 | 0 | return &(*value_)[0]; |
10189 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::base() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::base() const |
10190 | | |
10191 | | std::size_t size() const exprtk_override |
10192 | 0 | { |
10193 | 0 | return ref().size(); |
10194 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::size() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::size() const |
10195 | | |
10196 | | std::string& ref() |
10197 | 0 | { |
10198 | 0 | return (*value_); |
10199 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::ref() Unexecuted instantiation: exprtk::details::stringvar_node<float>::ref() |
10200 | | |
10201 | | const std::string& ref() const |
10202 | 0 | { |
10203 | 0 | return (*value_); |
10204 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::ref() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::ref() const |
10205 | | |
10206 | | range_t& range_ref() exprtk_override |
10207 | 0 | { |
10208 | 0 | return rp_; |
10209 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::range_ref() Unexecuted instantiation: exprtk::details::stringvar_node<float>::range_ref() |
10210 | | |
10211 | | const range_t& range_ref() const exprtk_override |
10212 | 0 | { |
10213 | 0 | return rp_; |
10214 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::range_ref() const |
10215 | | |
10216 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10217 | 0 | { |
10218 | 0 | return expression_node<T>::e_stringvar; |
10219 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_node<double>::type() const Unexecuted instantiation: exprtk::details::stringvar_node<float>::type() const |
10220 | | |
10221 | | void rebase(std::string& s) |
10222 | | { |
10223 | | value_ = &s; |
10224 | | rp_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
10225 | | rp_.n1_c = std::make_pair<bool,std::size_t>(true,value_->size() - 1); |
10226 | | rp_.cache.first = rp_.n0_c.second; |
10227 | | rp_.cache.second = rp_.n1_c.second; |
10228 | | } |
10229 | | |
10230 | | private: |
10231 | | |
10232 | | std::string* value_; |
10233 | | mutable range_t rp_; |
10234 | | }; |
10235 | | |
10236 | | template <typename T> |
10237 | | std::string stringvar_node<T>::null_value = std::string(""); |
10238 | | |
10239 | | template <typename T> |
10240 | | class string_range_node exprtk_final |
10241 | | : public expression_node <T> |
10242 | | , public string_base_node<T> |
10243 | | , public range_interface <T> |
10244 | | { |
10245 | | public: |
10246 | | |
10247 | | typedef typename range_interface<T>::range_t range_t; |
10248 | | |
10249 | | static std::string null_value; |
10250 | | |
10251 | | explicit string_range_node(std::string& v, const range_t& rp) |
10252 | 0 | : value_(&v) |
10253 | 0 | , rp_(rp) |
10254 | 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&) |
10255 | | |
10256 | | virtual ~string_range_node() |
10257 | 0 | { |
10258 | 0 | rp_.free(); |
10259 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::~string_range_node() Unexecuted instantiation: exprtk::details::string_range_node<float>::~string_range_node() |
10260 | | |
10261 | | inline bool operator <(const string_range_node<T>& v) const |
10262 | | { |
10263 | | return this < (&v); |
10264 | | } |
10265 | | |
10266 | | inline T value() const exprtk_override |
10267 | 0 | { |
10268 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
10269 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::value() const Unexecuted instantiation: exprtk::details::string_range_node<float>::value() const |
10270 | | |
10271 | | inline std::string str() const exprtk_override |
10272 | 0 | { |
10273 | 0 | return (*value_); |
10274 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::str() const Unexecuted instantiation: exprtk::details::string_range_node<float>::str() const |
10275 | | |
10276 | | char_cptr base() const exprtk_override |
10277 | 0 | { |
10278 | 0 | return &(*value_)[0]; |
10279 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::base() const Unexecuted instantiation: exprtk::details::string_range_node<float>::base() const |
10280 | | |
10281 | | std::size_t size() const exprtk_override |
10282 | 0 | { |
10283 | 0 | return ref().size(); |
10284 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::size() const Unexecuted instantiation: exprtk::details::string_range_node<float>::size() const |
10285 | | |
10286 | | inline range_t range() const |
10287 | 0 | { |
10288 | 0 | return rp_; |
10289 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::range() const Unexecuted instantiation: exprtk::details::string_range_node<float>::range() const |
10290 | | |
10291 | | inline virtual std::string& ref() |
10292 | 0 | { |
10293 | 0 | return (*value_); |
10294 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::ref() Unexecuted instantiation: exprtk::details::string_range_node<float>::ref() |
10295 | | |
10296 | | inline virtual const std::string& ref() const |
10297 | 0 | { |
10298 | 0 | return (*value_); |
10299 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::ref() const Unexecuted instantiation: exprtk::details::string_range_node<float>::ref() const |
10300 | | |
10301 | | inline range_t& range_ref() exprtk_override |
10302 | 0 | { |
10303 | 0 | return rp_; |
10304 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::range_ref() Unexecuted instantiation: exprtk::details::string_range_node<float>::range_ref() |
10305 | | |
10306 | | inline const range_t& range_ref() const exprtk_override |
10307 | 0 | { |
10308 | 0 | return rp_; |
10309 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::string_range_node<float>::range_ref() const |
10310 | | |
10311 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10312 | 0 | { |
10313 | 0 | return expression_node<T>::e_stringvarrng; |
10314 | 0 | } Unexecuted instantiation: exprtk::details::string_range_node<double>::type() const Unexecuted instantiation: exprtk::details::string_range_node<float>::type() const |
10315 | | |
10316 | | private: |
10317 | | |
10318 | | std::string* value_; |
10319 | | range_t rp_; |
10320 | | }; |
10321 | | |
10322 | | template <typename T> |
10323 | | std::string string_range_node<T>::null_value = std::string(""); |
10324 | | |
10325 | | template <typename T> |
10326 | | class const_string_range_node exprtk_final |
10327 | | : public expression_node <T> |
10328 | | , public string_base_node<T> |
10329 | | , public range_interface <T> |
10330 | | { |
10331 | | public: |
10332 | | |
10333 | | typedef typename range_interface<T>::range_t range_t; |
10334 | | |
10335 | | explicit const_string_range_node(const std::string& v, const range_t& rp) |
10336 | 60 | : value_(v) |
10337 | 60 | , rp_(rp) |
10338 | 60 | {} 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 | 10336 | 30 | : value_(v) | 10337 | 30 | , rp_(rp) | 10338 | 30 | {} |
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 | 10336 | 30 | : value_(v) | 10337 | 30 | , rp_(rp) | 10338 | 30 | {} |
|
10339 | | |
10340 | | ~const_string_range_node() |
10341 | 60 | { |
10342 | 60 | rp_.free(); |
10343 | 60 | } exprtk::details::const_string_range_node<double>::~const_string_range_node() Line | Count | Source | 10341 | 30 | { | 10342 | 30 | rp_.free(); | 10343 | 30 | } |
exprtk::details::const_string_range_node<float>::~const_string_range_node() Line | Count | Source | 10341 | 30 | { | 10342 | 30 | rp_.free(); | 10343 | 30 | } |
|
10344 | | |
10345 | | inline T value() const exprtk_override |
10346 | 14 | { |
10347 | 14 | return std::numeric_limits<T>::quiet_NaN(); |
10348 | 14 | } exprtk::details::const_string_range_node<double>::value() const Line | Count | Source | 10346 | 7 | { | 10347 | 7 | return std::numeric_limits<T>::quiet_NaN(); | 10348 | 7 | } |
exprtk::details::const_string_range_node<float>::value() const Line | Count | Source | 10346 | 7 | { | 10347 | 7 | return std::numeric_limits<T>::quiet_NaN(); | 10348 | 7 | } |
|
10349 | | |
10350 | | std::string str() const exprtk_override |
10351 | 32 | { |
10352 | 32 | return value_; |
10353 | 32 | } exprtk::details::const_string_range_node<double>::str() const Line | Count | Source | 10351 | 16 | { | 10352 | 16 | return value_; | 10353 | 16 | } |
exprtk::details::const_string_range_node<float>::str() const Line | Count | Source | 10351 | 16 | { | 10352 | 16 | return value_; | 10353 | 16 | } |
|
10354 | | |
10355 | | char_cptr base() const exprtk_override |
10356 | 10 | { |
10357 | 10 | return value_.data(); |
10358 | 10 | } exprtk::details::const_string_range_node<double>::base() const Line | Count | Source | 10356 | 5 | { | 10357 | 5 | return value_.data(); | 10358 | 5 | } |
exprtk::details::const_string_range_node<float>::base() const Line | Count | Source | 10356 | 5 | { | 10357 | 5 | return value_.data(); | 10358 | 5 | } |
|
10359 | | |
10360 | | std::size_t size() const exprtk_override |
10361 | 12 | { |
10362 | 12 | return value_.size(); |
10363 | 12 | } exprtk::details::const_string_range_node<double>::size() const Line | Count | Source | 10361 | 6 | { | 10362 | 6 | return value_.size(); | 10363 | 6 | } |
exprtk::details::const_string_range_node<float>::size() const Line | Count | Source | 10361 | 6 | { | 10362 | 6 | return value_.size(); | 10363 | 6 | } |
|
10364 | | |
10365 | | range_t range() const |
10366 | 32 | { |
10367 | 32 | return rp_; |
10368 | 32 | } exprtk::details::const_string_range_node<double>::range() const Line | Count | Source | 10366 | 16 | { | 10367 | 16 | return rp_; | 10368 | 16 | } |
exprtk::details::const_string_range_node<float>::range() const Line | Count | Source | 10366 | 16 | { | 10367 | 16 | return rp_; | 10368 | 16 | } |
|
10369 | | |
10370 | | range_t& range_ref() exprtk_override |
10371 | 44 | { |
10372 | 44 | return rp_; |
10373 | 44 | } exprtk::details::const_string_range_node<double>::range_ref() Line | Count | Source | 10371 | 22 | { | 10372 | 22 | return rp_; | 10373 | 22 | } |
exprtk::details::const_string_range_node<float>::range_ref() Line | Count | Source | 10371 | 22 | { | 10372 | 22 | return rp_; | 10373 | 22 | } |
|
10374 | | |
10375 | | const range_t& range_ref() const exprtk_override |
10376 | 0 | { |
10377 | 0 | return rp_; |
10378 | 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 |
10379 | | |
10380 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10381 | 994 | { |
10382 | 994 | return expression_node<T>::e_cstringvarrng; |
10383 | 994 | } exprtk::details::const_string_range_node<double>::type() const Line | Count | Source | 10381 | 497 | { | 10382 | 497 | return expression_node<T>::e_cstringvarrng; | 10383 | 497 | } |
exprtk::details::const_string_range_node<float>::type() const Line | Count | Source | 10381 | 497 | { | 10382 | 497 | return expression_node<T>::e_cstringvarrng; | 10383 | 497 | } |
|
10384 | | |
10385 | | private: |
10386 | | |
10387 | | const_string_range_node(const const_string_range_node<T>&) exprtk_delete; |
10388 | | const_string_range_node<T>& operator=(const const_string_range_node<T>&) exprtk_delete; |
10389 | | |
10390 | | const std::string value_; |
10391 | | range_t rp_; |
10392 | | }; |
10393 | | |
10394 | | template <typename T> |
10395 | | class generic_string_range_node exprtk_final |
10396 | | : public expression_node <T> |
10397 | | , public string_base_node<T> |
10398 | | , public range_interface <T> |
10399 | | { |
10400 | | public: |
10401 | | |
10402 | | typedef expression_node <T>* expression_ptr; |
10403 | | typedef stringvar_node <T>* strvar_node_ptr; |
10404 | | typedef string_base_node<T>* str_base_ptr; |
10405 | | typedef typename range_interface<T>::range_t range_t; |
10406 | | typedef range_t* range_ptr; |
10407 | | typedef range_interface<T> irange_t; |
10408 | | typedef irange_t* irange_ptr; |
10409 | | typedef std::pair<expression_ptr,bool> branch_t; |
10410 | | |
10411 | | generic_string_range_node(expression_ptr str_branch, const range_t& brange) |
10412 | 12 | : initialised_(false) |
10413 | 12 | , str_base_ptr_ (0) |
10414 | 12 | , str_range_ptr_(0) |
10415 | 12 | , base_range_(brange) |
10416 | 12 | { |
10417 | 12 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
10418 | 12 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); |
10419 | 12 | range_.cache.first = range_.n0_c.second; |
10420 | 12 | range_.cache.second = range_.n1_c.second; |
10421 | | |
10422 | 12 | construct_branch_pair(branch_, str_branch); |
10423 | | |
10424 | 12 | if (is_generally_string_node(branch_.first)) |
10425 | 12 | { |
10426 | 12 | str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first); |
10427 | | |
10428 | 12 | if (0 == str_base_ptr_) |
10429 | 0 | return; |
10430 | | |
10431 | 12 | str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first); |
10432 | | |
10433 | 12 | if (0 == str_range_ptr_) |
10434 | 0 | return; |
10435 | 12 | } |
10436 | | |
10437 | 12 | initialised_ = (str_base_ptr_ && str_range_ptr_); |
10438 | 12 | assert(valid()); |
10439 | 12 | } 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 | 10412 | 6 | : initialised_(false) | 10413 | 6 | , str_base_ptr_ (0) | 10414 | 6 | , str_range_ptr_(0) | 10415 | 6 | , base_range_(brange) | 10416 | 6 | { | 10417 | 6 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); | 10418 | 6 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); | 10419 | 6 | range_.cache.first = range_.n0_c.second; | 10420 | 6 | range_.cache.second = range_.n1_c.second; | 10421 | | | 10422 | 6 | construct_branch_pair(branch_, str_branch); | 10423 | | | 10424 | 6 | if (is_generally_string_node(branch_.first)) | 10425 | 6 | { | 10426 | 6 | str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first); | 10427 | | | 10428 | 6 | if (0 == str_base_ptr_) | 10429 | 0 | return; | 10430 | | | 10431 | 6 | str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first); | 10432 | | | 10433 | 6 | if (0 == str_range_ptr_) | 10434 | 0 | return; | 10435 | 6 | } | 10436 | | | 10437 | 6 | initialised_ = (str_base_ptr_ && str_range_ptr_); | 10438 | 6 | assert(valid()); | 10439 | 6 | } |
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 | 10412 | 6 | : initialised_(false) | 10413 | 6 | , str_base_ptr_ (0) | 10414 | 6 | , str_range_ptr_(0) | 10415 | 6 | , base_range_(brange) | 10416 | 6 | { | 10417 | 6 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); | 10418 | 6 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); | 10419 | 6 | range_.cache.first = range_.n0_c.second; | 10420 | 6 | range_.cache.second = range_.n1_c.second; | 10421 | | | 10422 | 6 | construct_branch_pair(branch_, str_branch); | 10423 | | | 10424 | 6 | if (is_generally_string_node(branch_.first)) | 10425 | 6 | { | 10426 | 6 | str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first); | 10427 | | | 10428 | 6 | if (0 == str_base_ptr_) | 10429 | 0 | return; | 10430 | | | 10431 | 6 | str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first); | 10432 | | | 10433 | 6 | if (0 == str_range_ptr_) | 10434 | 0 | return; | 10435 | 6 | } | 10436 | | | 10437 | 6 | initialised_ = (str_base_ptr_ && str_range_ptr_); | 10438 | 6 | assert(valid()); | 10439 | 6 | } |
|
10440 | | |
10441 | | ~generic_string_range_node() |
10442 | 12 | { |
10443 | 12 | base_range_.free(); |
10444 | 12 | } exprtk::details::generic_string_range_node<double>::~generic_string_range_node() Line | Count | Source | 10442 | 6 | { | 10443 | 6 | base_range_.free(); | 10444 | 6 | } |
exprtk::details::generic_string_range_node<float>::~generic_string_range_node() Line | Count | Source | 10442 | 6 | { | 10443 | 6 | base_range_.free(); | 10444 | 6 | } |
|
10445 | | |
10446 | | inline T value() const exprtk_override |
10447 | 2 | { |
10448 | 2 | branch_.first->value(); |
10449 | | |
10450 | 2 | std::size_t str_r0 = 0; |
10451 | 2 | std::size_t str_r1 = 0; |
10452 | | |
10453 | 2 | std::size_t r0 = 0; |
10454 | 2 | std::size_t r1 = 0; |
10455 | | |
10456 | 2 | const range_t& range = str_range_ptr_->range_ref(); |
10457 | | |
10458 | 2 | const std::size_t base_str_size = str_base_ptr_->size(); |
10459 | | |
10460 | 2 | if ( |
10461 | 2 | range (str_r0, str_r1, base_str_size ) && |
10462 | 2 | base_range_(r0 , r1 , base_str_size - str_r0) |
10463 | 2 | ) |
10464 | 2 | { |
10465 | 2 | const std::size_t size = r1 - r0; |
10466 | | |
10467 | 2 | range_.n1_c.second = size; |
10468 | 2 | range_.cache.second = range_.n1_c.second; |
10469 | | |
10470 | 2 | value_.assign(str_base_ptr_->base() + str_r0 + r0, size); |
10471 | 2 | } |
10472 | | |
10473 | 2 | return std::numeric_limits<T>::quiet_NaN(); |
10474 | 2 | } exprtk::details::generic_string_range_node<double>::value() const Line | Count | Source | 10447 | 1 | { | 10448 | 1 | branch_.first->value(); | 10449 | | | 10450 | 1 | std::size_t str_r0 = 0; | 10451 | 1 | std::size_t str_r1 = 0; | 10452 | | | 10453 | 1 | std::size_t r0 = 0; | 10454 | 1 | std::size_t r1 = 0; | 10455 | | | 10456 | 1 | const range_t& range = str_range_ptr_->range_ref(); | 10457 | | | 10458 | 1 | const std::size_t base_str_size = str_base_ptr_->size(); | 10459 | | | 10460 | 1 | if ( | 10461 | 1 | range (str_r0, str_r1, base_str_size ) && | 10462 | 1 | base_range_(r0 , r1 , base_str_size - str_r0) | 10463 | 1 | ) | 10464 | 1 | { | 10465 | 1 | const std::size_t size = r1 - r0; | 10466 | | | 10467 | 1 | range_.n1_c.second = size; | 10468 | 1 | range_.cache.second = range_.n1_c.second; | 10469 | | | 10470 | 1 | value_.assign(str_base_ptr_->base() + str_r0 + r0, size); | 10471 | 1 | } | 10472 | | | 10473 | 1 | return std::numeric_limits<T>::quiet_NaN(); | 10474 | 1 | } |
exprtk::details::generic_string_range_node<float>::value() const Line | Count | Source | 10447 | 1 | { | 10448 | 1 | branch_.first->value(); | 10449 | | | 10450 | 1 | std::size_t str_r0 = 0; | 10451 | 1 | std::size_t str_r1 = 0; | 10452 | | | 10453 | 1 | std::size_t r0 = 0; | 10454 | 1 | std::size_t r1 = 0; | 10455 | | | 10456 | 1 | const range_t& range = str_range_ptr_->range_ref(); | 10457 | | | 10458 | 1 | const std::size_t base_str_size = str_base_ptr_->size(); | 10459 | | | 10460 | 1 | if ( | 10461 | 1 | range (str_r0, str_r1, base_str_size ) && | 10462 | 1 | base_range_(r0 , r1 , base_str_size - str_r0) | 10463 | 1 | ) | 10464 | 1 | { | 10465 | 1 | const std::size_t size = r1 - r0; | 10466 | | | 10467 | 1 | range_.n1_c.second = size; | 10468 | 1 | range_.cache.second = range_.n1_c.second; | 10469 | | | 10470 | 1 | value_.assign(str_base_ptr_->base() + str_r0 + r0, size); | 10471 | 1 | } | 10472 | | | 10473 | 1 | return std::numeric_limits<T>::quiet_NaN(); | 10474 | 1 | } |
|
10475 | | |
10476 | | std::string str() const exprtk_override |
10477 | 0 | { |
10478 | 0 | return value_; |
10479 | 0 | } Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::str() const Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::str() const |
10480 | | |
10481 | | char_cptr base() const exprtk_override |
10482 | 0 | { |
10483 | 0 | return &value_[0]; |
10484 | 0 | } Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::base() const Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::base() const |
10485 | | |
10486 | | std::size_t size() const exprtk_override |
10487 | 0 | { |
10488 | 0 | return value_.size(); |
10489 | 0 | } Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::size() const Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::size() const |
10490 | | |
10491 | | range_t& range_ref() exprtk_override |
10492 | 6 | { |
10493 | 6 | return range_; |
10494 | 6 | } exprtk::details::generic_string_range_node<double>::range_ref() Line | Count | Source | 10492 | 3 | { | 10493 | 3 | return range_; | 10494 | 3 | } |
exprtk::details::generic_string_range_node<float>::range_ref() Line | Count | Source | 10492 | 3 | { | 10493 | 3 | return range_; | 10494 | 3 | } |
|
10495 | | |
10496 | | const range_t& range_ref() const exprtk_override |
10497 | 0 | { |
10498 | 0 | return range_; |
10499 | 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 |
10500 | | |
10501 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10502 | 132 | { |
10503 | 132 | return expression_node<T>::e_strgenrange; |
10504 | 132 | } exprtk::details::generic_string_range_node<double>::type() const Line | Count | Source | 10502 | 66 | { | 10503 | 66 | return expression_node<T>::e_strgenrange; | 10504 | 66 | } |
exprtk::details::generic_string_range_node<float>::type() const Line | Count | Source | 10502 | 66 | { | 10503 | 66 | return expression_node<T>::e_strgenrange; | 10504 | 66 | } |
|
10505 | | |
10506 | | inline bool valid() const exprtk_override |
10507 | 30 | { |
10508 | 30 | return initialised_ && branch_.first; |
10509 | 30 | } exprtk::details::generic_string_range_node<double>::valid() const Line | Count | Source | 10507 | 15 | { | 10508 | 15 | return initialised_ && branch_.first; | 10509 | 15 | } |
exprtk::details::generic_string_range_node<float>::valid() const Line | Count | Source | 10507 | 15 | { | 10508 | 15 | return initialised_ && branch_.first; | 10509 | 15 | } |
|
10510 | | |
10511 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
10512 | 12 | { |
10513 | 12 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
10514 | 12 | } 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 | 10512 | 6 | { | 10513 | 6 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 10514 | 6 | } |
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 | 10512 | 6 | { | 10513 | 6 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); | 10514 | 6 | } |
|
10515 | | |
10516 | | std::size_t node_depth() const exprtk_override |
10517 | 20 | { |
10518 | 20 | return expression_node<T>::ndb_t::compute_node_depth(branch_); |
10519 | 20 | } exprtk::details::generic_string_range_node<double>::node_depth() const Line | Count | Source | 10517 | 10 | { | 10518 | 10 | return expression_node<T>::ndb_t::compute_node_depth(branch_); | 10519 | 10 | } |
exprtk::details::generic_string_range_node<float>::node_depth() const Line | Count | Source | 10517 | 10 | { | 10518 | 10 | return expression_node<T>::ndb_t::compute_node_depth(branch_); | 10519 | 10 | } |
|
10520 | | |
10521 | | private: |
10522 | | |
10523 | | bool initialised_; |
10524 | | branch_t branch_; |
10525 | | str_base_ptr str_base_ptr_; |
10526 | | irange_ptr str_range_ptr_; |
10527 | | mutable range_t base_range_; |
10528 | | mutable range_t range_; |
10529 | | mutable std::string value_; |
10530 | | }; |
10531 | | |
10532 | | template <typename T> |
10533 | | class string_concat_node exprtk_final |
10534 | | : public binary_node <T> |
10535 | | , public string_base_node<T> |
10536 | | , public range_interface <T> |
10537 | | { |
10538 | | public: |
10539 | | |
10540 | | typedef typename range_interface<T>::range_t range_t; |
10541 | | typedef range_interface<T> irange_t; |
10542 | | typedef irange_t* irange_ptr; |
10543 | | typedef range_t* range_ptr; |
10544 | | typedef expression_node <T>* expression_ptr; |
10545 | | typedef string_base_node<T>* str_base_ptr; |
10546 | | |
10547 | | using binary_node<T>::branch; |
10548 | | |
10549 | | string_concat_node(const operator_type& opr, |
10550 | | expression_ptr branch0, |
10551 | | expression_ptr branch1) |
10552 | 8 | : binary_node<T>(opr, branch0, branch1) |
10553 | 8 | , initialised_(false) |
10554 | 8 | , str0_base_ptr_ (0) |
10555 | 8 | , str1_base_ptr_ (0) |
10556 | 8 | , str0_range_ptr_(0) |
10557 | 8 | , str1_range_ptr_(0) |
10558 | 8 | { |
10559 | 8 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
10560 | 8 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); |
10561 | | |
10562 | 8 | range_.cache.first = range_.n0_c.second; |
10563 | 8 | range_.cache.second = range_.n1_c.second; |
10564 | | |
10565 | 8 | if (is_generally_string_node(branch(0))) |
10566 | 8 | { |
10567 | 8 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); |
10568 | | |
10569 | 8 | if (0 == str0_base_ptr_) |
10570 | 0 | return; |
10571 | | |
10572 | 8 | str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0)); |
10573 | | |
10574 | 8 | if (0 == str0_range_ptr_) |
10575 | 0 | return; |
10576 | 8 | } |
10577 | | |
10578 | 8 | if (is_generally_string_node(branch(1))) |
10579 | 8 | { |
10580 | 8 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); |
10581 | | |
10582 | 8 | if (0 == str1_base_ptr_) |
10583 | 0 | return; |
10584 | | |
10585 | 8 | str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1)); |
10586 | | |
10587 | 8 | if (0 == str1_range_ptr_) |
10588 | 0 | return; |
10589 | 8 | } |
10590 | | |
10591 | 8 | initialised_ = str0_base_ptr_ && |
10592 | 8 | str1_base_ptr_ && |
10593 | 8 | str0_range_ptr_ && |
10594 | 8 | str1_range_ptr_ ; |
10595 | | |
10596 | 8 | assert(valid()); |
10597 | 8 | } 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 | 10552 | 4 | : binary_node<T>(opr, branch0, branch1) | 10553 | 4 | , initialised_(false) | 10554 | 4 | , str0_base_ptr_ (0) | 10555 | 4 | , str1_base_ptr_ (0) | 10556 | 4 | , str0_range_ptr_(0) | 10557 | 4 | , str1_range_ptr_(0) | 10558 | 4 | { | 10559 | 4 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); | 10560 | 4 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); | 10561 | | | 10562 | 4 | range_.cache.first = range_.n0_c.second; | 10563 | 4 | range_.cache.second = range_.n1_c.second; | 10564 | | | 10565 | 4 | if (is_generally_string_node(branch(0))) | 10566 | 4 | { | 10567 | 4 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); | 10568 | | | 10569 | 4 | if (0 == str0_base_ptr_) | 10570 | 0 | return; | 10571 | | | 10572 | 4 | str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0)); | 10573 | | | 10574 | 4 | if (0 == str0_range_ptr_) | 10575 | 0 | return; | 10576 | 4 | } | 10577 | | | 10578 | 4 | if (is_generally_string_node(branch(1))) | 10579 | 4 | { | 10580 | 4 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); | 10581 | | | 10582 | 4 | if (0 == str1_base_ptr_) | 10583 | 0 | return; | 10584 | | | 10585 | 4 | str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1)); | 10586 | | | 10587 | 4 | if (0 == str1_range_ptr_) | 10588 | 0 | return; | 10589 | 4 | } | 10590 | | | 10591 | 4 | initialised_ = str0_base_ptr_ && | 10592 | 4 | str1_base_ptr_ && | 10593 | 4 | str0_range_ptr_ && | 10594 | 4 | str1_range_ptr_ ; | 10595 | | | 10596 | 4 | assert(valid()); | 10597 | 4 | } |
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 | 10552 | 4 | : binary_node<T>(opr, branch0, branch1) | 10553 | 4 | , initialised_(false) | 10554 | 4 | , str0_base_ptr_ (0) | 10555 | 4 | , str1_base_ptr_ (0) | 10556 | 4 | , str0_range_ptr_(0) | 10557 | 4 | , str1_range_ptr_(0) | 10558 | 4 | { | 10559 | 4 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); | 10560 | 4 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); | 10561 | | | 10562 | 4 | range_.cache.first = range_.n0_c.second; | 10563 | 4 | range_.cache.second = range_.n1_c.second; | 10564 | | | 10565 | 4 | if (is_generally_string_node(branch(0))) | 10566 | 4 | { | 10567 | 4 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); | 10568 | | | 10569 | 4 | if (0 == str0_base_ptr_) | 10570 | 0 | return; | 10571 | | | 10572 | 4 | str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0)); | 10573 | | | 10574 | 4 | if (0 == str0_range_ptr_) | 10575 | 0 | return; | 10576 | 4 | } | 10577 | | | 10578 | 4 | if (is_generally_string_node(branch(1))) | 10579 | 4 | { | 10580 | 4 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); | 10581 | | | 10582 | 4 | if (0 == str1_base_ptr_) | 10583 | 0 | return; | 10584 | | | 10585 | 4 | str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1)); | 10586 | | | 10587 | 4 | if (0 == str1_range_ptr_) | 10588 | 0 | return; | 10589 | 4 | } | 10590 | | | 10591 | 4 | initialised_ = str0_base_ptr_ && | 10592 | 4 | str1_base_ptr_ && | 10593 | 4 | str0_range_ptr_ && | 10594 | 4 | str1_range_ptr_ ; | 10595 | | | 10596 | 4 | assert(valid()); | 10597 | 4 | } |
|
10598 | | |
10599 | | inline T value() const exprtk_override |
10600 | 8 | { |
10601 | 8 | branch(0)->value(); |
10602 | 8 | branch(1)->value(); |
10603 | | |
10604 | 8 | std::size_t str0_r0 = 0; |
10605 | 8 | std::size_t str0_r1 = 0; |
10606 | | |
10607 | 8 | std::size_t str1_r0 = 0; |
10608 | 8 | std::size_t str1_r1 = 0; |
10609 | | |
10610 | 8 | const range_t& range0 = str0_range_ptr_->range_ref(); |
10611 | 8 | const range_t& range1 = str1_range_ptr_->range_ref(); |
10612 | | |
10613 | 8 | if ( |
10614 | 8 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && |
10615 | 8 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) |
10616 | 8 | ) |
10617 | 6 | { |
10618 | 6 | const std::size_t size0 = (str0_r1 - str0_r0); |
10619 | 6 | const std::size_t size1 = (str1_r1 - str1_r0); |
10620 | | |
10621 | 6 | value_.assign(str0_base_ptr_->base() + str0_r0, size0); |
10622 | 6 | value_.append(str1_base_ptr_->base() + str1_r0, size1); |
10623 | | |
10624 | 6 | range_.n1_c.second = value_.size(); |
10625 | 6 | range_.cache.second = range_.n1_c.second; |
10626 | 6 | } |
10627 | | |
10628 | 8 | return std::numeric_limits<T>::quiet_NaN(); |
10629 | 8 | } exprtk::details::string_concat_node<double>::value() const Line | Count | Source | 10600 | 4 | { | 10601 | 4 | branch(0)->value(); | 10602 | 4 | branch(1)->value(); | 10603 | | | 10604 | 4 | std::size_t str0_r0 = 0; | 10605 | 4 | std::size_t str0_r1 = 0; | 10606 | | | 10607 | 4 | std::size_t str1_r0 = 0; | 10608 | 4 | std::size_t str1_r1 = 0; | 10609 | | | 10610 | 4 | const range_t& range0 = str0_range_ptr_->range_ref(); | 10611 | 4 | const range_t& range1 = str1_range_ptr_->range_ref(); | 10612 | | | 10613 | 4 | if ( | 10614 | 4 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && | 10615 | 4 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) | 10616 | 4 | ) | 10617 | 3 | { | 10618 | 3 | const std::size_t size0 = (str0_r1 - str0_r0); | 10619 | 3 | const std::size_t size1 = (str1_r1 - str1_r0); | 10620 | | | 10621 | 3 | value_.assign(str0_base_ptr_->base() + str0_r0, size0); | 10622 | 3 | value_.append(str1_base_ptr_->base() + str1_r0, size1); | 10623 | | | 10624 | 3 | range_.n1_c.second = value_.size(); | 10625 | 3 | range_.cache.second = range_.n1_c.second; | 10626 | 3 | } | 10627 | | | 10628 | 4 | return std::numeric_limits<T>::quiet_NaN(); | 10629 | 4 | } |
exprtk::details::string_concat_node<float>::value() const Line | Count | Source | 10600 | 4 | { | 10601 | 4 | branch(0)->value(); | 10602 | 4 | branch(1)->value(); | 10603 | | | 10604 | 4 | std::size_t str0_r0 = 0; | 10605 | 4 | std::size_t str0_r1 = 0; | 10606 | | | 10607 | 4 | std::size_t str1_r0 = 0; | 10608 | 4 | std::size_t str1_r1 = 0; | 10609 | | | 10610 | 4 | const range_t& range0 = str0_range_ptr_->range_ref(); | 10611 | 4 | const range_t& range1 = str1_range_ptr_->range_ref(); | 10612 | | | 10613 | 4 | if ( | 10614 | 4 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && | 10615 | 4 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) | 10616 | 4 | ) | 10617 | 3 | { | 10618 | 3 | const std::size_t size0 = (str0_r1 - str0_r0); | 10619 | 3 | const std::size_t size1 = (str1_r1 - str1_r0); | 10620 | | | 10621 | 3 | value_.assign(str0_base_ptr_->base() + str0_r0, size0); | 10622 | 3 | value_.append(str1_base_ptr_->base() + str1_r0, size1); | 10623 | | | 10624 | 3 | range_.n1_c.second = value_.size(); | 10625 | 3 | range_.cache.second = range_.n1_c.second; | 10626 | 3 | } | 10627 | | | 10628 | 4 | return std::numeric_limits<T>::quiet_NaN(); | 10629 | 4 | } |
|
10630 | | |
10631 | | std::string str() const exprtk_override |
10632 | 0 | { |
10633 | 0 | return value_; |
10634 | 0 | } Unexecuted instantiation: exprtk::details::string_concat_node<double>::str() const Unexecuted instantiation: exprtk::details::string_concat_node<float>::str() const |
10635 | | |
10636 | | char_cptr base() const exprtk_override |
10637 | 2 | { |
10638 | 2 | return &value_[0]; |
10639 | 2 | } exprtk::details::string_concat_node<double>::base() const Line | Count | Source | 10637 | 1 | { | 10638 | 1 | return &value_[0]; | 10639 | 1 | } |
exprtk::details::string_concat_node<float>::base() const Line | Count | Source | 10637 | 1 | { | 10638 | 1 | return &value_[0]; | 10639 | 1 | } |
|
10640 | | |
10641 | | std::size_t size() const exprtk_override |
10642 | 2 | { |
10643 | 2 | return value_.size(); |
10644 | 2 | } exprtk::details::string_concat_node<double>::size() const Line | Count | Source | 10642 | 1 | { | 10643 | 1 | return value_.size(); | 10644 | 1 | } |
exprtk::details::string_concat_node<float>::size() const Line | Count | Source | 10642 | 1 | { | 10643 | 1 | return value_.size(); | 10644 | 1 | } |
|
10645 | | |
10646 | | range_t& range_ref() exprtk_override |
10647 | 2 | { |
10648 | 2 | return range_; |
10649 | 2 | } exprtk::details::string_concat_node<double>::range_ref() Line | Count | Source | 10647 | 1 | { | 10648 | 1 | return range_; | 10649 | 1 | } |
exprtk::details::string_concat_node<float>::range_ref() Line | Count | Source | 10647 | 1 | { | 10648 | 1 | return range_; | 10649 | 1 | } |
|
10650 | | |
10651 | | const range_t& range_ref() const exprtk_override |
10652 | 0 | { |
10653 | 0 | return range_; |
10654 | 0 | } Unexecuted instantiation: exprtk::details::string_concat_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::string_concat_node<float>::range_ref() const |
10655 | | |
10656 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10657 | 70 | { |
10658 | 70 | return expression_node<T>::e_strconcat; |
10659 | 70 | } exprtk::details::string_concat_node<double>::type() const Line | Count | Source | 10657 | 35 | { | 10658 | 35 | return expression_node<T>::e_strconcat; | 10659 | 35 | } |
exprtk::details::string_concat_node<float>::type() const Line | Count | Source | 10657 | 35 | { | 10658 | 35 | return expression_node<T>::e_strconcat; | 10659 | 35 | } |
|
10660 | | |
10661 | | inline bool valid() const exprtk_override |
10662 | 22 | { |
10663 | 22 | return initialised_ && binary_node<T>::valid(); |
10664 | 22 | } exprtk::details::string_concat_node<double>::valid() const Line | Count | Source | 10662 | 11 | { | 10663 | 11 | return initialised_ && binary_node<T>::valid(); | 10664 | 11 | } |
exprtk::details::string_concat_node<float>::valid() const Line | Count | Source | 10662 | 11 | { | 10663 | 11 | return initialised_ && binary_node<T>::valid(); | 10664 | 11 | } |
|
10665 | | |
10666 | | private: |
10667 | | |
10668 | | bool initialised_; |
10669 | | str_base_ptr str0_base_ptr_; |
10670 | | str_base_ptr str1_base_ptr_; |
10671 | | irange_ptr str0_range_ptr_; |
10672 | | irange_ptr str1_range_ptr_; |
10673 | | mutable range_t range_; |
10674 | | mutable std::string value_; |
10675 | | }; |
10676 | | |
10677 | | template <typename T> |
10678 | | class swap_string_node exprtk_final |
10679 | | : public binary_node <T> |
10680 | | , public string_base_node<T> |
10681 | | , public range_interface <T> |
10682 | | { |
10683 | | public: |
10684 | | |
10685 | | typedef typename range_interface<T>::range_t range_t; |
10686 | | typedef range_t* range_ptr; |
10687 | | typedef range_interface<T> irange_t; |
10688 | | typedef irange_t* irange_ptr; |
10689 | | typedef expression_node <T>* expression_ptr; |
10690 | | typedef stringvar_node <T>* strvar_node_ptr; |
10691 | | typedef string_base_node<T>* str_base_ptr; |
10692 | | |
10693 | | using binary_node<T>::branch; |
10694 | | |
10695 | | swap_string_node(expression_ptr branch0, expression_ptr branch1) |
10696 | 0 | : binary_node<T>(details::e_swap, branch0, branch1) |
10697 | 0 | , initialised_(false) |
10698 | 0 | , str0_node_ptr_(0) |
10699 | 0 | , str1_node_ptr_(0) |
10700 | 0 | { |
10701 | 0 | if (is_string_node(branch(0))) |
10702 | 0 | { |
10703 | 0 | str0_node_ptr_ = static_cast<strvar_node_ptr>(branch(0)); |
10704 | 0 | } |
10705 | |
|
10706 | 0 | if (is_string_node(branch(1))) |
10707 | 0 | { |
10708 | 0 | str1_node_ptr_ = static_cast<strvar_node_ptr>(branch(1)); |
10709 | 0 | } |
10710 | |
|
10711 | 0 | initialised_ = (str0_node_ptr_ && str1_node_ptr_); |
10712 | 0 | assert(valid()); |
10713 | 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>*) |
10714 | | |
10715 | | inline T value() const exprtk_override |
10716 | 0 | { |
10717 | 0 | branch(0)->value(); |
10718 | 0 | branch(1)->value(); |
10719 | |
|
10720 | 0 | std::swap(str0_node_ptr_->ref(), str1_node_ptr_->ref()); |
10721 | |
|
10722 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
10723 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::value() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::value() const |
10724 | | |
10725 | | std::string str() const exprtk_override |
10726 | 0 | { |
10727 | 0 | return str0_node_ptr_->str(); |
10728 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::str() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::str() const |
10729 | | |
10730 | | char_cptr base() const exprtk_override |
10731 | 0 | { |
10732 | 0 | return str0_node_ptr_->base(); |
10733 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::base() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::base() const |
10734 | | |
10735 | | std::size_t size() const exprtk_override |
10736 | 0 | { |
10737 | 0 | return str0_node_ptr_->size(); |
10738 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::size() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::size() const |
10739 | | |
10740 | | range_t& range_ref() exprtk_override |
10741 | 0 | { |
10742 | 0 | return str0_node_ptr_->range_ref(); |
10743 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::range_ref() Unexecuted instantiation: exprtk::details::swap_string_node<float>::range_ref() |
10744 | | |
10745 | | const range_t& range_ref() const exprtk_override |
10746 | 0 | { |
10747 | 0 | return str0_node_ptr_->range_ref(); |
10748 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::range_ref() const |
10749 | | |
10750 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10751 | 0 | { |
10752 | 0 | return expression_node<T>::e_strswap; |
10753 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::type() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::type() const |
10754 | | |
10755 | | inline bool valid() const exprtk_override |
10756 | 0 | { |
10757 | 0 | return initialised_ && binary_node<T>::valid(); |
10758 | 0 | } Unexecuted instantiation: exprtk::details::swap_string_node<double>::valid() const Unexecuted instantiation: exprtk::details::swap_string_node<float>::valid() const |
10759 | | |
10760 | | private: |
10761 | | |
10762 | | bool initialised_; |
10763 | | strvar_node_ptr str0_node_ptr_; |
10764 | | strvar_node_ptr str1_node_ptr_; |
10765 | | }; |
10766 | | |
10767 | | template <typename T> |
10768 | | class swap_genstrings_node exprtk_final : public binary_node<T> |
10769 | | { |
10770 | | public: |
10771 | | |
10772 | | typedef typename range_interface<T>::range_t range_t; |
10773 | | typedef range_t* range_ptr; |
10774 | | typedef range_interface<T> irange_t; |
10775 | | typedef irange_t* irange_ptr; |
10776 | | typedef expression_node <T>* expression_ptr; |
10777 | | typedef string_base_node<T>* str_base_ptr; |
10778 | | |
10779 | | using binary_node<T>::branch; |
10780 | | |
10781 | | swap_genstrings_node(expression_ptr branch0, |
10782 | | expression_ptr branch1) |
10783 | 12 | : binary_node<T>(details::e_default, branch0, branch1) |
10784 | 12 | , str0_base_ptr_ (0) |
10785 | 12 | , str1_base_ptr_ (0) |
10786 | 12 | , str0_range_ptr_(0) |
10787 | 12 | , str1_range_ptr_(0) |
10788 | 12 | , initialised_(false) |
10789 | 12 | { |
10790 | 12 | if (is_generally_string_node(branch(0))) |
10791 | 12 | { |
10792 | 12 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); |
10793 | | |
10794 | 12 | if (0 == str0_base_ptr_) |
10795 | 0 | return; |
10796 | | |
10797 | 12 | irange_ptr range = dynamic_cast<irange_ptr>(branch(0)); |
10798 | | |
10799 | 12 | if (0 == range) |
10800 | 0 | return; |
10801 | | |
10802 | 12 | str0_range_ptr_ = &(range->range_ref()); |
10803 | 12 | } |
10804 | | |
10805 | 12 | if (is_generally_string_node(branch(1))) |
10806 | 12 | { |
10807 | 12 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); |
10808 | | |
10809 | 12 | if (0 == str1_base_ptr_) |
10810 | 0 | return; |
10811 | | |
10812 | 12 | irange_ptr range = dynamic_cast<irange_ptr>(branch(1)); |
10813 | | |
10814 | 12 | if (0 == range) |
10815 | 0 | return; |
10816 | | |
10817 | 12 | str1_range_ptr_ = &(range->range_ref()); |
10818 | 12 | } |
10819 | | |
10820 | 12 | initialised_ = str0_base_ptr_ && |
10821 | 12 | str1_base_ptr_ && |
10822 | 12 | str0_range_ptr_ && |
10823 | 12 | str1_range_ptr_ ; |
10824 | | |
10825 | 12 | assert(valid()); |
10826 | 12 | } exprtk::details::swap_genstrings_node<double>::swap_genstrings_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*) Line | Count | Source | 10783 | 6 | : binary_node<T>(details::e_default, branch0, branch1) | 10784 | 6 | , str0_base_ptr_ (0) | 10785 | 6 | , str1_base_ptr_ (0) | 10786 | 6 | , str0_range_ptr_(0) | 10787 | 6 | , str1_range_ptr_(0) | 10788 | 6 | , initialised_(false) | 10789 | 6 | { | 10790 | 6 | if (is_generally_string_node(branch(0))) | 10791 | 6 | { | 10792 | 6 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); | 10793 | | | 10794 | 6 | if (0 == str0_base_ptr_) | 10795 | 0 | return; | 10796 | | | 10797 | 6 | irange_ptr range = dynamic_cast<irange_ptr>(branch(0)); | 10798 | | | 10799 | 6 | if (0 == range) | 10800 | 0 | return; | 10801 | | | 10802 | 6 | str0_range_ptr_ = &(range->range_ref()); | 10803 | 6 | } | 10804 | | | 10805 | 6 | if (is_generally_string_node(branch(1))) | 10806 | 6 | { | 10807 | 6 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); | 10808 | | | 10809 | 6 | if (0 == str1_base_ptr_) | 10810 | 0 | return; | 10811 | | | 10812 | 6 | irange_ptr range = dynamic_cast<irange_ptr>(branch(1)); | 10813 | | | 10814 | 6 | if (0 == range) | 10815 | 0 | return; | 10816 | | | 10817 | 6 | str1_range_ptr_ = &(range->range_ref()); | 10818 | 6 | } | 10819 | | | 10820 | 6 | initialised_ = str0_base_ptr_ && | 10821 | 6 | str1_base_ptr_ && | 10822 | 6 | str0_range_ptr_ && | 10823 | 6 | str1_range_ptr_ ; | 10824 | | | 10825 | 6 | assert(valid()); | 10826 | 6 | } |
exprtk::details::swap_genstrings_node<float>::swap_genstrings_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*) Line | Count | Source | 10783 | 6 | : binary_node<T>(details::e_default, branch0, branch1) | 10784 | 6 | , str0_base_ptr_ (0) | 10785 | 6 | , str1_base_ptr_ (0) | 10786 | 6 | , str0_range_ptr_(0) | 10787 | 6 | , str1_range_ptr_(0) | 10788 | 6 | , initialised_(false) | 10789 | 6 | { | 10790 | 6 | if (is_generally_string_node(branch(0))) | 10791 | 6 | { | 10792 | 6 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); | 10793 | | | 10794 | 6 | if (0 == str0_base_ptr_) | 10795 | 0 | return; | 10796 | | | 10797 | 6 | irange_ptr range = dynamic_cast<irange_ptr>(branch(0)); | 10798 | | | 10799 | 6 | if (0 == range) | 10800 | 0 | return; | 10801 | | | 10802 | 6 | str0_range_ptr_ = &(range->range_ref()); | 10803 | 6 | } | 10804 | | | 10805 | 6 | if (is_generally_string_node(branch(1))) | 10806 | 6 | { | 10807 | 6 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); | 10808 | | | 10809 | 6 | if (0 == str1_base_ptr_) | 10810 | 0 | return; | 10811 | | | 10812 | 6 | irange_ptr range = dynamic_cast<irange_ptr>(branch(1)); | 10813 | | | 10814 | 6 | if (0 == range) | 10815 | 0 | return; | 10816 | | | 10817 | 6 | str1_range_ptr_ = &(range->range_ref()); | 10818 | 6 | } | 10819 | | | 10820 | 6 | initialised_ = str0_base_ptr_ && | 10821 | 6 | str1_base_ptr_ && | 10822 | 6 | str0_range_ptr_ && | 10823 | 6 | str1_range_ptr_ ; | 10824 | | | 10825 | 6 | assert(valid()); | 10826 | 6 | } |
|
10827 | | |
10828 | | inline T value() const exprtk_override |
10829 | 10 | { |
10830 | 10 | branch(0)->value(); |
10831 | 10 | branch(1)->value(); |
10832 | | |
10833 | 10 | std::size_t str0_r0 = 0; |
10834 | 10 | std::size_t str0_r1 = 0; |
10835 | | |
10836 | 10 | std::size_t str1_r0 = 0; |
10837 | 10 | std::size_t str1_r1 = 0; |
10838 | | |
10839 | 10 | const range_t& range0 = (*str0_range_ptr_); |
10840 | 10 | const range_t& range1 = (*str1_range_ptr_); |
10841 | | |
10842 | 10 | if ( |
10843 | 10 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && |
10844 | 10 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) |
10845 | 10 | ) |
10846 | 10 | { |
10847 | 10 | const std::size_t size0 = range0.cache_size(); |
10848 | 10 | const std::size_t size1 = range1.cache_size(); |
10849 | 10 | const std::size_t max_size = std::min(size0,size1); |
10850 | | |
10851 | 10 | char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0); |
10852 | 10 | char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0); |
10853 | | |
10854 | 10 | loop_unroll::details lud(max_size); |
10855 | 10 | char_cptr upper_bound = s0 + lud.upper_bound; |
10856 | | |
10857 | 18 | while (s0 < upper_bound) |
10858 | 8 | { |
10859 | 8 | #define exprtk_loop(N) \ |
10860 | 128 | std::swap(s0[N], s1[N]); \ |
10861 | 8 | |
10862 | 8 | exprtk_loop( 0) exprtk_loop( 1) |
10863 | 8 | exprtk_loop( 2) exprtk_loop( 3) |
10864 | 8 | #ifndef exprtk_disable_superscalar_unroll |
10865 | 8 | exprtk_loop( 4) exprtk_loop( 5) |
10866 | 8 | exprtk_loop( 6) exprtk_loop( 7) |
10867 | 8 | exprtk_loop( 8) exprtk_loop( 9) |
10868 | 8 | exprtk_loop(10) exprtk_loop(11) |
10869 | 8 | exprtk_loop(12) exprtk_loop(13) |
10870 | 8 | exprtk_loop(14) exprtk_loop(15) |
10871 | 8 | #endif |
10872 | | |
10873 | 8 | s0 += lud.batch_size; |
10874 | 8 | s1 += lud.batch_size; |
10875 | 8 | } |
10876 | | |
10877 | 10 | int i = 0; |
10878 | | |
10879 | 10 | switch (lud.remainder) |
10880 | 10 | { |
10881 | 0 | #define case_stmt(N) \ |
10882 | 80 | case N : { std::swap(s0[i], s1[i]); ++i; } \ |
10883 | 80 | exprtk_fallthrough \ |
10884 | 0 | |
10885 | 0 | #ifndef exprtk_disable_superscalar_unroll |
10886 | 0 | case_stmt(15) case_stmt(14) |
10887 | 0 | case_stmt(13) case_stmt(12) |
10888 | 4 | case_stmt(11) case_stmt(10) |
10889 | 4 | case_stmt( 9) case_stmt( 8) |
10890 | 10 | case_stmt( 7) case_stmt( 6) |
10891 | 10 | case_stmt( 5) case_stmt( 4) |
10892 | 10 | #endif |
10893 | 10 | case_stmt( 3) case_stmt( 2) |
10894 | 10 | case_stmt( 1) |
10895 | 10 | default: break; |
10896 | 10 | } |
10897 | | |
10898 | 10 | #undef exprtk_loop |
10899 | 10 | #undef case_stmt |
10900 | 10 | } |
10901 | | |
10902 | 10 | return std::numeric_limits<T>::quiet_NaN(); |
10903 | 10 | } exprtk::details::swap_genstrings_node<double>::value() const Line | Count | Source | 10829 | 5 | { | 10830 | 5 | branch(0)->value(); | 10831 | 5 | branch(1)->value(); | 10832 | | | 10833 | 5 | std::size_t str0_r0 = 0; | 10834 | 5 | std::size_t str0_r1 = 0; | 10835 | | | 10836 | 5 | std::size_t str1_r0 = 0; | 10837 | 5 | std::size_t str1_r1 = 0; | 10838 | | | 10839 | 5 | const range_t& range0 = (*str0_range_ptr_); | 10840 | 5 | const range_t& range1 = (*str1_range_ptr_); | 10841 | | | 10842 | 5 | if ( | 10843 | 5 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && | 10844 | 5 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) | 10845 | 5 | ) | 10846 | 5 | { | 10847 | 5 | const std::size_t size0 = range0.cache_size(); | 10848 | 5 | const std::size_t size1 = range1.cache_size(); | 10849 | 5 | const std::size_t max_size = std::min(size0,size1); | 10850 | | | 10851 | 5 | char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0); | 10852 | 5 | char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0); | 10853 | | | 10854 | 5 | loop_unroll::details lud(max_size); | 10855 | 5 | char_cptr upper_bound = s0 + lud.upper_bound; | 10856 | | | 10857 | 9 | while (s0 < upper_bound) | 10858 | 4 | { | 10859 | 4 | #define exprtk_loop(N) \ | 10860 | 4 | std::swap(s0[N], s1[N]); \ | 10861 | 4 | | 10862 | 4 | exprtk_loop( 0) exprtk_loop( 1) | 10863 | 4 | exprtk_loop( 2) exprtk_loop( 3) | 10864 | 4 | #ifndef exprtk_disable_superscalar_unroll | 10865 | 4 | exprtk_loop( 4) exprtk_loop( 5) | 10866 | 4 | exprtk_loop( 6) exprtk_loop( 7) | 10867 | 4 | exprtk_loop( 8) exprtk_loop( 9) | 10868 | 4 | exprtk_loop(10) exprtk_loop(11) | 10869 | 4 | exprtk_loop(12) exprtk_loop(13) | 10870 | 4 | exprtk_loop(14) exprtk_loop(15) | 10871 | 4 | #endif | 10872 | | | 10873 | 4 | s0 += lud.batch_size; | 10874 | 4 | s1 += lud.batch_size; | 10875 | 4 | } | 10876 | | | 10877 | 5 | int i = 0; | 10878 | | | 10879 | 5 | switch (lud.remainder) | 10880 | 5 | { | 10881 | 0 | #define case_stmt(N) \ | 10882 | 0 | case N : { std::swap(s0[i], s1[i]); ++i; } \ | 10883 | 0 | exprtk_fallthrough \ | 10884 | 0 | | 10885 | 0 | #ifndef exprtk_disable_superscalar_unroll | 10886 | 0 | case_stmt(15) case_stmt(14) | 10887 | 0 | case_stmt(13) case_stmt(12) | 10888 | 2 | case_stmt(11) case_stmt(10) | 10889 | 2 | case_stmt( 9) case_stmt( 8) | 10890 | 5 | case_stmt( 7) case_stmt( 6) | 10891 | 5 | case_stmt( 5) case_stmt( 4) | 10892 | 5 | #endif | 10893 | 5 | case_stmt( 3) case_stmt( 2) | 10894 | 5 | case_stmt( 1) | 10895 | 5 | default: break; | 10896 | 5 | } | 10897 | | | 10898 | 5 | #undef exprtk_loop | 10899 | 5 | #undef case_stmt | 10900 | 5 | } | 10901 | | | 10902 | 5 | return std::numeric_limits<T>::quiet_NaN(); | 10903 | 5 | } |
exprtk::details::swap_genstrings_node<float>::value() const Line | Count | Source | 10829 | 5 | { | 10830 | 5 | branch(0)->value(); | 10831 | 5 | branch(1)->value(); | 10832 | | | 10833 | 5 | std::size_t str0_r0 = 0; | 10834 | 5 | std::size_t str0_r1 = 0; | 10835 | | | 10836 | 5 | std::size_t str1_r0 = 0; | 10837 | 5 | std::size_t str1_r1 = 0; | 10838 | | | 10839 | 5 | const range_t& range0 = (*str0_range_ptr_); | 10840 | 5 | const range_t& range1 = (*str1_range_ptr_); | 10841 | | | 10842 | 5 | if ( | 10843 | 5 | range0(str0_r0, str0_r1, str0_base_ptr_->size()) && | 10844 | 5 | range1(str1_r0, str1_r1, str1_base_ptr_->size()) | 10845 | 5 | ) | 10846 | 5 | { | 10847 | 5 | const std::size_t size0 = range0.cache_size(); | 10848 | 5 | const std::size_t size1 = range1.cache_size(); | 10849 | 5 | const std::size_t max_size = std::min(size0,size1); | 10850 | | | 10851 | 5 | char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0); | 10852 | 5 | char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0); | 10853 | | | 10854 | 5 | loop_unroll::details lud(max_size); | 10855 | 5 | char_cptr upper_bound = s0 + lud.upper_bound; | 10856 | | | 10857 | 9 | while (s0 < upper_bound) | 10858 | 4 | { | 10859 | 4 | #define exprtk_loop(N) \ | 10860 | 4 | std::swap(s0[N], s1[N]); \ | 10861 | 4 | | 10862 | 4 | exprtk_loop( 0) exprtk_loop( 1) | 10863 | 4 | exprtk_loop( 2) exprtk_loop( 3) | 10864 | 4 | #ifndef exprtk_disable_superscalar_unroll | 10865 | 4 | exprtk_loop( 4) exprtk_loop( 5) | 10866 | 4 | exprtk_loop( 6) exprtk_loop( 7) | 10867 | 4 | exprtk_loop( 8) exprtk_loop( 9) | 10868 | 4 | exprtk_loop(10) exprtk_loop(11) | 10869 | 4 | exprtk_loop(12) exprtk_loop(13) | 10870 | 4 | exprtk_loop(14) exprtk_loop(15) | 10871 | 4 | #endif | 10872 | | | 10873 | 4 | s0 += lud.batch_size; | 10874 | 4 | s1 += lud.batch_size; | 10875 | 4 | } | 10876 | | | 10877 | 5 | int i = 0; | 10878 | | | 10879 | 5 | switch (lud.remainder) | 10880 | 5 | { | 10881 | 0 | #define case_stmt(N) \ | 10882 | 0 | case N : { std::swap(s0[i], s1[i]); ++i; } \ | 10883 | 0 | exprtk_fallthrough \ | 10884 | 0 | | 10885 | 0 | #ifndef exprtk_disable_superscalar_unroll | 10886 | 0 | case_stmt(15) case_stmt(14) | 10887 | 0 | case_stmt(13) case_stmt(12) | 10888 | 2 | case_stmt(11) case_stmt(10) | 10889 | 2 | case_stmt( 9) case_stmt( 8) | 10890 | 5 | case_stmt( 7) case_stmt( 6) | 10891 | 5 | case_stmt( 5) case_stmt( 4) | 10892 | 5 | #endif | 10893 | 5 | case_stmt( 3) case_stmt( 2) | 10894 | 5 | case_stmt( 1) | 10895 | 5 | default: break; | 10896 | 5 | } | 10897 | | | 10898 | 5 | #undef exprtk_loop | 10899 | 5 | #undef case_stmt | 10900 | 5 | } | 10901 | | | 10902 | 5 | return std::numeric_limits<T>::quiet_NaN(); | 10903 | 5 | } |
|
10904 | | |
10905 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10906 | 62 | { |
10907 | 62 | return expression_node<T>::e_strswap; |
10908 | 62 | } exprtk::details::swap_genstrings_node<double>::type() const Line | Count | Source | 10906 | 31 | { | 10907 | 31 | return expression_node<T>::e_strswap; | 10908 | 31 | } |
exprtk::details::swap_genstrings_node<float>::type() const Line | Count | Source | 10906 | 31 | { | 10907 | 31 | return expression_node<T>::e_strswap; | 10908 | 31 | } |
|
10909 | | |
10910 | | inline bool valid() const exprtk_override |
10911 | 24 | { |
10912 | 24 | return initialised_ && binary_node<T>::valid(); |
10913 | 24 | } exprtk::details::swap_genstrings_node<double>::valid() const Line | Count | Source | 10911 | 12 | { | 10912 | 12 | return initialised_ && binary_node<T>::valid(); | 10913 | 12 | } |
exprtk::details::swap_genstrings_node<float>::valid() const Line | Count | Source | 10911 | 12 | { | 10912 | 12 | return initialised_ && binary_node<T>::valid(); | 10913 | 12 | } |
|
10914 | | |
10915 | | private: |
10916 | | |
10917 | | swap_genstrings_node(const swap_genstrings_node<T>&) exprtk_delete; |
10918 | | swap_genstrings_node<T>& operator=(const swap_genstrings_node<T>&) exprtk_delete; |
10919 | | |
10920 | | str_base_ptr str0_base_ptr_; |
10921 | | str_base_ptr str1_base_ptr_; |
10922 | | range_ptr str0_range_ptr_; |
10923 | | range_ptr str1_range_ptr_; |
10924 | | bool initialised_; |
10925 | | }; |
10926 | | |
10927 | | template <typename T> |
10928 | | class stringvar_size_node exprtk_final : public expression_node<T> |
10929 | | { |
10930 | | public: |
10931 | | |
10932 | | static const std::string null_value; |
10933 | | |
10934 | | explicit stringvar_size_node() |
10935 | | : value_(&null_value) |
10936 | | {} |
10937 | | |
10938 | | explicit stringvar_size_node(std::string& v) |
10939 | 0 | : value_(&v) |
10940 | 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> >&) |
10941 | | |
10942 | | inline T value() const exprtk_override |
10943 | 0 | { |
10944 | 0 | return T((*value_).size()); |
10945 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_size_node<double>::value() const Unexecuted instantiation: exprtk::details::stringvar_size_node<float>::value() const |
10946 | | |
10947 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10948 | 0 | { |
10949 | 0 | return expression_node<T>::e_stringvarsize; |
10950 | 0 | } Unexecuted instantiation: exprtk::details::stringvar_size_node<double>::type() const Unexecuted instantiation: exprtk::details::stringvar_size_node<float>::type() const |
10951 | | |
10952 | | private: |
10953 | | |
10954 | | const std::string* value_; |
10955 | | }; |
10956 | | |
10957 | | template <typename T> |
10958 | | const std::string stringvar_size_node<T>::null_value = std::string(""); |
10959 | | |
10960 | | template <typename T> |
10961 | | class string_size_node exprtk_final : public expression_node<T> |
10962 | | { |
10963 | | public: |
10964 | | |
10965 | | typedef expression_node <T>* expression_ptr; |
10966 | | typedef string_base_node<T>* str_base_ptr; |
10967 | | typedef std::pair<expression_ptr,bool> branch_t; |
10968 | | |
10969 | | explicit string_size_node(expression_ptr branch) |
10970 | 0 | : str_base_ptr_(0) |
10971 | 0 | { |
10972 | 0 | construct_branch_pair(branch_, branch); |
10973 | |
|
10974 | 0 | if (is_generally_string_node(branch_.first)) |
10975 | 0 | { |
10976 | 0 | str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first); |
10977 | 0 | } |
10978 | |
|
10979 | 0 | assert(valid()); |
10980 | 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>*) |
10981 | | |
10982 | | inline T value() const exprtk_override |
10983 | 0 | { |
10984 | 0 | branch_.first->value(); |
10985 | 0 | return T(str_base_ptr_->size()); |
10986 | 0 | } Unexecuted instantiation: exprtk::details::string_size_node<double>::value() const Unexecuted instantiation: exprtk::details::string_size_node<float>::value() const |
10987 | | |
10988 | | inline typename expression_node<T>::node_type type() const exprtk_override |
10989 | 0 | { |
10990 | 0 | return expression_node<T>::e_stringsize; |
10991 | 0 | } Unexecuted instantiation: exprtk::details::string_size_node<double>::type() const Unexecuted instantiation: exprtk::details::string_size_node<float>::type() const |
10992 | | |
10993 | | inline bool valid() const exprtk_override |
10994 | 0 | { |
10995 | 0 | return str_base_ptr_; |
10996 | 0 | } Unexecuted instantiation: exprtk::details::string_size_node<double>::valid() const Unexecuted instantiation: exprtk::details::string_size_node<float>::valid() const |
10997 | | |
10998 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
10999 | 0 | { |
11000 | 0 | expression_node<T>::ndb_t::collect(branch_, node_delete_list); |
11001 | 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>**> >&) |
11002 | | |
11003 | | std::size_t node_depth() const exprtk_override |
11004 | 0 | { |
11005 | 0 | return expression_node<T>::ndb_t::compute_node_depth(branch_); |
11006 | 0 | } Unexecuted instantiation: exprtk::details::string_size_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::string_size_node<float>::node_depth() const |
11007 | | |
11008 | | private: |
11009 | | |
11010 | | branch_t branch_; |
11011 | | str_base_ptr str_base_ptr_; |
11012 | | }; |
11013 | | |
11014 | | struct asn_assignment |
11015 | | { |
11016 | | static inline void execute(std::string& s, char_cptr data, const std::size_t size) |
11017 | 0 | { s.assign(data,size); } |
11018 | | }; |
11019 | | |
11020 | | struct asn_addassignment |
11021 | | { |
11022 | | static inline void execute(std::string& s, char_cptr data, const std::size_t size) |
11023 | 0 | { s.append(data,size); } |
11024 | | }; |
11025 | | |
11026 | | template <typename T, typename AssignmentProcess = asn_assignment> |
11027 | | class assignment_string_node exprtk_final |
11028 | | : public binary_node <T> |
11029 | | , public string_base_node<T> |
11030 | | , public range_interface <T> |
11031 | | { |
11032 | | public: |
11033 | | |
11034 | | typedef typename range_interface<T>::range_t range_t; |
11035 | | typedef range_t* range_ptr; |
11036 | | typedef range_interface <T> irange_t; |
11037 | | typedef irange_t* irange_ptr; |
11038 | | typedef expression_node <T>* expression_ptr; |
11039 | | typedef stringvar_node <T>* strvar_node_ptr; |
11040 | | typedef string_base_node<T>* str_base_ptr; |
11041 | | |
11042 | | using binary_node<T>::branch; |
11043 | | |
11044 | | assignment_string_node(const operator_type& opr, |
11045 | | expression_ptr branch0, |
11046 | | expression_ptr branch1) |
11047 | 0 | : binary_node<T>(opr, branch0, branch1) |
11048 | 0 | , initialised_(false) |
11049 | 0 | , str0_base_ptr_ (0) |
11050 | 0 | , str1_base_ptr_ (0) |
11051 | 0 | , str0_node_ptr_ (0) |
11052 | 0 | , str1_range_ptr_(0) |
11053 | 0 | { |
11054 | 0 | if (is_string_node(branch(0))) |
11055 | 0 | { |
11056 | 0 | str0_node_ptr_ = static_cast<strvar_node_ptr>(branch(0)); |
11057 | 0 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); |
11058 | 0 | } |
11059 | |
|
11060 | 0 | if (is_generally_string_node(branch(1))) |
11061 | 0 | { |
11062 | 0 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); |
11063 | |
|
11064 | 0 | if (0 == str1_base_ptr_) |
11065 | 0 | return; |
11066 | | |
11067 | 0 | irange_ptr range = dynamic_cast<irange_ptr>(branch(1)); |
11068 | |
|
11069 | 0 | if (0 == range) |
11070 | 0 | return; |
11071 | | |
11072 | 0 | str1_range_ptr_ = &(range->range_ref()); |
11073 | 0 | } |
11074 | | |
11075 | 0 | initialised_ = str0_base_ptr_ && |
11076 | 0 | str1_base_ptr_ && |
11077 | 0 | str0_node_ptr_ && |
11078 | 0 | str1_range_ptr_ ; |
11079 | |
|
11080 | 0 | assert(valid()); |
11081 | 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>*) |
11082 | | |
11083 | | inline T value() const exprtk_override |
11084 | 0 | { |
11085 | 0 | branch(1)->value(); |
11086 | |
|
11087 | 0 | std::size_t r0 = 0; |
11088 | 0 | std::size_t r1 = 0; |
11089 | |
|
11090 | 0 | const range_t& range = (*str1_range_ptr_); |
11091 | |
|
11092 | 0 | if (range(r0, r1, str1_base_ptr_->size())) |
11093 | 0 | { |
11094 | 0 | AssignmentProcess::execute( |
11095 | 0 | str0_node_ptr_->ref(), |
11096 | 0 | str1_base_ptr_->base() + r0, (r1 - r0)); |
11097 | |
|
11098 | 0 | branch(0)->value(); |
11099 | 0 | } |
11100 | |
|
11101 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
11102 | 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 |
11103 | | |
11104 | | std::string str() const exprtk_override |
11105 | 0 | { |
11106 | 0 | return str0_node_ptr_->str(); |
11107 | 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 |
11108 | | |
11109 | | char_cptr base() const exprtk_override |
11110 | 0 | { |
11111 | 0 | return str0_node_ptr_->base(); |
11112 | 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 |
11113 | | |
11114 | | std::size_t size() const exprtk_override |
11115 | 0 | { |
11116 | 0 | return str0_node_ptr_->size(); |
11117 | 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 |
11118 | | |
11119 | | range_t& range_ref() exprtk_override |
11120 | 0 | { |
11121 | 0 | return str0_node_ptr_->range_ref(); |
11122 | 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() |
11123 | | |
11124 | | const range_t& range_ref() const exprtk_override |
11125 | 0 | { |
11126 | 0 | return str0_node_ptr_->range_ref(); |
11127 | 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 |
11128 | | |
11129 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11130 | 0 | { |
11131 | 0 | return expression_node<T>::e_strass; |
11132 | 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 |
11133 | | |
11134 | | inline bool valid() const exprtk_override |
11135 | 0 | { |
11136 | 0 | return initialised_ && binary_node<T>::valid(); |
11137 | 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 |
11138 | | |
11139 | | private: |
11140 | | |
11141 | | bool initialised_; |
11142 | | str_base_ptr str0_base_ptr_; |
11143 | | str_base_ptr str1_base_ptr_; |
11144 | | strvar_node_ptr str0_node_ptr_; |
11145 | | range_ptr str1_range_ptr_; |
11146 | | }; |
11147 | | |
11148 | | template <typename T, typename AssignmentProcess = asn_assignment> |
11149 | | class assignment_string_range_node exprtk_final |
11150 | | : public binary_node <T> |
11151 | | , public string_base_node<T> |
11152 | | , public range_interface <T> |
11153 | | { |
11154 | | public: |
11155 | | |
11156 | | typedef typename range_interface<T>::range_t range_t; |
11157 | | typedef range_t* range_ptr; |
11158 | | typedef range_interface <T> irange_t; |
11159 | | typedef irange_t* irange_ptr; |
11160 | | typedef expression_node <T>* expression_ptr; |
11161 | | typedef stringvar_node <T>* strvar_node_ptr; |
11162 | | typedef string_range_node<T>* str_rng_node_ptr; |
11163 | | typedef string_base_node <T>* str_base_ptr; |
11164 | | |
11165 | | using binary_node<T>::branch; |
11166 | | |
11167 | | assignment_string_range_node(const operator_type& opr, |
11168 | | expression_ptr branch0, |
11169 | | expression_ptr branch1) |
11170 | 0 | : binary_node<T>(opr, branch0, branch1) |
11171 | 0 | , initialised_(false) |
11172 | 0 | , str0_base_ptr_ (0) |
11173 | 0 | , str1_base_ptr_ (0) |
11174 | 0 | , str0_rng_node_ptr_(0) |
11175 | 0 | , str0_range_ptr_ (0) |
11176 | 0 | , str1_range_ptr_ (0) |
11177 | 0 | { |
11178 | 0 | if (is_string_range_node(branch(0))) |
11179 | 0 | { |
11180 | 0 | str0_rng_node_ptr_ = static_cast<str_rng_node_ptr>(branch(0)); |
11181 | 0 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); |
11182 | 0 | irange_ptr range = dynamic_cast<irange_ptr>(branch(0)); |
11183 | |
|
11184 | 0 | if (0 == range) |
11185 | 0 | return; |
11186 | | |
11187 | 0 | str0_range_ptr_ = &(range->range_ref()); |
11188 | 0 | } |
11189 | | |
11190 | 0 | if (is_generally_string_node(branch(1))) |
11191 | 0 | { |
11192 | 0 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1)); |
11193 | |
|
11194 | 0 | if (0 == str1_base_ptr_) |
11195 | 0 | return; |
11196 | | |
11197 | 0 | irange_ptr range = dynamic_cast<irange_ptr>(branch(1)); |
11198 | |
|
11199 | 0 | if (0 == range) |
11200 | 0 | return; |
11201 | | |
11202 | 0 | str1_range_ptr_ = &(range->range_ref()); |
11203 | 0 | } |
11204 | | |
11205 | 0 | initialised_ = str0_base_ptr_ && |
11206 | 0 | str1_base_ptr_ && |
11207 | 0 | str0_rng_node_ptr_ && |
11208 | 0 | str0_range_ptr_ && |
11209 | 0 | str1_range_ptr_ ; |
11210 | |
|
11211 | 0 | assert(valid()); |
11212 | 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>*) |
11213 | | |
11214 | | inline T value() const exprtk_override |
11215 | 0 | { |
11216 | 0 | branch(0)->value(); |
11217 | 0 | branch(1)->value(); |
11218 | |
|
11219 | 0 | std::size_t s0_r0 = 0; |
11220 | 0 | std::size_t s0_r1 = 0; |
11221 | |
|
11222 | 0 | std::size_t s1_r0 = 0; |
11223 | 0 | std::size_t s1_r1 = 0; |
11224 | |
|
11225 | 0 | const range_t& range0 = (*str0_range_ptr_); |
11226 | 0 | const range_t& range1 = (*str1_range_ptr_); |
11227 | |
|
11228 | 0 | if ( |
11229 | 0 | range0(s0_r0, s0_r1, str0_base_ptr_->size()) && |
11230 | 0 | range1(s1_r0, s1_r1, str1_base_ptr_->size()) |
11231 | 0 | ) |
11232 | 0 | { |
11233 | 0 | const std::size_t size = std::min((s0_r1 - s0_r0), (s1_r1 - s1_r0)); |
11234 | |
|
11235 | 0 | std::copy( |
11236 | 0 | str1_base_ptr_->base() + s1_r0, |
11237 | 0 | str1_base_ptr_->base() + s1_r0 + size, |
11238 | 0 | const_cast<char_ptr>(base() + s0_r0)); |
11239 | 0 | } |
11240 | |
|
11241 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
11242 | 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 |
11243 | | |
11244 | | std::string str() const exprtk_override |
11245 | 0 | { |
11246 | 0 | return str0_base_ptr_->str(); |
11247 | 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 |
11248 | | |
11249 | | char_cptr base() const exprtk_override |
11250 | 0 | { |
11251 | 0 | return str0_base_ptr_->base(); |
11252 | 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 |
11253 | | |
11254 | | std::size_t size() const exprtk_override |
11255 | 0 | { |
11256 | 0 | return str0_base_ptr_->size(); |
11257 | 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 |
11258 | | |
11259 | | range_t& range_ref() exprtk_override |
11260 | 0 | { |
11261 | 0 | return str0_rng_node_ptr_->range_ref(); |
11262 | 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() |
11263 | | |
11264 | | const range_t& range_ref() const exprtk_override |
11265 | 0 | { |
11266 | 0 | return str0_rng_node_ptr_->range_ref(); |
11267 | 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 |
11268 | | |
11269 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11270 | 0 | { |
11271 | 0 | return expression_node<T>::e_strass; |
11272 | 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 |
11273 | | |
11274 | | inline bool valid() const exprtk_override |
11275 | 0 | { |
11276 | 0 | return initialised_ && binary_node<T>::valid(); |
11277 | 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 |
11278 | | |
11279 | | private: |
11280 | | |
11281 | | bool initialised_; |
11282 | | str_base_ptr str0_base_ptr_; |
11283 | | str_base_ptr str1_base_ptr_; |
11284 | | str_rng_node_ptr str0_rng_node_ptr_; |
11285 | | range_ptr str0_range_ptr_; |
11286 | | range_ptr str1_range_ptr_; |
11287 | | }; |
11288 | | |
11289 | | template <typename T> |
11290 | | class conditional_string_node exprtk_final |
11291 | | : public trinary_node <T> |
11292 | | , public string_base_node<T> |
11293 | | , public range_interface <T> |
11294 | | { |
11295 | | public: |
11296 | | |
11297 | | typedef typename range_interface<T>::range_t range_t; |
11298 | | typedef range_t* range_ptr; |
11299 | | typedef range_interface <T> irange_t; |
11300 | | typedef irange_t* irange_ptr; |
11301 | | typedef expression_node <T>* expression_ptr; |
11302 | | typedef string_base_node<T>* str_base_ptr; |
11303 | | |
11304 | | conditional_string_node(expression_ptr condition, |
11305 | | expression_ptr consequent, |
11306 | | expression_ptr alternative) |
11307 | 0 | : trinary_node<T>(details::e_default, consequent, alternative, condition) |
11308 | 0 | , initialised_(false) |
11309 | 0 | , str0_base_ptr_ (0) |
11310 | 0 | , str1_base_ptr_ (0) |
11311 | 0 | , str0_range_ptr_(0) |
11312 | 0 | , str1_range_ptr_(0) |
11313 | 0 | , condition_ (condition ) |
11314 | 0 | , consequent_ (consequent ) |
11315 | 0 | , alternative_(alternative) |
11316 | 0 | { |
11317 | 0 | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
11318 | 0 | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); |
11319 | |
|
11320 | 0 | range_.cache.first = range_.n0_c.second; |
11321 | 0 | range_.cache.second = range_.n1_c.second; |
11322 | |
|
11323 | 0 | if (is_generally_string_node(trinary_node<T>::branch_[0].first)) |
11324 | 0 | { |
11325 | 0 | str0_base_ptr_ = dynamic_cast<str_base_ptr>(trinary_node<T>::branch_[0].first); |
11326 | |
|
11327 | 0 | if (0 == str0_base_ptr_) |
11328 | 0 | return; |
11329 | | |
11330 | 0 | str0_range_ptr_ = dynamic_cast<irange_ptr>(trinary_node<T>::branch_[0].first); |
11331 | |
|
11332 | 0 | if (0 == str0_range_ptr_) |
11333 | 0 | return; |
11334 | 0 | } |
11335 | | |
11336 | 0 | if (is_generally_string_node(trinary_node<T>::branch_[1].first)) |
11337 | 0 | { |
11338 | 0 | str1_base_ptr_ = dynamic_cast<str_base_ptr>(trinary_node<T>::branch_[1].first); |
11339 | |
|
11340 | 0 | if (0 == str1_base_ptr_) |
11341 | 0 | return; |
11342 | | |
11343 | 0 | str1_range_ptr_ = dynamic_cast<irange_ptr>(trinary_node<T>::branch_[1].first); |
11344 | |
|
11345 | 0 | if (0 == str1_range_ptr_) |
11346 | 0 | return; |
11347 | 0 | } |
11348 | | |
11349 | 0 | initialised_ = str0_base_ptr_ && |
11350 | 0 | str1_base_ptr_ && |
11351 | 0 | str0_range_ptr_ && |
11352 | 0 | str1_range_ptr_ ; |
11353 | |
|
11354 | 0 | assert(valid()); |
11355 | 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>*) |
11356 | | |
11357 | | inline T value() const exprtk_override |
11358 | 0 | { |
11359 | 0 | std::size_t r0 = 0; |
11360 | 0 | std::size_t r1 = 0; |
11361 | |
|
11362 | 0 | if (is_true(condition_)) |
11363 | 0 | { |
11364 | 0 | consequent_->value(); |
11365 | |
|
11366 | 0 | const range_t& range = str0_range_ptr_->range_ref(); |
11367 | |
|
11368 | 0 | if (range(r0, r1, str0_base_ptr_->size())) |
11369 | 0 | { |
11370 | 0 | const std::size_t size = (r1 - r0); |
11371 | |
|
11372 | 0 | value_.assign(str0_base_ptr_->base() + r0, size); |
11373 | |
|
11374 | 0 | range_.n1_c.second = value_.size(); |
11375 | 0 | range_.cache.second = range_.n1_c.second; |
11376 | |
|
11377 | 0 | return T(1); |
11378 | 0 | } |
11379 | 0 | } |
11380 | 0 | else |
11381 | 0 | { |
11382 | 0 | alternative_->value(); |
11383 | |
|
11384 | 0 | const range_t& range = str1_range_ptr_->range_ref(); |
11385 | |
|
11386 | 0 | if (range(r0, r1, str1_base_ptr_->size())) |
11387 | 0 | { |
11388 | 0 | const std::size_t size = (r1 - r0); |
11389 | |
|
11390 | 0 | value_.assign(str1_base_ptr_->base() + r0, size); |
11391 | |
|
11392 | 0 | range_.n1_c.second = value_.size(); |
11393 | 0 | range_.cache.second = range_.n1_c.second; |
11394 | |
|
11395 | 0 | return T(0); |
11396 | 0 | } |
11397 | 0 | } |
11398 | | |
11399 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
11400 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::value() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::value() const |
11401 | | |
11402 | | std::string str() const exprtk_override |
11403 | 0 | { |
11404 | 0 | return value_; |
11405 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::str() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::str() const |
11406 | | |
11407 | | char_cptr base() const exprtk_override |
11408 | 0 | { |
11409 | 0 | return &value_[0]; |
11410 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::base() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::base() const |
11411 | | |
11412 | | std::size_t size() const exprtk_override |
11413 | 0 | { |
11414 | 0 | return value_.size(); |
11415 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::size() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::size() const |
11416 | | |
11417 | | range_t& range_ref() exprtk_override |
11418 | 0 | { |
11419 | 0 | return range_; |
11420 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::range_ref() Unexecuted instantiation: exprtk::details::conditional_string_node<float>::range_ref() |
11421 | | |
11422 | | const range_t& range_ref() const exprtk_override |
11423 | 0 | { |
11424 | 0 | return range_; |
11425 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::range_ref() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::range_ref() const |
11426 | | |
11427 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11428 | 0 | { |
11429 | 0 | return expression_node<T>::e_strcondition; |
11430 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::type() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::type() const |
11431 | | |
11432 | | inline bool valid() const exprtk_override |
11433 | 0 | { |
11434 | 0 | return |
11435 | 0 | initialised_ && |
11436 | 0 | condition_ && condition_ ->valid() && |
11437 | 0 | consequent_ && consequent_ ->valid() && |
11438 | 0 | alternative_&& alternative_->valid() ; |
11439 | 0 | } Unexecuted instantiation: exprtk::details::conditional_string_node<double>::valid() const Unexecuted instantiation: exprtk::details::conditional_string_node<float>::valid() const |
11440 | | |
11441 | | private: |
11442 | | |
11443 | | bool initialised_; |
11444 | | str_base_ptr str0_base_ptr_; |
11445 | | str_base_ptr str1_base_ptr_; |
11446 | | irange_ptr str0_range_ptr_; |
11447 | | irange_ptr str1_range_ptr_; |
11448 | | mutable range_t range_; |
11449 | | mutable std::string value_; |
11450 | | |
11451 | | expression_ptr condition_; |
11452 | | expression_ptr consequent_; |
11453 | | expression_ptr alternative_; |
11454 | | }; |
11455 | | |
11456 | | template <typename T> |
11457 | | class cons_conditional_str_node exprtk_final |
11458 | | : public binary_node <T> |
11459 | | , public string_base_node<T> |
11460 | | , public range_interface <T> |
11461 | | { |
11462 | | public: |
11463 | | |
11464 | | typedef typename range_interface<T>::range_t range_t; |
11465 | | typedef range_t* range_ptr; |
11466 | | typedef range_interface <T> irange_t; |
11467 | | typedef irange_t* irange_ptr; |
11468 | | typedef expression_node <T>* expression_ptr; |
11469 | | typedef string_base_node<T>* str_base_ptr; |
11470 | | |
11471 | | using binary_node<T>::branch; |
11472 | | |
11473 | | cons_conditional_str_node(expression_ptr condition, |
11474 | | expression_ptr consequent) |
11475 | | : binary_node<T>(details::e_default, consequent, condition) |
11476 | | , initialised_(false) |
11477 | | , str0_base_ptr_ (0) |
11478 | | , str0_range_ptr_(0) |
11479 | | , condition_ (condition ) |
11480 | | , consequent_(consequent) |
11481 | | { |
11482 | | range_.n0_c = std::make_pair<bool,std::size_t>(true,0); |
11483 | | range_.n1_c = std::make_pair<bool,std::size_t>(true,0); |
11484 | | |
11485 | | range_.cache.first = range_.n0_c.second; |
11486 | | range_.cache.second = range_.n1_c.second; |
11487 | | |
11488 | | if (is_generally_string_node(branch(0))) |
11489 | | { |
11490 | | str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0)); |
11491 | | |
11492 | | if (0 == str0_base_ptr_) |
11493 | | return; |
11494 | | |
11495 | | str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0)); |
11496 | | |
11497 | | if (0 == str0_range_ptr_) |
11498 | | return; |
11499 | | } |
11500 | | |
11501 | | initialised_ = str0_base_ptr_ && str0_range_ptr_ ; |
11502 | | assert(valid()); |
11503 | | } |
11504 | | |
11505 | | inline T value() const exprtk_override |
11506 | | { |
11507 | | if (is_true(condition_)) |
11508 | | { |
11509 | | consequent_->value(); |
11510 | | |
11511 | | const range_t& range = str0_range_ptr_->range_ref(); |
11512 | | |
11513 | | std::size_t r0 = 0; |
11514 | | std::size_t r1 = 0; |
11515 | | |
11516 | | if (range(r0, r1, str0_base_ptr_->size())) |
11517 | | { |
11518 | | const std::size_t size = (r1 - r0); |
11519 | | |
11520 | | value_.assign(str0_base_ptr_->base() + r0, size); |
11521 | | |
11522 | | range_.n1_c.second = value_.size(); |
11523 | | range_.cache.second = range_.n1_c.second; |
11524 | | |
11525 | | return T(1); |
11526 | | } |
11527 | | } |
11528 | | |
11529 | | return std::numeric_limits<T>::quiet_NaN(); |
11530 | | } |
11531 | | |
11532 | | std::string str() const |
11533 | | { |
11534 | | return value_; |
11535 | | } |
11536 | | |
11537 | | char_cptr base() const |
11538 | | { |
11539 | | return &value_[0]; |
11540 | | } |
11541 | | |
11542 | | std::size_t size() const |
11543 | | { |
11544 | | return value_.size(); |
11545 | | } |
11546 | | |
11547 | | range_t& range_ref() |
11548 | | { |
11549 | | return range_; |
11550 | | } |
11551 | | |
11552 | | const range_t& range_ref() const |
11553 | | { |
11554 | | return range_; |
11555 | | } |
11556 | | |
11557 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11558 | | { |
11559 | | return expression_node<T>::e_strccondition; |
11560 | | } |
11561 | | |
11562 | | inline bool valid() const exprtk_override |
11563 | | { |
11564 | | return |
11565 | | initialised_ && |
11566 | | condition_ && condition_ ->valid() && |
11567 | | consequent_ && consequent_ ->valid() ; |
11568 | | } |
11569 | | |
11570 | | private: |
11571 | | |
11572 | | bool initialised_; |
11573 | | str_base_ptr str0_base_ptr_; |
11574 | | irange_ptr str0_range_ptr_; |
11575 | | mutable range_t range_; |
11576 | | mutable std::string value_; |
11577 | | |
11578 | | expression_ptr condition_; |
11579 | | expression_ptr consequent_; |
11580 | | }; |
11581 | | |
11582 | | template <typename T, typename VarArgFunction> |
11583 | | class str_vararg_node exprtk_final |
11584 | | : public expression_node <T> |
11585 | | , public string_base_node<T> |
11586 | | , public range_interface <T> |
11587 | | { |
11588 | | public: |
11589 | | |
11590 | | typedef typename range_interface<T>::range_t range_t; |
11591 | | typedef range_t* range_ptr; |
11592 | | typedef range_interface <T> irange_t; |
11593 | | typedef irange_t* irange_ptr; |
11594 | | typedef expression_node <T>* expression_ptr; |
11595 | | typedef string_base_node<T>* str_base_ptr; |
11596 | | typedef std::pair<expression_ptr,bool> branch_t; |
11597 | | |
11598 | | template <typename Allocator, |
11599 | | template <typename, typename> class Sequence> |
11600 | | explicit str_vararg_node(const Sequence<expression_ptr,Allocator>& arg_list) |
11601 | 0 | : initialised_(false) |
11602 | 0 | , str_base_ptr_ (0) |
11603 | 0 | , str_range_ptr_(0) |
11604 | 0 | { |
11605 | 0 | construct_branch_pair(final_node_, const_cast<expression_ptr>(arg_list.back())); |
11606 | |
|
11607 | 0 | if (0 == final_node_.first) |
11608 | 0 | return; |
11609 | 0 | else if (!is_generally_string_node(final_node_.first)) |
11610 | 0 | return; |
11611 | | |
11612 | 0 | str_base_ptr_ = dynamic_cast<str_base_ptr>(final_node_.first); |
11613 | |
|
11614 | 0 | if (0 == str_base_ptr_) |
11615 | 0 | return; |
11616 | | |
11617 | 0 | str_range_ptr_ = dynamic_cast<irange_ptr>(final_node_.first); |
11618 | |
|
11619 | 0 | if (0 == str_range_ptr_) |
11620 | 0 | return; |
11621 | | |
11622 | 0 | if (arg_list.size() > 1) |
11623 | 0 | { |
11624 | 0 | const std::size_t arg_list_size = arg_list.size() - 1; |
11625 | |
|
11626 | 0 | arg_list_.resize(arg_list_size); |
11627 | |
|
11628 | 0 | for (std::size_t i = 0; i < arg_list_size; ++i) |
11629 | 0 | { |
11630 | 0 | if (arg_list[i] && arg_list[i]->valid()) |
11631 | 0 | { |
11632 | 0 | construct_branch_pair(arg_list_[i], arg_list[i]); |
11633 | 0 | } |
11634 | 0 | else |
11635 | 0 | { |
11636 | 0 | arg_list_.clear(); |
11637 | 0 | return; |
11638 | 0 | } |
11639 | 0 | } |
11640 | | |
11641 | 0 | initialised_ = true; |
11642 | 0 | } |
11643 | | |
11644 | 0 | initialised_ &= str_base_ptr_ && str_range_ptr_; |
11645 | 0 | assert(valid()); |
11646 | 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&) |
11647 | | |
11648 | | inline T value() const exprtk_override |
11649 | 0 | { |
11650 | 0 | if (!arg_list_.empty()) |
11651 | 0 | { |
11652 | 0 | VarArgFunction::process(arg_list_); |
11653 | 0 | } |
11654 | |
|
11655 | 0 | final_node_.first->value(); |
11656 | |
|
11657 | 0 | return std::numeric_limits<T>::quiet_NaN(); |
11658 | 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 |
11659 | | |
11660 | | std::string str() const exprtk_override |
11661 | 0 | { |
11662 | 0 | return str_base_ptr_->str(); |
11663 | 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 |
11664 | | |
11665 | | char_cptr base() const exprtk_override |
11666 | 0 | { |
11667 | 0 | return str_base_ptr_->base(); |
11668 | 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 |
11669 | | |
11670 | | std::size_t size() const exprtk_override |
11671 | 0 | { |
11672 | 0 | return str_base_ptr_->size(); |
11673 | 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 |
11674 | | |
11675 | | range_t& range_ref() exprtk_override |
11676 | 0 | { |
11677 | 0 | return str_range_ptr_->range_ref(); |
11678 | 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() |
11679 | | |
11680 | | const range_t& range_ref() const exprtk_override |
11681 | 0 | { |
11682 | 0 | return str_range_ptr_->range_ref(); |
11683 | 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 |
11684 | | |
11685 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11686 | 0 | { |
11687 | 0 | return expression_node<T>::e_stringvararg; |
11688 | 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 |
11689 | | |
11690 | | inline bool valid() const exprtk_override |
11691 | 0 | { |
11692 | 0 | return |
11693 | 0 | initialised_ && |
11694 | 0 | final_node_.first && final_node_.first->valid(); |
11695 | 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 |
11696 | | |
11697 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
11698 | 0 | { |
11699 | 0 | expression_node<T>::ndb_t::collect(final_node_ , node_delete_list); |
11700 | 0 | expression_node<T>::ndb_t::collect(arg_list_ , node_delete_list); |
11701 | 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>**> >&) |
11702 | | |
11703 | | std::size_t node_depth() const exprtk_override |
11704 | 0 | { |
11705 | 0 | return std::max( |
11706 | 0 | expression_node<T>::ndb_t::compute_node_depth(final_node_), |
11707 | 0 | expression_node<T>::ndb_t::compute_node_depth(arg_list_ )); |
11708 | 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 |
11709 | | |
11710 | | private: |
11711 | | |
11712 | | bool initialised_; |
11713 | | branch_t final_node_; |
11714 | | str_base_ptr str_base_ptr_; |
11715 | | irange_ptr str_range_ptr_; |
11716 | | std::vector<branch_t> arg_list_; |
11717 | | }; |
11718 | | #endif |
11719 | | |
11720 | | template <typename T> |
11721 | | class assert_node exprtk_final : public expression_node<T> |
11722 | | { |
11723 | | public: |
11724 | | |
11725 | | typedef expression_node<T>* expression_ptr; |
11726 | | typedef std::pair<expression_ptr,bool> branch_t; |
11727 | | typedef string_base_node<T>* str_base_ptr; |
11728 | | typedef assert_check::assert_context assert_context_t; |
11729 | | |
11730 | | assert_node(expression_ptr assert_condition_node, |
11731 | | expression_ptr assert_message_node, |
11732 | | assert_check_ptr assert_check, |
11733 | | assert_context_t context) |
11734 | 0 | : assert_message_str_base_(0) |
11735 | 0 | , assert_check_(assert_check) |
11736 | 0 | , context_(context) |
11737 | 0 | { |
11738 | 0 | construct_branch_pair(assert_condition_node_, assert_condition_node); |
11739 | 0 | construct_branch_pair(assert_message_node_ , assert_message_node ); |
11740 | |
|
11741 | 0 | #ifndef exprtk_disable_string_capabilities |
11742 | 0 | if ( |
11743 | 0 | assert_message_node_.first && |
11744 | 0 | details::is_generally_string_node(assert_message_node_.first) |
11745 | 0 | ) |
11746 | 0 | { |
11747 | 0 | assert_message_str_base_ = dynamic_cast<str_base_ptr>(assert_message_node_.first); |
11748 | 0 | } |
11749 | 0 | #endif |
11750 | |
|
11751 | 0 | assert(valid()); |
11752 | 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) |
11753 | | |
11754 | | inline T value() const exprtk_override |
11755 | 0 | { |
11756 | 0 | if (details::is_true(assert_condition_node_.first->value())) |
11757 | 0 | { |
11758 | 0 | return T(1); |
11759 | 0 | } |
11760 | | |
11761 | 0 | #ifndef exprtk_disable_string_capabilities |
11762 | 0 | if (assert_message_node_.first) |
11763 | 0 | { |
11764 | 0 | assert_message_node_.first->value(); |
11765 | 0 | assert(assert_message_str_base_); |
11766 | 0 | context_.message = assert_message_str_base_->str(); |
11767 | 0 | } |
11768 | 0 | #endif |
11769 | | |
11770 | 0 | assert_check_->handle_assert(context_); |
11771 | 0 | return T(0); |
11772 | 0 | } Unexecuted instantiation: exprtk::details::assert_node<double>::value() const Unexecuted instantiation: exprtk::details::assert_node<float>::value() const |
11773 | | |
11774 | | inline typename expression_node<T>::node_type type() const exprtk_override |
11775 | 0 | { |
11776 | 0 | return expression_node<T>::e_assert; |
11777 | 0 | } Unexecuted instantiation: exprtk::details::assert_node<double>::type() const Unexecuted instantiation: exprtk::details::assert_node<float>::type() const |
11778 | | |
11779 | | inline bool valid() const exprtk_override |
11780 | 0 | { |
11781 | 0 | return ( |
11782 | 0 | assert_check_ && |
11783 | 0 | assert_condition_node_.first && |
11784 | 0 | assert_condition_node_.first->valid() |
11785 | 0 | ) && |
11786 | 0 | ( |
11787 | 0 | (0 == assert_message_node_.first) || |
11788 | 0 | ( |
11789 | 0 | assert_message_node_.first && |
11790 | 0 | assert_message_str_base_ && |
11791 | 0 | assert_message_node_.first->valid() && |
11792 | 0 | details::is_generally_string_node(assert_message_node_.first) |
11793 | 0 | ) |
11794 | 0 | ); |
11795 | 0 | } Unexecuted instantiation: exprtk::details::assert_node<double>::valid() const Unexecuted instantiation: exprtk::details::assert_node<float>::valid() const |
11796 | | |
11797 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
11798 | 0 | { |
11799 | 0 | expression_node<T>::ndb_t::collect(assert_condition_node_, node_delete_list); |
11800 | 0 | expression_node<T>::ndb_t::collect(assert_message_node_ , node_delete_list); |
11801 | 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>**> >&) |
11802 | | |
11803 | | std::size_t node_depth() const exprtk_override |
11804 | 0 | { |
11805 | 0 | return expression_node<T>::ndb_t::compute_node_depth |
11806 | 0 | (assert_condition_node_, assert_message_node_); |
11807 | 0 | } Unexecuted instantiation: exprtk::details::assert_node<double>::node_depth() const Unexecuted instantiation: exprtk::details::assert_node<float>::node_depth() const |
11808 | | |
11809 | | private: |
11810 | | |
11811 | | branch_t assert_condition_node_; |
11812 | | branch_t assert_message_node_; |
11813 | | str_base_ptr assert_message_str_base_; |
11814 | | assert_check_ptr assert_check_; |
11815 | | mutable assert_context_t context_; |
11816 | | }; |
11817 | | |
11818 | | template <typename T, std::size_t N> |
11819 | | inline T axn(const T a, const T x) |
11820 | 0 | { |
11821 | | // a*x^n |
11822 | 0 | return a * exprtk::details::numeric::fast_exp<T,N>::result(x); |
11823 | 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) |
11824 | | |
11825 | | template <typename T, std::size_t N> |
11826 | | inline T axnb(const T a, const T x, const T b) |
11827 | 0 | { |
11828 | | // a*x^n+b |
11829 | 0 | return a * exprtk::details::numeric::fast_exp<T,N>::result(x) + b; |
11830 | 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) |
11831 | | |
11832 | | template <typename T> |
11833 | | struct sf_base |
11834 | | { |
11835 | | typedef typename details::functor_t<T>::Type Type; |
11836 | | typedef typename details::functor_t<T> functor_t; |
11837 | | typedef typename functor_t::qfunc_t quaternary_functor_t; |
11838 | | typedef typename functor_t::tfunc_t trinary_functor_t; |
11839 | | typedef typename functor_t::bfunc_t binary_functor_t; |
11840 | | typedef typename functor_t::ufunc_t unary_functor_t; |
11841 | | }; |
11842 | | |
11843 | | #define define_sfop3(NN, OP0, OP1) \ |
11844 | | template <typename T> \ |
11845 | | struct sf##NN##_op : public sf_base<T> \ |
11846 | | { \ |
11847 | | typedef typename sf_base<T>::Type const Type; \ |
11848 | | static inline T process(Type x, Type y, Type z) \ |
11849 | 1.22k | { \ |
11850 | 1.22k | return (OP0); \ |
11851 | 1.22k | } \ exprtk::details::sf00_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 3 | { \ | 11850 | 3 | return (OP0); \ | 11851 | 3 | } \ |
exprtk::details::sf01_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 23 | { \ | 11850 | 23 | return (OP0); \ | 11851 | 23 | } \ |
exprtk::details::sf02_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 15 | { \ | 11850 | 15 | return (OP0); \ | 11851 | 15 | } \ |
exprtk::details::sf03_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 16 | { \ | 11850 | 16 | return (OP0); \ | 11851 | 16 | } \ |
exprtk::details::sf04_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 13 | { \ | 11850 | 13 | return (OP0); \ | 11851 | 13 | } \ |
exprtk::details::sf05_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 4 | { \ | 11850 | 4 | return (OP0); \ | 11851 | 4 | } \ |
exprtk::details::sf06_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 11 | { \ | 11850 | 11 | return (OP0); \ | 11851 | 11 | } \ |
exprtk::details::sf07_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 53 | { \ | 11850 | 53 | return (OP0); \ | 11851 | 53 | } \ |
exprtk::details::sf08_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 40 | { \ | 11850 | 40 | return (OP0); \ | 11851 | 40 | } \ |
exprtk::details::sf09_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 53 | { \ | 11850 | 53 | return (OP0); \ | 11851 | 53 | } \ |
exprtk::details::sf10_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 52 | { \ | 11850 | 52 | return (OP0); \ | 11851 | 52 | } \ |
exprtk::details::sf11_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 21 | { \ | 11850 | 21 | return (OP0); \ | 11851 | 21 | } \ |
exprtk::details::sf12_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 21 | { \ | 11850 | 21 | return (OP0); \ | 11851 | 21 | } \ |
exprtk::details::sf13_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 1 | { \ | 11850 | 1 | return (OP0); \ | 11851 | 1 | } \ |
exprtk::details::sf14_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 22 | { \ | 11850 | 22 | return (OP0); \ | 11851 | 22 | } \ |
exprtk::details::sf15_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 16 | { \ | 11850 | 16 | return (OP0); \ | 11851 | 16 | } \ |
exprtk::details::sf16_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 2 | { \ | 11850 | 2 | return (OP0); \ | 11851 | 2 | } \ |
exprtk::details::sf17_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 15 | { \ | 11850 | 15 | return (OP0); \ | 11851 | 15 | } \ |
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 | 11849 | 8 | { \ | 11850 | 8 | return (OP0); \ | 11851 | 8 | } \ |
exprtk::details::sf20_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 28 | { \ | 11850 | 28 | return (OP0); \ | 11851 | 28 | } \ |
exprtk::details::sf21_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 22 | { \ | 11850 | 22 | return (OP0); \ | 11851 | 22 | } \ |
exprtk::details::sf22_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 19 | { \ | 11850 | 19 | return (OP0); \ | 11851 | 19 | } \ |
exprtk::details::sf23_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 21 | { \ | 11850 | 21 | return (OP0); \ | 11851 | 21 | } \ |
exprtk::details::sf24_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 5 | { \ | 11850 | 5 | return (OP0); \ | 11851 | 5 | } \ |
exprtk::details::sf25_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 20 | { \ | 11850 | 20 | return (OP0); \ | 11851 | 20 | } \ |
exprtk::details::sf26_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 36 | { \ | 11850 | 36 | return (OP0); \ | 11851 | 36 | } \ |
exprtk::details::sf27_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 28 | { \ | 11850 | 28 | return (OP0); \ | 11851 | 28 | } \ |
exprtk::details::sf28_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 47 | { \ | 11850 | 47 | return (OP0); \ | 11851 | 47 | } \ |
exprtk::details::sf29_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 1 | { \ | 11850 | 1 | return (OP0); \ | 11851 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sf30_op<double>::process(double const&, double const&, double const&) 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&) exprtk::details::sf45_op<double>::process(double const&, double const&, double const&) Line | Count | Source | 11849 | 1 | { \ | 11850 | 1 | return (OP0); \ | 11851 | 1 | } \ |
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 | 11849 | 3 | { \ | 11850 | 3 | return (OP0); \ | 11851 | 3 | } \ |
exprtk::details::sf01_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 23 | { \ | 11850 | 23 | return (OP0); \ | 11851 | 23 | } \ |
exprtk::details::sf02_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 15 | { \ | 11850 | 15 | return (OP0); \ | 11851 | 15 | } \ |
exprtk::details::sf03_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 16 | { \ | 11850 | 16 | return (OP0); \ | 11851 | 16 | } \ |
exprtk::details::sf04_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 13 | { \ | 11850 | 13 | return (OP0); \ | 11851 | 13 | } \ |
exprtk::details::sf05_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 3 | { \ | 11850 | 3 | return (OP0); \ | 11851 | 3 | } \ |
exprtk::details::sf06_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 11 | { \ | 11850 | 11 | return (OP0); \ | 11851 | 11 | } \ |
exprtk::details::sf07_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 53 | { \ | 11850 | 53 | return (OP0); \ | 11851 | 53 | } \ |
exprtk::details::sf08_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 39 | { \ | 11850 | 39 | return (OP0); \ | 11851 | 39 | } \ |
exprtk::details::sf09_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 53 | { \ | 11850 | 53 | return (OP0); \ | 11851 | 53 | } \ |
exprtk::details::sf10_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 50 | { \ | 11850 | 50 | return (OP0); \ | 11851 | 50 | } \ |
exprtk::details::sf11_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 20 | { \ | 11850 | 20 | return (OP0); \ | 11851 | 20 | } \ |
exprtk::details::sf12_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 21 | { \ | 11850 | 21 | return (OP0); \ | 11851 | 21 | } \ |
exprtk::details::sf13_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 1 | { \ | 11850 | 1 | return (OP0); \ | 11851 | 1 | } \ |
exprtk::details::sf14_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 22 | { \ | 11850 | 22 | return (OP0); \ | 11851 | 22 | } \ |
exprtk::details::sf15_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 16 | { \ | 11850 | 16 | return (OP0); \ | 11851 | 16 | } \ |
exprtk::details::sf16_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 2 | { \ | 11850 | 2 | return (OP0); \ | 11851 | 2 | } \ |
exprtk::details::sf17_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 15 | { \ | 11850 | 15 | return (OP0); \ | 11851 | 15 | } \ |
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 | 11849 | 8 | { \ | 11850 | 8 | return (OP0); \ | 11851 | 8 | } \ |
exprtk::details::sf20_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 28 | { \ | 11850 | 28 | return (OP0); \ | 11851 | 28 | } \ |
exprtk::details::sf21_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 22 | { \ | 11850 | 22 | return (OP0); \ | 11851 | 22 | } \ |
exprtk::details::sf22_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 19 | { \ | 11850 | 19 | return (OP0); \ | 11851 | 19 | } \ |
exprtk::details::sf23_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 21 | { \ | 11850 | 21 | return (OP0); \ | 11851 | 21 | } \ |
exprtk::details::sf24_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 3 | { \ | 11850 | 3 | return (OP0); \ | 11851 | 3 | } \ |
exprtk::details::sf25_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 18 | { \ | 11850 | 18 | return (OP0); \ | 11851 | 18 | } \ |
exprtk::details::sf26_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 35 | { \ | 11850 | 35 | return (OP0); \ | 11851 | 35 | } \ |
exprtk::details::sf27_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 25 | { \ | 11850 | 25 | return (OP0); \ | 11851 | 25 | } \ |
exprtk::details::sf28_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 47 | { \ | 11850 | 47 | return (OP0); \ | 11851 | 47 | } \ |
exprtk::details::sf29_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 1 | { \ | 11850 | 1 | return (OP0); \ | 11851 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sf30_op<float>::process(float const&, float const&, float const&) 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&) exprtk::details::sf45_op<float>::process(float const&, float const&, float const&) Line | Count | Source | 11849 | 1 | { \ | 11850 | 1 | return (OP0); \ | 11851 | 1 | } \ |
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&) |
11852 | | static inline std::string id() \ |
11853 | 419k | { \ |
11854 | 419k | return (OP1); \ |
11855 | 419k | } \ exprtk::details::sf00_op<double>::id() Line | Count | Source | 11853 | 6.81k | { \ | 11854 | 6.81k | return (OP1); \ | 11855 | 6.81k | } \ |
exprtk::details::sf01_op<double>::id() Line | Count | Source | 11853 | 6.60k | { \ | 11854 | 6.60k | return (OP1); \ | 11855 | 6.60k | } \ |
exprtk::details::sf02_op<double>::id() Line | Count | Source | 11853 | 6.47k | { \ | 11854 | 6.47k | return (OP1); \ | 11855 | 6.47k | } \ |
exprtk::details::sf03_op<double>::id() Line | Count | Source | 11853 | 6.45k | { \ | 11854 | 6.45k | return (OP1); \ | 11855 | 6.45k | } \ |
exprtk::details::sf04_op<double>::id() Line | Count | Source | 11853 | 6.44k | { \ | 11854 | 6.44k | return (OP1); \ | 11855 | 6.44k | } \ |
exprtk::details::sf05_op<double>::id() Line | Count | Source | 11853 | 6.44k | { \ | 11854 | 6.44k | return (OP1); \ | 11855 | 6.44k | } \ |
exprtk::details::sf06_op<double>::id() Line | Count | Source | 11853 | 6.53k | { \ | 11854 | 6.53k | return (OP1); \ | 11855 | 6.53k | } \ |
exprtk::details::sf07_op<double>::id() Line | Count | Source | 11853 | 6.50k | { \ | 11854 | 6.50k | return (OP1); \ | 11855 | 6.50k | } \ |
exprtk::details::sf08_op<double>::id() Line | Count | Source | 11853 | 6.56k | { \ | 11854 | 6.56k | return (OP1); \ | 11855 | 6.56k | } \ |
exprtk::details::sf09_op<double>::id() Line | Count | Source | 11853 | 7.02k | { \ | 11854 | 7.02k | return (OP1); \ | 11855 | 7.02k | } \ |
exprtk::details::sf10_op<double>::id() Line | Count | Source | 11853 | 6.74k | { \ | 11854 | 6.74k | return (OP1); \ | 11855 | 6.74k | } \ |
exprtk::details::sf11_op<double>::id() Line | Count | Source | 11853 | 6.44k | { \ | 11854 | 6.44k | return (OP1); \ | 11855 | 6.44k | } \ |
exprtk::details::sf12_op<double>::id() Line | Count | Source | 11853 | 7.58k | { \ | 11854 | 7.58k | return (OP1); \ | 11855 | 7.58k | } \ |
exprtk::details::sf13_op<double>::id() Line | Count | Source | 11853 | 6.42k | { \ | 11854 | 6.42k | return (OP1); \ | 11855 | 6.42k | } \ |
exprtk::details::sf14_op<double>::id() Line | Count | Source | 11853 | 6.71k | { \ | 11854 | 6.71k | return (OP1); \ | 11855 | 6.71k | } \ |
exprtk::details::sf15_op<double>::id() Line | Count | Source | 11853 | 6.55k | { \ | 11854 | 6.55k | return (OP1); \ | 11855 | 6.55k | } \ |
exprtk::details::sf16_op<double>::id() Line | Count | Source | 11853 | 6.48k | { \ | 11854 | 6.48k | return (OP1); \ | 11855 | 6.48k | } \ |
exprtk::details::sf17_op<double>::id() Line | Count | Source | 11853 | 6.76k | { \ | 11854 | 6.76k | return (OP1); \ | 11855 | 6.76k | } \ |
exprtk::details::sf18_op<double>::id() Line | Count | Source | 11853 | 6.42k | { \ | 11854 | 6.42k | return (OP1); \ | 11855 | 6.42k | } \ |
exprtk::details::sf19_op<double>::id() Line | Count | Source | 11853 | 6.44k | { \ | 11854 | 6.44k | return (OP1); \ | 11855 | 6.44k | } \ |
exprtk::details::sf20_op<double>::id() Line | Count | Source | 11853 | 7.02k | { \ | 11854 | 7.02k | return (OP1); \ | 11855 | 7.02k | } \ |
exprtk::details::sf21_op<double>::id() Line | Count | Source | 11853 | 6.46k | { \ | 11854 | 6.46k | return (OP1); \ | 11855 | 6.46k | } \ |
exprtk::details::sf22_op<double>::id() Line | Count | Source | 11853 | 6.61k | { \ | 11854 | 6.61k | return (OP1); \ | 11855 | 6.61k | } \ |
exprtk::details::sf23_op<double>::id() Line | Count | Source | 11853 | 6.48k | { \ | 11854 | 6.48k | return (OP1); \ | 11855 | 6.48k | } \ |
exprtk::details::sf24_op<double>::id() Line | Count | Source | 11853 | 6.50k | { \ | 11854 | 6.50k | return (OP1); \ | 11855 | 6.50k | } \ |
exprtk::details::sf25_op<double>::id() Line | Count | Source | 11853 | 6.44k | { \ | 11854 | 6.44k | return (OP1); \ | 11855 | 6.44k | } \ |
exprtk::details::sf26_op<double>::id() Line | Count | Source | 11853 | 6.72k | { \ | 11854 | 6.72k | return (OP1); \ | 11855 | 6.72k | } \ |
exprtk::details::sf27_op<double>::id() Line | Count | Source | 11853 | 10.0k | { \ | 11854 | 10.0k | return (OP1); \ | 11855 | 10.0k | } \ |
exprtk::details::sf28_op<double>::id() Line | Count | Source | 11853 | 14.3k | { \ | 11854 | 14.3k | return (OP1); \ | 11855 | 14.3k | } \ |
exprtk::details::sf29_op<double>::id() Line | Count | Source | 11853 | 6.42k | { \ | 11854 | 6.42k | return (OP1); \ | 11855 | 6.42k | } \ |
exprtk::details::sf30_op<double>::id() Line | Count | Source | 11853 | 6.42k | { \ | 11854 | 6.42k | return (OP1); \ | 11855 | 6.42k | } \ |
exprtk::details::sf00_op<float>::id() Line | Count | Source | 11853 | 6.81k | { \ | 11854 | 6.81k | return (OP1); \ | 11855 | 6.81k | } \ |
exprtk::details::sf01_op<float>::id() Line | Count | Source | 11853 | 6.60k | { \ | 11854 | 6.60k | return (OP1); \ | 11855 | 6.60k | } \ |
exprtk::details::sf02_op<float>::id() Line | Count | Source | 11853 | 6.47k | { \ | 11854 | 6.47k | return (OP1); \ | 11855 | 6.47k | } \ |
exprtk::details::sf03_op<float>::id() Line | Count | Source | 11853 | 6.44k | { \ | 11854 | 6.44k | return (OP1); \ | 11855 | 6.44k | } \ |
exprtk::details::sf04_op<float>::id() Line | Count | Source | 11853 | 6.44k | { \ | 11854 | 6.44k | return (OP1); \ | 11855 | 6.44k | } \ |
exprtk::details::sf05_op<float>::id() Line | Count | Source | 11853 | 6.44k | { \ | 11854 | 6.44k | return (OP1); \ | 11855 | 6.44k | } \ |
exprtk::details::sf06_op<float>::id() Line | Count | Source | 11853 | 6.53k | { \ | 11854 | 6.53k | return (OP1); \ | 11855 | 6.53k | } \ |
exprtk::details::sf07_op<float>::id() Line | Count | Source | 11853 | 6.50k | { \ | 11854 | 6.50k | return (OP1); \ | 11855 | 6.50k | } \ |
exprtk::details::sf08_op<float>::id() Line | Count | Source | 11853 | 6.56k | { \ | 11854 | 6.56k | return (OP1); \ | 11855 | 6.56k | } \ |
exprtk::details::sf09_op<float>::id() Line | Count | Source | 11853 | 6.94k | { \ | 11854 | 6.94k | return (OP1); \ | 11855 | 6.94k | } \ |
exprtk::details::sf10_op<float>::id() Line | Count | Source | 11853 | 6.73k | { \ | 11854 | 6.73k | return (OP1); \ | 11855 | 6.73k | } \ |
exprtk::details::sf11_op<float>::id() Line | Count | Source | 11853 | 6.44k | { \ | 11854 | 6.44k | return (OP1); \ | 11855 | 6.44k | } \ |
exprtk::details::sf12_op<float>::id() Line | Count | Source | 11853 | 6.46k | { \ | 11854 | 6.46k | return (OP1); \ | 11855 | 6.46k | } \ |
exprtk::details::sf13_op<float>::id() Line | Count | Source | 11853 | 6.42k | { \ | 11854 | 6.42k | return (OP1); \ | 11855 | 6.42k | } \ |
exprtk::details::sf14_op<float>::id() Line | Count | Source | 11853 | 6.69k | { \ | 11854 | 6.69k | return (OP1); \ | 11855 | 6.69k | } \ |
exprtk::details::sf15_op<float>::id() Line | Count | Source | 11853 | 6.55k | { \ | 11854 | 6.55k | return (OP1); \ | 11855 | 6.55k | } \ |
exprtk::details::sf16_op<float>::id() Line | Count | Source | 11853 | 6.48k | { \ | 11854 | 6.48k | return (OP1); \ | 11855 | 6.48k | } \ |
exprtk::details::sf17_op<float>::id() Line | Count | Source | 11853 | 6.76k | { \ | 11854 | 6.76k | return (OP1); \ | 11855 | 6.76k | } \ |
exprtk::details::sf18_op<float>::id() Line | Count | Source | 11853 | 6.42k | { \ | 11854 | 6.42k | return (OP1); \ | 11855 | 6.42k | } \ |
exprtk::details::sf19_op<float>::id() Line | Count | Source | 11853 | 6.44k | { \ | 11854 | 6.44k | return (OP1); \ | 11855 | 6.44k | } \ |
exprtk::details::sf20_op<float>::id() Line | Count | Source | 11853 | 7.02k | { \ | 11854 | 7.02k | return (OP1); \ | 11855 | 7.02k | } \ |
exprtk::details::sf21_op<float>::id() Line | Count | Source | 11853 | 6.46k | { \ | 11854 | 6.46k | return (OP1); \ | 11855 | 6.46k | } \ |
exprtk::details::sf22_op<float>::id() Line | Count | Source | 11853 | 6.61k | { \ | 11854 | 6.61k | return (OP1); \ | 11855 | 6.61k | } \ |
exprtk::details::sf23_op<float>::id() Line | Count | Source | 11853 | 6.48k | { \ | 11854 | 6.48k | return (OP1); \ | 11855 | 6.48k | } \ |
exprtk::details::sf24_op<float>::id() Line | Count | Source | 11853 | 6.49k | { \ | 11854 | 6.49k | return (OP1); \ | 11855 | 6.49k | } \ |
exprtk::details::sf25_op<float>::id() Line | Count | Source | 11853 | 6.43k | { \ | 11854 | 6.43k | return (OP1); \ | 11855 | 6.43k | } \ |
exprtk::details::sf26_op<float>::id() Line | Count | Source | 11853 | 6.55k | { \ | 11854 | 6.55k | return (OP1); \ | 11855 | 6.55k | } \ |
exprtk::details::sf27_op<float>::id() Line | Count | Source | 11853 | 6.45k | { \ | 11854 | 6.45k | return (OP1); \ | 11855 | 6.45k | } \ |
exprtk::details::sf28_op<float>::id() Line | Count | Source | 11853 | 6.50k | { \ | 11854 | 6.50k | return (OP1); \ | 11855 | 6.50k | } \ |
exprtk::details::sf29_op<float>::id() Line | Count | Source | 11853 | 6.42k | { \ | 11854 | 6.42k | return (OP1); \ | 11855 | 6.42k | } \ |
exprtk::details::sf30_op<float>::id() Line | Count | Source | 11853 | 6.42k | { \ | 11854 | 6.42k | return (OP1); \ | 11855 | 6.42k | } \ |
|
11856 | | }; \ |
11857 | | |
11858 | | define_sfop3(00,(x + y) / z ,"(t+t)/t") |
11859 | | define_sfop3(01,(x + y) * z ,"(t+t)*t") |
11860 | | define_sfop3(02,(x + y) - z ,"(t+t)-t") |
11861 | | define_sfop3(03,(x + y) + z ,"(t+t)+t") |
11862 | | define_sfop3(04,(x - y) + z ,"(t-t)+t") |
11863 | | define_sfop3(05,(x - y) / z ,"(t-t)/t") |
11864 | | define_sfop3(06,(x - y) * z ,"(t-t)*t") |
11865 | | define_sfop3(07,(x * y) + z ,"(t*t)+t") |
11866 | | define_sfop3(08,(x * y) - z ,"(t*t)-t") |
11867 | | define_sfop3(09,(x * y) / z ,"(t*t)/t") |
11868 | | define_sfop3(10,(x * y) * z ,"(t*t)*t") |
11869 | | define_sfop3(11,(x / y) + z ,"(t/t)+t") |
11870 | | define_sfop3(12,(x / y) - z ,"(t/t)-t") |
11871 | | define_sfop3(13,(x / y) / z ,"(t/t)/t") |
11872 | | define_sfop3(14,(x / y) * z ,"(t/t)*t") |
11873 | | define_sfop3(15,x / (y + z) ,"t/(t+t)") |
11874 | | define_sfop3(16,x / (y - z) ,"t/(t-t)") |
11875 | | define_sfop3(17,x / (y * z) ,"t/(t*t)") |
11876 | | define_sfop3(18,x / (y / z) ,"t/(t/t)") |
11877 | | define_sfop3(19,x * (y + z) ,"t*(t+t)") |
11878 | | define_sfop3(20,x * (y - z) ,"t*(t-t)") |
11879 | | define_sfop3(21,x * (y * z) ,"t*(t*t)") |
11880 | | define_sfop3(22,x * (y / z) ,"t*(t/t)") |
11881 | | define_sfop3(23,x - (y + z) ,"t-(t+t)") |
11882 | | define_sfop3(24,x - (y - z) ,"t-(t-t)") |
11883 | | define_sfop3(25,x - (y / z) ,"t-(t/t)") |
11884 | | define_sfop3(26,x - (y * z) ,"t-(t*t)") |
11885 | | define_sfop3(27,x + (y * z) ,"t+(t*t)") |
11886 | | define_sfop3(28,x + (y / z) ,"t+(t/t)") |
11887 | | define_sfop3(29,x + (y + z) ,"t+(t+t)") |
11888 | | define_sfop3(30,x + (y - z) ,"t+(t-t)") |
11889 | | define_sfop3(31,(axnb<T,2>(x,y,z))," ") |
11890 | | define_sfop3(32,(axnb<T,3>(x,y,z))," ") |
11891 | | define_sfop3(33,(axnb<T,4>(x,y,z))," ") |
11892 | | define_sfop3(34,(axnb<T,5>(x,y,z))," ") |
11893 | | define_sfop3(35,(axnb<T,6>(x,y,z))," ") |
11894 | | define_sfop3(36,(axnb<T,7>(x,y,z))," ") |
11895 | | define_sfop3(37,(axnb<T,8>(x,y,z))," ") |
11896 | | define_sfop3(38,(axnb<T,9>(x,y,z))," ") |
11897 | | define_sfop3(39,x * numeric::log(y) + z,"") |
11898 | | define_sfop3(40,x * numeric::log(y) - z,"") |
11899 | | define_sfop3(41,x * numeric::log10(y) + z,"") |
11900 | | define_sfop3(42,x * numeric::log10(y) - z,"") |
11901 | | define_sfop3(43,x * numeric::sin(y) + z ,"") |
11902 | | define_sfop3(44,x * numeric::sin(y) - z ,"") |
11903 | | define_sfop3(45,x * numeric::cos(y) + z ,"") |
11904 | | define_sfop3(46,x * numeric::cos(y) - z ,"") |
11905 | | define_sfop3(47,details::is_true(x) ? y : z,"") |
11906 | | |
11907 | | #define define_sfop4(NN, OP0, OP1) \ |
11908 | | template <typename T> \ |
11909 | | struct sf##NN##_op : public sf_base<T> \ |
11910 | | { \ |
11911 | | typedef typename sf_base<T>::Type const Type; \ |
11912 | | static inline T process(Type x, Type y, Type z, Type w) \ |
11913 | 702 | { \ |
11914 | 702 | return (OP0); \ |
11915 | 702 | } \ 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 | 11913 | 3 | { \ | 11914 | 3 | return (OP0); \ | 11915 | 3 | } \ |
Unexecuted instantiation: exprtk::details::sf50_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sf51_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sf52_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 6 | { \ | 11914 | 6 | return (OP0); \ | 11915 | 6 | } \ |
exprtk::details::sf53_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 10 | { \ | 11914 | 10 | return (OP0); \ | 11915 | 10 | } \ |
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 | 11913 | 8 | { \ | 11914 | 8 | return (OP0); \ | 11915 | 8 | } \ |
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 | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sf59_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sf60_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 4 | { \ | 11914 | 4 | return (OP0); \ | 11915 | 4 | } \ |
exprtk::details::sf61_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 40 | { \ | 11914 | 40 | return (OP0); \ | 11915 | 40 | } \ |
exprtk::details::sf62_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 6 | { \ | 11914 | 6 | return (OP0); \ | 11915 | 6 | } \ |
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 | 11913 | 8 | { \ | 11914 | 8 | return (OP0); \ | 11915 | 8 | } \ |
exprtk::details::sf65_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 3 | { \ | 11914 | 3 | return (OP0); \ | 11915 | 3 | } \ |
exprtk::details::sf66_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 3 | { \ | 11914 | 3 | return (OP0); \ | 11915 | 3 | } \ |
exprtk::details::sf67_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 10 | { \ | 11914 | 10 | return (OP0); \ | 11915 | 10 | } \ |
exprtk::details::sf68_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 7 | { \ | 11914 | 7 | return (OP0); \ | 11915 | 7 | } \ |
exprtk::details::sf69_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
exprtk::details::sf70_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sf71_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 3 | { \ | 11914 | 3 | return (OP0); \ | 11915 | 3 | } \ |
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 | 11913 | 13 | { \ | 11914 | 13 | return (OP0); \ | 11915 | 13 | } \ |
exprtk::details::sf74_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 12 | { \ | 11914 | 12 | return (OP0); \ | 11915 | 12 | } \ |
exprtk::details::sf75_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 9 | { \ | 11914 | 9 | return (OP0); \ | 11915 | 9 | } \ |
exprtk::details::sf76_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 8 | { \ | 11914 | 8 | return (OP0); \ | 11915 | 8 | } \ |
exprtk::details::sf77_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 6 | { \ | 11914 | 6 | return (OP0); \ | 11915 | 6 | } \ |
exprtk::details::sf78_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 9 | { \ | 11914 | 9 | return (OP0); \ | 11915 | 9 | } \ |
exprtk::details::sf79_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 5 | { \ | 11914 | 5 | return (OP0); \ | 11915 | 5 | } \ |
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&) exprtk::details::sf83_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
exprtk::details::sfext00_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 10 | { \ | 11914 | 10 | return (OP0); \ | 11915 | 10 | } \ |
exprtk::details::sfext01_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 7 | { \ | 11914 | 7 | return (OP0); \ | 11915 | 7 | } \ |
exprtk::details::sfext02_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 8 | { \ | 11914 | 8 | return (OP0); \ | 11915 | 8 | } \ |
exprtk::details::sfext03_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 7 | { \ | 11914 | 7 | return (OP0); \ | 11915 | 7 | } \ |
exprtk::details::sfext04_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 4 | { \ | 11914 | 4 | return (OP0); \ | 11915 | 4 | } \ |
exprtk::details::sfext05_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 7 | { \ | 11914 | 7 | return (OP0); \ | 11915 | 7 | } \ |
exprtk::details::sfext06_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 15 | { \ | 11914 | 15 | return (OP0); \ | 11915 | 15 | } \ |
exprtk::details::sfext07_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 12 | { \ | 11914 | 12 | return (OP0); \ | 11915 | 12 | } \ |
exprtk::details::sfext08_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
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&) exprtk::details::sfext11_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sfext12_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext13_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
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&) exprtk::details::sfext16_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
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&) exprtk::details::sfext19_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sfext20_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 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&) exprtk::details::sfext24_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
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 | 11913 | 19 | { \ | 11914 | 19 | return (OP0); \ | 11915 | 19 | } \ |
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&) exprtk::details::sfext30_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 7 | { \ | 11914 | 7 | return (OP0); \ | 11915 | 7 | } \ |
exprtk::details::sfext31_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sfext32_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sfext33_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sfext34_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext35_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 9 | { \ | 11914 | 9 | return (OP0); \ | 11915 | 9 | } \ |
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 | 11913 | 5 | { \ | 11914 | 5 | return (OP0); \ | 11915 | 5 | } \ |
exprtk::details::sfext40_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
Unexecuted instantiation: exprtk::details::sfext41_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext42_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 13 | { \ | 11914 | 13 | return (OP0); \ | 11915 | 13 | } \ |
exprtk::details::sfext43_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 4 | { \ | 11914 | 4 | return (OP0); \ | 11915 | 4 | } \ |
Unexecuted instantiation: exprtk::details::sfext44_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext45_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sfext46_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 4 | { \ | 11914 | 4 | return (OP0); \ | 11915 | 4 | } \ |
exprtk::details::sfext47_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 5 | { \ | 11914 | 5 | return (OP0); \ | 11915 | 5 | } \ |
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&) exprtk::details::sfext50_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
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&) exprtk::details::sfext55_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 3 | { \ | 11914 | 3 | return (OP0); \ | 11915 | 3 | } \ |
exprtk::details::sfext56_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
Unexecuted instantiation: exprtk::details::sfext57_op<double>::process(double const&, double const&, double const&, double const&) exprtk::details::sfext58_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
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 | 11913 | 5 | { \ | 11914 | 5 | return (OP0); \ | 11915 | 5 | } \ |
exprtk::details::sfext61_op<double>::process(double const&, double const&, double const&, double const&) Line | Count | Source | 11913 | 19 | { \ | 11914 | 19 | return (OP0); \ | 11915 | 19 | } \ |
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 | 11913 | 3 | { \ | 11914 | 3 | return (OP0); \ | 11915 | 3 | } \ |
Unexecuted instantiation: exprtk::details::sf50_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sf51_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sf52_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 6 | { \ | 11914 | 6 | return (OP0); \ | 11915 | 6 | } \ |
exprtk::details::sf53_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 10 | { \ | 11914 | 10 | return (OP0); \ | 11915 | 10 | } \ |
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 | 11913 | 8 | { \ | 11914 | 8 | return (OP0); \ | 11915 | 8 | } \ |
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 | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sf59_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sf60_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 4 | { \ | 11914 | 4 | return (OP0); \ | 11915 | 4 | } \ |
exprtk::details::sf61_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 39 | { \ | 11914 | 39 | return (OP0); \ | 11915 | 39 | } \ |
exprtk::details::sf62_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 6 | { \ | 11914 | 6 | return (OP0); \ | 11915 | 6 | } \ |
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 | 11913 | 8 | { \ | 11914 | 8 | return (OP0); \ | 11915 | 8 | } \ |
exprtk::details::sf65_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 3 | { \ | 11914 | 3 | return (OP0); \ | 11915 | 3 | } \ |
exprtk::details::sf66_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 3 | { \ | 11914 | 3 | return (OP0); \ | 11915 | 3 | } \ |
exprtk::details::sf67_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 10 | { \ | 11914 | 10 | return (OP0); \ | 11915 | 10 | } \ |
exprtk::details::sf68_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 6 | { \ | 11914 | 6 | return (OP0); \ | 11915 | 6 | } \ |
exprtk::details::sf69_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
exprtk::details::sf70_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sf71_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 3 | { \ | 11914 | 3 | return (OP0); \ | 11915 | 3 | } \ |
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 | 11913 | 13 | { \ | 11914 | 13 | return (OP0); \ | 11915 | 13 | } \ |
exprtk::details::sf74_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 12 | { \ | 11914 | 12 | return (OP0); \ | 11915 | 12 | } \ |
exprtk::details::sf75_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 9 | { \ | 11914 | 9 | return (OP0); \ | 11915 | 9 | } \ |
exprtk::details::sf76_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 7 | { \ | 11914 | 7 | return (OP0); \ | 11915 | 7 | } \ |
exprtk::details::sf77_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 6 | { \ | 11914 | 6 | return (OP0); \ | 11915 | 6 | } \ |
exprtk::details::sf78_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 9 | { \ | 11914 | 9 | return (OP0); \ | 11915 | 9 | } \ |
exprtk::details::sf79_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 5 | { \ | 11914 | 5 | return (OP0); \ | 11915 | 5 | } \ |
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&) exprtk::details::sf83_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
exprtk::details::sfext00_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 10 | { \ | 11914 | 10 | return (OP0); \ | 11915 | 10 | } \ |
exprtk::details::sfext01_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 7 | { \ | 11914 | 7 | return (OP0); \ | 11915 | 7 | } \ |
exprtk::details::sfext02_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 8 | { \ | 11914 | 8 | return (OP0); \ | 11915 | 8 | } \ |
exprtk::details::sfext03_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 7 | { \ | 11914 | 7 | return (OP0); \ | 11915 | 7 | } \ |
exprtk::details::sfext04_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 4 | { \ | 11914 | 4 | return (OP0); \ | 11915 | 4 | } \ |
exprtk::details::sfext05_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 7 | { \ | 11914 | 7 | return (OP0); \ | 11915 | 7 | } \ |
exprtk::details::sfext06_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 15 | { \ | 11914 | 15 | return (OP0); \ | 11915 | 15 | } \ |
exprtk::details::sfext07_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 12 | { \ | 11914 | 12 | return (OP0); \ | 11915 | 12 | } \ |
exprtk::details::sfext08_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
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&) exprtk::details::sfext11_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sfext12_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext13_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
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&) exprtk::details::sfext19_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sfext20_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 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&) exprtk::details::sfext24_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
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 | 11913 | 17 | { \ | 11914 | 17 | return (OP0); \ | 11915 | 17 | } \ |
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&) exprtk::details::sfext30_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
exprtk::details::sfext31_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sfext32_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sfext33_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
Unexecuted instantiation: exprtk::details::sfext34_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext35_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 9 | { \ | 11914 | 9 | return (OP0); \ | 11915 | 9 | } \ |
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 | 11913 | 5 | { \ | 11914 | 5 | return (OP0); \ | 11915 | 5 | } \ |
exprtk::details::sfext40_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
Unexecuted instantiation: exprtk::details::sfext41_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext42_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 5 | { \ | 11914 | 5 | return (OP0); \ | 11915 | 5 | } \ |
exprtk::details::sfext43_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 4 | { \ | 11914 | 4 | return (OP0); \ | 11915 | 4 | } \ |
Unexecuted instantiation: exprtk::details::sfext44_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext45_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
exprtk::details::sfext46_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 4 | { \ | 11914 | 4 | return (OP0); \ | 11915 | 4 | } \ |
exprtk::details::sfext47_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 5 | { \ | 11914 | 5 | return (OP0); \ | 11915 | 5 | } \ |
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&) exprtk::details::sfext50_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 1 | { \ | 11914 | 1 | return (OP0); \ | 11915 | 1 | } \ |
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&) exprtk::details::sfext55_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
exprtk::details::sfext56_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
Unexecuted instantiation: exprtk::details::sfext57_op<float>::process(float const&, float const&, float const&, float const&) exprtk::details::sfext58_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 2 | { \ | 11914 | 2 | return (OP0); \ | 11915 | 2 | } \ |
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 | 11913 | 5 | { \ | 11914 | 5 | return (OP0); \ | 11915 | 5 | } \ |
exprtk::details::sfext61_op<float>::process(float const&, float const&, float const&, float const&) Line | Count | Source | 11913 | 19 | { \ | 11914 | 19 | return (OP0); \ | 11915 | 19 | } \ |
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&) |
11916 | | static inline std::string id() \ |
11917 | 1.26M | { \ |
11918 | 1.26M | return (OP1); \ |
11919 | 1.26M | } \ exprtk::details::sf48_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf49_op<double>::id() Line | Count | Source | 11917 | 6.44k | { \ | 11918 | 6.44k | return (OP1); \ | 11919 | 6.44k | } \ |
exprtk::details::sf50_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf51_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf52_op<double>::id() Line | Count | Source | 11917 | 6.44k | { \ | 11918 | 6.44k | return (OP1); \ | 11919 | 6.44k | } \ |
exprtk::details::sf53_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf54_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf55_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf56_op<double>::id() Line | Count | Source | 11917 | 6.47k | { \ | 11918 | 6.47k | return (OP1); \ | 11919 | 6.47k | } \ |
exprtk::details::sf57_op<double>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sf58_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf59_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf60_op<double>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sf61_op<double>::id() Line | Count | Source | 11917 | 6.50k | { \ | 11918 | 6.50k | return (OP1); \ | 11919 | 6.50k | } \ |
exprtk::details::sf62_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf63_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf64_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf65_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf66_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf67_op<double>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sf68_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf69_op<double>::id() Line | Count | Source | 11917 | 6.46k | { \ | 11918 | 6.46k | return (OP1); \ | 11919 | 6.46k | } \ |
exprtk::details::sf70_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf71_op<double>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sf72_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf73_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf74_op<double>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sf75_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf76_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf77_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf78_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf79_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf80_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf81_op<double>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sf82_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf83_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext00_op<double>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sfext01_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext02_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext03_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext04_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext05_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext06_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext07_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext08_op<double>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sfext09_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext10_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext11_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext12_op<double>::id() Line | Count | Source | 11917 | 6.47k | { \ | 11918 | 6.47k | return (OP1); \ | 11919 | 6.47k | } \ |
exprtk::details::sfext13_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext14_op<double>::id() Line | Count | Source | 11917 | 6.60k | { \ | 11918 | 6.60k | return (OP1); \ | 11919 | 6.60k | } \ |
exprtk::details::sfext15_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext16_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext17_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext18_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext19_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext20_op<double>::id() Line | Count | Source | 11917 | 6.46k | { \ | 11918 | 6.46k | return (OP1); \ | 11919 | 6.46k | } \ |
exprtk::details::sfext21_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext22_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext23_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext24_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext25_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext26_op<double>::id() Line | Count | Source | 11917 | 6.46k | { \ | 11918 | 6.46k | return (OP1); \ | 11919 | 6.46k | } \ |
exprtk::details::sfext27_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext28_op<double>::id() Line | Count | Source | 11917 | 6.51k | { \ | 11918 | 6.51k | return (OP1); \ | 11919 | 6.51k | } \ |
exprtk::details::sfext29_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext30_op<double>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sfext31_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext32_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext33_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext34_op<double>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sfext35_op<double>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sfext36_op<double>::id() Line | Count | Source | 11917 | 13.0k | { \ | 11918 | 13.0k | return (OP1); \ | 11919 | 13.0k | } \ |
exprtk::details::sfext38_op<double>::id() Line | Count | Source | 11917 | 6.47k | { \ | 11918 | 6.47k | return (OP1); \ | 11919 | 6.47k | } \ |
exprtk::details::sfext39_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext40_op<double>::id() Line | Count | Source | 11917 | 6.51k | { \ | 11918 | 6.51k | return (OP1); \ | 11919 | 6.51k | } \ |
exprtk::details::sfext41_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext42_op<double>::id() Line | Count | Source | 11917 | 6.48k | { \ | 11918 | 6.48k | return (OP1); \ | 11919 | 6.48k | } \ |
exprtk::details::sfext43_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext44_op<double>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sfext45_op<double>::id() Line | Count | Source | 11917 | 6.44k | { \ | 11918 | 6.44k | return (OP1); \ | 11919 | 6.44k | } \ |
exprtk::details::sfext46_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext47_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext48_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext49_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext50_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext51_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext52_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext53_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext54_op<double>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sfext55_op<double>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sfext56_op<double>::id() Line | Count | Source | 11917 | 6.44k | { \ | 11918 | 6.44k | return (OP1); \ | 11919 | 6.44k | } \ |
exprtk::details::sfext57_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext58_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext59_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext60_op<double>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext61_op<double>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
Unexecuted instantiation: exprtk::details::sfext37_op<double>::id() exprtk::details::sf48_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf49_op<float>::id() Line | Count | Source | 11917 | 6.44k | { \ | 11918 | 6.44k | return (OP1); \ | 11919 | 6.44k | } \ |
exprtk::details::sf50_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf51_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf52_op<float>::id() Line | Count | Source | 11917 | 6.44k | { \ | 11918 | 6.44k | return (OP1); \ | 11919 | 6.44k | } \ |
exprtk::details::sf53_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf54_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf55_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf56_op<float>::id() Line | Count | Source | 11917 | 6.47k | { \ | 11918 | 6.47k | return (OP1); \ | 11919 | 6.47k | } \ |
exprtk::details::sf57_op<float>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sf58_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf59_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf60_op<float>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sf61_op<float>::id() Line | Count | Source | 11917 | 6.50k | { \ | 11918 | 6.50k | return (OP1); \ | 11919 | 6.50k | } \ |
exprtk::details::sf62_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf63_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf64_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf65_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf66_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf67_op<float>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sf68_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf69_op<float>::id() Line | Count | Source | 11917 | 6.46k | { \ | 11918 | 6.46k | return (OP1); \ | 11919 | 6.46k | } \ |
exprtk::details::sf70_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf71_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf72_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf73_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf74_op<float>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sf75_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf76_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf77_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf78_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf79_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf80_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf81_op<float>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sf82_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sf83_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext00_op<float>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sfext01_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext02_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext03_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext04_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext05_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext06_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext07_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext08_op<float>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sfext09_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext10_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext11_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext12_op<float>::id() Line | Count | Source | 11917 | 6.47k | { \ | 11918 | 6.47k | return (OP1); \ | 11919 | 6.47k | } \ |
exprtk::details::sfext13_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext14_op<float>::id() Line | Count | Source | 11917 | 6.60k | { \ | 11918 | 6.60k | return (OP1); \ | 11919 | 6.60k | } \ |
exprtk::details::sfext15_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext16_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext17_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext18_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext19_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext20_op<float>::id() Line | Count | Source | 11917 | 6.46k | { \ | 11918 | 6.46k | return (OP1); \ | 11919 | 6.46k | } \ |
exprtk::details::sfext21_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext22_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext23_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext24_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext25_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext26_op<float>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sfext27_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext28_op<float>::id() Line | Count | Source | 11917 | 6.51k | { \ | 11918 | 6.51k | return (OP1); \ | 11919 | 6.51k | } \ |
exprtk::details::sfext29_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext30_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext31_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext32_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext33_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext34_op<float>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sfext35_op<float>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sfext36_op<float>::id() Line | Count | Source | 11917 | 13.0k | { \ | 11918 | 13.0k | return (OP1); \ | 11919 | 13.0k | } \ |
exprtk::details::sfext38_op<float>::id() Line | Count | Source | 11917 | 6.47k | { \ | 11918 | 6.47k | return (OP1); \ | 11919 | 6.47k | } \ |
exprtk::details::sfext39_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext40_op<float>::id() Line | Count | Source | 11917 | 6.51k | { \ | 11918 | 6.51k | return (OP1); \ | 11919 | 6.51k | } \ |
exprtk::details::sfext41_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext42_op<float>::id() Line | Count | Source | 11917 | 6.46k | { \ | 11918 | 6.46k | return (OP1); \ | 11919 | 6.46k | } \ |
exprtk::details::sfext43_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext44_op<float>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
exprtk::details::sfext45_op<float>::id() Line | Count | Source | 11917 | 6.44k | { \ | 11918 | 6.44k | return (OP1); \ | 11919 | 6.44k | } \ |
exprtk::details::sfext46_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext47_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext48_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext49_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext50_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext51_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext52_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext53_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext54_op<float>::id() Line | Count | Source | 11917 | 6.45k | { \ | 11918 | 6.45k | return (OP1); \ | 11919 | 6.45k | } \ |
exprtk::details::sfext55_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext56_op<float>::id() Line | Count | Source | 11917 | 6.44k | { \ | 11918 | 6.44k | return (OP1); \ | 11919 | 6.44k | } \ |
exprtk::details::sfext57_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext58_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext59_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext60_op<float>::id() Line | Count | Source | 11917 | 6.42k | { \ | 11918 | 6.42k | return (OP1); \ | 11919 | 6.42k | } \ |
exprtk::details::sfext61_op<float>::id() Line | Count | Source | 11917 | 6.43k | { \ | 11918 | 6.43k | return (OP1); \ | 11919 | 6.43k | } \ |
Unexecuted instantiation: exprtk::details::sfext37_op<float>::id() |
11920 | | }; \ |
11921 | | |
11922 | | define_sfop4(48,(x + ((y + z) / w)),"t+((t+t)/t)") |
11923 | | define_sfop4(49,(x + ((y + z) * w)),"t+((t+t)*t)") |
11924 | | define_sfop4(50,(x + ((y - z) / w)),"t+((t-t)/t)") |
11925 | | define_sfop4(51,(x + ((y - z) * w)),"t+((t-t)*t)") |
11926 | | define_sfop4(52,(x + ((y * z) / w)),"t+((t*t)/t)") |
11927 | | define_sfop4(53,(x + ((y * z) * w)),"t+((t*t)*t)") |
11928 | | define_sfop4(54,(x + ((y / z) + w)),"t+((t/t)+t)") |
11929 | | define_sfop4(55,(x + ((y / z) / w)),"t+((t/t)/t)") |
11930 | | define_sfop4(56,(x + ((y / z) * w)),"t+((t/t)*t)") |
11931 | | define_sfop4(57,(x - ((y + z) / w)),"t-((t+t)/t)") |
11932 | | define_sfop4(58,(x - ((y + z) * w)),"t-((t+t)*t)") |
11933 | | define_sfop4(59,(x - ((y - z) / w)),"t-((t-t)/t)") |
11934 | | define_sfop4(60,(x - ((y - z) * w)),"t-((t-t)*t)") |
11935 | | define_sfop4(61,(x - ((y * z) / w)),"t-((t*t)/t)") |
11936 | | define_sfop4(62,(x - ((y * z) * w)),"t-((t*t)*t)") |
11937 | | define_sfop4(63,(x - ((y / z) / w)),"t-((t/t)/t)") |
11938 | | define_sfop4(64,(x - ((y / z) * w)),"t-((t/t)*t)") |
11939 | | define_sfop4(65,(((x + y) * z) - w),"((t+t)*t)-t") |
11940 | | define_sfop4(66,(((x - y) * z) - w),"((t-t)*t)-t") |
11941 | | define_sfop4(67,(((x * y) * z) - w),"((t*t)*t)-t") |
11942 | | define_sfop4(68,(((x / y) * z) - w),"((t/t)*t)-t") |
11943 | | define_sfop4(69,(((x + y) / z) - w),"((t+t)/t)-t") |
11944 | | define_sfop4(70,(((x - y) / z) - w),"((t-t)/t)-t") |
11945 | | define_sfop4(71,(((x * y) / z) - w),"((t*t)/t)-t") |
11946 | | define_sfop4(72,(((x / y) / z) - w),"((t/t)/t)-t") |
11947 | | define_sfop4(73,((x * y) + (z * w)),"(t*t)+(t*t)") |
11948 | | define_sfop4(74,((x * y) - (z * w)),"(t*t)-(t*t)") |
11949 | | define_sfop4(75,((x * y) + (z / w)),"(t*t)+(t/t)") |
11950 | | define_sfop4(76,((x * y) - (z / w)),"(t*t)-(t/t)") |
11951 | | define_sfop4(77,((x / y) + (z / w)),"(t/t)+(t/t)") |
11952 | | define_sfop4(78,((x / y) - (z / w)),"(t/t)-(t/t)") |
11953 | | define_sfop4(79,((x / y) - (z * w)),"(t/t)-(t*t)") |
11954 | | define_sfop4(80,(x / (y + (z * w))),"t/(t+(t*t))") |
11955 | | define_sfop4(81,(x / (y - (z * w))),"t/(t-(t*t))") |
11956 | | define_sfop4(82,(x * (y + (z * w))),"t*(t+(t*t))") |
11957 | | define_sfop4(83,(x * (y - (z * w))),"t*(t-(t*t))") |
11958 | | |
11959 | | define_sfop4(84,(axn<T,2>(x,y) + axn<T,2>(z,w)),"") |
11960 | | define_sfop4(85,(axn<T,3>(x,y) + axn<T,3>(z,w)),"") |
11961 | | define_sfop4(86,(axn<T,4>(x,y) + axn<T,4>(z,w)),"") |
11962 | | define_sfop4(87,(axn<T,5>(x,y) + axn<T,5>(z,w)),"") |
11963 | | define_sfop4(88,(axn<T,6>(x,y) + axn<T,6>(z,w)),"") |
11964 | | define_sfop4(89,(axn<T,7>(x,y) + axn<T,7>(z,w)),"") |
11965 | | define_sfop4(90,(axn<T,8>(x,y) + axn<T,8>(z,w)),"") |
11966 | | define_sfop4(91,(axn<T,9>(x,y) + axn<T,9>(z,w)),"") |
11967 | | define_sfop4(92,((details::is_true(x) && details::is_true(y)) ? z : w),"") |
11968 | | define_sfop4(93,((details::is_true(x) || details::is_true(y)) ? z : w),"") |
11969 | | define_sfop4(94,((x < y) ? z : w),"") |
11970 | | define_sfop4(95,((x <= y) ? z : w),"") |
11971 | | define_sfop4(96,((x > y) ? z : w),"") |
11972 | | define_sfop4(97,((x >= y) ? z : w),"") |
11973 | | define_sfop4(98,(details::is_true(numeric::equal(x,y)) ? z : w),"") |
11974 | | define_sfop4(99,(x * numeric::sin(y) + z * numeric::cos(w)),"") |
11975 | | |
11976 | | define_sfop4(ext00,((x + y) - (z * w)),"(t+t)-(t*t)") |
11977 | | define_sfop4(ext01,((x + y) - (z / w)),"(t+t)-(t/t)") |
11978 | | define_sfop4(ext02,((x + y) + (z * w)),"(t+t)+(t*t)") |
11979 | | define_sfop4(ext03,((x + y) + (z / w)),"(t+t)+(t/t)") |
11980 | | define_sfop4(ext04,((x - y) + (z * w)),"(t-t)+(t*t)") |
11981 | | define_sfop4(ext05,((x - y) + (z / w)),"(t-t)+(t/t)") |
11982 | | define_sfop4(ext06,((x - y) - (z * w)),"(t-t)-(t*t)") |
11983 | | define_sfop4(ext07,((x - y) - (z / w)),"(t-t)-(t/t)") |
11984 | | define_sfop4(ext08,((x + y) - (z - w)),"(t+t)-(t-t)") |
11985 | | define_sfop4(ext09,((x + y) + (z - w)),"(t+t)+(t-t)") |
11986 | | define_sfop4(ext10,((x + y) + (z + w)),"(t+t)+(t+t)") |
11987 | | define_sfop4(ext11,((x + y) * (z - w)),"(t+t)*(t-t)") |
11988 | | define_sfop4(ext12,((x + y) / (z - w)),"(t+t)/(t-t)") |
11989 | | define_sfop4(ext13,((x - y) - (z + w)),"(t-t)-(t+t)") |
11990 | | define_sfop4(ext14,((x - y) + (z + w)),"(t-t)+(t+t)") |
11991 | | define_sfop4(ext15,((x - y) * (z + w)),"(t-t)*(t+t)") |
11992 | | define_sfop4(ext16,((x - y) / (z + w)),"(t-t)/(t+t)") |
11993 | | define_sfop4(ext17,((x * y) - (z + w)),"(t*t)-(t+t)") |
11994 | | define_sfop4(ext18,((x / y) - (z + w)),"(t/t)-(t+t)") |
11995 | | define_sfop4(ext19,((x * y) + (z + w)),"(t*t)+(t+t)") |
11996 | | define_sfop4(ext20,((x / y) + (z + w)),"(t/t)+(t+t)") |
11997 | | define_sfop4(ext21,((x * y) + (z - w)),"(t*t)+(t-t)") |
11998 | | define_sfop4(ext22,((x / y) + (z - w)),"(t/t)+(t-t)") |
11999 | | define_sfop4(ext23,((x * y) - (z - w)),"(t*t)-(t-t)") |
12000 | | define_sfop4(ext24,((x / y) - (z - w)),"(t/t)-(t-t)") |
12001 | | define_sfop4(ext25,((x + y) * (z * w)),"(t+t)*(t*t)") |
12002 | | define_sfop4(ext26,((x + y) * (z / w)),"(t+t)*(t/t)") |
12003 | | define_sfop4(ext27,((x + y) / (z * w)),"(t+t)/(t*t)") |
12004 | | define_sfop4(ext28,((x + y) / (z / w)),"(t+t)/(t/t)") |
12005 | | define_sfop4(ext29,((x - y) / (z * w)),"(t-t)/(t*t)") |
12006 | | define_sfop4(ext30,((x - y) / (z / w)),"(t-t)/(t/t)") |
12007 | | define_sfop4(ext31,((x - y) * (z * w)),"(t-t)*(t*t)") |
12008 | | define_sfop4(ext32,((x - y) * (z / w)),"(t-t)*(t/t)") |
12009 | | define_sfop4(ext33,((x * y) * (z + w)),"(t*t)*(t+t)") |
12010 | | define_sfop4(ext34,((x / y) * (z + w)),"(t/t)*(t+t)") |
12011 | | define_sfop4(ext35,((x * y) / (z + w)),"(t*t)/(t+t)") |
12012 | | define_sfop4(ext36,((x / y) / (z + w)),"(t/t)/(t+t)") |
12013 | | define_sfop4(ext37,((x * y) / (z - w)),"(t*t)/(t-t)") |
12014 | | define_sfop4(ext38,((x / y) / (z - w)),"(t/t)/(t-t)") |
12015 | | define_sfop4(ext39,((x * y) * (z - w)),"(t*t)*(t-t)") |
12016 | | define_sfop4(ext40,((x * y) / (z * w)),"(t*t)/(t*t)") |
12017 | | define_sfop4(ext41,((x / y) * (z / w)),"(t/t)*(t/t)") |
12018 | | define_sfop4(ext42,((x / y) * (z - w)),"(t/t)*(t-t)") |
12019 | | define_sfop4(ext43,((x * y) * (z * w)),"(t*t)*(t*t)") |
12020 | | define_sfop4(ext44,(x + (y * (z / w))),"t+(t*(t/t))") |
12021 | | define_sfop4(ext45,(x - (y * (z / w))),"t-(t*(t/t))") |
12022 | | define_sfop4(ext46,(x + (y / (z * w))),"t+(t/(t*t))") |
12023 | | define_sfop4(ext47,(x - (y / (z * w))),"t-(t/(t*t))") |
12024 | | define_sfop4(ext48,(((x - y) - z) * w),"((t-t)-t)*t") |
12025 | | define_sfop4(ext49,(((x - y) - z) / w),"((t-t)-t)/t") |
12026 | | define_sfop4(ext50,(((x - y) + z) * w),"((t-t)+t)*t") |
12027 | | define_sfop4(ext51,(((x - y) + z) / w),"((t-t)+t)/t") |
12028 | | define_sfop4(ext52,((x + (y - z)) * w),"(t+(t-t))*t") |
12029 | | define_sfop4(ext53,((x + (y - z)) / w),"(t+(t-t))/t") |
12030 | | define_sfop4(ext54,((x + y) / (z + w)),"(t+t)/(t+t)") |
12031 | | define_sfop4(ext55,((x - y) / (z - w)),"(t-t)/(t-t)") |
12032 | | define_sfop4(ext56,((x + y) * (z + w)),"(t+t)*(t+t)") |
12033 | | define_sfop4(ext57,((x - y) * (z - w)),"(t-t)*(t-t)") |
12034 | | define_sfop4(ext58,((x - y) + (z - w)),"(t-t)+(t-t)") |
12035 | | define_sfop4(ext59,((x - y) - (z - w)),"(t-t)-(t-t)") |
12036 | | define_sfop4(ext60,((x / y) + (z * w)),"(t/t)+(t*t)") |
12037 | | define_sfop4(ext61,(((x * y) * z) / w),"((t*t)*t)/t") |
12038 | | |
12039 | | #undef define_sfop3 |
12040 | | #undef define_sfop4 |
12041 | | |
12042 | | template <typename T, typename SpecialFunction> |
12043 | | class sf3_node exprtk_final : public trinary_node<T> |
12044 | | { |
12045 | | public: |
12046 | | |
12047 | | typedef expression_node<T>* expression_ptr; |
12048 | | |
12049 | | sf3_node(const operator_type& opr, |
12050 | | expression_ptr branch0, |
12051 | | expression_ptr branch1, |
12052 | | expression_ptr branch2) |
12053 | 202 | : trinary_node<T>(opr, branch0, branch1, branch2) |
12054 | 202 | {} Unexecuted instantiation: 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>*) 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>*) Unexecuted instantiation: 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>*) 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>*) 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>*) Line | Count | Source | 12053 | 49 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 49 | {} |
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>*) Line | Count | Source | 12053 | 1 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 1 | {} |
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>*) 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>*) Line | Count | Source | 12053 | 1 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 1 | {} |
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>*) 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>*) Line | Count | Source | 12053 | 48 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 48 | {} |
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>*) 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>*) Line | Count | Source | 12053 | 1 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 1 | {} |
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>*) 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>*) Line | Count | Source | 12053 | 1 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 1 | {} |
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>*) Unexecuted instantiation: 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>*) 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>*) Unexecuted instantiation: 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>*) 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>*) 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>*) Line | Count | Source | 12053 | 49 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 49 | {} |
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>*) Line | Count | Source | 12053 | 1 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 1 | {} |
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>*) 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>*) Line | Count | Source | 12053 | 1 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 1 | {} |
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>*) 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>*) Line | Count | Source | 12053 | 48 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 48 | {} |
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>*) 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>*) Line | Count | Source | 12053 | 1 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 1 | {} |
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>*) 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>*) Line | Count | Source | 12053 | 1 | : trinary_node<T>(opr, branch0, branch1, branch2) | 12054 | 1 | {} |
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>*) |
12055 | | |
12056 | | inline T value() const exprtk_override |
12057 | 8 | { |
12058 | 8 | const T x = trinary_node<T>::branch_[0].first->value(); |
12059 | 8 | const T y = trinary_node<T>::branch_[1].first->value(); |
12060 | 8 | const T z = trinary_node<T>::branch_[2].first->value(); |
12061 | | |
12062 | 8 | return SpecialFunction::process(x, y, z); |
12063 | 8 | } Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf00_op<double> >::value() const 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 exprtk::details::sf3_node<double, exprtk::details::sf10_op<double> >::value() const Line | Count | Source | 12057 | 1 | { | 12058 | 1 | const T x = trinary_node<T>::branch_[0].first->value(); | 12059 | 1 | const T y = trinary_node<T>::branch_[1].first->value(); | 12060 | 1 | const T z = trinary_node<T>::branch_[2].first->value(); | 12061 | | | 12062 | 1 | return SpecialFunction::process(x, y, z); | 12063 | 1 | } |
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 exprtk::details::sf3_node<double, exprtk::details::sf13_op<double> >::value() const Line | Count | Source | 12057 | 1 | { | 12058 | 1 | const T x = trinary_node<T>::branch_[0].first->value(); | 12059 | 1 | const T y = trinary_node<T>::branch_[1].first->value(); | 12060 | 1 | const T z = trinary_node<T>::branch_[2].first->value(); | 12061 | | | 12062 | 1 | return SpecialFunction::process(x, y, z); | 12063 | 1 | } |
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 exprtk::details::sf3_node<double, exprtk::details::sf20_op<double> >::value() const Line | Count | Source | 12057 | 1 | { | 12058 | 1 | const T x = trinary_node<T>::branch_[0].first->value(); | 12059 | 1 | const T y = trinary_node<T>::branch_[1].first->value(); | 12060 | 1 | const T z = trinary_node<T>::branch_[2].first->value(); | 12061 | | | 12062 | 1 | return SpecialFunction::process(x, y, z); | 12063 | 1 | } |
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 exprtk::details::sf3_node<double, exprtk::details::sf45_op<double> >::value() const Line | Count | Source | 12057 | 1 | { | 12058 | 1 | const T x = trinary_node<T>::branch_[0].first->value(); | 12059 | 1 | const T y = trinary_node<T>::branch_[1].first->value(); | 12060 | 1 | const T z = trinary_node<T>::branch_[2].first->value(); | 12061 | | | 12062 | 1 | return SpecialFunction::process(x, y, z); | 12063 | 1 | } |
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 Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf00_op<float> >::value() const 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 exprtk::details::sf3_node<float, exprtk::details::sf10_op<float> >::value() const Line | Count | Source | 12057 | 1 | { | 12058 | 1 | const T x = trinary_node<T>::branch_[0].first->value(); | 12059 | 1 | const T y = trinary_node<T>::branch_[1].first->value(); | 12060 | 1 | const T z = trinary_node<T>::branch_[2].first->value(); | 12061 | | | 12062 | 1 | return SpecialFunction::process(x, y, z); | 12063 | 1 | } |
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 exprtk::details::sf3_node<float, exprtk::details::sf13_op<float> >::value() const Line | Count | Source | 12057 | 1 | { | 12058 | 1 | const T x = trinary_node<T>::branch_[0].first->value(); | 12059 | 1 | const T y = trinary_node<T>::branch_[1].first->value(); | 12060 | 1 | const T z = trinary_node<T>::branch_[2].first->value(); | 12061 | | | 12062 | 1 | return SpecialFunction::process(x, y, z); | 12063 | 1 | } |
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 exprtk::details::sf3_node<float, exprtk::details::sf20_op<float> >::value() const Line | Count | Source | 12057 | 1 | { | 12058 | 1 | const T x = trinary_node<T>::branch_[0].first->value(); | 12059 | 1 | const T y = trinary_node<T>::branch_[1].first->value(); | 12060 | 1 | const T z = trinary_node<T>::branch_[2].first->value(); | 12061 | | | 12062 | 1 | return SpecialFunction::process(x, y, z); | 12063 | 1 | } |
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 exprtk::details::sf3_node<float, exprtk::details::sf45_op<float> >::value() const Line | Count | Source | 12057 | 1 | { | 12058 | 1 | const T x = trinary_node<T>::branch_[0].first->value(); | 12059 | 1 | const T y = trinary_node<T>::branch_[1].first->value(); | 12060 | 1 | const T z = trinary_node<T>::branch_[2].first->value(); | 12061 | | | 12062 | 1 | return SpecialFunction::process(x, y, z); | 12063 | 1 | } |
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 |
12064 | | }; |
12065 | | |
12066 | | template <typename T, typename SpecialFunction> |
12067 | | class sf4_node exprtk_final : public quaternary_node<T> |
12068 | | { |
12069 | | public: |
12070 | | |
12071 | | typedef expression_node<T>* expression_ptr; |
12072 | | |
12073 | | sf4_node(const operator_type& opr, |
12074 | | expression_ptr branch0, |
12075 | | expression_ptr branch1, |
12076 | | expression_ptr branch2, |
12077 | | expression_ptr branch3) |
12078 | 0 | : quaternary_node<T>(opr, branch0, branch1, branch2, branch3) |
12079 | 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>*) |
12080 | | |
12081 | | inline T value() const exprtk_override |
12082 | 0 | { |
12083 | 0 | const T x = quaternary_node<T>::branch_[0].first->value(); |
12084 | 0 | const T y = quaternary_node<T>::branch_[1].first->value(); |
12085 | 0 | const T z = quaternary_node<T>::branch_[2].first->value(); |
12086 | 0 | const T w = quaternary_node<T>::branch_[3].first->value(); |
12087 | |
|
12088 | 0 | return SpecialFunction::process(x, y, z, w); |
12089 | 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 |
12090 | | }; |
12091 | | |
12092 | | template <typename T, typename SpecialFunction> |
12093 | | class sf3_var_node exprtk_final : public expression_node<T> |
12094 | | { |
12095 | | public: |
12096 | | |
12097 | | typedef expression_node<T>* expression_ptr; |
12098 | | |
12099 | | sf3_var_node(const T& v0, const T& v1, const T& v2) |
12100 | 0 | : v0_(v0) |
12101 | 0 | , v1_(v1) |
12102 | 0 | , v2_(v2) |
12103 | 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&) |
12104 | | |
12105 | | inline T value() const exprtk_override |
12106 | 0 | { |
12107 | 0 | return SpecialFunction::process(v0_, v1_, v2_); |
12108 | 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 |
12109 | | |
12110 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12111 | 0 | { |
12112 | 0 | return expression_node<T>::e_trinary; |
12113 | 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 |
12114 | | |
12115 | | private: |
12116 | | |
12117 | | sf3_var_node(const sf3_var_node<T,SpecialFunction>&) exprtk_delete; |
12118 | | sf3_var_node<T,SpecialFunction>& operator=(const sf3_var_node<T,SpecialFunction>&) exprtk_delete; |
12119 | | |
12120 | | const T& v0_; |
12121 | | const T& v1_; |
12122 | | const T& v2_; |
12123 | | }; |
12124 | | |
12125 | | template <typename T, typename SpecialFunction> |
12126 | | class sf4_var_node exprtk_final : public expression_node<T> |
12127 | | { |
12128 | | public: |
12129 | | |
12130 | | typedef expression_node<T>* expression_ptr; |
12131 | | |
12132 | | sf4_var_node(const T& v0, const T& v1, const T& v2, const T& v3) |
12133 | 0 | : v0_(v0) |
12134 | 0 | , v1_(v1) |
12135 | 0 | , v2_(v2) |
12136 | 0 | , v3_(v3) |
12137 | 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&) |
12138 | | |
12139 | | inline T value() const exprtk_override |
12140 | 0 | { |
12141 | 0 | return SpecialFunction::process(v0_, v1_, v2_, v3_); |
12142 | 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 |
12143 | | |
12144 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12145 | 0 | { |
12146 | 0 | return expression_node<T>::e_trinary; |
12147 | 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 |
12148 | | |
12149 | | private: |
12150 | | |
12151 | | sf4_var_node(const sf4_var_node<T,SpecialFunction>&) exprtk_delete; |
12152 | | sf4_var_node<T,SpecialFunction>& operator=(const sf4_var_node<T,SpecialFunction>&) exprtk_delete; |
12153 | | |
12154 | | const T& v0_; |
12155 | | const T& v1_; |
12156 | | const T& v2_; |
12157 | | const T& v3_; |
12158 | | }; |
12159 | | |
12160 | | template <typename T, typename VarArgFunction> |
12161 | | class vararg_node exprtk_final : public expression_node<T> |
12162 | | { |
12163 | | public: |
12164 | | |
12165 | | typedef expression_node<T>* expression_ptr; |
12166 | | typedef std::pair<expression_ptr,bool> branch_t; |
12167 | | |
12168 | | template <typename Allocator, |
12169 | | template <typename, typename> class Sequence> |
12170 | | explicit vararg_node(const Sequence<expression_ptr,Allocator>& arg_list) |
12171 | 65 | : initialised_(false) |
12172 | 65 | { |
12173 | 65 | arg_list_.resize(arg_list.size()); |
12174 | | |
12175 | 551 | for (std::size_t i = 0; i < arg_list.size(); ++i) |
12176 | 486 | { |
12177 | 486 | if (arg_list[i] && arg_list[i]->valid()) |
12178 | 486 | { |
12179 | 486 | construct_branch_pair(arg_list_[i],arg_list[i]); |
12180 | 486 | } |
12181 | 0 | else |
12182 | 0 | { |
12183 | 0 | arg_list_.clear(); |
12184 | 0 | return; |
12185 | 0 | } |
12186 | 486 | } |
12187 | | |
12188 | 65 | initialised_ = (arg_list_.size() == arg_list.size()); |
12189 | 65 | assert(valid()); |
12190 | 65 | } 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&) Line | Count | Source | 12171 | 9 | : initialised_(false) | 12172 | 9 | { | 12173 | 9 | arg_list_.resize(arg_list.size()); | 12174 | | | 12175 | 27 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12176 | 18 | { | 12177 | 18 | if (arg_list[i] && arg_list[i]->valid()) | 12178 | 18 | { | 12179 | 18 | construct_branch_pair(arg_list_[i],arg_list[i]); | 12180 | 18 | } | 12181 | 0 | else | 12182 | 0 | { | 12183 | 0 | arg_list_.clear(); | 12184 | 0 | return; | 12185 | 0 | } | 12186 | 18 | } | 12187 | | | 12188 | 9 | initialised_ = (arg_list_.size() == arg_list.size()); | 12189 | 9 | assert(valid()); | 12190 | 9 | } |
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&) 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&) Line | Count | Source | 12171 | 1 | : initialised_(false) | 12172 | 1 | { | 12173 | 1 | arg_list_.resize(arg_list.size()); | 12174 | | | 12175 | 2 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12176 | 1 | { | 12177 | 1 | if (arg_list[i] && arg_list[i]->valid()) | 12178 | 1 | { | 12179 | 1 | construct_branch_pair(arg_list_[i],arg_list[i]); | 12180 | 1 | } | 12181 | 0 | else | 12182 | 0 | { | 12183 | 0 | arg_list_.clear(); | 12184 | 0 | return; | 12185 | 0 | } | 12186 | 1 | } | 12187 | | | 12188 | 1 | initialised_ = (arg_list_.size() == arg_list.size()); | 12189 | 1 | assert(valid()); | 12190 | 1 | } |
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 | 12171 | 23 | : initialised_(false) | 12172 | 23 | { | 12173 | 23 | arg_list_.resize(arg_list.size()); | 12174 | | | 12175 | 251 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12176 | 228 | { | 12177 | 228 | if (arg_list[i] && arg_list[i]->valid()) | 12178 | 228 | { | 12179 | 228 | construct_branch_pair(arg_list_[i],arg_list[i]); | 12180 | 228 | } | 12181 | 0 | else | 12182 | 0 | { | 12183 | 0 | arg_list_.clear(); | 12184 | 0 | return; | 12185 | 0 | } | 12186 | 228 | } | 12187 | | | 12188 | 23 | initialised_ = (arg_list_.size() == arg_list.size()); | 12189 | 23 | assert(valid()); | 12190 | 23 | } |
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&) Line | Count | Source | 12171 | 9 | : initialised_(false) | 12172 | 9 | { | 12173 | 9 | arg_list_.resize(arg_list.size()); | 12174 | | | 12175 | 27 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12176 | 18 | { | 12177 | 18 | if (arg_list[i] && arg_list[i]->valid()) | 12178 | 18 | { | 12179 | 18 | construct_branch_pair(arg_list_[i],arg_list[i]); | 12180 | 18 | } | 12181 | 0 | else | 12182 | 0 | { | 12183 | 0 | arg_list_.clear(); | 12184 | 0 | return; | 12185 | 0 | } | 12186 | 18 | } | 12187 | | | 12188 | 9 | initialised_ = (arg_list_.size() == arg_list.size()); | 12189 | 9 | assert(valid()); | 12190 | 9 | } |
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&) 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&) Line | Count | Source | 12171 | 1 | : initialised_(false) | 12172 | 1 | { | 12173 | 1 | arg_list_.resize(arg_list.size()); | 12174 | | | 12175 | 2 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12176 | 1 | { | 12177 | 1 | if (arg_list[i] && arg_list[i]->valid()) | 12178 | 1 | { | 12179 | 1 | construct_branch_pair(arg_list_[i],arg_list[i]); | 12180 | 1 | } | 12181 | 0 | else | 12182 | 0 | { | 12183 | 0 | arg_list_.clear(); | 12184 | 0 | return; | 12185 | 0 | } | 12186 | 1 | } | 12187 | | | 12188 | 1 | initialised_ = (arg_list_.size() == arg_list.size()); | 12189 | 1 | assert(valid()); | 12190 | 1 | } |
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 | 12171 | 22 | : initialised_(false) | 12172 | 22 | { | 12173 | 22 | arg_list_.resize(arg_list.size()); | 12174 | | | 12175 | 242 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12176 | 220 | { | 12177 | 220 | if (arg_list[i] && arg_list[i]->valid()) | 12178 | 220 | { | 12179 | 220 | construct_branch_pair(arg_list_[i],arg_list[i]); | 12180 | 220 | } | 12181 | 0 | else | 12182 | 0 | { | 12183 | 0 | arg_list_.clear(); | 12184 | 0 | return; | 12185 | 0 | } | 12186 | 220 | } | 12187 | | | 12188 | 22 | initialised_ = (arg_list_.size() == arg_list.size()); | 12189 | 22 | assert(valid()); | 12190 | 22 | } |
|
12191 | | |
12192 | | inline T value() const exprtk_override |
12193 | 37 | { |
12194 | 37 | return VarArgFunction::process(arg_list_); |
12195 | 37 | } exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::value() const Line | Count | Source | 12193 | 8 | { | 12194 | 8 | return VarArgFunction::process(arg_list_); | 12195 | 8 | } |
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 exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::value() const Line | Count | Source | 12193 | 1 | { | 12194 | 1 | return VarArgFunction::process(arg_list_); | 12195 | 1 | } |
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::value() const Line | Count | Source | 12193 | 10 | { | 12194 | 10 | return VarArgFunction::process(arg_list_); | 12195 | 10 | } |
exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::value() const Line | Count | Source | 12193 | 8 | { | 12194 | 8 | return VarArgFunction::process(arg_list_); | 12195 | 8 | } |
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 exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::value() const Line | Count | Source | 12193 | 1 | { | 12194 | 1 | return VarArgFunction::process(arg_list_); | 12195 | 1 | } |
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::value() const Line | Count | Source | 12193 | 9 | { | 12194 | 9 | return VarArgFunction::process(arg_list_); | 12195 | 9 | } |
|
12196 | | |
12197 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12198 | 1.00k | { |
12199 | 1.00k | return expression_node<T>::e_vararg; |
12200 | 1.00k | } exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::type() const Line | Count | Source | 12198 | 144 | { | 12199 | 144 | return expression_node<T>::e_vararg; | 12200 | 144 | } |
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 exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::type() const Line | Count | Source | 12198 | 2 | { | 12199 | 2 | return expression_node<T>::e_vararg; | 12200 | 2 | } |
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::type() const Line | Count | Source | 12198 | 358 | { | 12199 | 358 | return expression_node<T>::e_vararg; | 12200 | 358 | } |
exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::type() const Line | Count | Source | 12198 | 144 | { | 12199 | 144 | return expression_node<T>::e_vararg; | 12200 | 144 | } |
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 exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::type() const Line | Count | Source | 12198 | 2 | { | 12199 | 2 | return expression_node<T>::e_vararg; | 12200 | 2 | } |
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::type() const Line | Count | Source | 12198 | 356 | { | 12199 | 356 | return expression_node<T>::e_vararg; | 12200 | 356 | } |
|
12201 | | |
12202 | | inline bool valid() const exprtk_override |
12203 | 426 | { |
12204 | 426 | return initialised_; |
12205 | 426 | } exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::valid() const Line | Count | Source | 12203 | 167 | { | 12204 | 167 | return initialised_; | 12205 | 167 | } |
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 exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::valid() const Line | Count | Source | 12203 | 1 | { | 12204 | 1 | return initialised_; | 12205 | 1 | } |
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::valid() const Line | Count | Source | 12203 | 46 | { | 12204 | 46 | return initialised_; | 12205 | 46 | } |
exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::valid() const Line | Count | Source | 12203 | 167 | { | 12204 | 167 | return initialised_; | 12205 | 167 | } |
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 exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::valid() const Line | Count | Source | 12203 | 1 | { | 12204 | 1 | return initialised_; | 12205 | 1 | } |
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::valid() const Line | Count | Source | 12203 | 44 | { | 12204 | 44 | return initialised_; | 12205 | 44 | } |
|
12206 | | |
12207 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
12208 | 65 | { |
12209 | 65 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); |
12210 | 65 | } 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>**> >&) Line | Count | Source | 12208 | 9 | { | 12209 | 9 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); | 12210 | 9 | } |
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>**> >&) 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>**> >&) Line | Count | Source | 12208 | 1 | { | 12209 | 1 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); | 12210 | 1 | } |
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 | 12208 | 23 | { | 12209 | 23 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); | 12210 | 23 | } |
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>**> >&) Line | Count | Source | 12208 | 9 | { | 12209 | 9 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); | 12210 | 9 | } |
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>**> >&) 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>**> >&) Line | Count | Source | 12208 | 1 | { | 12209 | 1 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); | 12210 | 1 | } |
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 | 12208 | 22 | { | 12209 | 22 | expression_node<T>::ndb_t::collect(arg_list_, node_delete_list); | 12210 | 22 | } |
|
12211 | | |
12212 | | std::size_t node_depth() const exprtk_override |
12213 | 107 | { |
12214 | 107 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); |
12215 | 107 | } exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::node_depth() const Line | Count | Source | 12213 | 18 | { | 12214 | 18 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); | 12215 | 18 | } |
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 exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::node_depth() const Line | Count | Source | 12213 | 1 | { | 12214 | 1 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); | 12215 | 1 | } |
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::node_depth() const Line | Count | Source | 12213 | 35 | { | 12214 | 35 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); | 12215 | 35 | } |
exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::node_depth() const Line | Count | Source | 12213 | 18 | { | 12214 | 18 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); | 12215 | 18 | } |
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 exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::node_depth() const Line | Count | Source | 12213 | 1 | { | 12214 | 1 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); | 12215 | 1 | } |
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::node_depth() const Line | Count | Source | 12213 | 34 | { | 12214 | 34 | return expression_node<T>::ndb_t::compute_node_depth(arg_list_); | 12215 | 34 | } |
|
12216 | | |
12217 | | std::size_t size() const |
12218 | | { |
12219 | | return arg_list_.size(); |
12220 | | } |
12221 | | |
12222 | | expression_ptr operator[](const std::size_t& index) const |
12223 | | { |
12224 | | return arg_list_[index].first; |
12225 | | } |
12226 | | |
12227 | | private: |
12228 | | |
12229 | | std::vector<branch_t> arg_list_; |
12230 | | bool initialised_; |
12231 | | }; |
12232 | | |
12233 | | template <typename T, typename VarArgFunction> |
12234 | | class vararg_varnode exprtk_final : public expression_node<T> |
12235 | | { |
12236 | | public: |
12237 | | |
12238 | | typedef expression_node<T>* expression_ptr; |
12239 | | |
12240 | | template <typename Allocator, |
12241 | | template <typename, typename> class Sequence> |
12242 | | explicit vararg_varnode(const Sequence<expression_ptr,Allocator>& arg_list) |
12243 | 52 | : initialised_(false) |
12244 | 52 | { |
12245 | 52 | arg_list_.resize(arg_list.size()); |
12246 | | |
12247 | 154 | for (std::size_t i = 0; i < arg_list.size(); ++i) |
12248 | 102 | { |
12249 | 102 | if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i])) |
12250 | 102 | { |
12251 | 102 | variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]); |
12252 | 102 | arg_list_[i] = (&var_node_ptr->ref()); |
12253 | 102 | } |
12254 | 0 | else |
12255 | 0 | { |
12256 | 0 | arg_list_.clear(); |
12257 | 0 | return; |
12258 | 0 | } |
12259 | 102 | } |
12260 | | |
12261 | 52 | initialised_ = (arg_list.size() == arg_list_.size()); |
12262 | 52 | assert(valid()); |
12263 | 52 | } 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&) Line | Count | Source | 12243 | 25 | : initialised_(false) | 12244 | 25 | { | 12245 | 25 | arg_list_.resize(arg_list.size()); | 12246 | | | 12247 | 75 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12248 | 50 | { | 12249 | 50 | if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i])) | 12250 | 50 | { | 12251 | 50 | variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]); | 12252 | 50 | arg_list_[i] = (&var_node_ptr->ref()); | 12253 | 50 | } | 12254 | 0 | else | 12255 | 0 | { | 12256 | 0 | arg_list_.clear(); | 12257 | 0 | return; | 12258 | 0 | } | 12259 | 50 | } | 12260 | | | 12261 | 25 | initialised_ = (arg_list.size() == arg_list_.size()); | 12262 | 25 | assert(valid()); | 12263 | 25 | } |
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&) 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&) Line | Count | Source | 12243 | 1 | : initialised_(false) | 12244 | 1 | { | 12245 | 1 | arg_list_.resize(arg_list.size()); | 12246 | | | 12247 | 2 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12248 | 1 | { | 12249 | 1 | if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i])) | 12250 | 1 | { | 12251 | 1 | variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]); | 12252 | 1 | arg_list_[i] = (&var_node_ptr->ref()); | 12253 | 1 | } | 12254 | 0 | else | 12255 | 0 | { | 12256 | 0 | arg_list_.clear(); | 12257 | 0 | return; | 12258 | 0 | } | 12259 | 1 | } | 12260 | | | 12261 | 1 | initialised_ = (arg_list.size() == arg_list_.size()); | 12262 | 1 | assert(valid()); | 12263 | 1 | } |
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&) 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&) Line | Count | Source | 12243 | 25 | : initialised_(false) | 12244 | 25 | { | 12245 | 25 | arg_list_.resize(arg_list.size()); | 12246 | | | 12247 | 75 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12248 | 50 | { | 12249 | 50 | if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i])) | 12250 | 50 | { | 12251 | 50 | variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]); | 12252 | 50 | arg_list_[i] = (&var_node_ptr->ref()); | 12253 | 50 | } | 12254 | 0 | else | 12255 | 0 | { | 12256 | 0 | arg_list_.clear(); | 12257 | 0 | return; | 12258 | 0 | } | 12259 | 50 | } | 12260 | | | 12261 | 25 | initialised_ = (arg_list.size() == arg_list_.size()); | 12262 | 25 | assert(valid()); | 12263 | 25 | } |
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&) 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&) Line | Count | Source | 12243 | 1 | : initialised_(false) | 12244 | 1 | { | 12245 | 1 | arg_list_.resize(arg_list.size()); | 12246 | | | 12247 | 2 | for (std::size_t i = 0; i < arg_list.size(); ++i) | 12248 | 1 | { | 12249 | 1 | if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i])) | 12250 | 1 | { | 12251 | 1 | variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]); | 12252 | 1 | arg_list_[i] = (&var_node_ptr->ref()); | 12253 | 1 | } | 12254 | 0 | else | 12255 | 0 | { | 12256 | 0 | arg_list_.clear(); | 12257 | 0 | return; | 12258 | 0 | } | 12259 | 1 | } | 12260 | | | 12261 | 1 | initialised_ = (arg_list.size() == arg_list_.size()); | 12262 | 1 | assert(valid()); | 12263 | 1 | } |
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&) |
12264 | | |
12265 | | inline T value() const exprtk_override |
12266 | 2 | { |
12267 | 2 | return VarArgFunction::process(arg_list_); |
12268 | 2 | } 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 exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::value() const Line | Count | Source | 12266 | 1 | { | 12267 | 1 | return VarArgFunction::process(arg_list_); | 12268 | 1 | } |
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 exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::value() const Line | Count | Source | 12266 | 1 | { | 12267 | 1 | return VarArgFunction::process(arg_list_); | 12268 | 1 | } |
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::value() const |
12269 | | |
12270 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12271 | 808 | { |
12272 | 808 | return expression_node<T>::e_vararg; |
12273 | 808 | } exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::type() const Line | Count | Source | 12271 | 400 | { | 12272 | 400 | return expression_node<T>::e_vararg; | 12273 | 400 | } |
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 exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::type() const Line | Count | Source | 12271 | 4 | { | 12272 | 4 | return expression_node<T>::e_vararg; | 12273 | 4 | } |
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::type() const exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::type() const Line | Count | Source | 12271 | 400 | { | 12272 | 400 | return expression_node<T>::e_vararg; | 12273 | 400 | } |
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 exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::type() const Line | Count | Source | 12271 | 4 | { | 12272 | 4 | return expression_node<T>::e_vararg; | 12273 | 4 | } |
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::type() const |
12274 | | |
12275 | | inline bool valid() const exprtk_override |
12276 | 602 | { |
12277 | 602 | return initialised_; |
12278 | 602 | } exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::valid() const Line | Count | Source | 12276 | 300 | { | 12277 | 300 | return initialised_; | 12278 | 300 | } |
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 exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::valid() const Line | Count | Source | 12276 | 1 | { | 12277 | 1 | return initialised_; | 12278 | 1 | } |
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::valid() const exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::valid() const Line | Count | Source | 12276 | 300 | { | 12277 | 300 | return initialised_; | 12278 | 300 | } |
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 exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::valid() const Line | Count | Source | 12276 | 1 | { | 12277 | 1 | return initialised_; | 12278 | 1 | } |
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::valid() const |
12279 | | |
12280 | | private: |
12281 | | |
12282 | | std::vector<const T*> arg_list_; |
12283 | | bool initialised_; |
12284 | | }; |
12285 | | |
12286 | | template <typename T, typename VecFunction> |
12287 | | class vectorize_node exprtk_final : public expression_node<T> |
12288 | | { |
12289 | | public: |
12290 | | |
12291 | | typedef expression_node<T>* expression_ptr; |
12292 | | typedef std::pair<expression_ptr,bool> branch_t; |
12293 | | |
12294 | | explicit vectorize_node(const expression_ptr v) |
12295 | 0 | : ivec_ptr_(0) |
12296 | 0 | { |
12297 | 0 | construct_branch_pair(v_, v); |
12298 | |
|
12299 | 0 | if (is_ivector_node(v_.first)) |
12300 | 0 | { |
12301 | 0 | ivec_ptr_ = dynamic_cast<vector_interface<T>*>(v_.first); |
12302 | 0 | } |
12303 | 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>*) |
12304 | | |
12305 | | inline T value() const exprtk_override |
12306 | 0 | { |
12307 | 0 | v_.first->value(); |
12308 | 0 | return VecFunction::process(ivec_ptr_); |
12309 | 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 |
12310 | | |
12311 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12312 | 0 | { |
12313 | 0 | return expression_node<T>::e_vecfunc; |
12314 | 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 |
12315 | | |
12316 | | inline bool valid() const exprtk_override |
12317 | 0 | { |
12318 | 0 | return ivec_ptr_ && v_.first && v_.first->valid(); |
12319 | 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 |
12320 | | |
12321 | | void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override |
12322 | 0 | { |
12323 | 0 | expression_node<T>::ndb_t::collect(v_, node_delete_list); |
12324 | 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>**> >&) |
12325 | | |
12326 | | std::size_t node_depth() const exprtk_override |
12327 | 0 | { |
12328 | 0 | return expression_node<T>::ndb_t::compute_node_depth(v_); |
12329 | 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 |
12330 | | |
12331 | | private: |
12332 | | |
12333 | | vector_interface<T>* ivec_ptr_; |
12334 | | branch_t v_; |
12335 | | }; |
12336 | | |
12337 | | template <typename T> |
12338 | | class assignment_node exprtk_final : public binary_node<T> |
12339 | | { |
12340 | | public: |
12341 | | |
12342 | | typedef expression_node<T>* expression_ptr; |
12343 | | using binary_node<T>::branch; |
12344 | | |
12345 | | assignment_node(const operator_type& opr, |
12346 | | expression_ptr branch0, |
12347 | | expression_ptr branch1) |
12348 | 326 | : binary_node<T>(opr, branch0, branch1) |
12349 | 326 | , var_node_ptr_(0) |
12350 | 326 | { |
12351 | 326 | if (is_variable_node(branch(0))) |
12352 | 326 | { |
12353 | 326 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); |
12354 | 326 | } |
12355 | 326 | } 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 | 12348 | 163 | : binary_node<T>(opr, branch0, branch1) | 12349 | 163 | , var_node_ptr_(0) | 12350 | 163 | { | 12351 | 163 | if (is_variable_node(branch(0))) | 12352 | 163 | { | 12353 | 163 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12354 | 163 | } | 12355 | 163 | } |
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 | 12348 | 163 | : binary_node<T>(opr, branch0, branch1) | 12349 | 163 | , var_node_ptr_(0) | 12350 | 163 | { | 12351 | 163 | if (is_variable_node(branch(0))) | 12352 | 163 | { | 12353 | 163 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12354 | 163 | } | 12355 | 163 | } |
|
12356 | | |
12357 | | inline T value() const exprtk_override |
12358 | 72 | { |
12359 | 72 | T& result = var_node_ptr_->ref(); |
12360 | 72 | result = branch(1)->value(); |
12361 | | |
12362 | 72 | return result; |
12363 | 72 | } exprtk::details::assignment_node<double>::value() const Line | Count | Source | 12358 | 36 | { | 12359 | 36 | T& result = var_node_ptr_->ref(); | 12360 | 36 | result = branch(1)->value(); | 12361 | | | 12362 | 36 | return result; | 12363 | 36 | } |
exprtk::details::assignment_node<float>::value() const Line | Count | Source | 12358 | 36 | { | 12359 | 36 | T& result = var_node_ptr_->ref(); | 12360 | 36 | result = branch(1)->value(); | 12361 | | | 12362 | 36 | return result; | 12363 | 36 | } |
|
12364 | | |
12365 | | inline bool valid() const exprtk_override |
12366 | 716 | { |
12367 | 716 | return var_node_ptr_ && binary_node<T>::valid(); |
12368 | 716 | } exprtk::details::assignment_node<double>::valid() const Line | Count | Source | 12366 | 358 | { | 12367 | 358 | return var_node_ptr_ && binary_node<T>::valid(); | 12368 | 358 | } |
exprtk::details::assignment_node<float>::valid() const Line | Count | Source | 12366 | 358 | { | 12367 | 358 | return var_node_ptr_ && binary_node<T>::valid(); | 12368 | 358 | } |
|
12369 | | |
12370 | | private: |
12371 | | |
12372 | | variable_node<T>* var_node_ptr_; |
12373 | | }; |
12374 | | |
12375 | | template <typename T> |
12376 | | class assignment_vec_elem_node exprtk_final : public binary_node<T> |
12377 | | { |
12378 | | public: |
12379 | | |
12380 | | typedef expression_node<T>* expression_ptr; |
12381 | | using binary_node<T>::branch; |
12382 | | |
12383 | | assignment_vec_elem_node(const operator_type& opr, |
12384 | | expression_ptr branch0, |
12385 | | expression_ptr branch1) |
12386 | 0 | : binary_node<T>(opr, branch0, branch1) |
12387 | 0 | , vec_node_ptr_(0) |
12388 | 0 | { |
12389 | 0 | if (is_vector_elem_node(branch(0))) |
12390 | 0 | { |
12391 | 0 | vec_node_ptr_ = static_cast<vector_elem_node<T>*>(branch(0)); |
12392 | 0 | } |
12393 | |
|
12394 | 0 | assert(valid()); |
12395 | 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>*) |
12396 | | |
12397 | | inline T value() const exprtk_override |
12398 | 0 | { |
12399 | 0 | T& result = vec_node_ptr_->ref(); |
12400 | 0 | result = branch(1)->value(); |
12401 | |
|
12402 | 0 | return result; |
12403 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<float>::value() const |
12404 | | |
12405 | | inline bool valid() const exprtk_override |
12406 | 0 | { |
12407 | 0 | return vec_node_ptr_ && binary_node<T>::valid(); |
12408 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<float>::valid() const |
12409 | | |
12410 | | private: |
12411 | | |
12412 | | vector_elem_node<T>* vec_node_ptr_; |
12413 | | }; |
12414 | | |
12415 | | template <typename T> |
12416 | | class assignment_vec_elem_rtc_node exprtk_final : public binary_node<T> |
12417 | | { |
12418 | | public: |
12419 | | |
12420 | | typedef expression_node<T>* expression_ptr; |
12421 | | using binary_node<T>::branch; |
12422 | | |
12423 | | assignment_vec_elem_rtc_node(const operator_type& opr, |
12424 | | expression_ptr branch0, |
12425 | | expression_ptr branch1) |
12426 | 0 | : binary_node<T>(opr, branch0, branch1) |
12427 | 0 | , vec_node_ptr_(0) |
12428 | 0 | { |
12429 | 0 | if (is_vector_elem_rtc_node(branch(0))) |
12430 | 0 | { |
12431 | 0 | vec_node_ptr_ = static_cast<vector_elem_rtc_node<T>*>(branch(0)); |
12432 | 0 | } |
12433 | |
|
12434 | 0 | assert(valid()); |
12435 | 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>*) |
12436 | | |
12437 | | inline T value() const exprtk_override |
12438 | 0 | { |
12439 | 0 | T& result = vec_node_ptr_->ref(); |
12440 | 0 | result = branch(1)->value(); |
12441 | |
|
12442 | 0 | return result; |
12443 | 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 |
12444 | | |
12445 | | inline bool valid() const exprtk_override |
12446 | 0 | { |
12447 | 0 | return vec_node_ptr_ && binary_node<T>::valid(); |
12448 | 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 |
12449 | | |
12450 | | private: |
12451 | | |
12452 | | vector_elem_rtc_node<T>* vec_node_ptr_; |
12453 | | }; |
12454 | | |
12455 | | template <typename T> |
12456 | | class assignment_rebasevec_elem_node exprtk_final : public binary_node<T> |
12457 | | { |
12458 | | public: |
12459 | | |
12460 | | typedef expression_node<T>* expression_ptr; |
12461 | | using expression_node<T>::branch; |
12462 | | |
12463 | | assignment_rebasevec_elem_node(const operator_type& opr, |
12464 | | expression_ptr branch0, |
12465 | | expression_ptr branch1) |
12466 | 0 | : binary_node<T>(opr, branch0, branch1) |
12467 | 0 | , rbvec_node_ptr_(0) |
12468 | 0 | { |
12469 | 0 | if (is_rebasevector_elem_node(branch(0))) |
12470 | 0 | { |
12471 | 0 | rbvec_node_ptr_ = static_cast<rebasevector_elem_node<T>*>(branch(0)); |
12472 | 0 | } |
12473 | |
|
12474 | 0 | assert(valid()); |
12475 | 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>*) |
12476 | | |
12477 | | inline T value() const exprtk_override |
12478 | 0 | { |
12479 | 0 | T& result = rbvec_node_ptr_->ref(); |
12480 | 0 | result = branch(1)->value(); |
12481 | |
|
12482 | 0 | return result; |
12483 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<float>::value() const |
12484 | | |
12485 | | inline bool valid() const exprtk_override |
12486 | 0 | { |
12487 | 0 | return rbvec_node_ptr_ && binary_node<T>::valid(); |
12488 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<float>::valid() const |
12489 | | |
12490 | | private: |
12491 | | |
12492 | | rebasevector_elem_node<T>* rbvec_node_ptr_; |
12493 | | }; |
12494 | | |
12495 | | template <typename T> |
12496 | | class assignment_rebasevec_elem_rtc_node exprtk_final : public binary_node<T> |
12497 | | { |
12498 | | public: |
12499 | | |
12500 | | typedef expression_node<T>* expression_ptr; |
12501 | | using expression_node<T>::branch; |
12502 | | |
12503 | | assignment_rebasevec_elem_rtc_node(const operator_type& opr, |
12504 | | expression_ptr branch0, |
12505 | | expression_ptr branch1) |
12506 | 0 | : binary_node<T>(opr, branch0, branch1) |
12507 | 0 | , rbvec_node_ptr_(0) |
12508 | 0 | { |
12509 | 0 | if (is_rebasevector_elem_rtc_node(branch(0))) |
12510 | 0 | { |
12511 | 0 | rbvec_node_ptr_ = static_cast<rebasevector_elem_rtc_node<T>*>(branch(0)); |
12512 | 0 | } |
12513 | |
|
12514 | 0 | assert(valid()); |
12515 | 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>*) |
12516 | | |
12517 | | inline T value() const exprtk_override |
12518 | 0 | { |
12519 | 0 | T& result = rbvec_node_ptr_->ref(); |
12520 | 0 | result = branch(1)->value(); |
12521 | |
|
12522 | 0 | return result; |
12523 | 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 |
12524 | | |
12525 | | inline bool valid() const exprtk_override |
12526 | 0 | { |
12527 | 0 | return rbvec_node_ptr_ && binary_node<T>::valid(); |
12528 | 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 |
12529 | | |
12530 | | private: |
12531 | | |
12532 | | rebasevector_elem_rtc_node<T>* rbvec_node_ptr_; |
12533 | | }; |
12534 | | |
12535 | | template <typename T> |
12536 | | class assignment_rebasevec_celem_node exprtk_final : public binary_node<T> |
12537 | | { |
12538 | | public: |
12539 | | |
12540 | | typedef expression_node<T>* expression_ptr; |
12541 | | using binary_node<T>::branch; |
12542 | | |
12543 | | assignment_rebasevec_celem_node(const operator_type& opr, |
12544 | | expression_ptr branch0, |
12545 | | expression_ptr branch1) |
12546 | 0 | : binary_node<T>(opr, branch0, branch1) |
12547 | 0 | , rbvec_node_ptr_(0) |
12548 | 0 | { |
12549 | 0 | if (is_rebasevector_celem_node(branch(0))) |
12550 | 0 | { |
12551 | 0 | rbvec_node_ptr_ = static_cast<rebasevector_celem_node<T>*>(branch(0)); |
12552 | 0 | } |
12553 | |
|
12554 | 0 | assert(valid()); |
12555 | 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>*) |
12556 | | |
12557 | | inline T value() const exprtk_override |
12558 | 0 | { |
12559 | 0 | T& result = rbvec_node_ptr_->ref(); |
12560 | 0 | result = branch(1)->value(); |
12561 | |
|
12562 | 0 | return result; |
12563 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<float>::value() const |
12564 | | |
12565 | | inline bool valid() const exprtk_override |
12566 | 0 | { |
12567 | 0 | return rbvec_node_ptr_ && binary_node<T>::valid(); |
12568 | 0 | } Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<float>::valid() const |
12569 | | |
12570 | | private: |
12571 | | |
12572 | | rebasevector_celem_node<T>* rbvec_node_ptr_; |
12573 | | }; |
12574 | | |
12575 | | template <typename T> |
12576 | | class assignment_vec_node exprtk_final |
12577 | | : public binary_node <T> |
12578 | | , public vector_interface<T> |
12579 | | { |
12580 | | public: |
12581 | | |
12582 | | typedef expression_node<T>* expression_ptr; |
12583 | | typedef vector_node<T>* vector_node_ptr; |
12584 | | typedef vec_data_store<T> vds_t; |
12585 | | |
12586 | | using binary_node<T>::branch; |
12587 | | |
12588 | | assignment_vec_node(const operator_type& opr, |
12589 | | expression_ptr branch0, |
12590 | | expression_ptr branch1) |
12591 | 0 | : binary_node<T>(opr, branch0, branch1) |
12592 | 0 | , vec_node_ptr_(0) |
12593 | 0 | { |
12594 | 0 | if (is_vector_node(branch(0))) |
12595 | 0 | { |
12596 | 0 | vec_node_ptr_ = static_cast<vector_node<T>*>(branch(0)); |
12597 | 0 | vds() = vec_node_ptr_->vds(); |
12598 | 0 | } |
12599 | |
|
12600 | 0 | assert(valid()); |
12601 | 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>*) |
12602 | | |
12603 | | inline T value() const exprtk_override |
12604 | 0 | { |
12605 | 0 | const T v = branch(1)->value(); |
12606 | |
|
12607 | 0 | T* vec = vds().data(); |
12608 | |
|
12609 | 0 | loop_unroll::details lud(size()); |
12610 | 0 | const T* upper_bound = vec + lud.upper_bound; |
12611 | |
|
12612 | 0 | while (vec < upper_bound) |
12613 | 0 | { |
12614 | 0 | #define exprtk_loop(N) \ |
12615 | 0 | vec[N] = v; \ |
12616 | 0 |
|
12617 | 0 | exprtk_loop( 0) exprtk_loop( 1) |
12618 | 0 | exprtk_loop( 2) exprtk_loop( 3) |
12619 | 0 | #ifndef exprtk_disable_superscalar_unroll |
12620 | 0 | exprtk_loop( 4) exprtk_loop( 5) |
12621 | 0 | exprtk_loop( 6) exprtk_loop( 7) |
12622 | 0 | exprtk_loop( 8) exprtk_loop( 9) |
12623 | 0 | exprtk_loop(10) exprtk_loop(11) |
12624 | 0 | exprtk_loop(12) exprtk_loop(13) |
12625 | 0 | exprtk_loop(14) exprtk_loop(15) |
12626 | 0 | #endif |
12627 | |
|
12628 | 0 | vec += lud.batch_size; |
12629 | 0 | } |
12630 | |
|
12631 | 0 | switch (lud.remainder) |
12632 | 0 | { |
12633 | 0 | #define case_stmt(N) \ |
12634 | 0 | case N : *vec++ = v; \ |
12635 | 0 | exprtk_fallthrough \ |
12636 | 0 | |
12637 | 0 | #ifndef exprtk_disable_superscalar_unroll |
12638 | 0 | case_stmt(15) case_stmt(14) |
12639 | 0 | case_stmt(13) case_stmt(12) |
12640 | 0 | case_stmt(11) case_stmt(10) |
12641 | 0 | case_stmt( 9) case_stmt( 8) |
12642 | 0 | case_stmt( 7) case_stmt( 6) |
12643 | 0 | case_stmt( 5) case_stmt( 4) |
12644 | 0 | #endif |
12645 | 0 | case_stmt( 3) case_stmt( 2) |
12646 | 0 | case 1 : *vec++ = v; |
12647 | 0 | } |
12648 | |
|
12649 | 0 | #undef exprtk_loop |
12650 | 0 | #undef case_stmt |
12651 | |
|
12652 | 0 | return vec_node_ptr_->value(); |
12653 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::value() const |
12654 | | |
12655 | | vector_node_ptr vec() const exprtk_override |
12656 | 0 | { |
12657 | 0 | return vec_node_ptr_; |
12658 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vec() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vec() const |
12659 | | |
12660 | | vector_node_ptr vec() exprtk_override |
12661 | 0 | { |
12662 | 0 | return vec_node_ptr_; |
12663 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vec() Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vec() |
12664 | | |
12665 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12666 | 0 | { |
12667 | 0 | return expression_node<T>::e_vecvalass; |
12668 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::type() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::type() const |
12669 | | |
12670 | | inline bool valid() const exprtk_override |
12671 | 0 | { |
12672 | 0 | return |
12673 | 0 | vec_node_ptr_ && |
12674 | 0 | (vds().size() <= vec_node_ptr_->vec_holder().base_size()) && |
12675 | 0 | binary_node<T>::valid(); |
12676 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::valid() const |
12677 | | |
12678 | | std::size_t size() const exprtk_override |
12679 | 0 | { |
12680 | 0 | return vec_node_ptr_->vec_holder().size(); |
12681 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::size() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::size() const |
12682 | | |
12683 | | std::size_t base_size() const exprtk_override |
12684 | 0 | { |
12685 | 0 | return vec_node_ptr_->vec_holder().base_size(); |
12686 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::base_size() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::base_size() const |
12687 | | |
12688 | | vds_t& vds() exprtk_override |
12689 | 0 | { |
12690 | 0 | return vds_; |
12691 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vds() Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vds() |
12692 | | |
12693 | | const vds_t& vds() const exprtk_override |
12694 | 0 | { |
12695 | 0 | return vds_; |
12696 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vds() const Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vds() const |
12697 | | |
12698 | | private: |
12699 | | |
12700 | | vector_node<T>* vec_node_ptr_; |
12701 | | vds_t vds_; |
12702 | | }; |
12703 | | |
12704 | | template <typename T> |
12705 | | class assignment_vecvec_node exprtk_final |
12706 | | : public binary_node <T> |
12707 | | , public vector_interface<T> |
12708 | | { |
12709 | | public: |
12710 | | |
12711 | | typedef expression_node<T>* expression_ptr; |
12712 | | typedef vector_node<T>* vector_node_ptr; |
12713 | | typedef vec_data_store<T> vds_t; |
12714 | | |
12715 | | using binary_node<T>::branch; |
12716 | | |
12717 | | assignment_vecvec_node(const operator_type& opr, |
12718 | | expression_ptr branch0, |
12719 | | expression_ptr branch1) |
12720 | 0 | : binary_node<T>(opr, branch0, branch1) |
12721 | 0 | , vec0_node_ptr_(0) |
12722 | 0 | , vec1_node_ptr_(0) |
12723 | 0 | , initialised_(false) |
12724 | 0 | , src_is_ivec_(false) |
12725 | 0 | { |
12726 | 0 | if (is_vector_node(branch(0))) |
12727 | 0 | { |
12728 | 0 | vec0_node_ptr_ = static_cast<vector_node<T>*>(branch(0)); |
12729 | 0 | vds() = vec0_node_ptr_->vds(); |
12730 | 0 | } |
12731 | |
|
12732 | 0 | if (is_vector_node(branch(1))) |
12733 | 0 | { |
12734 | 0 | vec1_node_ptr_ = static_cast<vector_node<T>*>(branch(1)); |
12735 | 0 | vds_t::match_sizes(vds(),vec1_node_ptr_->vds()); |
12736 | 0 | } |
12737 | 0 | else if (is_ivector_node(branch(1))) |
12738 | 0 | { |
12739 | 0 | vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0); |
12740 | |
|
12741 | 0 | if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(1)))) |
12742 | 0 | { |
12743 | 0 | vec1_node_ptr_ = vi->vec(); |
12744 | |
|
12745 | 0 | if (!vi->side_effect()) |
12746 | 0 | { |
12747 | 0 | vi->vds() = vds(); |
12748 | 0 | src_is_ivec_ = true; |
12749 | 0 | } |
12750 | 0 | else |
12751 | 0 | vds_t::match_sizes(vds(),vi->vds()); |
12752 | 0 | } |
12753 | 0 | } |
12754 | |
|
12755 | 0 | initialised_ = |
12756 | 0 | vec0_node_ptr_ && |
12757 | 0 | vec1_node_ptr_ && |
12758 | 0 | (size() <= base_size()) && |
12759 | 0 | (vds_.size() <= base_size()) && |
12760 | 0 | binary_node<T>::valid(); |
12761 | |
|
12762 | 0 | assert(valid()); |
12763 | 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>*) |
12764 | | |
12765 | | inline T value() const exprtk_override |
12766 | 0 | { |
12767 | 0 | branch(1)->value(); |
12768 | |
|
12769 | 0 | if (src_is_ivec_) |
12770 | 0 | return vec0_node_ptr_->value(); |
12771 | | |
12772 | 0 | T* vec0 = vec0_node_ptr_->vds().data(); |
12773 | 0 | T* vec1 = vec1_node_ptr_->vds().data(); |
12774 | |
|
12775 | 0 | loop_unroll::details lud(size()); |
12776 | 0 | const T* upper_bound = vec0 + lud.upper_bound; |
12777 | |
|
12778 | 0 | while (vec0 < upper_bound) |
12779 | 0 | { |
12780 | 0 | #define exprtk_loop(N) \ |
12781 | 0 | vec0[N] = vec1[N]; \ |
12782 | 0 |
|
12783 | 0 | exprtk_loop( 0) exprtk_loop( 1) |
12784 | 0 | exprtk_loop( 2) exprtk_loop( 3) |
12785 | 0 | #ifndef exprtk_disable_superscalar_unroll |
12786 | 0 | exprtk_loop( 4) exprtk_loop( 5) |
12787 | 0 | exprtk_loop( 6) exprtk_loop( 7) |
12788 | 0 | exprtk_loop( 8) exprtk_loop( 9) |
12789 | 0 | exprtk_loop(10) exprtk_loop(11) |
12790 | 0 | exprtk_loop(12) exprtk_loop(13) |
12791 | 0 | exprtk_loop(14) exprtk_loop(15) |
12792 | 0 | #endif |
12793 | |
|
12794 | 0 | vec0 += lud.batch_size; |
12795 | 0 | vec1 += lud.batch_size; |
12796 | 0 | } |
12797 | |
|
12798 | 0 | switch (lud.remainder) |
12799 | 0 | { |
12800 | 0 | #define case_stmt(N,fall_through) \ |
12801 | 0 | case N : *vec0++ = *vec1++; \ |
12802 | 0 | fall_through \ |
12803 | 0 | |
12804 | 0 | #ifndef exprtk_disable_superscalar_unroll |
12805 | 0 | case_stmt(15, exprtk_fallthrough) case_stmt(14, exprtk_fallthrough) |
12806 | 0 | case_stmt(13, exprtk_fallthrough) case_stmt(12, exprtk_fallthrough) |
12807 | 0 | case_stmt(11, exprtk_fallthrough) case_stmt(10, exprtk_fallthrough) |
12808 | 0 | case_stmt( 9, exprtk_fallthrough) case_stmt( 8, exprtk_fallthrough) |
12809 | 0 | case_stmt( 7, exprtk_fallthrough) case_stmt( 6, exprtk_fallthrough) |
12810 | 0 | case_stmt( 5, exprtk_fallthrough) case_stmt( 4, exprtk_fallthrough) |
12811 | 0 | #endif |
12812 | 0 | case_stmt( 3, exprtk_fallthrough) case_stmt( 2, exprtk_fallthrough) |
12813 | 0 | case_stmt( 1, (void)0;) |
12814 | 0 | } |
12815 | |
|
12816 | 0 | #undef exprtk_loop |
12817 | 0 | #undef case_stmt |
12818 | |
|
12819 | 0 | return vec0_node_ptr_->value(); |
12820 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::value() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::value() const |
12821 | | |
12822 | | vector_node_ptr vec() exprtk_override |
12823 | 0 | { |
12824 | 0 | return vec0_node_ptr_; |
12825 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vec() Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vec() |
12826 | | |
12827 | | vector_node_ptr vec() const exprtk_override |
12828 | 0 | { |
12829 | 0 | return vec0_node_ptr_; |
12830 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vec() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vec() const |
12831 | | |
12832 | | inline typename expression_node<T>::node_type type() const exprtk_override |
12833 | 0 | { |
12834 | 0 | return expression_node<T>::e_vecvecass; |
12835 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::type() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::type() const |
12836 | | |
12837 | | inline bool valid() const exprtk_override |
12838 | 0 | { |
12839 | 0 | return initialised_; |
12840 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::valid() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::valid() const |
12841 | | |
12842 | | std::size_t size() const exprtk_override |
12843 | 0 | { |
12844 | 0 | return std::min( |
12845 | 0 | vec0_node_ptr_->vec_holder().size(), |
12846 | 0 | vec1_node_ptr_->vec_holder().size()); |
12847 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::size() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::size() const |
12848 | | |
12849 | | std::size_t base_size() const exprtk_override |
12850 | 0 | { |
12851 | 0 | return std::min( |
12852 | 0 | vec0_node_ptr_->vec_holder().base_size(), |
12853 | 0 | vec1_node_ptr_->vec_holder().base_size()); |
12854 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::base_size() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::base_size() const |
12855 | | |
12856 | | vds_t& vds() exprtk_override |
12857 | 0 | { |
12858 | 0 | return vds_; |
12859 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vds() Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vds() |
12860 | | |
12861 | | const vds_t& vds() const exprtk_override |
12862 | 0 | { |
12863 | 0 | return vds_; |
12864 | 0 | } Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vds() const Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vds() const |
12865 | | |
12866 | | private: |
12867 | | |
12868 | | vector_node<T>* vec0_node_ptr_; |
12869 | | vector_node<T>* vec1_node_ptr_; |
12870 | | bool initialised_; |
12871 | | bool src_is_ivec_; |
12872 | | vds_t vds_; |
12873 | | }; |
12874 | | |
12875 | | template <typename T, typename Operation> |
12876 | | class assignment_op_node exprtk_final : public binary_node<T> |
12877 | | { |
12878 | | public: |
12879 | | |
12880 | | typedef expression_node<T>* expression_ptr; |
12881 | | using binary_node<T>::branch; |
12882 | | |
12883 | | assignment_op_node(const operator_type& opr, |
12884 | | expression_ptr branch0, |
12885 | | expression_ptr branch1) |
12886 | 385 | : binary_node<T>(opr, branch0, branch1) |
12887 | 385 | , var_node_ptr_(0) |
12888 | 385 | { |
12889 | 385 | if (is_variable_node(branch(0))) |
12890 | 385 | { |
12891 | 385 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); |
12892 | 385 | } |
12893 | | |
12894 | 385 | assert(valid()); |
12895 | 385 | } 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 | 12886 | 59 | : binary_node<T>(opr, branch0, branch1) | 12887 | 59 | , var_node_ptr_(0) | 12888 | 59 | { | 12889 | 59 | if (is_variable_node(branch(0))) | 12890 | 59 | { | 12891 | 59 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12892 | 59 | } | 12893 | | | 12894 | 59 | assert(valid()); | 12895 | 59 | } |
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 | 12886 | 9 | : binary_node<T>(opr, branch0, branch1) | 12887 | 9 | , var_node_ptr_(0) | 12888 | 9 | { | 12889 | 9 | if (is_variable_node(branch(0))) | 12890 | 9 | { | 12891 | 9 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12892 | 9 | } | 12893 | | | 12894 | 9 | assert(valid()); | 12895 | 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 | 12886 | 43 | : binary_node<T>(opr, branch0, branch1) | 12887 | 43 | , var_node_ptr_(0) | 12888 | 43 | { | 12889 | 43 | if (is_variable_node(branch(0))) | 12890 | 43 | { | 12891 | 43 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12892 | 43 | } | 12893 | | | 12894 | 43 | assert(valid()); | 12895 | 43 | } |
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 | 12886 | 13 | : binary_node<T>(opr, branch0, branch1) | 12887 | 13 | , var_node_ptr_(0) | 12888 | 13 | { | 12889 | 13 | if (is_variable_node(branch(0))) | 12890 | 13 | { | 12891 | 13 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12892 | 13 | } | 12893 | | | 12894 | 13 | assert(valid()); | 12895 | 13 | } |
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 | 12886 | 73 | : binary_node<T>(opr, branch0, branch1) | 12887 | 73 | , var_node_ptr_(0) | 12888 | 73 | { | 12889 | 73 | if (is_variable_node(branch(0))) | 12890 | 73 | { | 12891 | 73 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12892 | 73 | } | 12893 | | | 12894 | 73 | assert(valid()); | 12895 | 73 | } |
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 | 12886 | 53 | : binary_node<T>(opr, branch0, branch1) | 12887 | 53 | , var_node_ptr_(0) | 12888 | 53 | { | 12889 | 53 | if (is_variable_node(branch(0))) | 12890 | 53 | { | 12891 | 53 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12892 | 53 | } | 12893 | | | 12894 | 53 | assert(valid()); | 12895 | 53 | } |
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 | 12886 | 9 | : binary_node<T>(opr, branch0, branch1) | 12887 | 9 | , var_node_ptr_(0) | 12888 | 9 | { | 12889 | 9 | if (is_variable_node(branch(0))) | 12890 | 9 | { | 12891 | 9 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12892 | 9 | } | 12893 | | | 12894 | 9 | assert(valid()); | 12895 | 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 | 12886 | 41 | : binary_node<T>(opr, branch0, branch1) | 12887 | 41 | , var_node_ptr_(0) | 12888 | 41 | { | 12889 | 41 | if (is_variable_node(branch(0))) | 12890 | 41 | { | 12891 | 41 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12892 | 41 | } | 12893 | | | 12894 | 41 | assert(valid()); | 12895 | 41 | } |
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 | 12886 | 13 | : binary_node<T>(opr, branch0, branch1) | 12887 | 13 | , var_node_ptr_(0) | 12888 | 13 | { | 12889 | 13 | if (is_variable_node(branch(0))) | 12890 | 13 | { | 12891 | 13 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12892 | 13 | } | 12893 | | | 12894 | 13 | assert(valid()); | 12895 | 13 | } |
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 | 12886 | 72 | : binary_node<T>(opr, branch0, branch1) | 12887 | 72 | , var_node_ptr_(0) | 12888 | 72 | { | 12889 | 72 | if (is_variable_node(branch(0))) | 12890 | 72 | { | 12891 | 72 | var_node_ptr_ = static_cast<variable_node<T>*>(branch(0)); | 12892 | 72 | } | 12893 | | | 12894 | 72 | assert(valid()); | 12895 | 72 | } |
|
12896 | | |
12897 | | inline T value() const exprtk_override |
12898 | 202 | { |
12899 | 202 | T& v = var_node_ptr_->ref(); |
12900 | 202 | v = Operation::process(v,branch(1)->value()); |
12901 | | |
12902 | 202 | return v; |
12903 | 202 | } exprtk::details::assignment_op_node<double, exprtk::details::add_op<double> >::value() const Line | Count | Source | 12898 | 41 | { | 12899 | 41 | T& v = var_node_ptr_->ref(); | 12900 | 41 | v = Operation::process(v,branch(1)->value()); | 12901 | | | 12902 | 41 | return v; | 12903 | 41 | } |
exprtk::details::assignment_op_node<double, exprtk::details::sub_op<double> >::value() const Line | Count | Source | 12898 | 7 | { | 12899 | 7 | T& v = var_node_ptr_->ref(); | 12900 | 7 | v = Operation::process(v,branch(1)->value()); | 12901 | | | 12902 | 7 | return v; | 12903 | 7 | } |
exprtk::details::assignment_op_node<double, exprtk::details::mul_op<double> >::value() const Line | Count | Source | 12898 | 32 | { | 12899 | 32 | T& v = var_node_ptr_->ref(); | 12900 | 32 | v = Operation::process(v,branch(1)->value()); | 12901 | | | 12902 | 32 | return v; | 12903 | 32 | } |
exprtk::details::assignment_op_node<double, exprtk::details::div_op<double> >::value() const Line | Count | Source | 12898 | 12 | { | 12899 | 12 | T& v = var_node_ptr_->ref(); | 12900 | 12 | v = Operation::process(v,branch(1)->value()); | 12901 | | | 12902 | 12 | return v; | 12903 | 12 | } |
exprtk::details::assignment_op_node<double, exprtk::details::mod_op<double> >::value() const Line | Count | Source | 12898 | 13 | { | 12899 | 13 | T& v = var_node_ptr_->ref(); | 12900 | 13 | v = Operation::process(v,branch(1)->value()); | 12901 | | | 12902 | 13 | return v; | 12903 | 13 | } |
exprtk::details::assignment_op_node<float, exprtk::details::add_op<float> >::value() const Line | Count | Source | 12898 | 35 | { | 12899 | 35 | T& v = var_node_ptr_->ref(); | 12900 | 35 | v = Operation::process(v,branch(1)->value()); | 12901 | | | 12902 | 35 | return v; | 12903 | 35 | } |
exprtk::details::assignment_op_node<float, exprtk::details::sub_op<float> >::value() const Line | Count | Source | 12898 | 7 | { | 12899 | 7 | T& v = var_node_ptr_->ref(); | 12900 | 7 | v = Operation::process(v,branch(1)->value()); | 12901 | | | 12902 | 7 | return v; | 12903 | 7 | } |
exprtk::details::assignment_op_node<float, exprtk::details::mul_op<float> >::value() const Line | Count | Source | 12898 | 31 | { | 12899 | 31 | T& v = var_node_ptr_->ref(); | 12900 | 31 | v = Operation::process(v,branch(1)->value()); | 12901 | | | 12902 | 31 | return v; | 12903 | 31 | } |
exprtk::details::assignment_op_node<float, exprtk::details::div_op<float> >::value() const Line | Count | Source | 12898 | 12 | { | 12899 | 12 | T& v = var_node_ptr_->ref(); | 12900 | 12 | v = Operation::process(v,branch(1)->value()); | 12901 | | | 12902 | 12 | return v; | 12903 | 12 | } |
exprtk::details::assignment_op_node<float, exprtk::details::mod_op<float> >::value() const Line | Count | Source | 12898 | 12 | { | 12899 | 12 | T& v = var_node_ptr_->ref(); | 12900 | 12 | v = Operation::process(v,branch(1)->value()); | 12901 | | | 12902 | 12 | return v; | 12903 | 12 | } |
|
12904 | | |
12905 | | inline bool valid() const exprtk_override |
12906 | 2.51k | { |
12907 | 2.51k | return var_node_ptr_ && binary_node<T>::valid(); |
12908 | 2.51k | } exprtk::details::assignment_op_node<double, exprtk::details::add_op<double> >::valid() const Line | Count | Source | 12906 | 162 | { | 12907 | 162 | return var_node_ptr_ && binary_node<T>::valid(); | 12908 | 162 | } |
exprtk::details::assignment_op_node<double, exprtk::details::sub_op<double> >::valid() const Line | Count | Source | 12906 | 31 | { | 12907 | 31 | return var_node_ptr_ && binary_node<T>::valid(); | 12908 | 31 | } |
exprtk::details::assignment_op_node<double, exprtk::details::mul_op<double> >::valid() const Line | Count | Source | 12906 | 357 | { | 12907 | 357 | return var_node_ptr_ && binary_node<T>::valid(); | 12908 | 357 | } |
exprtk::details::assignment_op_node<double, exprtk::details::div_op<double> >::valid() const Line | Count | Source | 12906 | 27 | { | 12907 | 27 | return var_node_ptr_ && binary_node<T>::valid(); | 12908 | 27 | } |
exprtk::details::assignment_op_node<double, exprtk::details::mod_op<double> >::valid() const Line | Count | Source | 12906 | 704 | { | 12907 | 704 | return var_node_ptr_ && binary_node<T>::valid(); | 12908 | 704 | } |
exprtk::details::assignment_op_node<float, exprtk::details::add_op<float> >::valid() const Line | Count | Source | 12906 | 144 | { | 12907 | 144 | return var_node_ptr_ && binary_node<T>::valid(); | 12908 | 144 | } |
exprtk::details::assignment_op_node<float, exprtk::details::sub_op<float> >::valid() const Line | Count | Source | 12906 | 31 | { | 12907 | 31 | return var_node_ptr_ && binary_node<T>::valid(); | 12908 | 31 | } |
exprtk::details::assignment_op_node<float, exprtk::details::mul_op<float> >::valid() const Line | Count | Source | 12906 | 332 | { | 12907 | 332 | return var_node_ptr_ && binary_node<T>::valid(); | 12908 | 332 | } |
exprtk::details::assignment_op_node<float, exprtk::details::div_op<float> >::valid() const Line | Count | Source | 12906 | 27 | { | 12907 | 27 | return var_node_ptr_ && binary_node<T>::valid(); | 12908 | 27 | } |
exprtk::details::assignment_op_node<float, exprtk::details::mod_op<float> >::valid() const Line | Count | Source | 12906 | 695 | { | 12907 | 695 | return var_node_ptr_ && binary_node<T>::valid(); | 12908 | 695 | } |
|
12909 | | |
12910 | | private: |
12911 | | |
12912 | | variable_node<T>* var_node_ptr_; |
12913 | | }; |
12914 | | |
12915 | | template <typename T, typename Operation> |
12916 | | class assignment_vec_elem_op_node exprtk_final : public binary_node<T> |
12917 | | { |
12918 | | public: |
12919 | | |
12920 | | typedef expression_node<T>* expression_ptr; |
12921 | | using binary_node<T>::branch; |
12922 | | |
12923 | | assignment_vec_elem_op_node(const operator_type& opr, |
12924 | | expression_ptr branch0, |
12925 | | expression_ptr branch1) |
12926 | 0 | : binary_node<T>(opr, branch0, branch1) |
12927 | 0 | , vec_node_ptr_(0) |
12928 | 0 | { |
12929 | 0 | if (is_vector_elem_node(branch(0))) |
12930 | 0 | { |
12931 | 0 | vec_node_ptr_ = static_cast<vector_elem_node<T>*>(branch(0)); |
12932 | 0 | } |
12933 | |
|
12934 | 0 | assert(valid()); |
12935 | 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>*) |
12936 | | |
12937 | | inline T value() const exprtk_override |
12938 | 0 | { |
12939 | 0 | T& v = vec_node_ptr_->ref(); |
12940 | 0 | v = Operation::process(v,branch(1)->value()); |
12941 | |
|
12942 | 0 | return v; |
12943 | 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 |
12944 | | |
12945 | | inline bool valid() const exprtk_override |
12946 | 0 | { |
12947 | 0 | return vec_node_ptr_ && binary_node<T>::valid(); |
12948 | 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 |
12949 | | |
12950 | | private: |
12951 | | |
12952 | | vector_elem_node<T>* vec_node_ptr_; |
12953 | | }; |
12954 | | |
12955 | | template <typename T, typename Operation> |
12956 | | class assignment_vec_elem_op_rtc_node exprtk_final : public binary_node<T> |
12957 | | { |
12958 | | public: |
12959 | | |
12960 | | typedef expression_node<T>* expression_ptr; |
12961 | | using binary_node<T>::branch; |
12962 | | |
12963 | | assignment_vec_elem_op_rtc_node(const operator_type& opr, |
12964 | | expression_ptr branch0, |
12965 | | expression_ptr branch1) |
12966 | 0 | : binary_node<T>(opr, branch0, branch1) |
12967 | 0 | , vec_node_ptr_(0) |
12968 | 0 | { |
12969 | 0 | if (is_vector_elem_rtc_node(branch(0))) |
12970 | 0 | { |
12971 | 0 | vec_node_ptr_ = static_cast<vector_elem_rtc_node<T>*>(branch(0)); |
12972 | 0 | } |
12973 | |
|
12974 | 0 | assert(valid()); |
12975 | 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>*) |
12976 | | |
12977 | | inline T value() const exprtk_override |
12978 | 0 | { |
12979 | 0 | T& v = vec_node_ptr_->ref(); |
12980 | 0 | v = Operation::process(v,branch(1)->value()); |
12981 | |
|