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

#ifndef __gnu_CORBA_GIOP_v1_0_CancelHeader__
#define __gnu_CORBA_GIOP_v1_0_CancelHeader__

#pragma interface

#include <gnu/CORBA/GIOP/CancelHeader.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
      namespace GIOP
      {
        namespace v1_0
        {
            class CancelHeader;
        }
      }
    }
  }
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
        namespace portable
        {
            class InputStream;
            class OutputStream;
        }
      }
    }
  }
}

class gnu::CORBA::GIOP::v1_0::CancelHeader : public ::gnu::CORBA::GIOP::CancelHeader
{

public:
  CancelHeader();
  virtual void read(::org::omg::CORBA::portable::InputStream *);
  virtual void write(::org::omg::CORBA::portable::OutputStream *);
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_GIOP_v1_0_CancelHeader__
