home *** CD-ROM | disk | FTP | other *** search
- package com.opera;
-
- import java.util.Enumeration;
- import java.util.Hashtable;
-
- public class EcmaScriptObject {
- private static Hashtable all_objects = new Hashtable();
- private int es_object;
- private int runtime;
- private int ref_count = 0;
-
- public static EcmaScriptObject getObject(int var0, int var1) {
- EcmaScriptObject var2 = (EcmaScriptObject)all_objects.get(new Integer(var0));
- if (var2 == null) {
- var2 = new EcmaScriptObject(var0, var1);
- all_objects.put(new Integer(var0), var2);
- }
-
- return var2;
- }
-
- private static int[] cleanAllReferences() {
- int var0 = all_objects.size();
- if (var0 == 0) {
- return null;
- } else {
- int[] var1 = new int[var0];
- Enumeration var2 = all_objects.elements();
-
- for(int var3 = 0; var2.hasMoreElements(); var1[var3++] = ((EcmaScriptObject)var2.nextElement()).removeESObject()) {
- }
-
- return var1;
- }
- }
-
- private EcmaScriptObject(int var1, int var2) {
- this.es_object = var1;
- this.runtime = var2;
- if (this.es_object != 0) {
- this.externalRef(this.es_object);
- }
-
- }
-
- private int removeESObject() {
- int var1 = this.es_object;
- this.es_object = 0;
- this.runtime = 0;
- return var1;
- }
-
- public void ref() {
- ++this.ref_count;
- }
-
- public void unref() {
- if (--this.ref_count <= 0 && this.es_object != 0) {
- all_objects.remove(new Integer(this.es_object));
- this.externalUnref(this.es_object);
- }
-
- }
-
- public int getESObjectPtr() {
- return this.es_object;
- }
-
- public int getESRuntimePtr() {
- return this.runtime;
- }
-
- private native void externalRef(int var1);
-
- private native void externalUnref(int var1);
- }
-