home *** CD-ROM | disk | FTP | other *** search
/ PC User 2004 August / Disc 1 / PCU0804CD1.iso / software / browsers / files / opera1.exe / OPERA.JAR / com / opera / EcmaScriptObject.class (.txt) < prev    next >
Encoding:
Java Class File  |  2004-02-12  |  1.6 KB  |  77 lines

  1. package com.opera;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Hashtable;
  5.  
  6. public class EcmaScriptObject {
  7.    private static Hashtable all_objects = new Hashtable();
  8.    private int es_object;
  9.    private int runtime;
  10.    private int ref_count = 0;
  11.  
  12.    public static EcmaScriptObject getObject(int var0, int var1) {
  13.       EcmaScriptObject var2 = (EcmaScriptObject)all_objects.get(new Integer(var0));
  14.       if (var2 == null) {
  15.          var2 = new EcmaScriptObject(var0, var1);
  16.          all_objects.put(new Integer(var0), var2);
  17.       }
  18.  
  19.       return var2;
  20.    }
  21.  
  22.    private static int[] cleanAllReferences() {
  23.       int var0 = all_objects.size();
  24.       if (var0 == 0) {
  25.          return null;
  26.       } else {
  27.          int[] var1 = new int[var0];
  28.          Enumeration var2 = all_objects.elements();
  29.  
  30.          for(int var3 = 0; var2.hasMoreElements(); var1[var3++] = ((EcmaScriptObject)var2.nextElement()).removeESObject()) {
  31.          }
  32.  
  33.          return var1;
  34.       }
  35.    }
  36.  
  37.    private EcmaScriptObject(int var1, int var2) {
  38.       this.es_object = var1;
  39.       this.runtime = var2;
  40.       if (this.es_object != 0) {
  41.          this.externalRef(this.es_object);
  42.       }
  43.  
  44.    }
  45.  
  46.    private int removeESObject() {
  47.       int var1 = this.es_object;
  48.       this.es_object = 0;
  49.       this.runtime = 0;
  50.       return var1;
  51.    }
  52.  
  53.    public void ref() {
  54.       ++this.ref_count;
  55.    }
  56.  
  57.    public void unref() {
  58.       if (--this.ref_count <= 0 && this.es_object != 0) {
  59.          all_objects.remove(new Integer(this.es_object));
  60.          this.externalUnref(this.es_object);
  61.       }
  62.  
  63.    }
  64.  
  65.    public int getESObjectPtr() {
  66.       return this.es_object;
  67.    }
  68.  
  69.    public int getESRuntimePtr() {
  70.       return this.runtime;
  71.    }
  72.  
  73.    private native void externalRef(int var1);
  74.  
  75.    private native void externalUnref(int var1);
  76. }
  77.