浏览代码

* operators for clongdouble

git-svn-id: trunk@8229 -
peter 18 年之前
父节点
当前提交
6d4ccd3b3f
共有 1 个文件被更改,包括 216 次插入0 次删除
  1. 216 0
      rtl/inc/ctypes.pp

+ 216 - 0
rtl/inc/ctypes.pp

@@ -112,12 +112,48 @@ type
 {$ifdef longdouble_assignment_overload_real80}
 {$ifdef longdouble_assignment_overload_real80}
 operator := (const v:clongdouble) r:extended;inline;
 operator := (const v:clongdouble) r:extended;inline;
 operator := (const v:extended) r:clongdouble;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}
 {$endif}
 
 
 {$ifdef longdouble_assignment_overload_real128}
 {$ifdef longdouble_assignment_overload_real128}
 {Non-x86 typically doesn't have extended. To be fixed once this changes.}
 {Non-x86 typically doesn't have extended. To be fixed once this changes.}
 operator := (const v:clongdouble) r:double;inline;
 operator := (const v:clongdouble) r:double;inline;
 operator := (const v:double) r:clongdouble;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}
 {$endif}
 
 
 implementation
 implementation
@@ -134,6 +170,96 @@ operator := (const v:extended) r:clongdouble;
 begin
 begin
   r.value:=v;
   r.value:=v;
 end;
 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<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;
+
+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}
 {$endif}
 
 
 {$ifdef longdouble_assignment_overload_real128}
 {$ifdef longdouble_assignment_overload_real128}
@@ -161,6 +287,96 @@ begin
   Pcardinal(@r[r128_mantissa_ofs+8])^:=0;
   Pcardinal(@r[r128_mantissa_ofs+8])^:=0;
   Pword(@r[r128_mantissa_ofs+12])^:=0;
   Pword(@r[r128_mantissa_ofs+12])^:=0;
 end;
 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<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;
+
+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}
 {$endif}
 
 
 end.
 end.