home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 August / PCO0897.ISO / filesbbs / os2 / fp1os2.arj / OS2 / DATA / 49 / C / 0 / F_26836 / JScriptCallLevelInstance.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-05-15  |  6.0 KB  |  238 lines

  1. class JScriptCallLevelInstance extends JSbxObject implements JSbxPropertyInterface {
  2.    public static final String ARGUMENTS_NAME = "arguments";
  3.    public static final String LENGTH_NAME = "length";
  4.    private JSbxObject aLocalVarObject;
  5.    private JScriptRuntimeInstance aRuntime;
  6.    private JScriptMethod aMethod;
  7.    private JSbxObject aThisObj;
  8.    private JScriptArgumentsObject aArgObject;
  9.    private JSbxProperty aArgObjectProp;
  10.    private JSbxStack aForInStack;
  11.    public int nCall;
  12.  
  13.    public JSbxObject GetLocalVarObject() {
  14.       return this.aLocalVarObject;
  15.    }
  16.  
  17.    public JScriptMethod GetMethod() {
  18.       return this.aMethod;
  19.    }
  20.  
  21.    public JSbxObject GetThisObj() {
  22.       return this.aThisObj;
  23.    }
  24.  
  25.    public JScriptArgumentsObject GetArgumentsObject() {
  26.       return this.aArgObject;
  27.    }
  28.  
  29.    public JSbxProperty GetArgumentsProperty() {
  30.       return this.aArgObjectProp;
  31.    }
  32.  
  33.    public JSbxStack GetForInStack() {
  34.       if (this.aForInStack == null) {
  35.          this.aForInStack = new JSbxStack(5);
  36.       }
  37.  
  38.       return this.aForInStack;
  39.    }
  40.  
  41.    public void InitForIn(JSbxProperty var1, JSbxObject var2) {
  42.       JScriptForInRuntimeItem var3 = new JScriptForInRuntimeItem(var1, var2);
  43.       this.GetForInStack().Push(var3);
  44.    }
  45.  
  46.    public boolean NextForIn() throws JSbxException {
  47.       JScriptForInRuntimeItem var1 = (JScriptForInRuntimeItem)this.GetForInStack().Peek();
  48.       JSbxObject var2 = var1.aForInObj;
  49.       if (var2 == null) {
  50.          return false;
  51.       } else {
  52.          int var3 = var1.nNextPropIndex++;
  53.          JSbxProperty var4 = var2.GetHistoryArrayEntry(var3);
  54.          if (var4 != null) {
  55.             JSbxValue var5 = new JSbxValue(var4.GetName());
  56.             var1.aForInProp.Put(var5);
  57.             return true;
  58.          } else {
  59.             return false;
  60.          }
  61.       }
  62.    }
  63.  
  64.    public void ClrForIn() {
  65.       this.GetForInStack().Pop();
  66.    }
  67.  
  68.    public JScriptCallLevelInstance(JScriptRuntimeInstance var1, int var2) {
  69.       this.aRuntime = var1;
  70.       this.aArgObject = new JScriptArgumentsObject(this);
  71.       this.aArgObjectProp = new JSbxValueProperty("arguments", (JSbxObject)null, new JSbxValue(this.aArgObject));
  72.       this.nCall = var2;
  73.    }
  74.  
  75.    public void DeInitCall() {
  76.       super.aNameArray = null;
  77.       super.aSearchObjectStack = null;
  78.       super.aHistoryArray = null;
  79.       this.aLocalVarObject = null;
  80.       if (this.aMethod.pPropUser == this) {
  81.          this.aMethod.pPropUser = null;
  82.       }
  83.  
  84.    }
  85.  
  86.    public void InitCall(JScriptMethod var1, JScriptCallParam var2, boolean var3) throws JSbxException {
  87.       JScriptManager var4 = this.aRuntime.GetJSManager();
  88.       JSbxVector var5 = var2.GetParamVector();
  89.       this.aMethod = var1;
  90.       this.aThisObj = var2.GetThisObj();
  91.       if (this.aThisObj == null) {
  92.          this.aThisObj = var4.GetRootObject();
  93.       }
  94.  
  95.       this.aLocalVarObject = new JSbxObject();
  96.       int var6 = var5 != null ? var5.GetSize() : 0;
  97.       if (var6 > 0) {
  98.          for(int var7 = 0; var7 < var6; ++var7) {
  99.             JSbxValue var8 = (JSbxValue)var5.Get(var7);
  100.             JSbxValueProperty var9 = (JSbxValueProperty)((JSbxObject)this).GetIndexArray().Get(var7);
  101.             if (var9 == null) {
  102.                var9 = new JSbxValueProperty(String.valueOf(var7), this.aMethod, var8);
  103.                ((JSbxObject)this).GetIndexArray().Put(var7, var9);
  104.             } else {
  105.                var9.SetValue(var8);
  106.                this.aArgObjectProp.SetThisParentObj(this.aMethod);
  107.             }
  108.          }
  109.       }
  110.  
  111.       boolean var15 = false;
  112.       if (this.aMethod.pPropUser == null) {
  113.          this.aMethod.pPropUser = this;
  114.          var15 = true;
  115.       }
  116.  
  117.       String[] var16 = this.aMethod.GetParameterList();
  118.       if (var16 != null) {
  119.          int var18 = var16.length;
  120.  
  121.          for(int var10 = 0; var10 < var18; ++var10) {
  122.             Object var11;
  123.             if (var10 < var6) {
  124.                if (var15) {
  125.                   var11 = this.aMethod.aObjectPropBuffer[var10];
  126.                   ((JSbxObjectProperty)var11).SetValueInterface(this);
  127.                } else {
  128.                   var11 = new JSbxObjectProperty(var16[var10], this.aMethod, this, var10);
  129.                }
  130.             } else if (var15) {
  131.                var11 = this.aMethod.aValuePropBuffer[var10];
  132.                ((JSbxValueProperty)var11).SetValue((JSbxValue)null);
  133.             } else {
  134.                var11 = new JSbxValueProperty(var16[var10], this.aMethod, new JSbxValue());
  135.             }
  136.  
  137.             this.aLocalVarObject.GetNameArray().Put((JSbxProperty)var11);
  138.          }
  139.       }
  140.  
  141.       String[] var19 = this.aMethod.GetLocalVarList();
  142.       if (var19 != null) {
  143.          int var20 = var19.length;
  144.  
  145.          for(int var22 = 0; var22 < var20; ++var22) {
  146.             JSbxValueProperty var12;
  147.             if (var15) {
  148.                var12 = this.aMethod.aLocalVarPropBuffer[var22];
  149.                ((JSbxValueProperty)var12).SetValue((JSbxValue)null);
  150.             } else {
  151.                var12 = new JSbxValueProperty(var19[var22], this.aMethod, new JSbxValue());
  152.             }
  153.  
  154.             try {
  155.                this.aLocalVarObject.GetNameArray().Put(var12);
  156.             } catch (JSbxException var14) {
  157.                if (((JSbxExceptionBase)var14).GetError() != 4714) {
  158.                   throw var14;
  159.                }
  160.             }
  161.          }
  162.       }
  163.  
  164.       if (!this.aMethod.IsModuleCodeFunction()) {
  165.          this.aArgObject.InitCall(var6, this.aMethod);
  166.          this.aArgObjectProp.SetThisParentObj(this.aMethod);
  167.          this.aLocalVarObject.GetNameArray().Put(this.aArgObjectProp);
  168.          if (!this.aMethod.bHasLengthAsParam) {
  169.             this.aLocalVarObject.GetNameArray().Put(this.aArgObject.GetParamCountProp());
  170.          }
  171.       }
  172.  
  173.       JSbxObject var21 = this.GetActualRootObject(this.aRuntime);
  174.       ((JSbxObject)this).PushSearchObject(var21);
  175.       if (var3) {
  176.          JSbxObject var23 = var4.GetDocumentObject();
  177.          if (var23 != this.aThisObj) {
  178.             ((JSbxObject)this).PushSearchObject(var23);
  179.          }
  180.  
  181.          JSbxObject var24 = var4.GetFormObject(this.aThisObj);
  182.          if (var24 != null && var24 != this.aThisObj) {
  183.             ((JSbxObject)this).PushSearchObject(var24);
  184.          }
  185.  
  186.          if (this.aThisObj != var21) {
  187.             ((JSbxObject)this).PushSearchObject(this.aThisObj);
  188.          }
  189.       }
  190.  
  191.       ((JSbxObject)this).PushSearchObject(this.aLocalVarObject);
  192.    }
  193.  
  194.    public JSbxObject GetActualRootObject(JScriptRuntimeInstance var1) {
  195.       JScriptManager var2 = var1.GetJSManager();
  196.       if (this.aMethod instanceof JScriptFunctionObject) {
  197.          return var2.GetRootObject();
  198.       } else {
  199.          JScriptModule var3 = this.aMethod.GetModule();
  200.          JScriptManager var4 = null;
  201.          JSbxObject var5 = null;
  202.          if (var3 != null) {
  203.             var4 = var3.GetJSManager();
  204.          }
  205.  
  206.          if (var4 != null) {
  207.             var5 = var4.GetRootObject();
  208.          }
  209.  
  210.          return var5 != null ? var5 : var2.GetRootObject();
  211.       }
  212.    }
  213.  
  214.    public JSbxProperty Get(String var1, boolean var2) {
  215.       return ((JSbxObject)this).SearchObjectStack(var1, var2);
  216.    }
  217.  
  218.    public void PropertyGet(JSbxObjectProperty var1, JSbxValue var2) throws JSbxException {
  219.       JSbxProperty var3 = ((JSbxObject)this).Get(var1.GetID());
  220.       var3.Get(var2);
  221.    }
  222.  
  223.    public void PropertyPut(JSbxObjectProperty var1, JSbxValue var2) throws JSbxException {
  224.       JSbxProperty var3 = ((JSbxObject)this).Get(var1.GetID());
  225.       var3.Put(var2);
  226.    }
  227.  
  228.    public JSbxValue PropertyCallFunction(JSbxObjectProperty var1, JScriptCallParam var2) throws JSbxExceptionBase {
  229.       JSbxProperty var3 = ((JSbxObject)this).Get(var1.GetID());
  230.       return var3.CallFunction(var2);
  231.    }
  232.  
  233.    public String Property_GetJScript_typeofString(JSbxObjectProperty var1) {
  234.       JSbxProperty var2 = ((JSbxObject)this).Get(var1.GetID());
  235.       return var2.GetJScript_typeofString();
  236.    }
  237. }
  238.