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

#ifndef __org_omg_PortableInterceptor_AdapterNameHelper__
#define __org_omg_PortableInterceptor_AdapterNameHelper__

#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 AdapterNameHelper;
      }
    }
  }
}

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

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

#endif // __org_omg_PortableInterceptor_AdapterNameHelper__
