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

#ifndef __org_omg_CosNaming_NamingContextExtPackage_StringNameHelper__
#define __org_omg_CosNaming_NamingContextExtPackage_StringNameHelper__

#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 CosNaming
      {
        namespace NamingContextExtPackage
        {
            class StringNameHelper;
        }
      }
    }
  }
}

class org::omg::CosNaming::NamingContextExtPackage::StringNameHelper : public ::java::lang::Object
{

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

#endif // __org_omg_CosNaming_NamingContextExtPackage_StringNameHelper__
