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

#ifndef __gnu_CORBA_gnuContext__
#define __gnu_CORBA_gnuContext__

#pragma interface

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

class gnu::CORBA::gnuContext : public ::org::omg::CORBA::Context
{

public:
  gnuContext(::java::lang::String *, ::org::omg::CORBA::Context *);
  virtual ::java::lang::String * context_name();
  virtual ::org::omg::CORBA::Context * create_child(::java::lang::String *);
  virtual void delete_values(::java::lang::String *);
  virtual ::org::omg::CORBA::NVList * get_values(::java::lang::String *, jint, ::java::lang::String *);
  virtual ::org::omg::CORBA::Context * parent();
  virtual void set_one_value(::java::lang::String *, ::org::omg::CORBA::Any *);
  virtual void set_values(::org::omg::CORBA::NVList *);
public: // actually package-private
  ::org::omg::CORBA::Context * __attribute__((aligned(__alignof__( ::org::omg::CORBA::Context)))) parent__;
  ::java::util::Map * properties;
  ::java::lang::String * name;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_gnuContext__
