home *** CD-ROM | disk | FTP | other *** search
- package com.netscape.javascript;
-
- class Arguments extends ScriptableObject {
- private NativeCall activation;
- private Object[] args;
- private boolean hasCaller;
-
- public Object get(String var1, Scriptable var2) {
- if (this.hasCaller && var1.equals("caller")) {
- NativeCall var3 = this.activation.caller;
- return var3 != null && var3.originalArgs != null ? ((ScriptableObject)var3).get("arguments", var3) : null;
- } else {
- return super.get(var1, var2);
- }
- }
-
- public Object get(int var1, Scriptable var2) {
- if (var1 >= 0 && var1 < this.args.length) {
- NativeFunction var3 = this.activation.funObj;
- return var1 < var3.argCount ? this.activation.get(var3.names[var1 + 1], this.activation) : this.args[var1];
- } else {
- return super.get(var1, var2);
- }
- }
-
- public void put(String var1, Scriptable var2, Object var3) {
- if (var1.equals("caller")) {
- this.hasCaller = false;
- }
-
- super.put(var1, var2, var3);
- }
-
- public void put(int var1, Scriptable var2, Object var3) {
- if (var1 >= 0 && var1 < this.args.length) {
- NativeFunction var4 = this.activation.funObj;
- if (var1 < var4.argCount) {
- this.activation.put(var4.names[var1 + 1], this.activation, var3);
- } else {
- this.args[var1] = var3;
- }
- } else {
- super.put(var1, var2, var3);
- }
- }
-
- public Arguments(NativeCall var1) {
- this.activation = var1;
- Scriptable var2 = ((ScriptableObject)var1).getParentScope();
- ((ScriptableObject)this).setParentScope(var2);
- ((ScriptableObject)this).setPrototype(ScriptableObject.getObjectPrototype(var2));
- this.args = var1.getOriginalArguments();
- int var3 = this.args.length;
- NativeFunction var4 = var1.funObj;
- ((ScriptableObject)this).defineProperty("length", new Integer(var3), 2);
- ((ScriptableObject)this).defineProperty("callee", var4, 2);
- this.hasCaller = var1.funObj.version <= 130;
- }
-
- public boolean has(String var1, Scriptable var2) {
- return this.hasCaller && var1.equals("caller") || super.has(var1, var2);
- }
-
- public boolean has(int var1, Scriptable var2) {
- Object[] var3 = this.activation.getOriginalArguments();
- return var1 >= 0 && var1 < var3.length || super.has(var1, var2);
- }
-
- public void delete(String var1) {
- if (var1.equals("caller")) {
- this.hasCaller = false;
- }
-
- super.delete(var1);
- }
-
- public String getClassName() {
- return "Arguments";
- }
- }
-