1/* double.asc -- written by Alexis WILKE for Made to Order Software Corp. (c) 2005-2009 */ 2 3/* 4 5Copyright (c) 2005-2009 Made to Order Software Corp. 6 7Permission is hereby granted, free of charge, to any 8person obtaining a copy of this software and 9associated documentation files (the "Software"), to 10deal in the Software without restriction, including 11without limitation the rights to use, copy, modify, 12merge, publish, distribute, sublicense, and/or sell 13copies of the Software, and to permit persons to whom 14the Software is furnished to do so, subject to the 15following conditions: 16 17The above copyright notice and this permission notice 18shall be included in all copies or substantial 19portions of the Software. 20 21THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 22ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 23LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 24FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO 25EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 26LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 27WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 28ARISING FROM, OUT OF OR IN CONNECTION WITH THE 29SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30SOFTWARE. 31 32*/ 33 34 35intrinsic package Global 36{ 37 class Double 38 { 39 function Double(obj : Object) : Void; 40 function toString(base : Integer) : String; 41 function valueOf(Void) : Double; 42 43 // unary operators 44 function "+" (d : Double) : Double; 45 function "-" (d : Double) : Double; 46 function "++" (d : Double) : Double; 47 function "--" (d : Double) : Double; 48 function "~" (d : Double) : Double; 49 function "!" (d : Double) : Double; 50 51 // binary operators 52 function "**" (dl : Double, dr : Double) : Double; 53 function "*" (dl : Double, dr : Double) : Double; 54 function "/" (dl : Double, dr : Double) : Double; 55 function "%" (dl : Double, dr : Double) : Double; 56 function "+" (dl : Double, dr : Double) : Double; 57 function "-" (dl : Double, dr : Double) : Double; 58 function "<<" (dl : Double, dr : Double) : Double; 59 function ">>" (dl : Double, dr : Double) : Double; 60 function ">>>" (dl : Double, dr : Double) : Double; 61 function "!>" (dl : Double, dr : Double) : Double; 62 function "!<" (dl : Double, dr : Double) : Double; 63 function "?>" (dl : Double, dr : Double) : Double; 64 function "?<" (dl : Double, dr : Double) : Double; 65 function "&" (dl : Double, dr : Double) : Double; 66 function "^" (dl : Double, dr : Double) : Double; 67 function "|" (dl : Double, dr : Double) : Double; 68 69 function "**" (dl : Double, ir : Integer) : Double; 70 function "*" (dl : Double, ir : Integer) : Double; 71 function "/" (dl : Double, ir : Integer) : Double; 72 function "%" (dl : Double, ir : Integer) : Double; 73 function "+" (dl : Double, ir : Integer) : Double; 74 function "-" (dl : Double, ir : Integer) : Double; 75 function "<<" (dl : Double, ir : Integer) : Double; 76 function ">>" (dl : Double, ir : Integer) : Double; 77 function ">>>" (dl : Double, ir : Integer) : Double; 78 function "!>" (dl : Double, ir : Integer) : Double; 79 function "!<" (dl : Double, ir : Integer) : Double; 80 function "?>" (dl : Double, ir : Integer) : Double; 81 function "?<" (dl : Double, ir : Integer) : Double; 82 function "&" (dl : Double, ir : Integer) : Double; 83 function "^" (dl : Double, ir : Integer) : Double; 84 function "|" (dl : Double, ir : Integer) : Double; 85 86 function "**" (il : Integer, dr : Double) : Double; 87 function "*" (il : Integer, dr : Double) : Double; 88 function "/" (il : Integer, dr : Double) : Double; 89 function "%" (il : Integer, dr : Double) : Double; 90 function "+" (il : Integer, dr : Double) : Double; 91 function "-" (il : Integer, dr : Double) : Double; 92 function "<<" (il : Integer, dr : Double) : Double; 93 function ">>" (il : Integer, dr : Double) : Double; 94 function ">>>" (il : Integer, dr : Double) : Double; 95 function "!>" (il : Integer, dr : Double) : Double; 96 function "!<" (il : Integer, dr : Double) : Double; 97 function "?>" (il : Integer, dr : Double) : Double; 98 function "?<" (il : Integer, dr : Double) : Double; 99 function "&" (il : Integer, dr : Double) : Double; 100 function "^" (il : Integer, dr : Double) : Double; 101 function "|" (il : Integer, dr : Double) : Double; 102 103 // assignment operators 104 function "**=" (dl : Double, dr : Double) : Double; 105 function "*=" (dl : Double, dr : Double) : Double; 106 function "/=" (dl : Double, dr : Double) : Double; 107 function "%=" (dl : Double, dr : Double) : Double; 108 function "+=" (dl : Double, dr : Double) : Double; 109 function "-=" (dl : Double, dr : Double) : Double; 110 function "<<=" (dl : Double, dr : Double) : Double; 111 function ">>=" (dl : Double, dr : Double) : Double; 112 function ">>>=" (dl : Double, dr : Double) : Double; 113 function "!>=" (dl : Double, dr : Double) : Double; 114 function "!<=" (dl : Double, dr : Double) : Double; 115 function "?>=" (dl : Double, dr : Double) : Double; 116 function "?<=" (dl : Double, dr : Double) : Double; 117 function "&=" (dl : Double, dr : Double) : Double; 118 function "^=" (dl : Double, dr : Double) : Double; 119 function "|=" (dl : Double, dr : Double) : Double; 120 121 function "**=" (dl : Double, ir : Integer) : Double; 122 function "*=" (dl : Double, ir : Integer) : Double; 123 function "/=" (dl : Double, ir : Integer) : Double; 124 function "%=" (dl : Double, ir : Integer) : Double; 125 function "+=" (dl : Double, ir : Integer) : Double; 126 function "-=" (dl : Double, ir : Integer) : Double; 127 function "<<=" (dl : Double, ir : Integer) : Double; 128 function ">>=" (dl : Double, ir : Integer) : Double; 129 function ">>>=" (dl : Double, ir : Integer) : Double; 130 function "!>=" (dl : Double, ir : Integer) : Double; 131 function "!<=" (dl : Double, ir : Integer) : Double; 132 function "?>=" (dl : Double, ir : Integer) : Double; 133 function "?<=" (dl : Double, ir : Integer) : Double; 134 function "&=" (dl : Double, ir : Integer) : Double; 135 function "^=" (dl : Double, ir : Integer) : Double; 136 function "|=" (dl : Double, ir : Integer) : Double; 137 138 // comparison operators 139 function "==" (dl : Double, dr : Double) : Boolean; 140 function "===" (dl : Double, dr : Double) : Boolean; 141 function "!=" (dl : Double, dr : Double) : Boolean; 142 function "!==" (dl : Double, dr : Double) : Boolean; 143 function "<" (dl : Double, dr : Double) : Boolean; 144 function "<=" (dl : Double, dr : Double) : Boolean; 145 function ">" (dl : Double, dr : Double) : Boolean; 146 function ">=" (dl : Double, dr : Double) : Boolean; 147 148 function "==" (dl : Double, ir : Integer) : Boolean; 149 function "===" (dl : Double, ir : Integer) : Boolean; 150 function "!=" (dl : Double, ir : Integer) : Boolean; 151 function "!==" (dl : Double, ir : Integer) : Boolean; 152 function "<" (dl : Double, ir : Integer) : Boolean; 153 function "<=" (dl : Double, ir : Integer) : Boolean; 154 function ">" (dl : Double, ir : Integer) : Boolean; 155 function ">=" (dl : Double, ir : Integer) : Boolean; 156 157 function "==" (il : Integer, dr : Double) : Boolean; 158 function "===" (il : Integer, dr : Double) : Boolean; 159 function "!=" (il : Integer, dr : Double) : Boolean; 160 function "!==" (il : Integer, dr : Double) : Boolean; 161 function "<" (il : Integer, dr : Double) : Boolean; 162 function "<=" (il : Integer, dr : Double) : Boolean; 163 function ">" (il : Integer, dr : Double) : Boolean; 164 function ">=" (il : Integer, dr : Double) : Boolean; 165 166 const var MAX_VALUE : Double; 167 const var MIN_VALUE : Double; 168 const var NaN : Double; 169 const var Infinity : Double; 170 const var NEGATIVE_INFINITY : Double = -Infinity; 171 const var POSITIVE_INFINITY : Double = Infinity; 172 } 173 174 // Number, we define those as Double because Number 175 // includes Double and Integer and we don't have 176 // dual inheritance available in Javascript. 177 class Number extends Double; 178 179 // Machine types (it is only internally that these types are 180 // really machine types, for my own sake, here it is just like 181 // the main type) 182 class Float extends Double 183 { 184 const var MAX_VALUE : Float; 185 const var MIN_VALUE : Float; 186 const var NaN : Float; 187 const var Infinity : Float; 188 const var NEGATIVE_INFINITY : Float = -Infinity; 189 const var POSITIVE_INFINITY : Float = Infinity; 190 } 191 192 function isFinite(value : Double) : Boolean; 193 function isNaN(value : Double) : Boolean; 194 195 function parseFloat(string : String) : Double; 196} 197 198