From f874535a13ef4ff4314192169f3aa7e501489c27 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Tue, 28 Jan 2020 10:58:52 -0800 Subject: [PATCH] Added INumeric --- BeefLibs/corlib/src/IComparable.bf | 9 +++++++-- BeefLibs/corlib/src/Int64.bf | 9 +++++++-- BeefLibs/corlib/src/UInt64.bf | 7 ++++++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/BeefLibs/corlib/src/IComparable.bf b/BeefLibs/corlib/src/IComparable.bf index 49d75e68..8ad50f28 100644 --- a/BeefLibs/corlib/src/IComparable.bf +++ b/BeefLibs/corlib/src/IComparable.bf @@ -18,11 +18,16 @@ namespace System } } - interface IInteger + interface INumeric + { + static Self operator+(Self lhs, Self rhs); + } + + interface IInteger : INumeric { } - interface IUnsigned + interface IUnsigned : INumeric { } diff --git a/BeefLibs/corlib/src/Int64.bf b/BeefLibs/corlib/src/Int64.bf index c300c6da..0977aa8a 100644 --- a/BeefLibs/corlib/src/Int64.bf +++ b/BeefLibs/corlib/src/Int64.bf @@ -17,12 +17,17 @@ namespace System public static int operator<=>(Int64 a, Int64 b) { - return (int64)a <=> (int64)b; + return (SelfBase)a <=> (SelfBase)b; + } + + public static Self operator+(Self lhs, Self rhs) + { + return (SelfBase)lhs + (SelfBase)rhs; } public static Int64 operator-(Int64 value) { - return (int64)value; + return -(SelfBase)value; } int IHashable.GetHashCode() diff --git a/BeefLibs/corlib/src/UInt64.bf b/BeefLibs/corlib/src/UInt64.bf index 8b19762e..94f6d7d7 100644 --- a/BeefLibs/corlib/src/UInt64.bf +++ b/BeefLibs/corlib/src/UInt64.bf @@ -16,7 +16,12 @@ namespace System public static int operator<=>(UInt64 a, UInt64 b) { - return (uint64)a <=> (uint64)b; + return (SelfBase)a <=> (SelfBase)b; + } + + public static Self operator+(Self lhs, Self rhs) + { + return (SelfBase)lhs + (SelfBase)rhs; } int IHashable.GetHashCode()