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

#ifndef __gnu_java_net_local_LocalSocketImpl$LocalInputStream__
#define __gnu_java_net_local_LocalSocketImpl$LocalInputStream__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace net
      {
        namespace local
        {
            class LocalSocketImpl;
            class LocalSocketImpl$LocalInputStream;
        }
      }
    }
  }
}

class gnu::java::net::local::LocalSocketImpl$LocalInputStream : public ::java::io::InputStream
{

public: // actually package-private
  LocalSocketImpl$LocalInputStream(::gnu::java::net::local::LocalSocketImpl *, ::gnu::java::net::local::LocalSocketImpl *);
public:
  virtual jint available();
  virtual jboolean markSupported();
  virtual void mark(jint);
  virtual void reset();
  virtual void close();
  virtual jint read();
  virtual jint read(JArray< jbyte > *);
  virtual jint read(JArray< jbyte > *, jint, jint);
private:
  ::gnu::java::net::local::LocalSocketImpl * __attribute__((aligned(__alignof__( ::java::io::InputStream)))) impl;
public: // actually package-private
  ::gnu::java::net::local::LocalSocketImpl * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_local_LocalSocketImpl$LocalInputStream__
