// **********************************************************************
//
// Generated by the ORBacus IDL-to-C++ Translator
//
// Copyright (c) 2003
// IONA Technologies, Inc.
// Waltham, MA, USA
//
// All Rights Reserved
//
// **********************************************************************

// Version: 4.1.3

#ifndef __OB_PIORBInit_fwd_h__
#define __OB_PIORBInit_fwd_h__

#include <OB/Template.h>

#ifndef OB_IMPORT
#   ifdef OB_DLL
#      define OB_IMPORT __declspec(dllimport)
#   else
#      define OB_IMPORT /**/
#   endif
#endif


#ifndef OB_INTEGER_VERSION
#   error No ORBacus version defined! Is <OB/CORBA.h> included?
#endif

#ifndef OB_NO_VERSION_CHECK
#   if (OB_INTEGER_VERSION != 4010300L)
#       error ORBacus version mismatch!
#   endif
#endif

namespace PortableInterceptor
{

class ClientRequestInterceptor;
typedef ClientRequestInterceptor* ClientRequestInterceptor_ptr;
typedef ClientRequestInterceptor* ClientRequestInterceptorRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ClientRequestInterceptor;

class ServerRequestInterceptor;
typedef ServerRequestInterceptor* ServerRequestInterceptor_ptr;
typedef ServerRequestInterceptor* ServerRequestInterceptorRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ServerRequestInterceptor;

class IORInterceptor;
typedef IORInterceptor* IORInterceptor_ptr;
typedef IORInterceptor* IORInterceptorRef;

OB_IMPORT extern OB::TypeCodeConst _tc_IORInterceptor;

class ORBInitInfo;
typedef ORBInitInfo* ORBInitInfo_ptr;
typedef ORBInitInfo* ORBInitInfoRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ORBInitInfo;

class ORBInitializer;
typedef ORBInitializer* ORBInitializer_ptr;
typedef ORBInitializer* ORBInitializerRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ORBInitializer;

} // End of namespace PortableInterceptor

void OBDuplicate(PortableInterceptor::ClientRequestInterceptor_ptr);
void OBRelease(PortableInterceptor::ClientRequestInterceptor_ptr);

void OBMarshal(PortableInterceptor::ClientRequestInterceptor_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(PortableInterceptor::ClientRequestInterceptor_ptr&, OB::InputStreamImpl*);

void OBDuplicate(PortableInterceptor::ServerRequestInterceptor_ptr);
void OBRelease(PortableInterceptor::ServerRequestInterceptor_ptr);

void OBMarshal(PortableInterceptor::ServerRequestInterceptor_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(PortableInterceptor::ServerRequestInterceptor_ptr&, OB::InputStreamImpl*);

void OBDuplicate(PortableInterceptor::IORInterceptor_ptr);
void OBRelease(PortableInterceptor::IORInterceptor_ptr);

void OBMarshal(PortableInterceptor::IORInterceptor_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(PortableInterceptor::IORInterceptor_ptr&, OB::InputStreamImpl*);

void OBDuplicate(PortableInterceptor::ORBInitInfo_ptr);
void OBRelease(PortableInterceptor::ORBInitInfo_ptr);

void OBMarshal(PortableInterceptor::ORBInitInfo_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(PortableInterceptor::ORBInitInfo_ptr&, OB::InputStreamImpl*);

void OBDuplicate(PortableInterceptor::ORBInitializer_ptr);
void OBRelease(PortableInterceptor::ORBInitializer_ptr);

void OBMarshal(PortableInterceptor::ORBInitializer_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(PortableInterceptor::ORBInitializer_ptr&, OB::InputStreamImpl*);

namespace PortableInterceptor
{

typedef OB::ObjVar< ClientRequestInterceptor > ClientRequestInterceptor_var;
typedef OB::ObjOut< ClientRequestInterceptor > ClientRequestInterceptor_out;

typedef OB::ObjVar< ServerRequestInterceptor > ServerRequestInterceptor_var;
typedef OB::ObjOut< ServerRequestInterceptor > ServerRequestInterceptor_out;

typedef OB::ObjVar< IORInterceptor > IORInterceptor_var;
typedef OB::ObjOut< IORInterceptor > IORInterceptor_out;

typedef OB::ObjVar< ORBInitInfo > ORBInitInfo_var;
typedef OB::ObjOut< ORBInitInfo > ORBInitInfo_out;

typedef OB::ObjVar< ORBInitializer > ORBInitializer_var;
typedef OB::ObjOut< ORBInitializer > ORBInitializer_out;

} // End of namespace PortableInterceptor

#endif
