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

#ifndef __gnu_CORBA_GIOP_ReplyHeader__
#define __gnu_CORBA_GIOP_ReplyHeader__

#pragma interface

#include <gnu/CORBA/GIOP/ContextHandler.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
      namespace CDR
      {
          class AbstractCdrInput;
          class AbstractCdrOutput;
      }
      namespace GIOP
      {
          class ReplyHeader;
      }
    }
  }
}

class gnu::CORBA::GIOP::ReplyHeader : public ::gnu::CORBA::GIOP::ContextHandler
{

public:
  ReplyHeader();
  virtual ::java::lang::String * getStatusString();
  virtual void read(::gnu::CORBA::CDR::AbstractCdrInput *) = 0;
  virtual ::java::lang::String * toString();
  virtual void write(::gnu::CORBA::CDR::AbstractCdrOutput *) = 0;
  static const jint NO_EXCEPTION = 0;
  static const jint USER_EXCEPTION = 1;
  static const jint SYSTEM_EXCEPTION = 2;
  static const jint LOCATION_FORWARD = 3;
  static const jint LOCATION_FORWARD_PERM = 4;
  static const jint NEEDS_ADDRESSING_MODE = 5;
  jint __attribute__((aligned(__alignof__( ::gnu::CORBA::GIOP::ContextHandler)))) reply_status;
  jint request_id;
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_GIOP_ReplyHeader__
