home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2003 January / maximum-cd-2003-01.iso / Software / Apps / OperawithJava / ow32enen700b1j.exe / OPERA.JAR / opera / EcmaScriptObject.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-11-05  |  1.3 KB  |  65 lines

  1. package opera;
  2.  
  3. import java.util.Hashtable;
  4.  
  5. public class EcmaScriptObject {
  6.    private static Hashtable all_objects = new Hashtable();
  7.    private int es_object;
  8.    private int runtime;
  9.    private int ref_count = 0;
  10.  
  11.    public static EcmaScriptObject getObject(int var0, int var1) {
  12.       EcmaScriptObject var2 = (EcmaScriptObject)all_objects.get(new Integer(var0));
  13.       if (var2 == null) {
  14.          var2 = new EcmaScriptObject(var0, var1);
  15.          all_objects.put(new Integer(var0), var2);
  16.       }
  17.  
  18.       return var2;
  19.    }
  20.  
  21.    private EcmaScriptObject(int var1, int var2) {
  22.       this.es_object = var1;
  23.       this.runtime = var2;
  24.       if (this.es_object != 0) {
  25.          this.externalRef(this.es_object);
  26.       }
  27.  
  28.    }
  29.  
  30.    public void ref() {
  31.       ++this.ref_count;
  32.    }
  33.  
  34.    public void unref() {
  35.       if (--this.ref_count <= 0) {
  36.          all_objects.remove(new Integer(this.es_object));
  37.       }
  38.  
  39.    }
  40.  
  41.    public int getESObjectPtr() {
  42.       return this.es_object;
  43.    }
  44.  
  45.    public int getESRuntimePtr() {
  46.       return this.runtime;
  47.    }
  48.  
  49.    private native void externalRef(int var1);
  50.  
  51.    private native void externalUnref(int var1);
  52.  
  53.    protected void finalize() {
  54.       try {
  55.          if (this.es_object != 0) {
  56.             this.externalUnref(this.es_object);
  57.          }
  58.  
  59.          super.finalize();
  60.       } catch (Throwable var2) {
  61.       }
  62.  
  63.    }
  64. }
  65.