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

#ifndef __gnu_javax_management_ListenerData__
#define __gnu_javax_management_ListenerData__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace management
      {
          class ListenerData;
      }
    }
  }
  namespace javax
  {
    namespace management
    {
        class NotificationFilter;
        class NotificationListener;
    }
  }
}

class gnu::javax::management::ListenerData : public ::java::lang::Object
{

public:
  ListenerData(::javax::management::NotificationListener *, ::javax::management::NotificationFilter *, ::java::lang::Object *);
  virtual ::javax::management::NotificationListener * getListener();
  virtual ::javax::management::NotificationFilter * getFilter();
  virtual ::java::lang::Object * getPassback();
  virtual jboolean equals(::java::lang::Object *);
private:
  ::javax::management::NotificationListener * __attribute__((aligned(__alignof__( ::java::lang::Object)))) listener;
  ::javax::management::NotificationFilter * filter;
  ::java::lang::Object * passback;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_management_ListenerData__
