// **********************************************************************
//
// 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_Messaging_fwd_h__
#define __OB_Messaging_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 Messaging
{

class RebindPolicy;
typedef RebindPolicy* RebindPolicy_ptr;
typedef RebindPolicy* RebindPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_RebindPolicy;

class SyncScopePolicy;
typedef SyncScopePolicy* SyncScopePolicy_ptr;
typedef SyncScopePolicy* SyncScopePolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_SyncScopePolicy;

class RequestPriorityPolicy;
typedef RequestPriorityPolicy* RequestPriorityPolicy_ptr;
typedef RequestPriorityPolicy* RequestPriorityPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_RequestPriorityPolicy;

class ReplyPriorityPolicy;
typedef ReplyPriorityPolicy* ReplyPriorityPolicy_ptr;
typedef ReplyPriorityPolicy* ReplyPriorityPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ReplyPriorityPolicy;

class RequestStartTimePolicy;
typedef RequestStartTimePolicy* RequestStartTimePolicy_ptr;
typedef RequestStartTimePolicy* RequestStartTimePolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_RequestStartTimePolicy;

class RequestEndTimePolicy;
typedef RequestEndTimePolicy* RequestEndTimePolicy_ptr;
typedef RequestEndTimePolicy* RequestEndTimePolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_RequestEndTimePolicy;

class ReplyStartTimePolicy;
typedef ReplyStartTimePolicy* ReplyStartTimePolicy_ptr;
typedef ReplyStartTimePolicy* ReplyStartTimePolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ReplyStartTimePolicy;

class ReplyEndTimePolicy;
typedef ReplyEndTimePolicy* ReplyEndTimePolicy_ptr;
typedef ReplyEndTimePolicy* ReplyEndTimePolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ReplyEndTimePolicy;

class RelativeRequestTimeoutPolicy;
typedef RelativeRequestTimeoutPolicy* RelativeRequestTimeoutPolicy_ptr;
typedef RelativeRequestTimeoutPolicy* RelativeRequestTimeoutPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_RelativeRequestTimeoutPolicy;

class RelativeRoundTripTimeoutPolicy;
typedef RelativeRoundTripTimeoutPolicy* RelativeRoundTripTimeoutPolicy_ptr;
typedef RelativeRoundTripTimeoutPolicy* RelativeRoundTripTimeoutPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_RelativeRoundTripTimeoutPolicy;

class RoutingPolicy;
typedef RoutingPolicy* RoutingPolicy_ptr;
typedef RoutingPolicy* RoutingPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_RoutingPolicy;

class MaxHopsPolicy;
typedef MaxHopsPolicy* MaxHopsPolicy_ptr;
typedef MaxHopsPolicy* MaxHopsPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_MaxHopsPolicy;

class QueueOrderPolicy;
typedef QueueOrderPolicy* QueueOrderPolicy_ptr;
typedef QueueOrderPolicy* QueueOrderPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_QueueOrderPolicy;

} // End of namespace Messaging

void OBDuplicate(Messaging::RebindPolicy_ptr);
void OBRelease(Messaging::RebindPolicy_ptr);

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

void OBDuplicate(Messaging::SyncScopePolicy_ptr);
void OBRelease(Messaging::SyncScopePolicy_ptr);

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

void OBDuplicate(Messaging::RequestPriorityPolicy_ptr);
void OBRelease(Messaging::RequestPriorityPolicy_ptr);

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

void OBDuplicate(Messaging::ReplyPriorityPolicy_ptr);
void OBRelease(Messaging::ReplyPriorityPolicy_ptr);

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

void OBDuplicate(Messaging::RequestStartTimePolicy_ptr);
void OBRelease(Messaging::RequestStartTimePolicy_ptr);

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

void OBDuplicate(Messaging::RequestEndTimePolicy_ptr);
void OBRelease(Messaging::RequestEndTimePolicy_ptr);

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

void OBDuplicate(Messaging::ReplyStartTimePolicy_ptr);
void OBRelease(Messaging::ReplyStartTimePolicy_ptr);

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

void OBDuplicate(Messaging::ReplyEndTimePolicy_ptr);
void OBRelease(Messaging::ReplyEndTimePolicy_ptr);

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

void OBDuplicate(Messaging::RelativeRequestTimeoutPolicy_ptr);
void OBRelease(Messaging::RelativeRequestTimeoutPolicy_ptr);

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

void OBDuplicate(Messaging::RelativeRoundTripTimeoutPolicy_ptr);
void OBRelease(Messaging::RelativeRoundTripTimeoutPolicy_ptr);

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

void OBDuplicate(Messaging::RoutingPolicy_ptr);
void OBRelease(Messaging::RoutingPolicy_ptr);

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

void OBDuplicate(Messaging::MaxHopsPolicy_ptr);
void OBRelease(Messaging::MaxHopsPolicy_ptr);

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

void OBDuplicate(Messaging::QueueOrderPolicy_ptr);
void OBRelease(Messaging::QueueOrderPolicy_ptr);

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

namespace Messaging
{

typedef OB::ObjVar< RebindPolicy > RebindPolicy_var;
typedef OB::ObjOut< RebindPolicy > RebindPolicy_out;

typedef OB::ObjVar< SyncScopePolicy > SyncScopePolicy_var;
typedef OB::ObjOut< SyncScopePolicy > SyncScopePolicy_out;

typedef OB::ObjVar< RequestPriorityPolicy > RequestPriorityPolicy_var;
typedef OB::ObjOut< RequestPriorityPolicy > RequestPriorityPolicy_out;

typedef OB::ObjVar< ReplyPriorityPolicy > ReplyPriorityPolicy_var;
typedef OB::ObjOut< ReplyPriorityPolicy > ReplyPriorityPolicy_out;

typedef OB::ObjVar< RequestStartTimePolicy > RequestStartTimePolicy_var;
typedef OB::ObjOut< RequestStartTimePolicy > RequestStartTimePolicy_out;

typedef OB::ObjVar< RequestEndTimePolicy > RequestEndTimePolicy_var;
typedef OB::ObjOut< RequestEndTimePolicy > RequestEndTimePolicy_out;

typedef OB::ObjVar< ReplyStartTimePolicy > ReplyStartTimePolicy_var;
typedef OB::ObjOut< ReplyStartTimePolicy > ReplyStartTimePolicy_out;

typedef OB::ObjVar< ReplyEndTimePolicy > ReplyEndTimePolicy_var;
typedef OB::ObjOut< ReplyEndTimePolicy > ReplyEndTimePolicy_out;

typedef OB::ObjVar< RelativeRequestTimeoutPolicy > RelativeRequestTimeoutPolicy_var;
typedef OB::ObjOut< RelativeRequestTimeoutPolicy > RelativeRequestTimeoutPolicy_out;

typedef OB::ObjVar< RelativeRoundTripTimeoutPolicy > RelativeRoundTripTimeoutPolicy_var;
typedef OB::ObjOut< RelativeRoundTripTimeoutPolicy > RelativeRoundTripTimeoutPolicy_out;

typedef OB::ObjVar< RoutingPolicy > RoutingPolicy_var;
typedef OB::ObjOut< RoutingPolicy > RoutingPolicy_out;

typedef OB::ObjVar< MaxHopsPolicy > MaxHopsPolicy_var;
typedef OB::ObjOut< MaxHopsPolicy > MaxHopsPolicy_out;

typedef OB::ObjVar< QueueOrderPolicy > QueueOrderPolicy_var;
typedef OB::ObjOut< QueueOrderPolicy > QueueOrderPolicy_out;

} // End of namespace Messaging

#endif
