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

#ifndef __javax_management_MBeanAttributeInfo__
#define __javax_management_MBeanAttributeInfo__

#pragma interface

#include <javax/management/MBeanFeatureInfo.h>
extern "Java"
{
  namespace javax
  {
    namespace management
    {
        class MBeanAttributeInfo;
    }
  }
}

class javax::management::MBeanAttributeInfo : public ::javax::management::MBeanFeatureInfo
{

public:
  MBeanAttributeInfo(::java::lang::String *, ::java::lang::String *, ::java::lang::reflect::Method *, ::java::lang::reflect::Method *);
  MBeanAttributeInfo(::java::lang::String *, ::java::lang::String *, ::java::lang::String *, jboolean, jboolean, jboolean);
  virtual ::java::lang::Object * clone();
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::lang::String * getType();
  virtual jint hashCode();
  virtual jboolean isIs();
  virtual jboolean isReadable();
  virtual jboolean isWritable();
  virtual ::java::lang::String * toString();
private:
  static const jlong serialVersionUID = 8644704819898565848LL;
  ::java::lang::String * __attribute__((aligned(__alignof__( ::javax::management::MBeanFeatureInfo)))) attributeType;
  jboolean isWrite;
  jboolean isRead;
  jboolean is;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_management_MBeanAttributeInfo__
