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

#ifndef __org_omg_CosNaming_NamingContextPackage_CannotProceed__
#define __org_omg_CosNaming_NamingContextPackage_CannotProceed__

#pragma interface

#include <org/omg/CORBA/UserException.h>
#include <gcj/array.h>

extern "Java"
{
  namespace org
  {
    namespace omg
    {
      namespace CosNaming
      {
          class NameComponent;
          class NamingContext;
        namespace NamingContextPackage
        {
            class CannotProceed;
        }
      }
    }
  }
}

class org::omg::CosNaming::NamingContextPackage::CannotProceed : public ::org::omg::CORBA::UserException
{

public:
  CannotProceed();
  CannotProceed(::org::omg::CosNaming::NamingContext *, JArray< ::org::omg::CosNaming::NameComponent * > *);
  CannotProceed(::java::lang::String *, ::org::omg::CosNaming::NamingContext *, JArray< ::org::omg::CosNaming::NameComponent * > *);
private:
  static const jlong serialVersionUID = -8627405252527310782LL;
public:
  ::org::omg::CosNaming::NamingContext * __attribute__((aligned(__alignof__( ::org::omg::CORBA::UserException)))) cxt;
  JArray< ::org::omg::CosNaming::NameComponent * > * rest_of_name;
  static ::java::lang::Class class$;
};

#endif // __org_omg_CosNaming_NamingContextPackage_CannotProceed__
