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

#ifndef __javax_naming_Context__
#define __javax_naming_Context__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace naming
    {
        class Context;
        class Name;
        class NameParser;
        class NamingEnumeration;
    }
  }
}

class javax::naming::Context : public ::java::lang::Object
{

public:
  virtual void bind(::javax::naming::Name *, ::java::lang::Object *) = 0;
  virtual void bind(::java::lang::String *, ::java::lang::Object *) = 0;
  virtual ::java::lang::Object * lookup(::javax::naming::Name *) = 0;
  virtual ::java::lang::Object * lookup(::java::lang::String *) = 0;
  virtual void rebind(::javax::naming::Name *, ::java::lang::Object *) = 0;
  virtual void rebind(::java::lang::String *, ::java::lang::Object *) = 0;
  virtual void unbind(::javax::naming::Name *) = 0;
  virtual void unbind(::java::lang::String *) = 0;
  virtual void rename(::javax::naming::Name *, ::javax::naming::Name *) = 0;
  virtual void rename(::java::lang::String *, ::java::lang::String *) = 0;
  virtual ::javax::naming::NamingEnumeration * list(::javax::naming::Name *) = 0;
  virtual ::javax::naming::NamingEnumeration * list(::java::lang::String *) = 0;
  virtual ::javax::naming::NamingEnumeration * listBindings(::javax::naming::Name *) = 0;
  virtual ::javax::naming::NamingEnumeration * listBindings(::java::lang::String *) = 0;
  virtual ::javax::naming::Context * createSubcontext(::javax::naming::Name *) = 0;
  virtual ::javax::naming::Context * createSubcontext(::java::lang::String *) = 0;
  virtual void destroySubcontext(::javax::naming::Name *) = 0;
  virtual void destroySubcontext(::java::lang::String *) = 0;
  virtual ::java::lang::Object * lookupLink(::javax::naming::Name *) = 0;
  virtual ::java::lang::Object * lookupLink(::java::lang::String *) = 0;
  virtual ::javax::naming::NameParser * getNameParser(::javax::naming::Name *) = 0;
  virtual ::javax::naming::NameParser * getNameParser(::java::lang::String *) = 0;
  virtual ::javax::naming::Name * composeName(::javax::naming::Name *, ::javax::naming::Name *) = 0;
  virtual ::java::lang::String * composeName(::java::lang::String *, ::java::lang::String *) = 0;
  virtual ::java::lang::Object * addToEnvironment(::java::lang::String *, ::java::lang::Object *) = 0;
  virtual ::java::lang::Object * removeFromEnvironment(::java::lang::String *) = 0;
  virtual ::java::util::Hashtable * getEnvironment() = 0;
  virtual void close() = 0;
  virtual ::java::lang::String * getNameInNamespace() = 0;
  static ::java::lang::String * INITIAL_CONTEXT_FACTORY;
  static ::java::lang::String * OBJECT_FACTORIES;
  static ::java::lang::String * STATE_FACTORIES;
  static ::java::lang::String * URL_PKG_PREFIXES;
  static ::java::lang::String * PROVIDER_URL;
  static ::java::lang::String * DNS_URL;
  static ::java::lang::String * AUTHORITATIVE;
  static ::java::lang::String * BATCHSIZE;
  static ::java::lang::String * REFERRAL;
  static ::java::lang::String * SECURITY_PROTOCOL;
  static ::java::lang::String * SECURITY_AUTHENTICATION;
  static ::java::lang::String * SECURITY_PRINCIPAL;
  static ::java::lang::String * SECURITY_CREDENTIALS;
  static ::java::lang::String * LANGUAGE;
  static ::java::lang::String * APPLET;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_naming_Context__
