diff --git a/include/xo/numeric/NumericPrimitives.hpp b/include/xo/numeric/NumericPrimitives.hpp index aec3ae84..51c614f1 100644 --- a/include/xo/numeric/NumericPrimitives.hpp +++ b/include/xo/numeric/NumericPrimitives.hpp @@ -17,31 +17,56 @@ namespace xo { using AAllocator = xo::mm::AAllocator; public: + /** name for multiply primitive. Used for op* **/ + static constexpr const char * c_multiply_pm_name = "_mul"; /** polymorphic (in both arguments1) multiply **/ static DPrimitive_gco_2_gco_gco * make_multiply_pm(obj mm, StringTable * stbl); + + /** name for divide primitives. Used for op/ **/ + static constexpr const char * c_divide_pm_name = "_div"; /** polymorphic (in both arguments) divide **/ static DPrimitive_gco_2_gco_gco * make_divide_pm(obj mm, StringTable * stbl); + + /** name for add primitives. Used for op+ **/ + static constexpr const char * c_add_pm_name = "_add"; /** polymorphic (in both arguments) add **/ static DPrimitive_gco_2_gco_gco * make_add_pm(obj mm, StringTable * stbl); + + /** name for sub primitives. Used for op- **/ + static constexpr const char * c_sub_pm_name = "_sub"; /** polymorphic (in both arguments) subtract **/ static DPrimitive_gco_2_gco_gco * make_subtract_pm(obj mm, StringTable * stbl); + /** name for equality-comparison primitive. Used for op== **/ + static constexpr const char * c_cmpeq_pm_name = "_cmpeq"; /** polymorphic (in both arguments) compare (==) **/ static DPrimitive_gco_2_gco_gco * make_cmpeq_pm(obj mm, StringTable * stbl); + + /** name for inequality-comparison prmitive. Used for op!= **/ + static constexpr const char * c_cmpne_pm_name = "_cmpne"; /** polymorphic (in both arguments) compare (!=) **/ static DPrimitive_gco_2_gco_gco * make_cmpne_pm(obj mm, StringTable * stbl); + + /** name for less-comparison primitive. Used for op< **/ + static constexpr const char * c_cmplt_pm_name = "_cmplt"; /** polymorphic (in both arguments) compare (<) **/ static DPrimitive_gco_2_gco_gco * make_cmplt_pm(obj mm, StringTable * stbl); + + /** name for lesser-or-equal-comparison primitive. Used for op<= **/ + static constexpr const char * c_cmple_pm_name = "_cmple"; /** polymorphic (in both arguments) compare (<=) **/ static DPrimitive_gco_2_gco_gco * make_cmple_pm(obj mm, StringTable * stbl); + + /** name for greater-comparison primitive. Used for op> **/ + static constexpr const char * c_cmpgt_pm_name = "_cmpgt"; /** polymorphic (in both arguments) compare (>) **/ static DPrimitive_gco_2_gco_gco * make_cmpgt_pm(obj mm, StringTable * stbl); diff --git a/src/numeric/NumericPrimitives.cpp b/src/numeric/NumericPrimitives.cpp index 8515e9d4..0104f4cb 100644 --- a/src/numeric/NumericPrimitives.cpp +++ b/src/numeric/NumericPrimitives.cpp @@ -33,7 +33,7 @@ namespace xo { auto pm_ty = obj(); - return DPrimitive_gco_2_gco_gco::_make(mm, "_mul", pm_ty, + return DPrimitive_gco_2_gco_gco::_make(mm, c_multiply_pm_name, pm_ty, &NumericDispatch::multiply); } @@ -48,7 +48,7 @@ namespace xo { auto pm_ty = obj (DFunctionType::_make(mm, numeric_ty, numeric_ty, numeric_ty)); - return DPrimitive_gco_2_gco_gco::_make(mm, "_div", pm_ty, + return DPrimitive_gco_2_gco_gco::_make(mm, c_divide_pm_name, pm_ty, &NumericDispatch::divide); } @@ -63,7 +63,7 @@ namespace xo { auto pm_ty = obj (DFunctionType::_make(mm, numeric_ty, numeric_ty, numeric_ty)); - return DPrimitive_gco_2_gco_gco::_make(mm, "_add", pm_ty, + return DPrimitive_gco_2_gco_gco::_make(mm, c_add_pm_name, pm_ty, &NumericDispatch::add); } @@ -78,7 +78,7 @@ namespace xo { auto pm_ty = obj (DFunctionType::_make(mm, numeric_ty, numeric_ty, numeric_ty)); - return DPrimitive_gco_2_gco_gco::_make(mm, "_sub", pm_ty, + return DPrimitive_gco_2_gco_gco::_make(mm, c_sub_pm_name, pm_ty, &NumericDispatch::subtract); } @@ -94,7 +94,7 @@ namespace xo { auto pm_ty = obj (DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); - return DPrimitive_gco_2_gco_gco::_make(mm, "_cmpeq", pm_ty, + return DPrimitive_gco_2_gco_gco::_make(mm, c_cmpeq_pm_name, pm_ty, &NumericDispatch::cmp_equal); } @@ -110,7 +110,7 @@ namespace xo { auto pm_ty = obj (DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); - return DPrimitive_gco_2_gco_gco::_make(mm, "_cmpne", pm_ty, + return DPrimitive_gco_2_gco_gco::_make(mm, c_cmpne_pm_name, pm_ty, &NumericDispatch::cmp_notequal); } @@ -126,7 +126,7 @@ namespace xo { auto pm_ty = obj (DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); - return DPrimitive_gco_2_gco_gco::_make(mm, "_cmplt", pm_ty, + return DPrimitive_gco_2_gco_gco::_make(mm, c_cmplt_pm_name, pm_ty, &NumericDispatch::cmp_less); } @@ -142,7 +142,7 @@ namespace xo { auto pm_ty = obj (DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); - return DPrimitive_gco_2_gco_gco::_make(mm, "_cmple", pm_ty, + return DPrimitive_gco_2_gco_gco::_make(mm, c_cmple_pm_name, pm_ty, &NumericDispatch::cmp_lessequal); } @@ -158,7 +158,7 @@ namespace xo { auto pm_ty = obj (DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); - return DPrimitive_gco_2_gco_gco::_make(mm, "_cmpgt", pm_ty, + return DPrimitive_gco_2_gco_gco::_make(mm, c_cmpgt_pm_name, pm_ty, &NumericDispatch::cmp_greater); } @@ -174,7 +174,7 @@ namespace xo { auto pm_ty = obj (DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); - return DPrimitive_gco_2_gco_gco::_make(mm, "_cmpge", pm_ty, + return DPrimitive_gco_2_gco_gco::_make(mm, c_cmpge_pm_name, pm_ty, &NumericDispatch::cmp_greatequal); }