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

#ifndef __gnu_java_security_util_ByteBufferOutputStream__
#define __gnu_java_security_util_ByteBufferOutputStream__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace util
        {
            class ByteBufferOutputStream;
        }
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
    }
  }
}

class gnu::java::security::util::ByteBufferOutputStream : public ::java::io::OutputStream
{

public:
  ByteBufferOutputStream();
  ByteBufferOutputStream(jint);
  virtual void write(jint);
  virtual void write(JArray< jbyte > *, jint, jint);
  virtual void write(JArray< jbyte > *);
  virtual ::java::nio::ByteBuffer * buffer();
  virtual ::java::lang::String * toString();
private:
  void growBuffer();
  ::java::nio::ByteBuffer * __attribute__((aligned(__alignof__( ::java::io::OutputStream)))) buffer__;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_util_ByteBufferOutputStream__
