From 6d4ccd3b3f7029ba56643f1c0ae77226e4473760 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 6 Aug 2007 07:12:51 +0000 Subject: [PATCH] * operators for clongdouble git-svn-id: trunk@8229 - --- rtl/inc/ctypes.pp | 216 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) diff --git a/rtl/inc/ctypes.pp b/rtl/inc/ctypes.pp index 4a5ca3c973..40f52ad797 100644 --- a/rtl/inc/ctypes.pp +++ b/rtl/inc/ctypes.pp @@ -112,12 +112,48 @@ type {$ifdef longdouble_assignment_overload_real80} operator := (const v:clongdouble) r:extended;inline; operator := (const v:extended) r:clongdouble;inline; +operator +(const e:Extended;const c:clongdouble) r:extended;inline; +operator +(const c:clongdouble;const e:Extended) r:extended;inline; +operator -(const e:Extended;const c:clongdouble) r:extended;inline; +operator -(const c:clongdouble;const e:Extended) r:extended;inline; +operator *(const e:Extended;const c:clongdouble) r:extended;inline; +operator *(const c:clongdouble;const e:Extended) r:extended;inline; +operator /(const e:Extended;const c:clongdouble) r:extended;inline; +operator /(const c:clongdouble;const e:Extended) r:extended;inline; +operator =(const e:Extended;const c:clongdouble) r:boolean;inline; +operator =(const c:clongdouble;const e:Extended) r:boolean;inline; +operator <(const e:Extended;const c:clongdouble) r:boolean;inline; +operator <(const c:clongdouble;const e:Extended) r:boolean;inline; +operator >(const e:Extended;const c:clongdouble) r:boolean;inline; +operator >(const c:clongdouble;const e:Extended) r:boolean;inline; +operator >=(const e:Extended;const c:clongdouble) r:boolean;inline; +operator >=(const c:clongdouble;const e:Extended) r:boolean;inline; +operator <=(const e:Extended;const c:clongdouble) r:boolean;inline; +operator <=(const c:clongdouble;const e:Extended) r:boolean;inline; {$endif} {$ifdef longdouble_assignment_overload_real128} {Non-x86 typically doesn't have extended. To be fixed once this changes.} operator := (const v:clongdouble) r:double;inline; operator := (const v:double) r:clongdouble;inline; +operator +(const e:Double;const c:clongdouble) r:Double;inline; +operator +(const c:clongdouble;const e:Double) r:Double;inline; +operator -(const e:Double;const c:clongdouble) r:Double;inline; +operator -(const c:clongdouble;const e:Double) r:Double;inline; +operator *(const e:Double;const c:clongdouble) r:Double;inline; +operator *(const c:clongdouble;const e:Double) r:Double;inline; +operator /(const e:Double;const c:clongdouble) r:Double;inline; +operator /(const c:clongdouble;const e:Double) r:Double;inline; +operator =(const e:Double;const c:clongdouble) r:boolean;inline; +operator =(const c:clongdouble;const e:Double) r:boolean;inline; +operator <(const e:Double;const c:clongdouble) r:boolean;inline; +operator <(const c:clongdouble;const e:Double) r:boolean;inline; +operator >(const e:Double;const c:clongdouble) r:boolean;inline; +operator >(const c:clongdouble;const e:Double) r:boolean;inline; +operator >=(const e:Double;const c:clongdouble) r:boolean;inline; +operator >=(const c:clongdouble;const e:Double) r:boolean;inline; +operator <=(const e:Double;const c:clongdouble) r:boolean;inline; +operator <=(const c:clongdouble;const e:Double) r:boolean;inline; {$endif} implementation @@ -134,6 +170,96 @@ operator := (const v:extended) r:clongdouble; begin r.value:=v; end; + +operator +(const e:Extended;const c:clongdouble) r:extended;inline; +begin + r:=e+c.value; +end; + +operator +(const c:clongdouble;const e:Extended) r:extended;inline; +begin + r:=c.value+e; +end; + +operator -(const e:Extended;const c:clongdouble) r:extended;inline; +begin + r:=e-c.value; +end; + +operator -(const c:clongdouble;const e:Extended) r:extended;inline; +begin + r:=c.value-e; +end; + +operator *(const e:Extended;const c:clongdouble) r:extended;inline; +begin + r:=e*c.value; +end; + +operator *(const c:clongdouble;const e:Extended) r:extended;inline; +begin + r:=c.value*e; +end; + +operator /(const e:Extended;const c:clongdouble) r:extended;inline; +begin + r:=e/c.value; +end; + +operator /(const c:clongdouble;const e:Extended) r:extended;inline; +begin + r:=c.value/e; +end; + +operator =(const e:Extended;const c:clongdouble) r:boolean;inline; +begin + r:=e=c.value; +end; + +operator =(const c:clongdouble;const e:Extended) r:boolean;inline; +begin + r:=c.value=e; +end; + +operator <(const e:Extended;const c:clongdouble) r:boolean;inline; +begin + r:=e(const e:Extended;const c:clongdouble) r:boolean;inline; +begin + r:=e>c.value; +end; + +operator >(const c:clongdouble;const e:Extended) r:boolean;inline; +begin + r:=c.value>e; +end; + +operator >=(const e:Extended;const c:clongdouble) r:boolean;inline; +begin + r:=e>=c.value; +end; + +operator >=(const c:clongdouble;const e:Extended) r:boolean;inline; +begin + r:=c.value>=e; +end; + +operator <=(const e:Extended;const c:clongdouble) r:boolean;inline; +begin + r:=e<=c.value; +end; + +operator <=(const c:clongdouble;const e:Extended) r:boolean;inline; +begin + r:=c.value<=e; +end; {$endif} {$ifdef longdouble_assignment_overload_real128} @@ -161,6 +287,96 @@ begin Pcardinal(@r[r128_mantissa_ofs+8])^:=0; Pword(@r[r128_mantissa_ofs+12])^:=0; end; + +operator +(const e:Double;const c:clongdouble) r:Double;inline; +begin + r:=e+c.value; +end; + +operator +(const c:clongdouble;const e:Double) r:Double;inline; +begin + r:=c.value+e; +end; + +operator -(const e:Double;const c:clongdouble) r:Double;inline; +begin + r:=e-c.value; +end; + +operator -(const c:clongdouble;const e:Double) r:Double;inline; +begin + r:=c.value-e; +end; + +operator *(const e:Double;const c:clongdouble) r:Double;inline; +begin + r:=e*c.value; +end; + +operator *(const c:clongdouble;const e:Double) r:Double;inline; +begin + r:=c.value*e; +end; + +operator /(const e:Double;const c:clongdouble) r:Double;inline; +begin + r:=e/c.value; +end; + +operator /(const c:clongdouble;const e:Double) r:Double;inline; +begin + r:=c.value/e; +end; + +operator =(const e:Double;const c:clongdouble) r:boolean;inline; +begin + r:=e=c.value; +end; + +operator =(const c:clongdouble;const e:Double) r:boolean;inline; +begin + r:=c.value=e; +end; + +operator <(const e:Double;const c:clongdouble) r:boolean;inline; +begin + r:=e(const e:Double;const c:clongdouble) r:boolean;inline; +begin + r:=e>c.value; +end; + +operator >(const c:clongdouble;const e:Double) r:boolean;inline; +begin + r:=c.value>e; +end; + +operator >=(const e:Double;const c:clongdouble) r:boolean;inline; +begin + r:=e>=c.value; +end; + +operator >=(const c:clongdouble;const e:Double) r:boolean;inline; +begin + r:=c.value>=e; +end; + +operator <=(const e:Double;const c:clongdouble) r:boolean;inline; +begin + r:=e<=c.value; +end; + +operator <=(const c:clongdouble;const e:Double) r:boolean;inline; +begin + r:=c.value<=e; +end; {$endif} end.