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

#ifndef __java_util_jar_JarInputStream__
#define __java_util_jar_JarInputStream__

#pragma interface

#include <java/util/zip/ZipInputStream.h>
#include <gcj/array.h>


class java::util::jar::JarInputStream : public ::java::util::zip::ZipInputStream
{

public:
  JarInputStream(::java::io::InputStream *);
  JarInputStream(::java::io::InputStream *, jboolean);
private:
  void readManifest(jboolean);
public: // actually protected
  virtual ::java::util::zip::ZipEntry * createZipEntry(::java::lang::String *);
public:
  virtual ::java::util::jar::Manifest * getManifest();
  virtual ::java::util::zip::ZipEntry * getNextEntry();
  virtual ::java::util::jar::JarEntry * getNextJarEntry();
  virtual jint read(JArray< jbyte > *, jint, jint);
private:
  ::java::util::jar::Manifest * __attribute__((aligned(__alignof__( ::java::util::zip::ZipInputStream)))) manifest;
  ::java::util::jar::JarEntry * firstEntry;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_jar_JarInputStream__
