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

#ifndef __javax_management_remote_NotificationResult__
#define __javax_management_remote_NotificationResult__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace management
    {
      namespace remote
      {
          class NotificationResult;
          class TargetedNotification;
      }
    }
  }
}

class javax::management::remote::NotificationResult : public ::java::lang::Object
{

public:
  NotificationResult(jlong, jlong, JArray< ::javax::management::remote::TargetedNotification * > *);
  virtual jlong getEarliestSequenceNumber();
  virtual jlong getNextSequenceNumber();
  virtual JArray< ::javax::management::remote::TargetedNotification * > * getTargetedNotifications();
  virtual ::java::lang::String * toString();
private:
  static const jlong serialVersionUID = 1191800228721395279LL;
  jlong __attribute__((aligned(__alignof__( ::java::lang::Object)))) earliestSequenceNumber;
  jlong nextSequenceNumber;
  JArray< ::javax::management::remote::TargetedNotification * > * targetedNotifications;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_management_remote_NotificationResult__
