xo-reader2 stack: constants for operator primitive names

This commit is contained in:
Roland Conybeare 2026-03-25 17:52:39 -04:00
commit d288c4ff1e
2 changed files with 35 additions and 10 deletions

View file

@ -17,31 +17,56 @@ namespace xo {
using AAllocator = xo::mm::AAllocator; using AAllocator = xo::mm::AAllocator;
public: public:
/** name for multiply primitive. Used for op* **/
static constexpr const char * c_multiply_pm_name = "_mul";
/** polymorphic (in both arguments1) multiply **/ /** polymorphic (in both arguments1) multiply **/
static DPrimitive_gco_2_gco_gco * make_multiply_pm(obj<AAllocator> mm, static DPrimitive_gco_2_gco_gco * make_multiply_pm(obj<AAllocator> mm,
StringTable * stbl); StringTable * stbl);
/** name for divide primitives. Used for op/ **/
static constexpr const char * c_divide_pm_name = "_div";
/** polymorphic (in both arguments) divide **/ /** polymorphic (in both arguments) divide **/
static DPrimitive_gco_2_gco_gco * make_divide_pm(obj<AAllocator> mm, static DPrimitive_gco_2_gco_gco * make_divide_pm(obj<AAllocator> mm,
StringTable * stbl); StringTable * stbl);
/** name for add primitives. Used for op+ **/
static constexpr const char * c_add_pm_name = "_add";
/** polymorphic (in both arguments) add **/ /** polymorphic (in both arguments) add **/
static DPrimitive_gco_2_gco_gco * make_add_pm(obj<AAllocator> mm, static DPrimitive_gco_2_gco_gco * make_add_pm(obj<AAllocator> mm,
StringTable * stbl); StringTable * stbl);
/** name for sub primitives. Used for op- **/
static constexpr const char * c_sub_pm_name = "_sub";
/** polymorphic (in both arguments) subtract **/ /** polymorphic (in both arguments) subtract **/
static DPrimitive_gco_2_gco_gco * make_subtract_pm(obj<AAllocator> mm, static DPrimitive_gco_2_gco_gco * make_subtract_pm(obj<AAllocator> mm,
StringTable * stbl); StringTable * stbl);
/** name for equality-comparison primitive. Used for op== **/
static constexpr const char * c_cmpeq_pm_name = "_cmpeq";
/** polymorphic (in both arguments) compare (==) **/ /** polymorphic (in both arguments) compare (==) **/
static DPrimitive_gco_2_gco_gco * make_cmpeq_pm(obj<AAllocator> mm, static DPrimitive_gco_2_gco_gco * make_cmpeq_pm(obj<AAllocator> mm,
StringTable * stbl); StringTable * stbl);
/** name for inequality-comparison prmitive. Used for op!= **/
static constexpr const char * c_cmpne_pm_name = "_cmpne";
/** polymorphic (in both arguments) compare (!=) **/ /** polymorphic (in both arguments) compare (!=) **/
static DPrimitive_gco_2_gco_gco * make_cmpne_pm(obj<AAllocator> mm, static DPrimitive_gco_2_gco_gco * make_cmpne_pm(obj<AAllocator> mm,
StringTable * stbl); StringTable * stbl);
/** name for less-comparison primitive. Used for op< **/
static constexpr const char * c_cmplt_pm_name = "_cmplt";
/** polymorphic (in both arguments) compare (<) **/ /** polymorphic (in both arguments) compare (<) **/
static DPrimitive_gco_2_gco_gco * make_cmplt_pm(obj<AAllocator> mm, static DPrimitive_gco_2_gco_gco * make_cmplt_pm(obj<AAllocator> mm,
StringTable * stbl); 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 (<=) **/ /** polymorphic (in both arguments) compare (<=) **/
static DPrimitive_gco_2_gco_gco * make_cmple_pm(obj<AAllocator> mm, static DPrimitive_gco_2_gco_gco * make_cmple_pm(obj<AAllocator> mm,
StringTable * stbl); StringTable * stbl);
/** name for greater-comparison primitive. Used for op> **/
static constexpr const char * c_cmpgt_pm_name = "_cmpgt";
/** polymorphic (in both arguments) compare (>) **/ /** polymorphic (in both arguments) compare (>) **/
static DPrimitive_gco_2_gco_gco * make_cmpgt_pm(obj<AAllocator> mm, static DPrimitive_gco_2_gco_gco * make_cmpgt_pm(obj<AAllocator> mm,
StringTable * stbl); StringTable * stbl);

View file

@ -33,7 +33,7 @@ namespace xo {
auto pm_ty = obj<AType>(); auto pm_ty = obj<AType>();
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); &NumericDispatch::multiply);
} }
@ -48,7 +48,7 @@ namespace xo {
auto pm_ty = obj<AType,DFunctionType> auto pm_ty = obj<AType,DFunctionType>
(DFunctionType::_make(mm, numeric_ty, numeric_ty, numeric_ty)); (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); &NumericDispatch::divide);
} }
@ -63,7 +63,7 @@ namespace xo {
auto pm_ty = obj<AType,DFunctionType> auto pm_ty = obj<AType,DFunctionType>
(DFunctionType::_make(mm, numeric_ty, numeric_ty, numeric_ty)); (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); &NumericDispatch::add);
} }
@ -78,7 +78,7 @@ namespace xo {
auto pm_ty = obj<AType,DFunctionType> auto pm_ty = obj<AType,DFunctionType>
(DFunctionType::_make(mm, numeric_ty, numeric_ty, numeric_ty)); (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); &NumericDispatch::subtract);
} }
@ -94,7 +94,7 @@ namespace xo {
auto pm_ty = obj<AType,DFunctionType> auto pm_ty = obj<AType,DFunctionType>
(DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); (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); &NumericDispatch::cmp_equal);
} }
@ -110,7 +110,7 @@ namespace xo {
auto pm_ty = obj<AType,DFunctionType> auto pm_ty = obj<AType,DFunctionType>
(DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); (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); &NumericDispatch::cmp_notequal);
} }
@ -126,7 +126,7 @@ namespace xo {
auto pm_ty = obj<AType,DFunctionType> auto pm_ty = obj<AType,DFunctionType>
(DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); (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); &NumericDispatch::cmp_less);
} }
@ -142,7 +142,7 @@ namespace xo {
auto pm_ty = obj<AType,DFunctionType> auto pm_ty = obj<AType,DFunctionType>
(DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); (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); &NumericDispatch::cmp_lessequal);
} }
@ -158,7 +158,7 @@ namespace xo {
auto pm_ty = obj<AType,DFunctionType> auto pm_ty = obj<AType,DFunctionType>
(DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); (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); &NumericDispatch::cmp_greater);
} }
@ -174,7 +174,7 @@ namespace xo {
auto pm_ty = obj<AType,DFunctionType> auto pm_ty = obj<AType,DFunctionType>
(DFunctionType::_make(mm, booleic_ty, numeric_ty, numeric_ty)); (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); &NumericDispatch::cmp_greatequal);
} }