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

#ifndef __org_omg_CosNaming_BindingType__
#define __org_omg_CosNaming_BindingType__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace org
  {
    namespace omg
    {
      namespace CosNaming
      {
          class BindingType;
      }
    }
  }
}

class org::omg::CosNaming::BindingType : public ::java::lang::Object
{

public: // actually protected
  BindingType(jint);
public:
  static ::org::omg::CosNaming::BindingType * from_int(jint);
  virtual jint value();
private:
  static const jlong serialVersionUID = 3735105633408228513LL;
public:
  static const jint _ncontext = 1;
  static const jint _nobject = 0;
  static ::org::omg::CosNaming::BindingType * ncontext;
  static ::org::omg::CosNaming::BindingType * nobject;
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) type;
public:
  static ::java::lang::Class class$;
};

#endif // __org_omg_CosNaming_BindingType__
