// **********************************************************************
//
// 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_OBPOAPolicies_fwd_h__
#define __OB_OBPOAPolicies_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 OBPortableServer
{

class SynchronizationPolicy;
typedef SynchronizationPolicy* SynchronizationPolicy_ptr;
typedef SynchronizationPolicy* SynchronizationPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_SynchronizationPolicy;

class DispatchStrategyPolicy;
typedef DispatchStrategyPolicy* DispatchStrategyPolicy_ptr;
typedef DispatchStrategyPolicy* DispatchStrategyPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_DispatchStrategyPolicy;

class InterceptorCallPolicy;
typedef InterceptorCallPolicy* InterceptorCallPolicy_ptr;
typedef InterceptorCallPolicy* InterceptorCallPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_InterceptorCallPolicy;

} // End of namespace OBPortableServer

void OBDuplicate(OBPortableServer::SynchronizationPolicy_ptr);
void OBRelease(OBPortableServer::SynchronizationPolicy_ptr);

void OBMarshal(OBPortableServer::SynchronizationPolicy_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(OBPortableServer::SynchronizationPolicy_ptr&, OB::InputStreamImpl*);

void OBDuplicate(OBPortableServer::DispatchStrategyPolicy_ptr);
void OBRelease(OBPortableServer::DispatchStrategyPolicy_ptr);

void OBMarshal(OBPortableServer::DispatchStrategyPolicy_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(OBPortableServer::DispatchStrategyPolicy_ptr&, OB::InputStreamImpl*);

void OBDuplicate(OBPortableServer::InterceptorCallPolicy_ptr);
void OBRelease(OBPortableServer::InterceptorCallPolicy_ptr);

void OBMarshal(OBPortableServer::InterceptorCallPolicy_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(OBPortableServer::InterceptorCallPolicy_ptr&, OB::InputStreamImpl*);

namespace OBPortableServer
{

typedef OB::ObjVar< SynchronizationPolicy > SynchronizationPolicy_var;
typedef OB::ObjOut< SynchronizationPolicy > SynchronizationPolicy_out;

typedef OB::ObjVar< DispatchStrategyPolicy > DispatchStrategyPolicy_var;
typedef OB::ObjOut< DispatchStrategyPolicy > DispatchStrategyPolicy_out;

typedef OB::ObjVar< InterceptorCallPolicy > InterceptorCallPolicy_var;
typedef OB::ObjOut< InterceptorCallPolicy > InterceptorCallPolicy_out;

} // End of namespace OBPortableServer

#endif
