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

#ifndef __gnu_CORBA_EmptyExceptionHolder__
#define __gnu_CORBA_EmptyExceptionHolder__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
        class EmptyExceptionHolder;
    }
  }
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class TypeCode;
        namespace portable
        {
            class InputStream;
            class OutputStream;
        }
      }
    }
  }
}

class gnu::CORBA::EmptyExceptionHolder : public ::java::lang::Object
{

public:
  EmptyExceptionHolder(::java::lang::Throwable *, ::org::omg::CORBA::TypeCode *);
  virtual void _read(::org::omg::CORBA::portable::InputStream *);
  virtual ::org::omg::CORBA::TypeCode * _type();
  virtual void _write(::org::omg::CORBA::portable::OutputStream *);
  ::java::lang::Throwable * __attribute__((aligned(__alignof__( ::java::lang::Object)))) value;
  ::org::omg::CORBA::TypeCode * typecode;
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_EmptyExceptionHolder__
