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

#ifndef __gnu_CORBA_IOR$CodeSets_profile__
#define __gnu_CORBA_IOR$CodeSets_profile__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
      namespace CDR
      {
          class AbstractCdrInput;
          class AbstractCdrOutput;
      }
      namespace GIOP
      {
          class CodeSetServiceContext;
      }
        class IOR$CodeSets_profile;
        class IOR$CodeSets_profile$CodeSet_component;
    }
  }
}

class gnu::CORBA::IOR$CodeSets_profile : public ::java::lang::Object
{

public:
  IOR$CodeSets_profile();
  virtual void read(::gnu::CORBA::CDR::AbstractCdrInput *);
  virtual ::java::lang::String * toString();
  virtual void write(::gnu::CORBA::CDR::AbstractCdrOutput *);
  static const jint TAG_CODE_SETS = 1;
  ::gnu::CORBA::IOR$CodeSets_profile$CodeSet_component * __attribute__((aligned(__alignof__( ::java::lang::Object)))) narrow;
  ::gnu::CORBA::IOR$CodeSets_profile$CodeSet_component * wide;
  ::gnu::CORBA::GIOP::CodeSetServiceContext * negotiated;
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_IOR$CodeSets_profile__
