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

#ifndef __org_omg_CosNaming__BindingIteratorImplBase__
#define __org_omg_CosNaming__BindingIteratorImplBase__

#pragma interface

#include <org/omg/CORBA/DynamicImplementation.h>
#include <gcj/array.h>

extern "Java"
{
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class ServerRequest;
        namespace portable
        {
            class InputStream;
            class OutputStream;
            class ResponseHandler;
        }
      }
      namespace CosNaming
      {
          class BindingHolder;
          class BindingListHolder;
          class _BindingIteratorImplBase;
      }
    }
  }
}

class org::omg::CosNaming::_BindingIteratorImplBase : public ::org::omg::CORBA::DynamicImplementation
{

public:
  _BindingIteratorImplBase();
  virtual JArray< ::java::lang::String * > * _ids();
  virtual ::org::omg::CORBA::portable::OutputStream * _invoke(::java::lang::String *, ::org::omg::CORBA::portable::InputStream *, ::org::omg::CORBA::portable::ResponseHandler *);
  virtual void invoke(::org::omg::CORBA::ServerRequest *);
  virtual void destroy() = 0;
  virtual jboolean next_n(jint, ::org::omg::CosNaming::BindingListHolder *) = 0;
  virtual jboolean next_one(::org::omg::CosNaming::BindingHolder *) = 0;
private:
  static const jlong serialVersionUID = 3472591176635005503LL;
  static JArray< ::java::lang::String * > * ids;
public:
  static ::java::lang::Class class$;
};

#endif // __org_omg_CosNaming__BindingIteratorImplBase__
