diff --git a/include/symbol_table.h b/include/symbol_table.h index 0af5442..3a1ff21 100644 --- a/include/symbol_table.h +++ b/include/symbol_table.h @@ -31,6 +31,7 @@ #include #include #include +#include #include "clock.h" namespace expr { diff --git a/src/operations/boolean.cpp b/src/operations/boolean.cpp index 85fbb66..719f5ca 100644 --- a/src/operations/boolean.cpp +++ b/src/operations/boolean.cpp @@ -194,17 +194,11 @@ symbol_value_t and_(const symbol_value_t& a, const symbol_value_t& b) { FUNC_IMPL(a, t_and, b, res); return res; } -symbol_value_t operator&&(const symbol_value_t& a, const symbol_value_t& b) { - return and_(a,b); -} symbol_value_t or_(const symbol_value_t& a, const symbol_value_t& b) { symbol_value_t res{}; FUNC_IMPL(a, t_or, b, res); return res; } -symbol_value_t operator||(const symbol_value_t& a, const symbol_value_t& b) { - return and_(a,b); -} symbol_value_t xor_(const symbol_value_t& a, const symbol_value_t& b) { symbol_value_t res{}; FUNC_IMPL(a, t_xor, b, res); diff --git a/src/operations/boolean.h b/src/operations/boolean.h index 307f1a6..cb602a8 100644 --- a/src/operations/boolean.h +++ b/src/operations/boolean.h @@ -23,26 +23,27 @@ #ifndef EXPR_BOOLEAN_H #define EXPR_BOOLEAN_H #include "symbol_table.h" -expr::symbol_value_t and_(const expr::symbol_value_t& a, const expr::symbol_value_t& b); -expr::symbol_value_t or_(const expr::symbol_value_t& a, const expr::symbol_value_t& b); -expr::symbol_value_t xor_(const expr::symbol_value_t& a, const expr::symbol_value_t& b); -expr::symbol_value_t not_(const expr::symbol_value_t& a); -expr::symbol_value_t gt_(const expr::symbol_value_t& a, const expr::symbol_value_t& b); -expr::symbol_value_t ge_(const expr::symbol_value_t& a, const expr::symbol_value_t& b); -expr::symbol_value_t ee_(const expr::symbol_value_t& a, const expr::symbol_value_t& b); -expr::symbol_value_t ne_(const expr::symbol_value_t& a, const expr::symbol_value_t& b); -expr::symbol_value_t le_(const expr::symbol_value_t& a, const expr::symbol_value_t& b); -expr::symbol_value_t lt_(const expr::symbol_value_t& a, const expr::symbol_value_t& b); -expr::symbol_value_t implies_(const expr::symbol_value_t& a, const expr::symbol_value_t& b); +auto and_(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; +auto or_(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; +auto xor_(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; +auto not_(const expr::symbol_value_t& a) -> expr::symbol_value_t; +auto gt_(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; +auto ge_(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; +auto ee_(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; +auto ne_(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; +auto le_(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; +auto lt_(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; +auto implies_(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; -auto operator&&(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; -auto operator||(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; auto operator>(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; auto operator>=(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; auto operator<(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; auto operator<=(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; auto operator==(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; auto operator!=(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; +/// These operators are disabled because gcc are getting confused with them +//auto operator&&(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; +//auto operator||(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; //auto operator^(const expr::symbol_value_t& a, const expr::symbol_value_t& b) -> expr::symbol_value_t; //auto operator!(const expr::symbol_value_t& a) -> expr::symbol_value_t; #endif //EXPR_BOOLEAN_H