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

#ifndef __java_beans_ExplicitInfo__
#define __java_beans_ExplicitInfo__

#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 ExplicitInfo;
        class MethodDescriptor;
        class PropertyDescriptor;
    }
  }
}

class java::beans::ExplicitInfo : public ::java::lang::Object
{

public: // actually package-private
  ExplicitInfo(::java::lang::Class *, ::java::lang::Class *);
  static void flushCaches();
  static ::java::beans::BeanInfo * findExplicitBeanInfo(::java::lang::Class *);
  static ::java::beans::BeanInfo * reallyFindExplicitBeanInfo(::java::lang::Class *);
private:
  static ::java::beans::BeanInfo * getBeanInfo(::java::lang::ClassLoader *, ::java::lang::String *);
public: // actually package-private
  ::java::beans::BeanDescriptor * __attribute__((aligned(__alignof__( ::java::lang::Object)))) explicitBeanDescriptor;
  JArray< ::java::beans::BeanInfo * > * explicitBeanInfo;
  JArray< ::java::beans::PropertyDescriptor * > * explicitPropertyDescriptors;
  JArray< ::java::beans::EventSetDescriptor * > * explicitEventSetDescriptors;
  JArray< ::java::beans::MethodDescriptor * > * explicitMethodDescriptors;
  jint defaultProperty;
  jint defaultEvent;
  JArray< ::java::awt::Image * > * im;
  ::java::lang::Class * propertyStopClass;
  ::java::lang::Class * eventStopClass;
  ::java::lang::Class * methodStopClass;
  static ::java::util::Hashtable * explicitBeanInfos;
  static ::java::util::Vector * emptyBeanInfos;
public:
  static ::java::lang::Class class$;
};

#endif // __java_beans_ExplicitInfo__
