home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / APCHSSL2.ZIP / OS2HTTPD / jserv / com / netscape / javascript / Arguments.class (.txt) next >
Encoding:
Java Class File  |  1999-04-09  |  2.3 KB  |  81 lines

  1. package com.netscape.javascript;
  2.  
  3. class Arguments extends ScriptableObject {
  4.    private NativeCall activation;
  5.    private Object[] args;
  6.    private boolean hasCaller;
  7.  
  8.    public Object get(String var1, Scriptable var2) {
  9.       if (this.hasCaller && var1.equals("caller")) {
  10.          NativeCall var3 = this.activation.caller;
  11.          return var3 != null && var3.originalArgs != null ? ((ScriptableObject)var3).get("arguments", var3) : null;
  12.       } else {
  13.          return super.get(var1, var2);
  14.       }
  15.    }
  16.  
  17.    public Object get(int var1, Scriptable var2) {
  18.       if (var1 >= 0 && var1 < this.args.length) {
  19.          NativeFunction var3 = this.activation.funObj;
  20.          return var1 < var3.argCount ? this.activation.get(var3.names[var1 + 1], this.activation) : this.args[var1];
  21.       } else {
  22.          return super.get(var1, var2);
  23.       }
  24.    }
  25.  
  26.    public void put(String var1, Scriptable var2, Object var3) {
  27.       if (var1.equals("caller")) {
  28.          this.hasCaller = false;
  29.       }
  30.  
  31.       super.put(var1, var2, var3);
  32.    }
  33.  
  34.    public void put(int var1, Scriptable var2, Object var3) {
  35.       if (var1 >= 0 && var1 < this.args.length) {
  36.          NativeFunction var4 = this.activation.funObj;
  37.          if (var1 < var4.argCount) {
  38.             this.activation.put(var4.names[var1 + 1], this.activation, var3);
  39.          } else {
  40.             this.args[var1] = var3;
  41.          }
  42.       } else {
  43.          super.put(var1, var2, var3);
  44.       }
  45.    }
  46.  
  47.    public Arguments(NativeCall var1) {
  48.       this.activation = var1;
  49.       Scriptable var2 = ((ScriptableObject)var1).getParentScope();
  50.       ((ScriptableObject)this).setParentScope(var2);
  51.       ((ScriptableObject)this).setPrototype(ScriptableObject.getObjectPrototype(var2));
  52.       this.args = var1.getOriginalArguments();
  53.       int var3 = this.args.length;
  54.       NativeFunction var4 = var1.funObj;
  55.       ((ScriptableObject)this).defineProperty("length", new Integer(var3), 2);
  56.       ((ScriptableObject)this).defineProperty("callee", var4, 2);
  57.       this.hasCaller = var1.funObj.version <= 130;
  58.    }
  59.  
  60.    public boolean has(String var1, Scriptable var2) {
  61.       return this.hasCaller && var1.equals("caller") || super.has(var1, var2);
  62.    }
  63.  
  64.    public boolean has(int var1, Scriptable var2) {
  65.       Object[] var3 = this.activation.getOriginalArguments();
  66.       return var1 >= 0 && var1 < var3.length || super.has(var1, var2);
  67.    }
  68.  
  69.    public void delete(String var1) {
  70.       if (var1.equals("caller")) {
  71.          this.hasCaller = false;
  72.       }
  73.  
  74.       super.delete(var1);
  75.    }
  76.  
  77.    public String getClassName() {
  78.       return "Arguments";
  79.    }
  80. }
  81.