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

#ifndef __org_omg_CORBA_ServiceInformationHolder__
#define __org_omg_CORBA_ServiceInformationHolder__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class ServiceInformation;
          class ServiceInformationHolder;
          class TypeCode;
        namespace portable
        {
            class InputStream;
            class OutputStream;
        }
      }
    }
  }
}

class org::omg::CORBA::ServiceInformationHolder : public ::java::lang::Object
{

public:
  ServiceInformationHolder();
  ServiceInformationHolder(::org::omg::CORBA::ServiceInformation *);
  void _read(::org::omg::CORBA::portable::InputStream *);
  ::org::omg::CORBA::TypeCode * _type();
  void _write(::org::omg::CORBA::portable::OutputStream *);
  ::org::omg::CORBA::ServiceInformation * __attribute__((aligned(__alignof__( ::java::lang::Object)))) value;
  static ::java::lang::Class class$;
};

#endif // __org_omg_CORBA_ServiceInformationHolder__
