// **********************************************************************
//
// 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_OBPolicies_fwd_h__
#define __OB_OBPolicies_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 OB
{

class ProtocolPolicy;
typedef ProtocolPolicy* ProtocolPolicy_ptr;
typedef ProtocolPolicy* ProtocolPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ProtocolPolicy;

class ConnectionReusePolicy;
typedef ConnectionReusePolicy* ConnectionReusePolicy_ptr;
typedef ConnectionReusePolicy* ConnectionReusePolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ConnectionReusePolicy;

class RetryPolicy;
typedef RetryPolicy* RetryPolicy_ptr;
typedef RetryPolicy* RetryPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_RetryPolicy;

class TimeoutPolicy;
typedef TimeoutPolicy* TimeoutPolicy_ptr;
typedef TimeoutPolicy* TimeoutPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_TimeoutPolicy;

class LocationTransparencyPolicy;
typedef LocationTransparencyPolicy* LocationTransparencyPolicy_ptr;
typedef LocationTransparencyPolicy* LocationTransparencyPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_LocationTransparencyPolicy;

class InterceptorPolicy;
typedef InterceptorPolicy* InterceptorPolicy_ptr;
typedef InterceptorPolicy* InterceptorPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_InterceptorPolicy;

class ConnectTimeoutPolicy;
typedef ConnectTimeoutPolicy* ConnectTimeoutPolicy_ptr;
typedef ConnectTimeoutPolicy* ConnectTimeoutPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ConnectTimeoutPolicy;

class RequestTimeoutPolicy;
typedef RequestTimeoutPolicy* RequestTimeoutPolicy_ptr;
typedef RequestTimeoutPolicy* RequestTimeoutPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_RequestTimeoutPolicy;

class LocateRequestPolicy;
typedef LocateRequestPolicy* LocateRequestPolicy_ptr;
typedef LocateRequestPolicy* LocateRequestPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_LocateRequestPolicy;

} // End of namespace OB

void OBDuplicate(OB::ProtocolPolicy_ptr);
void OBRelease(OB::ProtocolPolicy_ptr);

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

void OBDuplicate(OB::ConnectionReusePolicy_ptr);
void OBRelease(OB::ConnectionReusePolicy_ptr);

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

void OBDuplicate(OB::RetryPolicy_ptr);
void OBRelease(OB::RetryPolicy_ptr);

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

void OBDuplicate(OB::TimeoutPolicy_ptr);
void OBRelease(OB::TimeoutPolicy_ptr);

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

void OBDuplicate(OB::LocationTransparencyPolicy_ptr);
void OBRelease(OB::LocationTransparencyPolicy_ptr);

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

void OBDuplicate(OB::InterceptorPolicy_ptr);
void OBRelease(OB::InterceptorPolicy_ptr);

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

void OBDuplicate(OB::ConnectTimeoutPolicy_ptr);
void OBRelease(OB::ConnectTimeoutPolicy_ptr);

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

void OBDuplicate(OB::RequestTimeoutPolicy_ptr);
void OBRelease(OB::RequestTimeoutPolicy_ptr);

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

void OBDuplicate(OB::LocateRequestPolicy_ptr);
void OBRelease(OB::LocateRequestPolicy_ptr);

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

namespace OB
{

typedef OB::ObjVar< ProtocolPolicy > ProtocolPolicy_var;
typedef OB::ObjOut< ProtocolPolicy > ProtocolPolicy_out;

typedef OB::ObjVar< ConnectionReusePolicy > ConnectionReusePolicy_var;
typedef OB::ObjOut< ConnectionReusePolicy > ConnectionReusePolicy_out;

typedef OB::ObjVar< RetryPolicy > RetryPolicy_var;
typedef OB::ObjOut< RetryPolicy > RetryPolicy_out;

typedef OB::ObjVar< TimeoutPolicy > TimeoutPolicy_var;
typedef OB::ObjOut< TimeoutPolicy > TimeoutPolicy_out;

typedef OB::ObjVar< LocationTransparencyPolicy > LocationTransparencyPolicy_var;
typedef OB::ObjOut< LocationTransparencyPolicy > LocationTransparencyPolicy_out;

typedef OB::ObjVar< InterceptorPolicy > InterceptorPolicy_var;
typedef OB::ObjOut< InterceptorPolicy > InterceptorPolicy_out;

typedef OB::ObjVar< ConnectTimeoutPolicy > ConnectTimeoutPolicy_var;
typedef OB::ObjOut< ConnectTimeoutPolicy > ConnectTimeoutPolicy_out;

typedef OB::ObjVar< RequestTimeoutPolicy > RequestTimeoutPolicy_var;
typedef OB::ObjOut< RequestTimeoutPolicy > RequestTimeoutPolicy_out;

typedef OB::ObjVar< LocateRequestPolicy > LocateRequestPolicy_var;
typedef OB::ObjOut< LocateRequestPolicy > LocateRequestPolicy_out;

} // End of namespace OB

#endif
