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

#ifndef __org_omg_PortableInterceptor_ObjectIdHelper__
#define __org_omg_PortableInterceptor_ObjectIdHelper__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class Any;
          class TypeCode;
        namespace portable
        {
            class InputStream;
            class OutputStream;
        }
      }
      namespace PortableInterceptor
      {
          class ObjectIdHelper;
      }
    }
  }
}

class org::omg::PortableInterceptor::ObjectIdHelper : public ::java::lang::Object
{

public:
  ObjectIdHelper();
  static void insert(::org::omg::CORBA::Any *, JArray< jbyte > *);
  static JArray< jbyte > * extract(::org::omg::CORBA::Any *);
  static ::org::omg::CORBA::TypeCode * type();
  static ::java::lang::String * id();
  static JArray< jbyte > * read(::org::omg::CORBA::portable::InputStream *);
  static void write(::org::omg::CORBA::portable::OutputStream *, JArray< jbyte > *);
  static ::java::lang::Class class$;
};

#endif // __org_omg_PortableInterceptor_ObjectIdHelper__
