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

#ifndef __gnu_CORBA_CollocatedOrbs__
#define __gnu_CORBA_CollocatedOrbs__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
        class CollocatedOrbs;
        class IOR;
        class OrbFunctional;
    }
  }
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class Object;
      }
    }
  }
}

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

public: // actually package-private
  CollocatedOrbs();
  static void registerOrb(::gnu::CORBA::OrbFunctional *);
  static void unregisterOrb(::gnu::CORBA::OrbFunctional *);
  static ::org::omg::CORBA::Object * searchLocalObject(::gnu::CORBA::IOR *);
  static jboolean DIRECT_CALLS_ALLOWED;
private:
  static ::java::util::ArrayList * orbs;
public: // actually package-private
  static ::java::lang::String * localHost;
  static jboolean $assertionsDisabled;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_CollocatedOrbs__
