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

#ifndef __gnu_CORBA_NameValuePairHolder__
#define __gnu_CORBA_NameValuePairHolder__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
        class NameValuePairHolder;
    }
  }
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class TypeCode;
        namespace portable
        {
            class InputStream;
            class OutputStream;
        }
      }
      namespace DynamicAny
      {
          class NameValuePair;
      }
    }
  }
}

class gnu::CORBA::NameValuePairHolder : public ::java::lang::Object
{

public:
  NameValuePairHolder();
  NameValuePairHolder(::org::omg::DynamicAny::NameValuePair *);
  virtual void _read(::org::omg::CORBA::portable::InputStream *);
  virtual void _write(::org::omg::CORBA::portable::OutputStream *);
  virtual ::org::omg::CORBA::TypeCode * _type();
  ::org::omg::DynamicAny::NameValuePair * __attribute__((aligned(__alignof__( ::java::lang::Object)))) value;
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_NameValuePairHolder__
