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

#ifndef __gnu_CORBA_gnuNVList__
#define __gnu_CORBA_gnuNVList__

#pragma interface

#include <org/omg/CORBA/NVList.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
        class CorbaList;
        class gnuNVList;
    }
  }
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class Any;
          class NamedValue;
      }
    }
  }
}

class gnu::CORBA::gnuNVList : public ::org::omg::CORBA::NVList
{

public:
  gnuNVList();
  gnuNVList(jint);
  virtual ::org::omg::CORBA::NamedValue * add(jint);
  virtual ::org::omg::CORBA::NamedValue * add_item(::java::lang::String *, jint);
  virtual ::org::omg::CORBA::NamedValue * add_value(::java::lang::String *, ::org::omg::CORBA::Any *, jint);
  virtual void add(::org::omg::CORBA::NamedValue *);
  virtual jint count();
  virtual ::org::omg::CORBA::NamedValue * item(jint);
  virtual void remove(jint);
public: // actually protected
  ::gnu::CORBA::CorbaList * __attribute__((aligned(__alignof__( ::org::omg::CORBA::NVList)))) list;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_gnuNVList__
