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

#ifndef __org_omg_IOP_CodecPackage_TypeMismatchHelper__
#define __org_omg_IOP_CodecPackage_TypeMismatchHelper__

#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
      {
        namespace CodecPackage
        {
            class TypeMismatch;
            class TypeMismatchHelper;
        }
      }
    }
  }
}

class org::omg::IOP::CodecPackage::TypeMismatchHelper : public ::java::lang::Object
{

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

#endif // __org_omg_IOP_CodecPackage_TypeMismatchHelper__
