Skip to content

Commit 0b03d8f

Browse files
committed
Updates to ExprTk
1 parent 1214d4e commit 0b03d8f

File tree

2 files changed

+87
-78
lines changed

2 files changed

+87
-78
lines changed

exprtk/exprtk.hpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,14 @@ namespace exprtk
619619
return false;
620620
}
621621

622-
return (d_itr == data_end) && (p_itr == pattern_end);
622+
if (d_itr != data_end)
623+
return false;
624+
else if (p_itr == pattern_end)
625+
return true;
626+
else if ((zero_or_more == *p_itr) || (zero_or_one == *p_itr))
627+
++p_itr;
628+
629+
return pattern_end == p_itr;
623630
}
624631

625632
inline bool wc_match(const std::string& wild_card,

exprtk/exprtk_test.cpp

Lines changed: 79 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -2452,83 +2452,85 @@ inline bool run_test02()
24522452
test_ab<T>("var x := 'XXXXX'; var y := '01234567890'; var i := 0; x[0:i+3] <=> y[:]; (x == '0123X') and (y == 'XXXX4567890')", "","",T(1.0)),
24532453
test_ab<T>("var x := 'XXXXX'; var y := '01234567890'; var i := 0; x[0:i+4] <=> y[:]; (x == '01234') and (y == 'XXXXX567890')", "","",T(1.0)),
24542454

2455-
test_ab<T>("a like b", "abcd", "abcd", T(1.0)),
2456-
test_ab<T>("a like b", "abcd", "abc*", T(1.0)),
2457-
test_ab<T>("a like b", "abcd", "*bcd", T(1.0)),
2458-
test_ab<T>("a like b", "abcd", "abc?", T(1.0)),
2459-
test_ab<T>("a like b", "abcd", "?bcd", T(1.0)),
2460-
test_ab<T>("a like b", "abcd", "ab?d", T(1.0)),
2461-
test_ab<T>("a like b", "abcd", "ab*d", T(1.0)),
2462-
test_ab<T>("a like b", "abcd", "a?cd", T(1.0)),
2463-
test_ab<T>("a like b", "abcd", "a*cd", T(1.0)),
2464-
test_ab<T>("a like b", "abcd", "a??d", T(1.0)),
2465-
test_ab<T>("a like b", "abcd", "a*?d", T(1.0)),
2466-
test_ab<T>("a like b", "abcd", "*bc*", T(1.0)),
2467-
test_ab<T>("a like b", "abcd", "?bc?", T(1.0)),
2468-
test_ab<T>("a like b", "abcd", "????", T(1.0)),
2469-
test_ab<T>("a like b", "abcd", "a???", T(1.0)),
2470-
test_ab<T>("a like b", "abcd", "ab??", T(1.0)),
2471-
test_ab<T>("a like b", "abcd", "abc?", T(1.0)),
2472-
test_ab<T>("a like b", "abcd", "???d", T(1.0)),
2473-
test_ab<T>("a like b", "abcd", "??cd", T(1.0)),
2474-
test_ab<T>("a like b", "abcd", "?bcd", T(1.0)),
2475-
test_ab<T>("a like b", "abcd", "?b?d", T(1.0)),
2476-
test_ab<T>("a like b", "abcd", "a?c?", T(1.0)),
2477-
test_ab<T>("a like b", "abcd", "a??d", T(1.0)),
2478-
test_ab<T>("a like b", "abcd", "?bc?", T(1.0)),
2479-
test_ab<T>("a like b", "abcd", "ab**", T(1.0)),
2480-
test_ab<T>("a like b", "abcd", "ab*?", T(1.0)),
2481-
test_ab<T>("a like b", "abcd", "a***", T(1.0)),
2482-
test_ab<T>("a like b", "abcd", "**cd", T(1.0)),
2483-
test_ab<T>("a like b", "abcd", "*?cd", T(1.0)),
2484-
test_ab<T>("a like b", "abcd", "***d", T(1.0)),
2485-
test_ab<T>("a like b", "abcd", "*bc*", T(1.0)),
2486-
test_ab<T>("a like b", "abcd", "*bc?", T(1.0)),
2487-
test_ab<T>("a like b", "abcd", "*b??", T(1.0)),
2488-
test_ab<T>("a like b", "abcd", "?bc*", T(1.0)),
2489-
test_ab<T>("a like b", "abcd", "??c*", T(1.0)),
2490-
test_ab<T>("a like b", "abcd", "*b?*", T(1.0)),
2491-
test_ab<T>("a like b", "ab" , "a*" , T(1.0)),
2492-
test_ab<T>("a like b", "ab" , "a?" , T(1.0)),
2493-
2494-
test_ab<T>("a ilike b", "aBcD", "abcd", T(1.0)),
2495-
test_ab<T>("a ilike b", "aBcD", "abc*", T(1.0)),
2496-
test_ab<T>("a ilike b", "aBcD", "*bcd", T(1.0)),
2497-
test_ab<T>("a ilike b", "aBcD", "abc?", T(1.0)),
2498-
test_ab<T>("a ilike b", "aBcD", "?bcd", T(1.0)),
2499-
test_ab<T>("a ilike b", "aBcD", "ab?d", T(1.0)),
2500-
test_ab<T>("a ilike b", "aBcD", "ab*d", T(1.0)),
2501-
test_ab<T>("a ilike b", "aBcD", "a?cd", T(1.0)),
2502-
test_ab<T>("a ilike b", "aBcD", "a*cd", T(1.0)),
2503-
test_ab<T>("a ilike b", "aBcD", "a??d", T(1.0)),
2504-
test_ab<T>("a ilike b", "aBcD", "a*?d", T(1.0)),
2505-
test_ab<T>("a ilike b", "aBcD", "*bc*", T(1.0)),
2506-
test_ab<T>("a ilike b", "aBcD", "?bc?", T(1.0)),
2507-
test_ab<T>("a ilike b", "aBcD", "????", T(1.0)),
2508-
test_ab<T>("a ilike b", "aBcD", "a???", T(1.0)),
2509-
test_ab<T>("a ilike b", "aBcD", "ab??", T(1.0)),
2510-
test_ab<T>("a ilike b", "aBcD", "abc?", T(1.0)),
2511-
test_ab<T>("a ilike b", "aBcD", "???d", T(1.0)),
2512-
test_ab<T>("a ilike b", "aBcD", "??cd", T(1.0)),
2513-
test_ab<T>("a ilike b", "aBcD", "?bcd", T(1.0)),
2514-
test_ab<T>("a ilike b", "aBcD", "?b?d", T(1.0)),
2515-
test_ab<T>("a ilike b", "aBcD", "a?c?", T(1.0)),
2516-
test_ab<T>("a ilike b", "aBcD", "a??d", T(1.0)),
2517-
test_ab<T>("a ilike b", "aBcD", "?bc?", T(1.0)),
2518-
test_ab<T>("a ilike b", "aBcD", "ab**", T(1.0)),
2519-
test_ab<T>("a ilike b", "aBcD", "ab*?", T(1.0)),
2520-
test_ab<T>("a ilike b", "aBcD", "a***", T(1.0)),
2521-
test_ab<T>("a ilike b", "aBcD", "**cd", T(1.0)),
2522-
test_ab<T>("a ilike b", "aBcD", "*?cd", T(1.0)),
2523-
test_ab<T>("a ilike b", "aBcD", "***d", T(1.0)),
2524-
test_ab<T>("a ilike b", "aBcD", "*bc*", T(1.0)),
2525-
test_ab<T>("a ilike b", "aBcD", "*bc?", T(1.0)),
2526-
test_ab<T>("a ilike b", "aBcD", "*b??", T(1.0)),
2527-
test_ab<T>("a ilike b", "aBcD", "?bc*", T(1.0)),
2528-
test_ab<T>("a ilike b", "aBcD", "??c*", T(1.0)),
2529-
test_ab<T>("a ilike b", "aBcD", "*b?*", T(1.0)),
2530-
test_ab<T>("a ilike b", "aB" , "a*" , T(1.0)),
2531-
test_ab<T>("a ilike b", "aB" , "a?" , T(1.0))
2455+
test_ab<T>("a like b", "abcd", "abcd*", T(1.0)),
2456+
test_ab<T>("a like b", "abcd", "abcd" , T(1.0)),
2457+
test_ab<T>("a like b", "abcd", "abc*" , T(1.0)),
2458+
test_ab<T>("a like b", "abcd", "*bcd" , T(1.0)),
2459+
test_ab<T>("a like b", "abcd", "abc?" , T(1.0)),
2460+
test_ab<T>("a like b", "abcd", "?bcd" , T(1.0)),
2461+
test_ab<T>("a like b", "abcd", "ab?d" , T(1.0)),
2462+
test_ab<T>("a like b", "abcd", "ab*d" , T(1.0)),
2463+
test_ab<T>("a like b", "abcd", "a?cd" , T(1.0)),
2464+
test_ab<T>("a like b", "abcd", "a*cd" , T(1.0)),
2465+
test_ab<T>("a like b", "abcd", "a??d" , T(1.0)),
2466+
test_ab<T>("a like b", "abcd", "a*?d" , T(1.0)),
2467+
test_ab<T>("a like b", "abcd", "*bc*" , T(1.0)),
2468+
test_ab<T>("a like b", "abcd", "?bc?" , T(1.0)),
2469+
test_ab<T>("a like b", "abcd", "????" , T(1.0)),
2470+
test_ab<T>("a like b", "abcd", "a???" , T(1.0)),
2471+
test_ab<T>("a like b", "abcd", "ab??" , T(1.0)),
2472+
test_ab<T>("a like b", "abcd", "abc?" , T(1.0)),
2473+
test_ab<T>("a like b", "abcd", "???d" , T(1.0)),
2474+
test_ab<T>("a like b", "abcd", "??cd" , T(1.0)),
2475+
test_ab<T>("a like b", "abcd", "?bcd" , T(1.0)),
2476+
test_ab<T>("a like b", "abcd", "?b?d" , T(1.0)),
2477+
test_ab<T>("a like b", "abcd", "a?c?" , T(1.0)),
2478+
test_ab<T>("a like b", "abcd", "a??d" , T(1.0)),
2479+
test_ab<T>("a like b", "abcd", "?bc?" , T(1.0)),
2480+
test_ab<T>("a like b", "abcd", "ab**" , T(1.0)),
2481+
test_ab<T>("a like b", "abcd", "ab*?" , T(1.0)),
2482+
test_ab<T>("a like b", "abcd", "a***" , T(1.0)),
2483+
test_ab<T>("a like b", "abcd", "**cd" , T(1.0)),
2484+
test_ab<T>("a like b", "abcd", "*?cd" , T(1.0)),
2485+
test_ab<T>("a like b", "abcd", "***d" , T(1.0)),
2486+
test_ab<T>("a like b", "abcd", "*bc*" , T(1.0)),
2487+
test_ab<T>("a like b", "abcd", "*bc?" , T(1.0)),
2488+
test_ab<T>("a like b", "abcd", "*b??" , T(1.0)),
2489+
test_ab<T>("a like b", "abcd", "?bc*" , T(1.0)),
2490+
test_ab<T>("a like b", "abcd", "??c*" , T(1.0)),
2491+
test_ab<T>("a like b", "abcd", "*b?*" , T(1.0)),
2492+
test_ab<T>("a like b", "ab" , "a*" , T(1.0)),
2493+
test_ab<T>("a like b", "ab" , "a?" , T(1.0)),
2494+
2495+
test_ab<T>("a ilike b", "aBcD", "abcd*", T(1.0)),
2496+
test_ab<T>("a ilike b", "aBcD", "abcd" , T(1.0)),
2497+
test_ab<T>("a ilike b", "aBcD", "abc*" , T(1.0)),
2498+
test_ab<T>("a ilike b", "aBcD", "*bcd" , T(1.0)),
2499+
test_ab<T>("a ilike b", "aBcD", "abc?" , T(1.0)),
2500+
test_ab<T>("a ilike b", "aBcD", "?bcd" , T(1.0)),
2501+
test_ab<T>("a ilike b", "aBcD", "ab?d" , T(1.0)),
2502+
test_ab<T>("a ilike b", "aBcD", "ab*d" , T(1.0)),
2503+
test_ab<T>("a ilike b", "aBcD", "a?cd" , T(1.0)),
2504+
test_ab<T>("a ilike b", "aBcD", "a*cd" , T(1.0)),
2505+
test_ab<T>("a ilike b", "aBcD", "a??d" , T(1.0)),
2506+
test_ab<T>("a ilike b", "aBcD", "a*?d" , T(1.0)),
2507+
test_ab<T>("a ilike b", "aBcD", "*bc*" , T(1.0)),
2508+
test_ab<T>("a ilike b", "aBcD", "?bc?" , T(1.0)),
2509+
test_ab<T>("a ilike b", "aBcD", "????" , T(1.0)),
2510+
test_ab<T>("a ilike b", "aBcD", "a???" , T(1.0)),
2511+
test_ab<T>("a ilike b", "aBcD", "ab??" , T(1.0)),
2512+
test_ab<T>("a ilike b", "aBcD", "abc?" , T(1.0)),
2513+
test_ab<T>("a ilike b", "aBcD", "???d" , T(1.0)),
2514+
test_ab<T>("a ilike b", "aBcD", "??cd" , T(1.0)),
2515+
test_ab<T>("a ilike b", "aBcD", "?bcd" , T(1.0)),
2516+
test_ab<T>("a ilike b", "aBcD", "?b?d" , T(1.0)),
2517+
test_ab<T>("a ilike b", "aBcD", "a?c?" , T(1.0)),
2518+
test_ab<T>("a ilike b", "aBcD", "a??d" , T(1.0)),
2519+
test_ab<T>("a ilike b", "aBcD", "?bc?" , T(1.0)),
2520+
test_ab<T>("a ilike b", "aBcD", "ab**" , T(1.0)),
2521+
test_ab<T>("a ilike b", "aBcD", "ab*?" , T(1.0)),
2522+
test_ab<T>("a ilike b", "aBcD", "a***" , T(1.0)),
2523+
test_ab<T>("a ilike b", "aBcD", "**cd" , T(1.0)),
2524+
test_ab<T>("a ilike b", "aBcD", "*?cd" , T(1.0)),
2525+
test_ab<T>("a ilike b", "aBcD", "***d" , T(1.0)),
2526+
test_ab<T>("a ilike b", "aBcD", "*bc*" , T(1.0)),
2527+
test_ab<T>("a ilike b", "aBcD", "*bc?" , T(1.0)),
2528+
test_ab<T>("a ilike b", "aBcD", "*b??" , T(1.0)),
2529+
test_ab<T>("a ilike b", "aBcD", "?bc*" , T(1.0)),
2530+
test_ab<T>("a ilike b", "aBcD", "??c*" , T(1.0)),
2531+
test_ab<T>("a ilike b", "aBcD", "*b?*" , T(1.0)),
2532+
test_ab<T>("a ilike b", "aB" , "a*" , T(1.0)),
2533+
test_ab<T>("a ilike b", "aB" , "a?" , T(1.0))
25322534
};
25332535

25342536
static const std::size_t test_list_size = sizeof(test_list) / sizeof(test_ab<T>);

0 commit comments

Comments
 (0)