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

#ifndef __java_util_jar_JarFile$EntryInputStream__
#define __java_util_jar_JarFile$EntryInputStream__

#pragma interface

#include <java/io/FilterInputStream.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace security
    {
        class MessageDigest;
    }
  }
}

class java::util::jar::JarFile$EntryInputStream : public ::java::io::FilterInputStream
{

public: // actually package-private
  JarFile$EntryInputStream(::java::util::zip::ZipEntry *, ::java::io::InputStream *, ::java::util::jar::JarFile *);
public:
  virtual jboolean markSupported();
  virtual void mark(jint);
  virtual void reset();
  virtual jint read();
  virtual jint read(JArray< jbyte > *, jint, jint);
  virtual jint read(JArray< jbyte > *);
  virtual jlong skip(jlong);
private:
  void eof();
  ::java::util::jar::JarFile * __attribute__((aligned(__alignof__( ::java::io::FilterInputStream)))) jarfile;
  jlong length;
  jlong pos;
  ::java::util::zip::ZipEntry * entry;
  JArray< JArray< jbyte > * > * hashes;
  JArray< ::java::security::MessageDigest * > * md;
  jboolean checked;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_jar_JarFile$EntryInputStream__
