
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_util_Observable__
#define __java_util_Observable__

#pragma interface

#include <java/lang/Object.h>

class java::util::Observable : public ::java::lang::Object
{

public:
  Observable();
  virtual void addObserver(::java::util::Observer *);
public: // actually protected
  virtual void clearChanged();
public:
  virtual jint countObservers();
  virtual void deleteObserver(::java::util::Observer *);
  virtual void deleteObservers();
  virtual jboolean hasChanged();
  virtual void notifyObservers();
  virtual void notifyObservers(::java::lang::Object *);
public: // actually protected
  virtual void setChanged();
private:
  jboolean __attribute__((aligned(__alignof__( ::java::lang::Object)))) changed;
  ::java::util::LinkedHashSet * observers;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_Observable__
