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

#ifndef __gnu_CORBA_Connected_objects$cObject__
#define __gnu_CORBA_Connected_objects$cObject__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
        class Connected_objects;
        class Connected_objects$cObject;
    }
  }
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class Object;
      }
    }
  }
}

class gnu::CORBA::Connected_objects$cObject : public ::java::lang::Object
{

public: // actually package-private
  Connected_objects$cObject(::gnu::CORBA::Connected_objects *, ::org::omg::CORBA::Object *, jint, JArray< jbyte > *, ::java::lang::Object *);
public:
  ::org::omg::CORBA::Object * __attribute__((aligned(__alignof__( ::java::lang::Object)))) object;
  jint port;
  JArray< jbyte > * key;
  ::java::lang::Object * identity;
public: // actually package-private
  ::gnu::CORBA::Connected_objects * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_Connected_objects$cObject__
