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

#ifndef __org_omg_CORBA_TCKind__
#define __org_omg_CORBA_TCKind__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class TCKind;
      }
    }
  }
}

class org::omg::CORBA::TCKind : public ::java::lang::Object
{

public: // actually protected
  TCKind(jint);
public:
  virtual jint value();
  static ::org::omg::CORBA::TCKind * from_int(jint);
  static const jint _tk_null = 0;
  static const jint _tk_void = 1;
  static const jint _tk_short = 2;
  static const jint _tk_long = 3;
  static const jint _tk_ushort = 4;
  static const jint _tk_ulong = 5;
  static const jint _tk_float = 6;
  static const jint _tk_double = 7;
  static const jint _tk_boolean = 8;
  static const jint _tk_char = 9;
  static const jint _tk_octet = 10;
  static const jint _tk_any = 11;
  static const jint _tk_TypeCode = 12;
  static const jint _tk_Principal = 13;
  static const jint _tk_objref = 14;
  static const jint _tk_struct = 15;
  static const jint _tk_union = 16;
  static const jint _tk_enum = 17;
  static const jint _tk_string = 18;
  static const jint _tk_sequence = 19;
  static const jint _tk_array = 20;
  static const jint _tk_alias = 21;
  static const jint _tk_except = 22;
  static const jint _tk_longlong = 23;
  static const jint _tk_ulonglong = 24;
  static const jint _tk_longdouble = 25;
  static const jint _tk_wchar = 26;
  static const jint _tk_wstring = 27;
  static const jint _tk_fixed = 28;
  static const jint _tk_value = 29;
  static const jint _tk_value_box = 30;
  static const jint _tk_native = 31;
  static const jint _tk_abstract_interface = 32;
  static ::org::omg::CORBA::TCKind * tk_null;
  static ::org::omg::CORBA::TCKind * tk_void;
  static ::org::omg::CORBA::TCKind * tk_short;
  static ::org::omg::CORBA::TCKind * tk_long;
  static ::org::omg::CORBA::TCKind * tk_ushort;
  static ::org::omg::CORBA::TCKind * tk_ulong;
  static ::org::omg::CORBA::TCKind * tk_float;
  static ::org::omg::CORBA::TCKind * tk_double;
  static ::org::omg::CORBA::TCKind * tk_boolean;
  static ::org::omg::CORBA::TCKind * tk_char;
  static ::org::omg::CORBA::TCKind * tk_octet;
  static ::org::omg::CORBA::TCKind * tk_any;
  static ::org::omg::CORBA::TCKind * tk_TypeCode;
  static ::org::omg::CORBA::TCKind * tk_Principal;
  static ::org::omg::CORBA::TCKind * tk_objref;
  static ::org::omg::CORBA::TCKind * tk_struct;
  static ::org::omg::CORBA::TCKind * tk_union;
  static ::org::omg::CORBA::TCKind * tk_enum;
  static ::org::omg::CORBA::TCKind * tk_string;
  static ::org::omg::CORBA::TCKind * tk_sequence;
  static ::org::omg::CORBA::TCKind * tk_array;
  static ::org::omg::CORBA::TCKind * tk_alias;
  static ::org::omg::CORBA::TCKind * tk_except;
  static ::org::omg::CORBA::TCKind * tk_longlong;
  static ::org::omg::CORBA::TCKind * tk_ulonglong;
  static ::org::omg::CORBA::TCKind * tk_longdouble;
  static ::org::omg::CORBA::TCKind * tk_wchar;
  static ::org::omg::CORBA::TCKind * tk_wstring;
  static ::org::omg::CORBA::TCKind * tk_fixed;
  static ::org::omg::CORBA::TCKind * tk_value;
  static ::org::omg::CORBA::TCKind * tk_value_box;
  static ::org::omg::CORBA::TCKind * tk_native;
  static ::org::omg::CORBA::TCKind * tk_abstract_interface;
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) _value;
  static JArray< ::org::omg::CORBA::TCKind * > * tk;
public:
  static ::java::lang::Class class$;
};

#endif // __org_omg_CORBA_TCKind__
