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

#ifndef __javax_rmi_PortableRemoteObject__
#define __javax_rmi_PortableRemoteObject__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace rmi
    {
        class Remote;
    }
  }
  namespace javax
  {
    namespace rmi
    {
      namespace CORBA
      {
          class PortableRemoteObjectDelegate;
      }
        class PortableRemoteObject;
    }
  }
}

class javax::rmi::PortableRemoteObject : public ::java::lang::Object
{

public: // actually protected
  PortableRemoteObject();
public:
  static void connect(::java::rmi::Remote *, ::java::rmi::Remote *);
  static void exportObject(::java::rmi::Remote *);
  static ::java::lang::Object * narrow(::java::lang::Object *, ::java::lang::Class *);
  static ::java::rmi::Remote * toStub(::java::rmi::Remote *);
  static void unexportObject(::java::rmi::Remote *);
public: // actually package-private
  static ::javax::rmi::CORBA::PortableRemoteObjectDelegate * delegate;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_rmi_PortableRemoteObject__
