// **********************************************************************
//
// 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_POAPolicies_fwd_h__
#define __OB_POAPolicies_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 PortableServer
{

class ThreadPolicy;
typedef ThreadPolicy* ThreadPolicy_ptr;
typedef ThreadPolicy* ThreadPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ThreadPolicy;

class LifespanPolicy;
typedef LifespanPolicy* LifespanPolicy_ptr;
typedef LifespanPolicy* LifespanPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_LifespanPolicy;

class IdUniquenessPolicy;
typedef IdUniquenessPolicy* IdUniquenessPolicy_ptr;
typedef IdUniquenessPolicy* IdUniquenessPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_IdUniquenessPolicy;

class IdAssignmentPolicy;
typedef IdAssignmentPolicy* IdAssignmentPolicy_ptr;
typedef IdAssignmentPolicy* IdAssignmentPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_IdAssignmentPolicy;

class ImplicitActivationPolicy;
typedef ImplicitActivationPolicy* ImplicitActivationPolicy_ptr;
typedef ImplicitActivationPolicy* ImplicitActivationPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ImplicitActivationPolicy;

class ServantRetentionPolicy;
typedef ServantRetentionPolicy* ServantRetentionPolicy_ptr;
typedef ServantRetentionPolicy* ServantRetentionPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ServantRetentionPolicy;

class RequestProcessingPolicy;
typedef RequestProcessingPolicy* RequestProcessingPolicy_ptr;
typedef RequestProcessingPolicy* RequestProcessingPolicyRef;

OB_IMPORT extern OB::TypeCodeConst _tc_RequestProcessingPolicy;

} // End of namespace PortableServer

void OBDuplicate(PortableServer::ThreadPolicy_ptr);
void OBRelease(PortableServer::ThreadPolicy_ptr);

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

void OBDuplicate(PortableServer::LifespanPolicy_ptr);
void OBRelease(PortableServer::LifespanPolicy_ptr);

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

void OBDuplicate(PortableServer::IdUniquenessPolicy_ptr);
void OBRelease(PortableServer::IdUniquenessPolicy_ptr);

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

void OBDuplicate(PortableServer::IdAssignmentPolicy_ptr);
void OBRelease(PortableServer::IdAssignmentPolicy_ptr);

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

void OBDuplicate(PortableServer::ImplicitActivationPolicy_ptr);
void OBRelease(PortableServer::ImplicitActivationPolicy_ptr);

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

void OBDuplicate(PortableServer::ServantRetentionPolicy_ptr);
void OBRelease(PortableServer::ServantRetentionPolicy_ptr);

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

void OBDuplicate(PortableServer::RequestProcessingPolicy_ptr);
void OBRelease(PortableServer::RequestProcessingPolicy_ptr);

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

namespace PortableServer
{

typedef OB::ObjVar< ThreadPolicy > ThreadPolicy_var;
typedef OB::ObjOut< ThreadPolicy > ThreadPolicy_out;

typedef OB::ObjVar< LifespanPolicy > LifespanPolicy_var;
typedef OB::ObjOut< LifespanPolicy > LifespanPolicy_out;

typedef OB::ObjVar< IdUniquenessPolicy > IdUniquenessPolicy_var;
typedef OB::ObjOut< IdUniquenessPolicy > IdUniquenessPolicy_out;

typedef OB::ObjVar< IdAssignmentPolicy > IdAssignmentPolicy_var;
typedef OB::ObjOut< IdAssignmentPolicy > IdAssignmentPolicy_out;

typedef OB::ObjVar< ImplicitActivationPolicy > ImplicitActivationPolicy_var;
typedef OB::ObjOut< ImplicitActivationPolicy > ImplicitActivationPolicy_out;

typedef OB::ObjVar< ServantRetentionPolicy > ServantRetentionPolicy_var;
typedef OB::ObjOut< ServantRetentionPolicy > ServantRetentionPolicy_out;

typedef OB::ObjVar< RequestProcessingPolicy > RequestProcessingPolicy_var;
typedef OB::ObjOut< RequestProcessingPolicy > RequestProcessingPolicy_out;

} // End of namespace PortableServer

#endif
