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

  1. public class JScriptArrayObject extends JSbxObject implements JSbxPropertyInterface {
  2.    public static final String NAME = "Array";
  3.    private static final int ARRAY_ID_LENGTH = 1;
  4.    private static final int ARRAY_ID_JOIN = 2;
  5.    private static final int ARRAY_ID_REVERSE = 3;
  6.    private static final int ARRAY_ID_SORT = 4;
  7.    private String a_toString;
  8.  
  9.    public JScriptArrayObject(JScriptConstructor var1, String var2) {
  10.       super(var1);
  11.       this.a_toString = var2;
  12.  
  13.       try {
  14.          ((JSbxObject)this).Put(new JSbxObjectProperty("length", this, this, 1, false, true));
  15.          ((JSbxObject)this).Put(new JSbxObjectProperty("join", this, this, 2, false, true));
  16.          ((JSbxObject)this).Put(new JSbxObjectProperty("reverse", this, this, 3, false, true));
  17.          ((JSbxObject)this).Put(new JSbxObjectProperty("sort", this, this, 4, false, true));
  18.       } catch (JSbxException var3) {
  19.       }
  20.    }
  21.  
  22.    public JScriptArrayObject(JScriptConstructor var1) {
  23.       this(var1, (String)null);
  24.    }
  25.  
  26.    public final void InitArray(int var1) {
  27.       for(int var3 = 0; var3 < var1; ++var3) {
  28.          ((JSbxObject)this).Get(var3, true);
  29.          ((JSbxObject)this).Put(var3, (JSbxProperty)null);
  30.       }
  31.  
  32.    }
  33.  
  34.    public final void SetElement(int var1, JSbxProperty var2) {
  35.       ((JSbxObject)this).Put(var1, var2);
  36.    }
  37.  
  38.    public final void AddElement(JSbxProperty var1) {
  39.       try {
  40.          ((JSbxObject)this).Put(var1);
  41.       } catch (JSbxException var2) {
  42.       }
  43.    }
  44.  
  45.    public JSbxValue PropertyCallFunction(JSbxObjectProperty var1, JScriptCallParam var2) throws JSbxExceptionBase {
  46.       JSbxVector var3 = var2.GetParamVector();
  47.       int var4 = var3 != null ? var3.GetSize() : 0;
  48.       int var5 = var1.GetID();
  49.       String var6 = "";
  50.       double var7 = (double)0.0F;
  51.       boolean var9 = false;
  52.       boolean var10 = false;
  53.       switch (var5) {
  54.          case 2:
  55.             if (var4 > 0) {
  56.                var6 = this.Make_toString(JScriptWindowObject.GetStringParam(var3, 0));
  57.             } else {
  58.                var6 = this.Make_toString(",");
  59.             }
  60.             break;
  61.          case 3:
  62.             ((JSbxObject)this).GetIndexArray().Reverse();
  63.             var6 = this.Make_toString(",");
  64.             break;
  65.          case 4:
  66.             if (var4 > 0) {
  67.                JSbxValue var11 = (JSbxValue)var3.Get(0);
  68.                if (var11.GetType() != 2 || !(var11.GetObject() instanceof JScriptMethod)) {
  69.                   throw new JSbxException(0, "error in Array.sort(): argument \"" + JScriptWindowObject.GetStringParam(var3, 0) + "\" is not a function");
  70.                }
  71.  
  72.                this.BubbleSort((JScriptMethod)var11.GetObject(), var2);
  73.             } else {
  74.                this.BubbleSort((JScriptMethod)null, (JScriptCallParam)null);
  75.             }
  76.  
  77.             var6 = this.Make_toString(",");
  78.       }
  79.  
  80.       Object var12 = null;
  81.       JSbxValue var13;
  82.       if (var10) {
  83.          var13 = new JSbxValue();
  84.       } else if (var9) {
  85.          var13 = new JSbxValue(var7);
  86.       } else {
  87.          var13 = new JSbxValue(var6);
  88.       }
  89.  
  90.       var2.GetRuntimeParam().SetReturnValue(var13);
  91.       return var13;
  92.    }
  93.  
  94.    public void PropertyGet(JSbxObjectProperty var1, JSbxValue var2) throws JSbxException {
  95.       int var3 = var1.GetID();
  96.       double var4 = (double)0.0F;
  97.       switch (var3) {
  98.          case 1:
  99.             var4 = (double)((JSbxObject)this).GetIndexArray().GetPosIndexSize();
  100.             var2.Put(new JSbxValue(var4));
  101.             return;
  102.          default:
  103.       }
  104.    }
  105.  
  106.    public void PropertyPut(JSbxObjectProperty var1, JSbxValue var2) throws JSbxException {
  107.    }
  108.  
  109.    public String Property_GetJScript_typeofString(JSbxObjectProperty var1) {
  110.       return "arrayobject";
  111.    }
  112.  
  113.    public String GetJScriptString(boolean var1) {
  114.       return this.a_toString != null ? this.a_toString : this.Make_toString(",");
  115.    }
  116.  
  117.    private final String Make_toString(String var1) {
  118.       String var2 = "";
  119.       JSbxIndexArray var3 = ((JSbxObject)this).GetIndexArray();
  120.       JSbxValue var4 = new JSbxValue((short)4);
  121.  
  122.       for(int var5 = 0; var5 < var3.GetPosIndexSize(); ++var5) {
  123.          JSbxProperty var6 = ((JSbxObject)this).Get(var5);
  124.  
  125.          try {
  126.             if (var6 != null) {
  127.                var6.Get(var4);
  128.                var2 = var2 + var4.GetString();
  129.             }
  130.          } catch (JSbxException var7) {
  131.          }
  132.  
  133.          if (var5 < var3.GetPosIndexSize() - 1) {
  134.             var2 = var2 + var1;
  135.          }
  136.       }
  137.  
  138.       return var2;
  139.    }
  140.  
  141.    private final void BubbleSort(JScriptMethod var1, JScriptCallParam var2) throws JSbxExceptionBase {
  142.       int var3 = ((JSbxObject)this).GetIndexArray().GetPosIndexSize();
  143.  
  144.       for(int var4 = 0; var3 > 0; --var3) {
  145.          try {
  146.             for(int var9 = 0; var9 < var3 - 1; ++var9) {
  147.                JSbxProperty var7 = ((JSbxObject)this).Get(var9);
  148.                JSbxProperty var8 = ((JSbxObject)this).Get(var9 + 1);
  149.                JSbxValue var5 = new JSbxValue();
  150.                JSbxValue var6 = new JSbxValue();
  151.                var7.Get(var5);
  152.                var8.Get(var6);
  153.                var4 = 0;
  154.                if (var1 != null) {
  155.                   JSbxVector var10 = new JSbxVector(2);
  156.                   var10.Put(0, var5);
  157.                   var10.Put(1, var6);
  158.                   JScriptCallParam var11 = new JScriptCallParam(var2.GetRuntimeParam(), var10, (JSbxObject)null);
  159.                   JSbxValue var12 = null;
  160.  
  161.                   try {
  162.                      var12 = var1.CallFunction(var11);
  163.                   } catch (JSbxExceptionBase var14) {
  164.                      System.out.println("Exception in Array.BubbleSort() --> in sortfcn(): " + var14);
  165.                   }
  166.  
  167.                   if (var12 != null) {
  168.                      var4 = (int)var12.GetDouble();
  169.                   }
  170.                } else {
  171.                   var4 = var5.GetString().compareTo(var6.GetString());
  172.                }
  173.  
  174.                if (var4 > 0) {
  175.                   var7.Put(var6);
  176.                   var8.Put(var5);
  177.                }
  178.             }
  179.          } catch (JSbxExceptionBase var15) {
  180.             System.out.println("Exception in Array.BubbleSort(): " + var15);
  181.          }
  182.       }
  183.  
  184.    }
  185. }
  186.