// **********************************************************************
//
// 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_OBPIORT_fwd_h__
#define __OB_OBPIORT_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 OBPortableInterceptor
{

class ObjectReferenceTemplate;

OB_IMPORT extern OB::TypeCodeConst _tc_ObjectReferenceTemplate;

class TransientORT;

OB_IMPORT extern OB::TypeCodeConst _tc_TransientORT;

class PersistentORT;

OB_IMPORT extern OB::TypeCodeConst _tc_PersistentORT;

} // End of namespace OBPortableInterceptor

void OBDuplicate(OBPortableInterceptor::ObjectReferenceTemplate*);
void OBRelease(OBPortableInterceptor::ObjectReferenceTemplate*);

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

void OBDuplicate(OBPortableInterceptor::TransientORT*);
void OBRelease(OBPortableInterceptor::TransientORT*);

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

void OBDuplicate(OBPortableInterceptor::PersistentORT*);
void OBRelease(OBPortableInterceptor::PersistentORT*);

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

namespace OBPortableInterceptor
{

typedef OB::ObjVar< ObjectReferenceTemplate > ObjectReferenceTemplate_var;
typedef OB::ObjOut< ObjectReferenceTemplate > ObjectReferenceTemplate_out;

typedef OB::ObjVar< TransientORT > TransientORT_var;
typedef OB::ObjOut< TransientORT > TransientORT_out;

typedef OB::ObjVar< PersistentORT > PersistentORT_var;
typedef OB::ObjOut< PersistentORT > PersistentORT_out;

} // End of namespace OBPortableInterceptor

#endif
