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

#ifndef __javax_management_openmbean_OpenMBeanOperationInfoSupport__
#define __javax_management_openmbean_OpenMBeanOperationInfoSupport__

#pragma interface

#include <javax/management/MBeanOperationInfo.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace management
    {
      namespace openmbean
      {
          class OpenMBeanOperationInfoSupport;
          class OpenMBeanParameterInfo;
          class OpenType;
      }
    }
  }
}

class javax::management::openmbean::OpenMBeanOperationInfoSupport : public ::javax::management::MBeanOperationInfo
{

public:
  OpenMBeanOperationInfoSupport(::java::lang::String *, ::java::lang::String *, JArray< ::javax::management::openmbean::OpenMBeanParameterInfo * > *, ::javax::management::openmbean::OpenType *, jint);
  virtual jboolean equals(::java::lang::Object *);
  virtual ::javax::management::openmbean::OpenType * getReturnOpenType();
  virtual jint hashCode();
  virtual ::java::lang::String * toString();
private:
  static const jlong serialVersionUID = 4996859732565369366LL;
  ::javax::management::openmbean::OpenType * __attribute__((aligned(__alignof__( ::javax::management::MBeanOperationInfo)))) returnOpenType;
  ::java::lang::Integer * hashCode__;
  ::java::lang::String * string;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_management_openmbean_OpenMBeanOperationInfoSupport__
