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

#ifndef __gnu_java_lang_reflect_ClassSignatureParser__
#define __gnu_java_lang_reflect_ClassSignatureParser__

#pragma interface

#include <gnu/java/lang/reflect/GenericSignatureParser.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace lang
      {
        namespace reflect
        {
            class ClassSignatureParser;
        }
      }
    }
  }
}

class gnu::java::lang::reflect::ClassSignatureParser : public ::gnu::java::lang::reflect::GenericSignatureParser
{

public:
  ClassSignatureParser(::java::lang::Class *, ::java::lang::String *);
  virtual JArray< ::java::lang::reflect::TypeVariable * > * getTypeParameters();
  virtual ::java::lang::reflect::Type * getSuperclassType();
  virtual JArray< ::java::lang::reflect::Type * > * getInterfaceTypes();
private:
  JArray< ::java::lang::reflect::TypeVariable * > * __attribute__((aligned(__alignof__( ::gnu::java::lang::reflect::GenericSignatureParser)))) typeParameters;
  ::java::lang::reflect::Type * superclassType;
  JArray< ::java::lang::reflect::Type * > * interfaceTypes;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_lang_reflect_ClassSignatureParser__
