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

#ifndef __gnu_CORBA_GIOP_ErrorMessage__
#define __gnu_CORBA_GIOP_ErrorMessage__

#pragma interface

#include <gnu/CORBA/GIOP/MessageHeader.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
      namespace GIOP
      {
          class ErrorMessage;
      }
        class IOR;
        class Version;
    }
  }
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class ORB;
      }
    }
  }
}

class gnu::CORBA::GIOP::ErrorMessage : public ::gnu::CORBA::GIOP::MessageHeader
{

public:
  ErrorMessage(::gnu::CORBA::Version *);
  virtual void send(::gnu::CORBA::IOR *, ::org::omg::CORBA::ORB *);
private:
  static const jlong serialVersionUID = 1LL;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_GIOP_ErrorMessage__
