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

  1. import java.util.Vector;
  2. import stardiv.tools.SjProtocolWindow;
  3.  
  4. class JavaObjectHolder {
  5.    private static Vector theObjects = new Vector();
  6.    private static int emptySlots = 0;
  7.    private static int nextSlotToTry = 0;
  8.  
  9.    public static int addObject(Object var0) throws NullPointerException {
  10.       Vector var1 = theObjects;
  11.       synchronized(var1){}
  12.  
  13.       try {
  14.          if (SjProtocolWindow.IsMemTraceModeOn()) {
  15.             System.out.println("@@@addObject " + var0 + " #total=" + theObjects.size());
  16.          }
  17.  
  18.          if (var0 == null) {
  19.             throw new NullPointerException();
  20.          } else {
  21.             int var3 = theObjects.size();
  22.  
  23.             while(nextSlotToTry < var3) {
  24.                if (theObjects.elementAt(nextSlotToTry) == null) {
  25.                   int var4 = nextSlotToTry;
  26.                   --emptySlots;
  27.                   theObjects.setElementAt(var0, var4);
  28.                   ++nextSlotToTry;
  29.                   int var5 = var4;
  30.                   return var5;
  31.                }
  32.  
  33.                ++nextSlotToTry;
  34.                if (nextSlotToTry >= var3) {
  35.                   considerRecyclingSlots();
  36.                }
  37.             }
  38.  
  39.             int var8 = nextSlotToTry++;
  40.             theObjects.addElement(var0);
  41.             int var9 = var8;
  42.             return var9;
  43.          }
  44.       } catch (Throwable var7) {
  45.          throw var7;
  46.       }
  47.    }
  48.  
  49.    public static void removeObject(int var0) {
  50.       Vector var1 = theObjects;
  51.       synchronized(var1){}
  52.  
  53.       try {
  54.          try {
  55.             if (SjProtocolWindow.IsMemTraceModeOn()) {
  56.                System.out.println("@@@removeObject " + var0 + " " + theObjects.elementAt(var0) + " #total=" + theObjects.size());
  57.             }
  58.  
  59.             if (theObjects.elementAt(var0) != null) {
  60.                theObjects.setElementAt((Object)null, var0);
  61.                ++emptySlots;
  62.                considerRecyclingSlots();
  63.                return;
  64.             }
  65.          } catch (IndexOutOfBoundsException var5) {
  66.             return;
  67.          }
  68.       } catch (Throwable var6) {
  69.          throw var6;
  70.       }
  71.  
  72.    }
  73.  
  74.    public static void replaceObject(int var0, Object var1) {
  75.       Vector var2 = theObjects;
  76.       synchronized(var2){}
  77.  
  78.       try {
  79.          try {
  80.             theObjects.setElementAt(var1, var0);
  81.             return;
  82.          } catch (IndexOutOfBoundsException var6) {
  83.          }
  84.       } catch (Throwable var7) {
  85.          throw var7;
  86.       }
  87.  
  88.    }
  89.  
  90.    public static String DumpMemory() {
  91.       String var0 = "";
  92.       Vector var1 = theObjects;
  93.       synchronized(var1){}
  94.  
  95.       try {
  96.          int var3 = theObjects.size();
  97.  
  98.          for(int var4 = 0; var4 < var3; ++var4) {
  99.             var0 = var0 + var4 + " " + theObjects.elementAt(var4) + "\n";
  100.          }
  101.       } catch (Throwable var6) {
  102.          throw var6;
  103.       }
  104.  
  105.       return var0;
  106.    }
  107.  
  108.    public static Object getObject(int var0) throws IndexOutOfBoundsException {
  109.       Object var1 = theObjects.elementAt(var0);
  110.       return var1;
  111.    }
  112.  
  113.    private static void considerRecyclingSlots() {
  114.       int var0 = theObjects.size();
  115.       if (nextSlotToTry >= var0 && emptySlots > var0 / 2) {
  116.          nextSlotToTry = 0;
  117.       }
  118.  
  119.    }
  120. }
  121.