diff --git a/include/chaiscript/dispatchkit/boxed_number.hpp b/include/chaiscript/dispatchkit/boxed_number.hpp index 7eefe99..6bbf088 100644 --- a/include/chaiscript/dispatchkit/boxed_number.hpp +++ b/include/chaiscript/dispatchkit/boxed_number.hpp @@ -162,17 +162,17 @@ namespace chaiscript { switch (t_oper) { - case Operators::equals: + case Operators::Opers::equals: return const_var(t == u); - case Operators::less_than: + case Operators::Opers::less_than: return const_var(t < u); - case Operators::greater_than: + case Operators::Opers::greater_than: return const_var(t > u); - case Operators::less_than_equal: + case Operators::Opers::less_than_equal: return const_var(t <= u); - case Operators::greater_than_equal: + case Operators::Opers::greater_than_equal: return const_var(t >= u); - case Operators::not_equal: + case Operators::Opers::not_equal: return const_var(t != u); default: throw chaiscript::detail::exception::bad_any_cast(); @@ -184,10 +184,10 @@ namespace chaiscript { switch (t_oper) { - case Operators::pre_increment: + case Operators::Opers::pre_increment: ++t; break; - case Operators::pre_decrement: + case Operators::Opers::pre_decrement: --t; break; default: @@ -202,20 +202,20 @@ namespace chaiscript { switch (t_oper) { - case Operators::assign: + case Operators::Opers::assign: t = u; break; - case Operators::assign_product: + case Operators::Opers::assign_product: t *= u; break; - case Operators::assign_sum: + case Operators::Opers::assign_sum: t += u; break; - case Operators::assign_quotient: + case Operators::Opers::assign_quotient: check_divide_by_zero(u); t /= u; break; - case Operators::assign_difference: + case Operators::Opers::assign_difference: t -= u; break; default: @@ -230,23 +230,23 @@ namespace chaiscript { switch (t_oper) { - case Operators::assign_bitwise_and: + case Operators::Opers::assign_bitwise_and: t &= u; break; - case Operators::assign_bitwise_or: + case Operators::Opers::assign_bitwise_or: t |= u; break; - case Operators::assign_shift_left: + case Operators::Opers::assign_shift_left: t <<= u; break; - case Operators::assign_shift_right: + case Operators::Opers::assign_shift_right: t >>= u; break; - case Operators::assign_remainder: + case Operators::Opers::assign_remainder: check_divide_by_zero(u); t %= u; break; - case Operators::assign_bitwise_xor: + case Operators::Opers::assign_bitwise_xor: t ^= u; break; default: @@ -260,7 +260,7 @@ namespace chaiscript { switch (t_oper) { - case Operators::bitwise_complement: + case Operators::Opers::bitwise_complement: return const_var(~t); default: throw chaiscript::detail::exception::bad_any_cast(); @@ -272,18 +272,18 @@ namespace chaiscript { switch (t_oper) { - case Operators::shift_left: + case Operators::Opers::shift_left: return const_var(t << u); - case Operators::shift_right: + case Operators::Opers::shift_right: return const_var(t >> u); - case Operators::remainder: + case Operators::Opers::remainder: check_divide_by_zero(u); return const_var(t % u); - case Operators::bitwise_and: + case Operators::Opers::bitwise_and: return const_var(t & u); - case Operators::bitwise_or: + case Operators::Opers::bitwise_or: return const_var(t | u); - case Operators::bitwise_xor: + case Operators::Opers::bitwise_xor: return const_var(t ^ u); default: throw chaiscript::detail::exception::bad_any_cast(); @@ -295,9 +295,9 @@ namespace chaiscript { switch (t_oper) { - case Operators::unary_minus: + case Operators::Opers::unary_minus: return const_var(-t); - case Operators::unary_plus: + case Operators::Opers::unary_plus: return const_var(+t); default: throw chaiscript::detail::exception::bad_any_cast(); @@ -309,14 +309,14 @@ namespace chaiscript { switch (t_oper) { - case Operators::sum: + case Operators::Opers::sum: return const_var(t + u); - case Operators::quotient: + case Operators::Opers::quotient: check_divide_by_zero(u); return const_var(t / u); - case Operators::product: + case Operators::Opers::product: return const_var(t * u); - case Operators::difference: + case Operators::Opers::difference: return const_var(t - u); default: throw chaiscript::detail::exception::bad_any_cast(); @@ -328,16 +328,16 @@ namespace chaiscript -> typename std::enable_if::value && !std::is_floating_point::value, Boxed_Value>::type { typedef typename std::common_type::type common_type; - if (t_oper > Operators::boolean_flag && t_oper < Operators::non_const_flag) + if (t_oper > Operators::Opers::boolean_flag && t_oper < Operators::Opers::non_const_flag) { return boolean_go(t_oper, get_as_aux(t_lhs), get_as_aux(t_rhs)); - } else if (t_oper > Operators::non_const_flag && t_oper < Operators::non_const_int_flag && !t_lhs.is_const() && !t_lhs.is_return_value()) { + } else if (t_oper > Operators::Opers::non_const_flag && t_oper < Operators::Opers::non_const_int_flag && !t_lhs.is_const() && !t_lhs.is_return_value()) { return binary_go(t_oper, *static_cast(t_lhs.get_ptr()), get_as_aux(t_rhs), t_lhs); - } else if (t_oper > Operators::non_const_int_flag && t_oper < Operators::const_int_flag && !t_lhs.is_const() && !t_lhs.is_return_value()) { + } else if (t_oper > Operators::Opers::non_const_int_flag && t_oper < Operators::Opers::const_int_flag && !t_lhs.is_const() && !t_lhs.is_return_value()) { return binary_int_go(t_oper, *static_cast(t_lhs.get_ptr()), get_as_aux(t_rhs), t_lhs); - } else if (t_oper > Operators::const_int_flag && t_oper < Operators::const_flag) { + } else if (t_oper > Operators::Opers::const_int_flag && t_oper < Operators::Opers::const_flag) { return const_binary_int_go(t_oper, get_as_aux(t_lhs), get_as_aux(t_rhs)); - } else if (t_oper > Operators::const_flag) { + } else if (t_oper > Operators::Opers::const_flag) { return const_binary_go(t_oper, get_as_aux(t_lhs), get_as_aux(t_rhs)); } else { throw chaiscript::detail::exception::bad_any_cast(); @@ -349,12 +349,12 @@ namespace chaiscript -> typename std::enable_if::value || std::is_floating_point::value, Boxed_Value>::type { typedef typename std::common_type::type common_type; - if (t_oper > Operators::boolean_flag && t_oper < Operators::non_const_flag) + if (t_oper > Operators::Opers::boolean_flag && t_oper < Operators::Opers::non_const_flag) { return boolean_go(t_oper, get_as_aux(t_lhs), get_as_aux(t_rhs)); - } else if (t_oper > Operators::non_const_flag && t_oper < Operators::non_const_int_flag && !t_lhs.is_const() && !t_lhs.is_return_value()) { + } else if (t_oper > Operators::Opers::non_const_flag && t_oper < Operators::Opers::non_const_int_flag && !t_lhs.is_const() && !t_lhs.is_return_value()) { return binary_go(t_oper, *static_cast(t_lhs.get_ptr()), get_as_aux(t_rhs), t_lhs); - } else if (t_oper > Operators::const_flag) { + } else if (t_oper > Operators::Opers::const_flag) { return const_binary_go(t_oper, get_as_aux(t_lhs), get_as_aux(t_rhs)); } else { throw chaiscript::detail::exception::bad_any_cast(); @@ -366,11 +366,11 @@ namespace chaiscript static auto go(Operators::Opers t_oper, const Boxed_Value &t_lhs) -> typename std::enable_if::value, Boxed_Value>::type { - if (t_oper > Operators::non_const_flag && t_oper < Operators::non_const_int_flag && !t_lhs.is_const() && !t_lhs.is_return_value()) { + if (t_oper > Operators::Opers::non_const_flag && t_oper < Operators::Opers::non_const_int_flag && !t_lhs.is_const() && !t_lhs.is_return_value()) { return unary_go(t_oper, *static_cast(t_lhs.get_ptr()), t_lhs); - } else if (t_oper > Operators::const_int_flag && t_oper < Operators::const_flag) { + } else if (t_oper > Operators::Opers::const_int_flag && t_oper < Operators::Opers::const_flag) { return const_unary_int_go(t_oper, *static_cast(t_lhs.get_const_ptr())); - } else if (t_oper > Operators::const_flag) { + } else if (t_oper > Operators::Opers::const_flag) { return const_unary_go(t_oper, *static_cast(t_lhs.get_const_ptr())); } else { throw chaiscript::detail::exception::bad_any_cast(); @@ -381,9 +381,9 @@ namespace chaiscript static auto go(Operators::Opers t_oper, const Boxed_Value &t_lhs) -> typename std::enable_if::value, Boxed_Value>::type { - if (t_oper > Operators::non_const_flag && t_oper < Operators::non_const_int_flag && !t_lhs.is_const() && !t_lhs.is_return_value()) { + if (t_oper > Operators::Opers::non_const_flag && t_oper < Operators::Opers::non_const_int_flag && !t_lhs.is_const() && !t_lhs.is_return_value()) { return unary_go(t_oper, *static_cast(t_lhs.get_ptr()), t_lhs); - } else if (t_oper > Operators::const_flag) { + } else if (t_oper > Operators::Opers::const_flag) { return const_unary_go(t_oper, *static_cast(t_lhs.get_const_ptr())); } else { throw chaiscript::detail::exception::bad_any_cast(); @@ -647,67 +647,67 @@ namespace chaiscript bool operator==(const Boxed_Number &t_rhs) const { - return boxed_cast(oper(Operators::equals, this->bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::equals, this->bv, t_rhs.bv)); } bool operator<(const Boxed_Number &t_rhs) const { - return boxed_cast(oper(Operators::less_than, this->bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::less_than, this->bv, t_rhs.bv)); } bool operator>(const Boxed_Number &t_rhs) const { - return boxed_cast(oper(Operators::greater_than, this->bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::greater_than, this->bv, t_rhs.bv)); } bool operator>=(const Boxed_Number &t_rhs) const { - return boxed_cast(oper(Operators::greater_than_equal, this->bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::greater_than_equal, this->bv, t_rhs.bv)); } bool operator<=(const Boxed_Number &t_rhs) const { - return boxed_cast(oper(Operators::less_than_equal, this->bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::less_than_equal, this->bv, t_rhs.bv)); } bool operator!=(const Boxed_Number &t_rhs) const { - return boxed_cast(oper(Operators::not_equal, this->bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::not_equal, this->bv, t_rhs.bv)); } Boxed_Number operator--() { - return oper(Operators::pre_decrement, this->bv); + return oper(Operators::Opers::pre_decrement, this->bv); } Boxed_Number operator++() { - return oper(Operators::pre_increment, this->bv); + return oper(Operators::Opers::pre_increment, this->bv); } Boxed_Number operator+(const Boxed_Number &t_rhs) const { - return oper(Operators::sum, this->bv, t_rhs.bv); + return oper(Operators::Opers::sum, this->bv, t_rhs.bv); } Boxed_Number operator+() const { - return oper(Operators::unary_plus, this->bv); + return oper(Operators::Opers::unary_plus, this->bv); } Boxed_Number operator-() const { - return oper(Operators::unary_minus, this->bv); + return oper(Operators::Opers::unary_minus, this->bv); } Boxed_Number operator-(const Boxed_Number &t_rhs) const { - return oper(Operators::difference, this->bv, t_rhs.bv); + return oper(Operators::Opers::difference, this->bv, t_rhs.bv); } Boxed_Number operator&=(const Boxed_Number &t_rhs) { - return oper(Operators::assign_bitwise_and, this->bv, t_rhs.bv); + return oper(Operators::Opers::assign_bitwise_and, this->bv, t_rhs.bv); } static void validate_boxed_number(const Boxed_Value &v) @@ -735,255 +735,255 @@ namespace chaiscript // cppcheck-suppress operatorEq Boxed_Number operator=(const Boxed_Number &t_rhs) const { - return oper(Operators::assign, this->bv, t_rhs.bv); + return oper(Operators::Opers::assign, this->bv, t_rhs.bv); } Boxed_Number operator|=(const Boxed_Number &t_rhs) { - return oper(Operators::assign_bitwise_or, this->bv, t_rhs.bv); + return oper(Operators::Opers::assign_bitwise_or, this->bv, t_rhs.bv); } Boxed_Number operator^=(const Boxed_Number &t_rhs) { - return oper(Operators::assign_bitwise_xor, this->bv, t_rhs.bv); + return oper(Operators::Opers::assign_bitwise_xor, this->bv, t_rhs.bv); } Boxed_Number operator%=(const Boxed_Number &t_rhs) { - return oper(Operators::assign_remainder, this->bv, t_rhs.bv); + return oper(Operators::Opers::assign_remainder, this->bv, t_rhs.bv); } Boxed_Number operator<<=(const Boxed_Number &t_rhs) { - return oper(Operators::assign_shift_left, this->bv, t_rhs.bv); + return oper(Operators::Opers::assign_shift_left, this->bv, t_rhs.bv); } Boxed_Number operator>>=(const Boxed_Number &t_rhs) { - return oper(Operators::assign_shift_right, this->bv, t_rhs.bv); + return oper(Operators::Opers::assign_shift_right, this->bv, t_rhs.bv); } Boxed_Number operator&(const Boxed_Number &t_rhs) const { - return oper(Operators::bitwise_and, this->bv, t_rhs.bv); + return oper(Operators::Opers::bitwise_and, this->bv, t_rhs.bv); } Boxed_Number operator~() const { - return oper(Operators::bitwise_complement, this->bv); + return oper(Operators::Opers::bitwise_complement, this->bv); } Boxed_Number operator^(const Boxed_Number &t_rhs) const { - return oper(Operators::bitwise_xor, this->bv, t_rhs.bv); + return oper(Operators::Opers::bitwise_xor, this->bv, t_rhs.bv); } Boxed_Number operator|(const Boxed_Number &t_rhs) const { - return oper(Operators::bitwise_or, this->bv, t_rhs.bv); + return oper(Operators::Opers::bitwise_or, this->bv, t_rhs.bv); } Boxed_Number operator*=(const Boxed_Number &t_rhs) { - return oper(Operators::assign_product, this->bv, t_rhs.bv); + return oper(Operators::Opers::assign_product, this->bv, t_rhs.bv); } Boxed_Number operator/=(const Boxed_Number &t_rhs) { - return oper(Operators::assign_quotient, this->bv, t_rhs.bv); + return oper(Operators::Opers::assign_quotient, this->bv, t_rhs.bv); } Boxed_Number operator+=(const Boxed_Number &t_rhs) { - return oper(Operators::assign_sum, this->bv, t_rhs.bv); + return oper(Operators::Opers::assign_sum, this->bv, t_rhs.bv); } Boxed_Number operator-=(const Boxed_Number &t_rhs) { - return oper(Operators::assign_difference, this->bv, t_rhs.bv); + return oper(Operators::Opers::assign_difference, this->bv, t_rhs.bv); } Boxed_Number operator/(const Boxed_Number &t_rhs) const { - return oper(Operators::quotient, this->bv, t_rhs.bv); + return oper(Operators::Opers::quotient, this->bv, t_rhs.bv); } Boxed_Number operator<<(const Boxed_Number &t_rhs) const { - return oper(Operators::shift_left, this->bv, t_rhs.bv); + return oper(Operators::Opers::shift_left, this->bv, t_rhs.bv); } Boxed_Number operator*(const Boxed_Number &t_rhs) const { - return oper(Operators::product, this->bv, t_rhs.bv); + return oper(Operators::Opers::product, this->bv, t_rhs.bv); } Boxed_Number operator%(const Boxed_Number &t_rhs) const { - return oper(Operators::remainder, this->bv, t_rhs.bv); + return oper(Operators::Opers::remainder, this->bv, t_rhs.bv); } Boxed_Number operator>>(const Boxed_Number &t_rhs) const { - return oper(Operators::shift_right, this->bv, t_rhs.bv); + return oper(Operators::Opers::shift_right, this->bv, t_rhs.bv); } static bool equals(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return boxed_cast(oper(Operators::equals, t_lhs.bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::equals, t_lhs.bv, t_rhs.bv)); } static bool less_than(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return boxed_cast(oper(Operators::less_than, t_lhs.bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::less_than, t_lhs.bv, t_rhs.bv)); } static bool greater_than(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return boxed_cast(oper(Operators::greater_than, t_lhs.bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::greater_than, t_lhs.bv, t_rhs.bv)); } static bool greater_than_equal(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return boxed_cast(oper(Operators::greater_than_equal, t_lhs.bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::greater_than_equal, t_lhs.bv, t_rhs.bv)); } static bool less_than_equal(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return boxed_cast(oper(Operators::less_than_equal, t_lhs.bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::less_than_equal, t_lhs.bv, t_rhs.bv)); } static bool not_equal(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return boxed_cast(oper(Operators::not_equal, t_lhs.bv, t_rhs.bv)); + return boxed_cast(oper(Operators::Opers::not_equal, t_lhs.bv, t_rhs.bv)); } static Boxed_Number pre_decrement(Boxed_Number t_lhs) { - return oper(Operators::pre_decrement, t_lhs.bv); + return oper(Operators::Opers::pre_decrement, t_lhs.bv); } static Boxed_Number pre_increment(Boxed_Number t_lhs) { - return oper(Operators::pre_increment, t_lhs.bv); + return oper(Operators::Opers::pre_increment, t_lhs.bv); } static const Boxed_Number sum(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::sum, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::sum, t_lhs.bv, t_rhs.bv); } static const Boxed_Number unary_plus(const Boxed_Number &t_lhs) { - return oper(Operators::unary_plus, t_lhs.bv); + return oper(Operators::Opers::unary_plus, t_lhs.bv); } static const Boxed_Number unary_minus(const Boxed_Number &t_lhs) { - return oper(Operators::unary_minus, t_lhs.bv); + return oper(Operators::Opers::unary_minus, t_lhs.bv); } static const Boxed_Number difference(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::difference, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::difference, t_lhs.bv, t_rhs.bv); } static Boxed_Number assign_bitwise_and(Boxed_Number t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::assign_bitwise_and, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::assign_bitwise_and, t_lhs.bv, t_rhs.bv); } static Boxed_Number assign(Boxed_Number t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::assign, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::assign, t_lhs.bv, t_rhs.bv); } static Boxed_Number assign_bitwise_or(Boxed_Number t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::assign_bitwise_or, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::assign_bitwise_or, t_lhs.bv, t_rhs.bv); } static Boxed_Number assign_bitwise_xor(Boxed_Number t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::assign_bitwise_xor, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::assign_bitwise_xor, t_lhs.bv, t_rhs.bv); } static Boxed_Number assign_remainder(Boxed_Number t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::assign_remainder, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::assign_remainder, t_lhs.bv, t_rhs.bv); } static Boxed_Number assign_shift_left(Boxed_Number t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::assign_shift_left, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::assign_shift_left, t_lhs.bv, t_rhs.bv); } static Boxed_Number assign_shift_right(Boxed_Number t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::assign_shift_right, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::assign_shift_right, t_lhs.bv, t_rhs.bv); } static const Boxed_Number bitwise_and(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::bitwise_and, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::bitwise_and, t_lhs.bv, t_rhs.bv); } static const Boxed_Number bitwise_complement(const Boxed_Number &t_lhs) { - return oper(Operators::bitwise_complement, t_lhs.bv, Boxed_Value(0)); + return oper(Operators::Opers::bitwise_complement, t_lhs.bv, Boxed_Value(0)); } static const Boxed_Number bitwise_xor(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::bitwise_xor, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::bitwise_xor, t_lhs.bv, t_rhs.bv); } static const Boxed_Number bitwise_or(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::bitwise_or, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::bitwise_or, t_lhs.bv, t_rhs.bv); } static Boxed_Number assign_product(Boxed_Number t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::assign_product, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::assign_product, t_lhs.bv, t_rhs.bv); } static Boxed_Number assign_quotient(Boxed_Number t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::assign_quotient, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::assign_quotient, t_lhs.bv, t_rhs.bv); } static Boxed_Number assign_sum(Boxed_Number t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::assign_sum, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::assign_sum, t_lhs.bv, t_rhs.bv); } static Boxed_Number assign_difference(Boxed_Number t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::assign_difference, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::assign_difference, t_lhs.bv, t_rhs.bv); } static const Boxed_Number quotient(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::quotient, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::quotient, t_lhs.bv, t_rhs.bv); } static const Boxed_Number shift_left(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::shift_left, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::shift_left, t_lhs.bv, t_rhs.bv); } static const Boxed_Number product(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::product, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::product, t_lhs.bv, t_rhs.bv); } static const Boxed_Number remainder(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::remainder, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::remainder, t_lhs.bv, t_rhs.bv); } static const Boxed_Number shift_right(const Boxed_Number &t_lhs, const Boxed_Number &t_rhs) { - return oper(Operators::shift_right, t_lhs.bv, t_rhs.bv); + return oper(Operators::Opers::shift_right, t_lhs.bv, t_rhs.bv); } diff --git a/include/chaiscript/language/chaiscript_algebraic.hpp b/include/chaiscript/language/chaiscript_algebraic.hpp index b196db4..0338a02 100644 --- a/include/chaiscript/language/chaiscript_algebraic.hpp +++ b/include/chaiscript/language/chaiscript_algebraic.hpp @@ -13,7 +13,7 @@ namespace chaiscript { struct Operators { - enum Opers + enum class Opers { boolean_flag, equals, less_than, greater_than, less_than_equal, greater_than_equal, not_equal, @@ -46,80 +46,80 @@ namespace chaiscript "+", "/", "*", "-", "+", "-", "" }; - return opers[t_oper]; + return opers[static_cast(t_oper)]; } static Opers to_operator(const std::string &t_str, bool t_is_unary = false) { if (t_str == "==") { - return equals; + return Opers::equals; } else if (t_str == "<") { - return less_than; + return Opers::less_than; } else if (t_str == ">") { - return greater_than; + return Opers::greater_than; } else if (t_str == "<=") { - return less_than_equal; + return Opers::less_than_equal; } else if (t_str == ">=") { - return greater_than_equal; + return Opers::greater_than_equal; } else if (t_str == "!=") { - return not_equal; + return Opers::not_equal; } else if (t_str == "=") { - return assign; + return Opers::assign; } else if (t_str == "++") { - return pre_increment; + return Opers::pre_increment; } else if (t_str == "--") { - return pre_decrement; + return Opers::pre_decrement; } else if (t_str == "*=") { - return assign_product; + return Opers::assign_product; } else if (t_str == "+=") { - return assign_sum; + return Opers::assign_sum; } else if (t_str == "-=") { - return assign_difference; + return Opers::assign_difference; } else if (t_str == "&=") { - return assign_bitwise_and; + return Opers::assign_bitwise_and; } else if (t_str == "|=") { - return assign_bitwise_or; + return Opers::assign_bitwise_or; } else if (t_str == "<<=") { - return assign_shift_left; + return Opers::assign_shift_left; } else if (t_str == ">>=") { - return assign_shift_right; + return Opers::assign_shift_right; } else if (t_str == "%=") { - return assign_remainder; + return Opers::assign_remainder; } else if (t_str == "^=") { - return assign_bitwise_xor; + return Opers::assign_bitwise_xor; } else if (t_str == "<<") { - return shift_left; + return Opers::shift_left; } else if (t_str == ">>") { - return shift_right; + return Opers::shift_right; } else if (t_str == "%") { - return remainder; + return Opers::remainder; } else if (t_str == "&") { - return bitwise_and; + return Opers::bitwise_and; } else if (t_str == "|") { - return bitwise_or; + return Opers::bitwise_or; } else if (t_str == "^") { - return bitwise_xor; + return Opers::bitwise_xor; } else if (t_str == "~") { - return bitwise_complement; + return Opers::bitwise_complement; } else if (t_str == "+") { if (t_is_unary) { - return unary_plus; + return Opers::unary_plus; } else { - return sum; + return Opers::sum; } } else if (t_str == "-") { if (t_is_unary) { - return unary_minus; + return Opers::unary_minus; } else { - return difference; + return Opers::difference; } } else if (t_str == "/") { - return quotient; + return Opers::quotient; } else if (t_str == "*") { - return product; + return Opers::product; } else { - return invalid; + return Opers::invalid; } } diff --git a/include/chaiscript/language/chaiscript_common.hpp b/include/chaiscript/language/chaiscript_common.hpp index f20ed09..22f7548 100644 --- a/include/chaiscript/language/chaiscript_common.hpp +++ b/include/chaiscript/language/chaiscript_common.hpp @@ -98,6 +98,18 @@ namespace chaiscript /// \brief Classes which may be thrown during error cases when ChaiScript is executing. namespace exception { + /// \brief Thrown if an error occurs while attempting to load a binary module + struct load_module_error : std::runtime_error + { + load_module_error(const std::string &t_reason) noexcept + : std::runtime_error(t_reason) + { + } + + load_module_error(const load_module_error &) = default; + virtual ~load_module_error() noexcept {} + }; + /// Errors generated during parsing or evaluation struct eval_error : std::runtime_error { diff --git a/include/chaiscript/language/chaiscript_eval.hpp b/include/chaiscript/language/chaiscript_eval.hpp index b692538..a4ac5fe 100644 --- a/include/chaiscript/language/chaiscript_eval.hpp +++ b/include/chaiscript/language/chaiscript_eval.hpp @@ -103,7 +103,7 @@ namespace chaiscript Operators::Opers t_oper, const std::string &t_oper_string, const Boxed_Value &t_lhs, const Boxed_Value &t_rhs) const { try { - if (t_oper != Operators::invalid && t_lhs.get_type_info().is_arithmetic() && t_rhs.get_type_info().is_arithmetic()) + if (t_oper != Operators::Opers::invalid && t_lhs.get_type_info().is_arithmetic() && t_rhs.get_type_info().is_arithmetic()) { // If it's an arithmetic operation we want to short circuit dispatch try{ @@ -384,7 +384,7 @@ namespace chaiscript Boxed_Value rhs = this->children[2]->eval(t_ss); Boxed_Value lhs = this->children[0]->eval(t_ss); - if (m_oper != Operators::invalid && lhs.get_type_info().is_arithmetic() && + if (m_oper != Operators::Opers::invalid && lhs.get_type_info().is_arithmetic() && rhs.get_type_info().is_arithmetic()) { try { @@ -392,7 +392,7 @@ namespace chaiscript } catch (const std::exception &) { throw exception::eval_error("Error with unsupported arithmetic assignment operation"); } - } else if (m_oper == Operators::assign) { + } else if (m_oper == Operators::Opers::assign) { if (lhs.is_return_value()) { throw exception::eval_error("Error, cannot assign to temporary value."); } @@ -1076,7 +1076,7 @@ namespace chaiscript try { // short circuit arithmetic operations - if (m_oper != Operators::invalid && m_oper != Operators::bitwise_and && bv.get_type_info().is_arithmetic()) + if (m_oper != Operators::Opers::invalid && m_oper != Operators::Opers::bitwise_and && bv.get_type_info().is_arithmetic()) { return Boxed_Number::do_oper(m_oper, bv); } else {