40#include "ce_expr.tab.hh"
42#pragma GCC diagnostic ignored "-Wsign-compare"
52template <
class T1,
class T2>
bool Cmp(
int op, T1 v1, T2 v2) {
53 DBGN(cerr << __PRETTY_FUNCTION__ << v1 <<
" " << op <<
" " << v2 << endl);
62 case SCAN_GREATER_EQL:
77static inline unsigned long long dap_floor_zero(T i)
79 return (
unsigned long long) ((i < 0) ? 0 : i);
86static inline T dap_floor_zero(T i)
99template<
class UT1,
class T2>
100bool USCmp(
int op, UT1 v1, T2 v2)
102 DBGN(cerr << __PRETTY_FUNCTION__ << v1 <<
" " << op <<
" " << v2 << endl);
106 return v1 == dap_floor_zero<T2>(v2);
108 return v1 != dap_floor_zero<T2>(v2);
110 return v1 > dap_floor_zero<T2>(v2);
111 case SCAN_GREATER_EQL:
112 return v1 >= dap_floor_zero<T2>(v2);
114 return v1 < dap_floor_zero<T2>(v2);
116 return v1 <= dap_floor_zero<T2>(v2);
136template<
class T1,
class UT2>
137bool SUCmp(
int op, T1 v1, UT2 v2)
139 DBGN(cerr << __PRETTY_FUNCTION__ << v1 <<
" " << op <<
" " << v2 << endl);
143 return dap_floor_zero<T1>(v1) == v2;
145 return dap_floor_zero<T1>(v1) != v2;
147 return dap_floor_zero<T1>(v1) > v2;
148 case SCAN_GREATER_EQL:
149 return dap_floor_zero<T1>(v1) >= v2;
151 return dap_floor_zero<T1>(v1) < v2;
153 return dap_floor_zero<T1>(v1) <= v2;
166template <
class T1,
class T2>
bool StrCmp(
int op, T1 v1, T2 v2) {
174 case SCAN_GREATER_EQL:
182 return r.
match(v1.c_str(), v1.length()) > 0;
#define malformed_expr
(400)
A class for error processing.
Regular expression matching.
int match(const char *s, int len, int pos=0) const
Does the pattern match.
top level DAP object to house generic methods
bool StrCmp(int op, T1 v1, T2 v2)
bool Cmp(int op, T1 v1, T2 v2)