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

#ifndef __java_lang_ConcreteProcess__
#define __java_lang_ConcreteProcess__

#pragma interface

#include <java/lang/Process.h>
#include <gcj/array.h>

class java::lang::ConcreteProcess : public ::java::lang::Process
{
public:
  virtual void destroy ();
private:
  void nativeDestroy ();
public:
  virtual jint exitValue ();
public: // actually package-private
  virtual void processTerminationCleanup ();
public:
  virtual ::java::io::InputStream *getErrorStream ();
  virtual ::java::io::InputStream *getInputStream ();
  virtual ::java::io::OutputStream *getOutputStream () { return outputStream; }
  virtual jint waitFor ();
public: // actually package-private
  virtual void spawn (::java::lang::ConcreteProcess$ProcessManager *);
private:
  void nativeSpawn ();
public: // actually package-private
  ConcreteProcess (JArray< ::java::lang::String *> *, JArray< ::java::lang::String *> *, ::java::io::File *);
private:
  JArray< ::java::lang::String *> * __attribute__((aligned(__alignof__( ::java::lang::Process )))) progarray;
  JArray< ::java::lang::String *> *envp;
  ::java::io::File *dir;
  ::java::lang::Throwable *exception;
  jlong pid;
public: // actually package-private
  static const jint STATE_WAITING_TO_START = 0L;
  static const jint STATE_RUNNING = 1L;
  static const jint STATE_TERMINATED = 2L;
  jint state;
  jint status;
private:
  ::java::io::InputStream *errorStream;
  ::java::io::InputStream *inputStream;
  ::java::io::OutputStream *outputStream;
  ::java::io::InputStream *returnedErrorStream;
  ::java::io::InputStream *returnedInputStream;
  static ::java::lang::Object *queueLock;
  static ::java::lang::ConcreteProcess$ProcessManager *processManager;

  friend class java_lang_ConcreteProcess$EOFInputStream;
  friend class java_lang_ConcreteProcess$ProcessManager;
public:

  static ::java::lang::Class class$;
};

#endif /* __java_lang_ConcreteProcess__ */
