Package Name: java.util.observable
with java.lang; use java.lang;
with java.util.Observer; use java.util.Observer;
package java.util.Observable is
type Observable_Obj is new Object with null record;
type Observable_Ptr is access all Observable_Obj'Class;
procedure addObserver(Obj : access Observable_Obj;
o : Observer_Ptr);
procedure deleteObserver(Obj : access Observable_Obj;
o : Observer_Ptr);
procedure notifyObservers(Obj : access Observable_Obj);
procedure notifyObservers(Obj : access Observable_Obj;
arg : Object_Ptr);
procedure deleteObservers(Obj : access Observable_Obj);
function hasChanged(Obj : access Observable_Obj) return Boolean;
function countObservers(Obj : access Observable_Obj) return Integer;
procedure init_Observable(Obj : access Observable_Obj'Class);
function new_Observable(Obj : Observable_Ptr := null) return Observable_Ptr;
-- This is an operation of the Observer class, here to avoid circularity
procedure update(Obj : access Observer_Obj'Class;
P1 : Observable_Ptr;
P2 : Object_Ptr);
pragma Import(Java, notifyObservers);
pragma Import(Java, countObservers);
pragma Import(Java, deleteObservers);
pragma Import(Java, deleteObserver);
pragma Import(Java, hasChanged);
pragma Import(Java, addObserver);
pragma Import(Java_Constructor, init_Observable);
pragma Import(Java_Constructor, new_Observable);
pragma Import(Java, update, "java/util/Observer.update");
end java.util.Observable;