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

#ifndef __gnu_CORBA_typecodes_AliasTypeCode__
#define __gnu_CORBA_typecodes_AliasTypeCode__

#pragma interface

#include <gnu/CORBA/typecodes/PrimitiveTypeCode.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
      namespace typecodes
      {
          class AliasTypeCode;
      }
    }
  }
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class TypeCode;
      }
    }
  }
}

class gnu::CORBA::typecodes::AliasTypeCode : public ::gnu::CORBA::typecodes::PrimitiveTypeCode
{

public:
  AliasTypeCode(::org::omg::CORBA::TypeCode *, ::java::lang::String *, ::java::lang::String *);
  virtual ::org::omg::CORBA::TypeCode * content_type();
  virtual jboolean equal(::org::omg::CORBA::TypeCode *);
  virtual jboolean equivalent(::org::omg::CORBA::TypeCode *);
  virtual ::java::lang::String * id();
  virtual ::java::lang::String * name();
private:
  static const jlong serialVersionUID = 1LL;
public: // actually protected
  ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::CORBA::typecodes::PrimitiveTypeCode)))) id__;
  ::java::lang::String * name__;
  ::org::omg::CORBA::TypeCode * aliasFor;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_typecodes_AliasTypeCode__
