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

#ifndef __java_beans_beancontext_BeanContextServiceProviderBeanInfo__
#define __java_beans_beancontext_BeanContextServiceProviderBeanInfo__

#pragma interface

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

extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Image;
    }
    namespace beans
    {
        class BeanDescriptor;
        class BeanInfo;
        class EventSetDescriptor;
        class MethodDescriptor;
        class PropertyDescriptor;
      namespace beancontext
      {
          class BeanContextServiceProviderBeanInfo;
      }
    }
  }
}

class java::beans::beancontext::BeanContextServiceProviderBeanInfo : public ::java::lang::Object
{

public:
  virtual JArray< ::java::beans::BeanInfo * > * getServicesBeanInfo() = 0;
  virtual ::java::beans::BeanDescriptor * getBeanDescriptor() = 0;
  virtual JArray< ::java::beans::EventSetDescriptor * > * getEventSetDescriptors() = 0;
  virtual jint getDefaultEventIndex() = 0;
  virtual JArray< ::java::beans::PropertyDescriptor * > * getPropertyDescriptors() = 0;
  virtual jint getDefaultPropertyIndex() = 0;
  virtual JArray< ::java::beans::MethodDescriptor * > * getMethodDescriptors() = 0;
  virtual JArray< ::java::beans::BeanInfo * > * getAdditionalBeanInfo() = 0;
  virtual ::java::awt::Image * getIcon(jint) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __java_beans_beancontext_BeanContextServiceProviderBeanInfo__
