diff options
author | Egil Moeller <egil.moller@freecode.no> | 2010-03-22 00:16:53 +0100 |
---|---|---|
committer | Egil Moeller <egil.moller@freecode.no> | 2010-03-22 00:16:53 +0100 |
commit | fc00cfedd6c25d1634a1e0d28a7b7bc5f42e1cd7 (patch) | |
tree | 928419d6bfe794865e4b8f0634bd792f795c4b8a /trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java | |
parent | 0fdab3db005c4fa31fb8306b573c0b35073d3e56 (diff) | |
parent | d56b9b3b82cdebcaeb00eec0fcb4326ad21adaa8 (diff) | |
download | etherpad-fc00cfedd6c25d1634a1e0d28a7b7bc5f42e1cd7.tar.gz etherpad-fc00cfedd6c25d1634a1e0d28a7b7bc5f42e1cd7.tar.xz etherpad-fc00cfedd6c25d1634a1e0d28a7b7bc5f42e1cd7.zip |
Merge branch 'master' into plugin-framework
Diffstat (limited to 'trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java')
-rw-r--r-- | trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java | 244 |
1 files changed, 0 insertions, 244 deletions
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java b/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java deleted file mode 100644 index 8fc9fb0..0000000 --- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java +++ /dev/null @@ -1,244 +0,0 @@ -/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Rhino code, released - * May 6, 1999. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1997-1999 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Norris Boyd - * Igor Bukanov - * Mike McCabe - * - * Alternatively, the contents of this file may be used under the terms of - * the GNU General Public License Version 2 or later (the "GPL"), in which - * case the provisions of the GPL are applicable instead of those above. If - * you wish to allow use of your version of this file only under the terms of - * the GPL and not to allow others to use your version of this file under the - * MPL, indicate your decision by deleting the provisions above and replacing - * them with the notice and other provisions required by the GPL. If you do - * not delete the provisions above, a recipient may use your version of this - * file under either the MPL or the GPL. - * - * ***** END LICENSE BLOCK ***** */ - -package org.mozilla.javascript; - -/** - * This class implements the Number native object. - * - * See ECMA 15.7. - * - * @author Norris Boyd - */ -final class NativeNumber extends IdScriptableObject -{ - static final long serialVersionUID = 3504516769741512101L; - - private static final Object NUMBER_TAG = new Object(); - - private static final int MAX_PRECISION = 100; - - static void init(Scriptable scope, boolean sealed) - { - NativeNumber obj = new NativeNumber(0.0); - obj.exportAsJSClass(MAX_PROTOTYPE_ID, scope, sealed); - } - - private NativeNumber(double number) - { - doubleValue = number; - } - - public String getClassName() - { - return "Number"; - } - - protected void fillConstructorProperties(IdFunctionObject ctor) - { - final int attr = ScriptableObject.DONTENUM | - ScriptableObject.PERMANENT | - ScriptableObject.READONLY; - - ctor.defineProperty("NaN", ScriptRuntime.NaNobj, attr); - ctor.defineProperty("POSITIVE_INFINITY", - ScriptRuntime.wrapNumber(Double.POSITIVE_INFINITY), - attr); - ctor.defineProperty("NEGATIVE_INFINITY", - ScriptRuntime.wrapNumber(Double.NEGATIVE_INFINITY), - attr); - ctor.defineProperty("MAX_VALUE", - ScriptRuntime.wrapNumber(Double.MAX_VALUE), - attr); - ctor.defineProperty("MIN_VALUE", - ScriptRuntime.wrapNumber(Double.MIN_VALUE), - attr); - - super.fillConstructorProperties(ctor); - } - - protected void initPrototypeId(int id) - { - String s; - int arity; - switch (id) { - case Id_constructor: arity=1; s="constructor"; break; - case Id_toString: arity=1; s="toString"; break; - case Id_toLocaleString: arity=1; s="toLocaleString"; break; - case Id_toSource: arity=0; s="toSource"; break; - case Id_valueOf: arity=0; s="valueOf"; break; - case Id_toFixed: arity=1; s="toFixed"; break; - case Id_toExponential: arity=1; s="toExponential"; break; - case Id_toPrecision: arity=1; s="toPrecision"; break; - default: throw new IllegalArgumentException(String.valueOf(id)); - } - initPrototypeMethod(NUMBER_TAG, id, s, arity); - } - - public Object execIdCall(IdFunctionObject f, Context cx, Scriptable scope, - Scriptable thisObj, Object[] args) - { - if (!f.hasTag(NUMBER_TAG)) { - return super.execIdCall(f, cx, scope, thisObj, args); - } - int id = f.methodId(); - if (id == Id_constructor) { - double val = (args.length >= 1) - ? ScriptRuntime.toNumber(args[0]) : 0.0; - if (thisObj == null) { - // new Number(val) creates a new Number object. - return new NativeNumber(val); - } - // Number(val) converts val to a number value. - return ScriptRuntime.wrapNumber(val); - } - - // The rest of Number.prototype methods require thisObj to be Number - - if (!(thisObj instanceof NativeNumber)) - throw incompatibleCallError(f); - double value = ((NativeNumber)thisObj).doubleValue; - - switch (id) { - - case Id_toString: - case Id_toLocaleString: - { - // toLocaleString is just an alias for toString for now - int base = (args.length == 0) - ? 10 : ScriptRuntime.toInt32(args[0]); - return ScriptRuntime.numberToString(value, base); - } - - case Id_toSource: - return "(new Number("+ScriptRuntime.toString(value)+"))"; - - case Id_valueOf: - return ScriptRuntime.wrapNumber(value); - - case Id_toFixed: - return num_to(value, args, DToA.DTOSTR_FIXED, - DToA.DTOSTR_FIXED, -20, 0); - - case Id_toExponential: - return num_to(value, args, DToA.DTOSTR_STANDARD_EXPONENTIAL, - DToA.DTOSTR_EXPONENTIAL, 0, 1); - - case Id_toPrecision: - return num_to(value, args, DToA.DTOSTR_STANDARD, - DToA.DTOSTR_PRECISION, 1, 0); - - default: throw new IllegalArgumentException(String.valueOf(id)); - } - } - - public String toString() { - return ScriptRuntime.numberToString(doubleValue, 10); - } - - private static String num_to(double val, - Object[] args, - int zeroArgMode, int oneArgMode, - int precisionMin, int precisionOffset) - { - int precision; - if (args.length == 0) { - precision = 0; - oneArgMode = zeroArgMode; - } else { - /* We allow a larger range of precision than - ECMA requires; this is permitted by ECMA. */ - precision = ScriptRuntime.toInt32(args[0]); - if (precision < precisionMin || precision > MAX_PRECISION) { - String msg = ScriptRuntime.getMessage1( - "msg.bad.precision", ScriptRuntime.toString(args[0])); - throw ScriptRuntime.constructError("RangeError", msg); - } - } - StringBuffer sb = new StringBuffer(); - DToA.JS_dtostr(sb, oneArgMode, precision + precisionOffset, val); - return sb.toString(); - } - -// #string_id_map# - - protected int findPrototypeId(String s) - { - int id; -// #generated# Last update: 2007-05-09 08:15:50 EDT - L0: { id = 0; String X = null; int c; - L: switch (s.length()) { - case 7: c=s.charAt(0); - if (c=='t') { X="toFixed";id=Id_toFixed; } - else if (c=='v') { X="valueOf";id=Id_valueOf; } - break L; - case 8: c=s.charAt(3); - if (c=='o') { X="toSource";id=Id_toSource; } - else if (c=='t') { X="toString";id=Id_toString; } - break L; - case 11: c=s.charAt(0); - if (c=='c') { X="constructor";id=Id_constructor; } - else if (c=='t') { X="toPrecision";id=Id_toPrecision; } - break L; - case 13: X="toExponential";id=Id_toExponential; break L; - case 14: X="toLocaleString";id=Id_toLocaleString; break L; - } - if (X!=null && X!=s && !X.equals(s)) id = 0; - break L0; - } -// #/generated# - return id; - } - - private static final int - Id_constructor = 1, - Id_toString = 2, - Id_toLocaleString = 3, - Id_toSource = 4, - Id_valueOf = 5, - Id_toFixed = 6, - Id_toExponential = 7, - Id_toPrecision = 8, - MAX_PROTOTYPE_ID = 8; - -// #/string_id_map# - - private double doubleValue; -} |