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

#ifndef __javax_management_openmbean_OpenMBeanParameterInfo__
#define __javax_management_openmbean_OpenMBeanParameterInfo__

#pragma interface

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

class javax::management::openmbean::OpenMBeanParameterInfo : public ::java::lang::Object
{

public:
  virtual jboolean equals(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * getDefaultValue() = 0;
  virtual ::java::lang::String * getDescription() = 0;
  virtual ::java::util::Set * getLegalValues() = 0;
  virtual ::java::lang::Comparable * getMaxValue() = 0;
  virtual ::java::lang::Comparable * getMinValue() = 0;
  virtual ::java::lang::String * getName() = 0;
  virtual ::javax::management::openmbean::OpenType * getOpenType() = 0;
  virtual jboolean hasDefaultValue() = 0;
  virtual jint hashCode() = 0;
  virtual jboolean hasLegalValues() = 0;
  virtual jboolean hasMaxValue() = 0;
  virtual jboolean hasMinValue() = 0;
  virtual jboolean isValue(::java::lang::Object *) = 0;
  virtual ::java::lang::String * toString() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_management_openmbean_OpenMBeanParameterInfo__
