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

#ifndef __java_nio_channels_Pipe__
#define __java_nio_channels_Pipe__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace nio
    {
      namespace channels
      {
          class Pipe;
          class Pipe$SinkChannel;
          class Pipe$SourceChannel;
      }
    }
  }
}

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

public: // actually protected
  Pipe();
public:
  static ::java::nio::channels::Pipe * open();
  virtual ::java::nio::channels::Pipe$SinkChannel * sink() = 0;
  virtual ::java::nio::channels::Pipe$SourceChannel * source() = 0;
  static ::java::lang::Class class$;
};

#endif // __java_nio_channels_Pipe__
