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

  1. import java.io.PrintStream;
  2. import stardiv.tools.HoldJavaEnvironment;
  3.  
  4. public class JSbxObject extends JSbxBase {
  5.    public static final String NOT_SAFE_TO_INSPECT = "*** not safe to inspect ***";
  6.    protected boolean bIsConst;
  7.    protected JSbxNameArray aNameArray;
  8.    protected JSbxIndexArray aIndexArray;
  9.    protected JSbxStack aSearchObjectStack;
  10.    protected JSbxVector aHistoryArray;
  11.    protected JScriptConstructor aConstructorHandle;
  12.    private static long nObjCount;
  13.    protected long pCppJSbxObject;
  14.    private String pTypeInfoStrg;
  15.    private JSbxValueProperty aToStringProp;
  16.    private JSbxValueProperty aValueOfProp;
  17.    private JScriptManager aLifeConnectManager;
  18.    public static final String NO_SUCH_METHOD = "no such method in ";
  19.    public static final String NO_SUCH_PROPERTY = "no such property in ";
  20.    public static final String UNDEFINED_STRG = "undefined";
  21.    private boolean bEvalCallbackDone;
  22.  
  23.    public void setLifeConnectManager(JScriptManager var1) {
  24.       this.aLifeConnectManager = var1;
  25.    }
  26.  
  27.    public JSbxObject() {
  28.       this(0L, (JScriptConstructor)null);
  29.    }
  30.  
  31.    protected JSbxObject(JScriptConstructor var1) {
  32.       this(0L, var1);
  33.    }
  34.  
  35.    public JSbxObject(long var1, JScriptConstructor var3) {
  36.       this.pTypeInfoStrg = null;
  37.       this.aToStringProp = null;
  38.       this.aValueOfProp = null;
  39.       this.pCppJSbxObject = var1;
  40.       this.SetAsChangeable();
  41.       this.Constr();
  42.       this.SetConstructor(var3);
  43.    }
  44.  
  45.    protected void finalize() {
  46.    }
  47.  
  48.    protected void Constr() {
  49.    }
  50.  
  51.    public boolean ExistsNativeHandle() {
  52.       return this.pCppJSbxObject != 0L;
  53.    }
  54.  
  55.    public void ClearNativeHandle() {
  56.       this.pCppJSbxObject = 0L;
  57.    }
  58.  
  59.    public final void SetNativeHandle(long var1) {
  60.       this.pCppJSbxObject = var1;
  61.    }
  62.  
  63.    public final long GetNativeHandle() {
  64.       return this.pCppJSbxObject;
  65.    }
  66.  
  67.    public final int GetNativeHandleInt() {
  68.       return (int)this.pCppJSbxObject;
  69.    }
  70.  
  71.    public static JavaScript GetMyJavaScript() {
  72.       return JScriptManager.GetMyJScriptManager().GetJavaScriptObj();
  73.    }
  74.  
  75.    public final void SetTypeInfoString(String var1) {
  76.       this.pTypeInfoStrg = var1;
  77.    }
  78.  
  79.    public final boolean IsConstant() {
  80.       return this.bIsConst;
  81.    }
  82.  
  83.    protected final void SetAsConstant() {
  84.       this.bIsConst = true;
  85.    }
  86.  
  87.    protected final void SetAsChangeable() {
  88.       this.bIsConst = false;
  89.    }
  90.  
  91.    public JSbxProperty GetHistoryArrayEntry(int var1) {
  92.       JSbxVector var2 = this.GetHistoryArray();
  93.       int var3 = var2.GetSize();
  94.       if (var1 < var3) {
  95.          return (JSbxProperty)var2.Get(var1);
  96.       } else {
  97.          if (this.pCppJSbxObject != 0L) {
  98.             JSbxObject var4 = this.GetObject_Index(var1 - var3);
  99.             if (var4 != null) {
  100.                JSbxProperty var5 = var4.Get("name", false);
  101.                String var6 = String.valueOf(var1 - var3);
  102.                if (var5 != null) {
  103.                   JSbxValue var7 = new JSbxValue();
  104.  
  105.                   try {
  106.                      var5.Get(var7);
  107.                      var6 = var7.GetString();
  108.                   } catch (JSbxException var8) {
  109.                   }
  110.                }
  111.  
  112.                JSbxValue var9 = new JSbxValue(var4);
  113.                return new JSbxValueProperty(var6, (JSbxObject)null, var9);
  114.             }
  115.          }
  116.  
  117.          return null;
  118.       }
  119.    }
  120.  
  121.    public void ClrAllVariables() {
  122.       this.aNameArray = null;
  123.       this.aIndexArray = null;
  124.       this.aSearchObjectStack = null;
  125.       this.aHistoryArray = null;
  126.    }
  127.  
  128.    public final void SetConstructor(JScriptConstructor var1) {
  129.       if (this.aConstructorHandle != var1) {
  130.          this.aConstructorHandle = var1;
  131.          if (this.aConstructorHandle != null) {
  132.             this.aConstructorHandle.CreateObjectProperties(this);
  133.          }
  134.  
  135.       }
  136.    }
  137.  
  138.    public final JScriptConstructor GetConstructor() {
  139.       return this.aConstructorHandle;
  140.    }
  141.  
  142.    public final void SetToStringProperty(JSbxValueProperty var1) {
  143.       this.aToStringProp = var1;
  144.    }
  145.  
  146.    public final JSbxValueProperty GetToStringProperty() {
  147.       return this.aToStringProp;
  148.    }
  149.  
  150.    public final void SetValueOfProperty(JSbxValueProperty var1) {
  151.       this.aValueOfProp = var1;
  152.    }
  153.  
  154.    public final JSbxValueProperty GetValueOfProperty() {
  155.       return this.aValueOfProp;
  156.    }
  157.  
  158.    public void Put(JSbxProperty var1) throws JSbxException {
  159.       if (!this.IsConstant()) {
  160.          this.GetNameArray().Put(var1);
  161.          if (((JSbxBase)var1).IsReset(4)) {
  162.             this.GetHistoryArray().Add(var1);
  163.          }
  164.       }
  165.  
  166.    }
  167.  
  168.    public JSbxProperty Get(String var1) {
  169.       return this.Get(var1, false);
  170.    }
  171.  
  172.    public JSbxProperty Get(String var1, boolean var2) {
  173.       Object var3 = this.GetNameArray().Get(var1);
  174.       if (var3 == null && this.aConstructorHandle != null) {
  175.          var3 = this.aConstructorHandle.CtorGet(var1, false);
  176.          if (var3 != null) {
  177.             ((JSbxProperty)var3).SetThisParentObj(this);
  178.          }
  179.       }
  180.  
  181.       if (var3 == null) {
  182.          var3 = this.SearchObjectStack(var1, var2);
  183.          if (var3 == null && this.pCppJSbxObject != 0L) {
  184.             try {
  185.                if (HoldJavaEnvironment.CanIAskApplication()) {
  186.                   JSbxObject var4 = this.GetObject(var1);
  187.                   if (var4 != null) {
  188.                      var3 = new JSbxValueProperty(var1, var4, new JSbxValue(var4));
  189.                   }
  190.                }
  191.             } catch (UnsatisfiedLinkError var6) {
  192.             }
  193.          }
  194.  
  195.          if (var3 == null && var2) {
  196.             var3 = new JSbxValueProperty(var1, this);
  197.  
  198.             try {
  199.                this.Put((JSbxProperty)var3);
  200.             } catch (JSbxException var5) {
  201.             }
  202.          }
  203.       }
  204.  
  205.       return (JSbxProperty)var3;
  206.    }
  207.  
  208.    public void Put(int var1, JSbxProperty var2) {
  209.       if (!this.IsConstant()) {
  210.          this.GetIndexArray().Put(var1, var2);
  211.       }
  212.  
  213.    }
  214.  
  215.    public JSbxProperty Get(int var1) {
  216.       return this.Get(var1, false);
  217.    }
  218.  
  219.    public JSbxProperty Get(int var1, boolean var2) {
  220.       Object var3 = (JSbxProperty)this.GetIndexArray().Get(var1);
  221.       if (var3 == null && var2) {
  222.          var3 = new JSbxValueProperty(String.valueOf(var1), this);
  223.          this.Put(var1, (JSbxProperty)var3);
  224.  
  225.          try {
  226.             this.Put((JSbxProperty)var3);
  227.          } catch (JSbxException var4) {
  228.          }
  229.       }
  230.  
  231.       return (JSbxProperty)var3;
  232.    }
  233.  
  234.    private void RemoveProperty(String var1) {
  235.       this.RemoveProperty(this.Get(var1));
  236.    }
  237.  
  238.    public void RemoveProperty(JSbxProperty var1) {
  239.       if (var1 != null && !this.IsConstant()) {
  240.          this.GetNameArray().Remove(var1.GetName());
  241.  
  242.          try {
  243.             double var2 = Double.valueOf(var1.GetName());
  244.             int var4 = (int)var2;
  245.             if ((double)var4 == var2) {
  246.                this.Put(var4, (JSbxProperty)null);
  247.             }
  248.          } catch (NumberFormatException var5) {
  249.          }
  250.  
  251.          this.GetHistoryArray().Delete(var1);
  252.       }
  253.  
  254.    }
  255.  
  256.    protected JSbxNameArray GetNameArray() {
  257.       if (this.aNameArray == null) {
  258.          this.aNameArray = new JSbxNameArray();
  259.       }
  260.  
  261.       return this.aNameArray;
  262.    }
  263.  
  264.    protected JSbxIndexArray GetIndexArray() {
  265.       if (this.aIndexArray == null) {
  266.          this.aIndexArray = new JSbxIndexArray();
  267.       }
  268.  
  269.       return this.aIndexArray;
  270.    }
  271.  
  272.    protected JSbxVector GetHistoryArray() {
  273.       if (this.aHistoryArray == null) {
  274.          this.aHistoryArray = new JSbxVector();
  275.       }
  276.  
  277.       return this.aHistoryArray;
  278.    }
  279.  
  280.    public void CheckAndPushSearchObject(JSbxObject var1) {
  281.       if (var1 != null) {
  282.          JSbxStack var2 = this.GetSearchStack();
  283.          if (var2 != null && !((JSbxVector)var2).IsObjectInVector(var1)) {
  284.             var2.Push(var1);
  285.          }
  286.  
  287.       }
  288.    }
  289.  
  290.    public void DeleteSearchObject(JSbxObject var1) {
  291.       JSbxStack var2 = this.GetSearchStack();
  292.       if (var2 != null) {
  293.          ((JSbxVector)var2).Delete(var1);
  294.       }
  295.  
  296.    }
  297.  
  298.    public void PushSearchObject(JSbxObject var1) {
  299.       if (var1 != null) {
  300.          this.GetSearchStack().Push(var1);
  301.       }
  302.    }
  303.  
  304.    public JSbxObject PopSearchObject() {
  305.       return (JSbxObject)this.GetSearchStack().Pop();
  306.    }
  307.  
  308.    protected JSbxProperty SearchObjectStack(String var1, boolean var2) {
  309.       if (this.aSearchObjectStack != null) {
  310.          int var3 = this.aSearchObjectStack.GetSize();
  311.          if (var3 > 0) {
  312.             for(int var6 = var3 - 1; var6 >= 0; --var6) {
  313.                JSbxObject var4 = (JSbxObject)this.aSearchObjectStack.Get(var6);
  314.                JSbxProperty var5;
  315.                if (var4 != null) {
  316.                   var5 = var4.Get(var1, false);
  317.                } else {
  318.                   HoldJavaEnvironment.AddToProtocol("WARNING: bad Object on SearchStack " + var6 + " this=" + this);
  319.                   var5 = null;
  320.                }
  321.  
  322.                if (var5 != null) {
  323.                   return var5;
  324.                }
  325.             }
  326.          }
  327.       }
  328.  
  329.       return null;
  330.    }
  331.  
  332.    private JSbxStack GetSearchStack() {
  333.       if (this.aSearchObjectStack == null) {
  334.          this.aSearchObjectStack = new JSbxStack(5);
  335.       }
  336.  
  337.       return this.aSearchObjectStack;
  338.    }
  339.  
  340.    public int GetNameArraySize() {
  341.       return this.aNameArray == null ? 0 : this.aNameArray.GetSize();
  342.    }
  343.  
  344.    public int GetIndexArraySize() {
  345.       return this.aIndexArray == null ? 0 : this.aIndexArray.GetSize();
  346.    }
  347.  
  348.    public String JS_toString() {
  349.       JSbxValueProperty var1 = this.GetToStringProperty();
  350.       if (var1 != null) {
  351.          try {
  352.             JSbxValue var2 = null;
  353.             JScriptManager var3 = this.aLifeConnectManager;
  354.             if (var3 == null) {
  355.                var3 = JScriptManager.GetMyJScriptManager();
  356.             }
  357.  
  358.             if (var3 == null) {
  359.                return this.GetJScriptString();
  360.             }
  361.  
  362.             JScriptRuntimeInstance var4 = var3.CreateNewRTI(false, false, (JScriptScheduler)null, (JScriptRunParam)null);
  363.             if (var4 != null) {
  364.                JScriptCallParam var5 = new JScriptCallParam(var4.GetActualRuntimeParam(), (JSbxVector)null, this);
  365.                var2 = var1.CallFunction(var5);
  366.                var3.DestroyRTI(var4);
  367.             }
  368.  
  369.             if (var2 != null) {
  370.                return var2.GetString();
  371.             }
  372.          } catch (JSbxExceptionBase var6) {
  373.          }
  374.       }
  375.  
  376.       return this.GetJScriptString();
  377.    }
  378.  
  379.    public String GetJScriptString() {
  380.       return this.GetJScriptString(false);
  381.    }
  382.  
  383.    public String GetJScriptString(boolean var1) {
  384.       return this.pTypeInfoStrg != null ? this.pTypeInfoStrg : "[object Object]";
  385.    }
  386.  
  387.    public JSbxValue JS_valueOf() {
  388.       return this.GetJScriptValue();
  389.    }
  390.  
  391.    public JSbxValue GetJScriptValue() {
  392.       return new JSbxValue(this.GetJScriptString(true));
  393.    }
  394.  
  395.    public String GetJScript_typeofString() {
  396.       return "object";
  397.    }
  398.  
  399.    public Object RunCodeWithMyThis(String var1, JavaScript var2, SJCallByReference_String var3, SJCallByReference_int var4, SJCallByReference_boolean var5, boolean var6) {
  400.       JScriptRunParam var7 = new JScriptRunParam();
  401.       var7.aJSObj = var2;
  402.       var7.aRetStrg = var3;
  403.       var7.aErrCode = var4;
  404.       var7.aErrInFirstStmt = var5;
  405.       var7.bDbgFlag = var6;
  406.       return this.RunCodeWithMyThis(var1, var7);
  407.    }
  408.  
  409.    public Object RunCodeWithMyThis(String var1, JScriptRunParam var2) {
  410.       Object var3 = null;
  411.  
  412.       try {
  413.          var1 = var1.replace('"', '\'');
  414.          var1 = SaveSpecialChars(var1);
  415.          String var4;
  416.          if (var2.aRetStrg != null) {
  417.             var4 = "return eval( \"" + var1 + "\")";
  418.          } else {
  419.             var4 = var1;
  420.          }
  421.  
  422.          var3 = var2.aJSObj.GetManager().DoRunScriptSync_CTOJ(var4, var2);
  423.          if (var2.aRetStrg != null && var2.aRetStrg.GetValue().equals("undefined")) {
  424.             var2.aRetStrg.SetValue("");
  425.          }
  426.       } catch (Throwable var6) {
  427.          String var5 = "WARNING: Exception in JSbxObject.RunCodeWithMyThis()";
  428.          HoldJavaEnvironment.AddToProtocol(var5);
  429.          var5 = "Exception= " + var6;
  430.          HoldJavaEnvironment.AddToProtocol(var5);
  431.          if (var2.aErrCode != null) {
  432.             var2.aErrCode.SetValue(-1);
  433.          }
  434.       }
  435.  
  436.       return var3;
  437.    }
  438.  
  439.    public int RunCodeWithMyThisAsync(String var1, JavaScript var2, int var3) {
  440.       return this.RunCodeWithMyThisAsync(var1, var2, var3, false);
  441.    }
  442.  
  443.    public int RunCodeWithMyThisAsync(String var1, JavaScript var2, int var3, boolean var4) {
  444.       return this.AsyncRun(var1, var2, (Object)null, var3, var4);
  445.    }
  446.  
  447.    public int RunModuleWithMyThis(Object var1, JavaScript var2, SJCallByReference_String var3, SJCallByReference_boolean var4, boolean var5) {
  448.       JScriptRunParam var6 = new JScriptRunParam();
  449.       var6.aModule = (JScriptModule)var1;
  450.       var6.aJSObj = var2;
  451.       var6.aRetStrg = var3;
  452.       var6.aErrInFirstStmt = var4;
  453.       var6.bDbgFlag = var5;
  454.       return this.RunModuleWithMyThis(var6);
  455.    }
  456.  
  457.    public int RunModuleWithMyThis(JScriptRunParam var1) {
  458.       var1.aErrInFirstStmt.SetValue(false);
  459.       JScriptRuntimeInstance var2 = var1.aJSObj.GetManager().DoRunModSyncRTI_CTOJ(var1);
  460.       if (var1.aRetStrg != null) {
  461.          JSbxValue var3 = var2.GetReturnValue();
  462.          if (var3 != null) {
  463.             try {
  464.                var1.aRetStrg.SetValue(var3.GetString());
  465.             } catch (JSbxException var4) {
  466.             }
  467.          }
  468.       }
  469.  
  470.       return var2.GetErrorCode();
  471.    }
  472.  
  473.    public int RunModuleWithMyThisAsync(Object var1, JavaScript var2, int var3) {
  474.       return this.AsyncRun((String)null, var2, var1, var3, false);
  475.    }
  476.  
  477.    public int RunModuleWithMyThisAsync(Object var1, JavaScript var2, int var3, boolean var4) {
  478.       return this.AsyncRun((String)null, var2, var1, var3, var4);
  479.    }
  480.  
  481.    private int AsyncRun(String var1, JavaScript var2, Object var3, int var4, boolean var5) {
  482.       JScriptRunAsync var6 = new JScriptRunAsync(this, var1, var2, var3, var4, var5);
  483.       return var6 == null ? -9 : 0;
  484.    }
  485.  
  486.    public void onEvent(String var1, JavaScript var2) {
  487.       this.RunCodeWithMyThis(var1, var2, (SJCallByReference_String)null, (SJCallByReference_int)null, (SJCallByReference_boolean)null, false);
  488.    }
  489.  
  490.    private static String SaveSpecialChars(String var0) {
  491.       String var1 = "";
  492.       if (var0 != null) {
  493.          if (var0.indexOf(92) == -1) {
  494.             return var0;
  495.          }
  496.  
  497.          int var2 = var0.length();
  498.  
  499.          for(int var4 = 0; var4 < var2; ++var4) {
  500.             char var3 = var0.charAt(var4);
  501.             if (var3 == '\\') {
  502.                var1 = var1 + "\\\\";
  503.             } else {
  504.                var1 = var1 + var3;
  505.             }
  506.          }
  507.       }
  508.  
  509.       return var1;
  510.    }
  511.  
  512.    protected native JSbxObject GetObject(String var1);
  513.  
  514.    protected native JSbxObject GetObject_Index(int var1);
  515.  
  516.    protected static Object convertProperty2Object(JSbxProperty var0) {
  517.       Object var1 = null;
  518.       if (var0 != null) {
  519.          JSbxValue var2 = new JSbxValue();
  520.  
  521.          try {
  522.             var0.Get(var2);
  523.          } catch (Exception var3) {
  524.          }
  525.  
  526.          var1 = JSbxValue.convertJScript2JSObject(var2);
  527.       }
  528.  
  529.       return var1;
  530.    }
  531.  
  532.    public Object getMember(String var1) {
  533.       JScriptManager var2 = this.aLifeConnectManager;
  534.       if (var2 == null) {
  535.          return null;
  536.       } else {
  537.          JScriptRunAsync var3 = new JScriptRunAsync(this, var2.GetJavaScriptObj());
  538.          var3.WaitForLiveConnectReady();
  539.          JScriptManager.AddRelation(var2);
  540.          Object var4 = null;
  541.          boolean var5 = false;
  542.          JSbxProperty var6 = this.Get(var1, var5);
  543.          var4 = convertProperty2Object(var6);
  544.          JScriptManager.RemoveRelation(var2);
  545.          var3.NotifyLiveConnectDone();
  546.          return var4;
  547.       }
  548.    }
  549.  
  550.    public Object getSlot(int var1) {
  551.       JScriptManager var2 = this.aLifeConnectManager;
  552.       if (var2 == null) {
  553.          return null;
  554.       } else {
  555.          JScriptRunAsync var3 = new JScriptRunAsync(this, var2.GetJavaScriptObj());
  556.          var3.WaitForLiveConnectReady();
  557.          JScriptManager.AddRelation(var2);
  558.          boolean var4 = false;
  559.          JSbxProperty var5 = this.Get(var1, var4);
  560.          Object var6 = convertProperty2Object(var5);
  561.          JScriptManager.RemoveRelation(var2);
  562.          var3.NotifyLiveConnectDone();
  563.          return var6;
  564.       }
  565.    }
  566.  
  567.    public void setMember(String var1, Object var2) {
  568.       JScriptManager var3 = this.aLifeConnectManager;
  569.       if (var3 != null) {
  570.          JScriptRunAsync var4 = new JScriptRunAsync(this, var3.GetJavaScriptObj());
  571.          var4.WaitForLiveConnectReady();
  572.          boolean var5 = true;
  573.          JSbxProperty var6 = this.Get(var1, var5);
  574.          JScriptManager.AddRelation(var3);
  575.  
  576.          try {
  577.             JSbxValue var7 = JSbxValue.convertJSObject2JScript(var2, var3);
  578.             var6.Put(var7);
  579.          } catch (Exception var8) {
  580.          }
  581.  
  582.          JScriptManager.RemoveRelation(var3);
  583.          var4.NotifyLiveConnectDone();
  584.       }
  585.    }
  586.  
  587.    public void setSlot(int var1, Object var2) {
  588.       JScriptManager var3 = this.aLifeConnectManager;
  589.       if (var3 != null) {
  590.          JScriptRunAsync var4 = new JScriptRunAsync(this, var3.GetJavaScriptObj());
  591.          var4.WaitForLiveConnectReady();
  592.          JScriptManager.AddRelation(var3);
  593.          boolean var5 = true;
  594.          JSbxProperty var6 = this.Get(var1, var5);
  595.  
  596.          try {
  597.             JSbxValue var7 = JSbxValue.convertJSObject2JScript(var2, var3);
  598.             var6.Put(var7);
  599.          } catch (Exception var8) {
  600.          }
  601.  
  602.          JScriptManager.RemoveRelation(var3);
  603.          var4.NotifyLiveConnectDone();
  604.       }
  605.    }
  606.  
  607.    public void removeMember(String var1) {
  608.       JScriptManager var2 = this.aLifeConnectManager;
  609.       if (var2 != null) {
  610.          JScriptRunAsync var3 = new JScriptRunAsync(this, var2.GetJavaScriptObj());
  611.          var3.WaitForLiveConnectReady();
  612.          this.RemoveProperty(var1);
  613.          var3.NotifyLiveConnectDone();
  614.       }
  615.    }
  616.  
  617.    public Object call(String var1, Object[] var2) {
  618.       JSbxValue var3 = null;
  619.       boolean var4 = false;
  620.       JSbxProperty var5 = this.Get(var1, var4);
  621.       if (var5 == null) {
  622.          return null;
  623.       } else {
  624.          JScriptManager var6 = this.aLifeConnectManager;
  625.          if (var6 == null) {
  626.             return null;
  627.          } else {
  628.             try {
  629.                int var7 = var2.length;
  630.                JSbxVector var8 = new JSbxVector(var7);
  631.  
  632.                for(int var9 = 0; var9 < var7; ++var9) {
  633.                   JSbxValue var10 = JSbxValue.convertJSObject2JScript(var2[var9], var6);
  634.                   var8.Put(var9, var10);
  635.                }
  636.  
  637.                JScriptRunAsync var13 = new JScriptRunAsync(this, var5, var8, var6.GetJavaScriptObj());
  638.                this.WaitForCallback(var13);
  639.                if (this.bEvalCallbackDone) {
  640.                   JScriptRuntimeInstance var11 = var13.aRP.aRTI;
  641.                   if (var11 != null) {
  642.                      var3 = var11.GetLastExpression();
  643.                   }
  644.                }
  645.             } catch (Throwable var12) {
  646.             }
  647.  
  648.             return var3 == null ? null : JSbxValue.convertJScript2JSObject(var3);
  649.          }
  650.       }
  651.    }
  652.  
  653.    public void WaitForCallback(JScriptRunAsync var1) {
  654.       synchronized(var1){}
  655.  
  656.       try {
  657.          var1.SetEvalCallbackFlag(false);
  658.  
  659.          try {
  660.             while(!var1.GetEvalCallbackFlag()) {
  661.                var1.wait();
  662.             }
  663.          } catch (InterruptedException var5) {
  664.          }
  665.       } catch (Throwable var6) {
  666.          throw var6;
  667.       }
  668.  
  669.    }
  670.  
  671.    public void NotifyCallback(JScriptRunAsync var1) {
  672.       synchronized(var1){}
  673.  
  674.       try {
  675.          var1.SetEvalCallbackFlag(true);
  676.          var1.notifyAll();
  677.       } catch (Throwable var4) {
  678.          throw var4;
  679.       }
  680.  
  681.    }
  682.  
  683.    public Object eval(String var1) {
  684.       JSbxValue var2 = null;
  685.       JScriptManager var3 = this.aLifeConnectManager;
  686.       if (var3 == null) {
  687.          return null;
  688.       } else {
  689.          var1 = "eval( \"" + var1 + "\")";
  690.          JScriptRunAsync var4 = new JScriptRunAsync(this, var1, var3.GetJavaScriptObj(), this);
  691.          this.WaitForCallback(var4);
  692.          if (this.bEvalCallbackDone) {
  693.             JScriptRuntimeInstance var5 = var4.aRP.aRTI;
  694.             if (var5 != null) {
  695.                var2 = var5.GetLastExpression();
  696.             }
  697.          }
  698.  
  699.          return JSbxValue.convertJScript2JSObject(var2);
  700.       }
  701.    }
  702.  
  703.    public Object valueOf() {
  704.       JScriptManager var1 = this.aLifeConnectManager;
  705.       if (var1 == null) {
  706.          return null;
  707.       } else {
  708.          JScriptRunAsync var2 = new JScriptRunAsync(this, var1.GetJavaScriptObj());
  709.          var2.WaitForLiveConnectReady();
  710.          JScriptManager.AddRelation(var1);
  711.          JSbxValue var3 = this.JS_valueOf();
  712.          Object var4 = JSbxValue.convertJScript2JSObject(var3);
  713.          JScriptManager.RemoveRelation(var1);
  714.          var2.NotifyLiveConnectDone();
  715.          return var4;
  716.       }
  717.    }
  718.  
  719.    public void Dump(PrintStream var1) throws JSbxException {
  720.       this.Dump(var1, 0, -1);
  721.    }
  722.  
  723.    public void Dump(PrintStream var1, int var2, int var3) throws JSbxException {
  724.       String var4 = JSbxBase.GetTabStr(var2);
  725.       var1.println(var4 + "Object");
  726.       var1.println(var4 + "{");
  727.       var1.println(var4 + "  Name-Array");
  728.       var1.println(var4 + "  {");
  729.       if (this.aNameArray != null) {
  730.          this.aNameArray.Dump(var1, var2 + 1, var3);
  731.       }
  732.  
  733.       var1.println(var4 + "  }");
  734.       var1.println(var4 + "  Index-Array");
  735.       var1.println(var4 + "  {");
  736.       if (this.aIndexArray != null) {
  737.          this.aIndexArray.Dump(var1, var2 + 1, var3);
  738.       }
  739.  
  740.       var1.println(var4 + "  }");
  741.       var1.println(var4 + "}");
  742.    }
  743.  
  744.    public JSbxNameArray DEBUG_GetNameArray() {
  745.       return this.GetNameArray();
  746.    }
  747.  
  748.    public JSbxIndexArray DEBUG_GetIndexArray() {
  749.       return this.GetIndexArray();
  750.    }
  751.  
  752.    public JSbxStack DEBUG_GetSearchStack() {
  753.       return this.GetSearchStack();
  754.    }
  755. }
  756.