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

#ifndef __gnu_CORBA_NameValuePairSeqHolder__
#define __gnu_CORBA_NameValuePairSeqHolder__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
        class NameValuePairSeqHolder;
    }
  }
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class TypeCode;
        namespace portable
        {
            class InputStream;
            class OutputStream;
        }
      }
      namespace DynamicAny
      {
          class NameValuePair;
      }
    }
  }
}

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

public:
  NameValuePairSeqHolder();
  NameValuePairSeqHolder(JArray< ::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();
  JArray< ::org::omg::DynamicAny::NameValuePair * > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) value;
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_NameValuePairSeqHolder__
