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

#ifndef __org_omg_IOP_TaggedProfileHolder__
#define __org_omg_IOP_TaggedProfileHolder__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class TypeCode;
        namespace portable
        {
            class InputStream;
            class OutputStream;
        }
      }
      namespace IOP
      {
          class TaggedProfile;
          class TaggedProfileHolder;
      }
    }
  }
}

class org::omg::IOP::TaggedProfileHolder : public ::java::lang::Object
{

public:
  TaggedProfileHolder();
  TaggedProfileHolder(::org::omg::IOP::TaggedProfile *);
  void _read(::org::omg::CORBA::portable::InputStream *);
  void _write(::org::omg::CORBA::portable::OutputStream *);
  ::org::omg::CORBA::TypeCode * _type();
  ::org::omg::IOP::TaggedProfile * __attribute__((aligned(__alignof__( ::java::lang::Object)))) value;
  static ::java::lang::Class class$;
};

#endif // __org_omg_IOP_TaggedProfileHolder__
