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

#ifndef __java_nio_channels_Channels__
#define __java_nio_channels_Channels__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace nio
    {
      namespace channels
      {
          class Channels;
          class ReadableByteChannel;
          class WritableByteChannel;
      }
      namespace charset
      {
          class CharsetDecoder;
          class CharsetEncoder;
      }
    }
  }
}

class java::nio::channels::Channels : public ::java::lang::Object
{

  Channels();
public:
  static ::java::io::InputStream * newInputStream(::java::nio::channels::ReadableByteChannel *);
  static ::java::io::OutputStream * newOutputStream(::java::nio::channels::WritableByteChannel *);
  static ::java::nio::channels::ReadableByteChannel * newChannel(::java::io::InputStream *);
  static ::java::nio::channels::WritableByteChannel * newChannel(::java::io::OutputStream *);
  static ::java::io::Reader * newReader(::java::nio::channels::ReadableByteChannel *, ::java::nio::charset::CharsetDecoder *, jint);
  static ::java::io::Reader * newReader(::java::nio::channels::ReadableByteChannel *, ::java::lang::String *);
  static ::java::io::Writer * newWriter(::java::nio::channels::WritableByteChannel *, ::java::nio::charset::CharsetEncoder *, jint);
  static ::java::io::Writer * newWriter(::java::nio::channels::WritableByteChannel *, ::java::lang::String *);
  static ::java::lang::Class class$;
};

#endif // __java_nio_channels_Channels__
