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

#ifndef __java_io_FileDescriptor__
#define __java_io_FileDescriptor__

#pragma interface

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

class java::io::FileDescriptor : public ::java::lang::Object
{

public:
  FileDescriptor();
public: // actually package-private
  FileDescriptor(::java::nio::channels::ByteChannel *);
public:
  void sync();
  jboolean valid();
  static ::java::io::FileDescriptor * in;
  static ::java::io::FileDescriptor * out;
  static ::java::io::FileDescriptor * err;
public: // actually package-private
  ::java::nio::channels::ByteChannel * __attribute__((aligned(__alignof__( ::java::lang::Object)))) channel;
public:
  static ::java::lang::Class class$;
};

#endif // __java_io_FileDescriptor__
