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

#ifndef __org_omg_IOP_TaggedComponentHelper__
#define __org_omg_IOP_TaggedComponentHelper__

#pragma interface

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

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

public:
  TaggedComponentHelper();
  static ::org::omg::CORBA::TypeCode * type();
  static void insert(::org::omg::CORBA::Any *, ::org::omg::IOP::TaggedComponent *);
  static ::org::omg::IOP::TaggedComponent * extract(::org::omg::CORBA::Any *);
  static ::java::lang::String * id();
  static ::org::omg::IOP::TaggedComponent * read(::org::omg::CORBA::portable::InputStream *);
  static void write(::org::omg::CORBA::portable::OutputStream *, ::org::omg::IOP::TaggedComponent *);
  static ::java::lang::Class class$;
};

#endif // __org_omg_IOP_TaggedComponentHelper__
