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

#ifndef __java_lang_management_MemoryNotificationInfo__
#define __java_lang_management_MemoryNotificationInfo__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace management
    {
      namespace openmbean
      {
          class CompositeData;
      }
    }
  }
}

class java::lang::management::MemoryNotificationInfo : public ::java::lang::Object
{

public:
  MemoryNotificationInfo(::java::lang::String *, ::java::lang::management::MemoryUsage *, jlong);
  static ::java::lang::management::MemoryNotificationInfo * from(::javax::management::openmbean::CompositeData *);
  virtual jlong getCount();
  virtual ::java::lang::String * getPoolName();
  virtual ::java::lang::management::MemoryUsage * getUsage();
  static ::java::lang::String * MEMORY_THRESHOLD_EXCEEDED;
  static ::java::lang::String * MEMORY_COLLECTION_THRESHOLD_EXCEEDED;
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) poolName;
  ::java::lang::management::MemoryUsage * usage;
  jlong count;
public:
  static ::java::lang::Class class$;
};

#endif // __java_lang_management_MemoryNotificationInfo__
