// **********************************************************************
//
// 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_IFR4_fwd_h__
#define __OB_IFR4_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 CORBA
{

class AbstractInterfaceDef;
typedef AbstractInterfaceDef* AbstractInterfaceDef_ptr;
typedef AbstractInterfaceDef* AbstractInterfaceDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_AbstractInterfaceDef;

class LocalInterfaceDef;
typedef LocalInterfaceDef* LocalInterfaceDef_ptr;
typedef LocalInterfaceDef* LocalInterfaceDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_LocalInterfaceDef;

class ValueMemberDef;
typedef ValueMemberDef* ValueMemberDef_ptr;
typedef ValueMemberDef* ValueMemberDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ValueMemberDef;

class ValueDef;
typedef ValueDef* ValueDef_ptr;
typedef ValueDef* ValueDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ValueDef;

class ValueBoxDef;
typedef ValueBoxDef* ValueBoxDef_ptr;
typedef ValueBoxDef* ValueBoxDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ValueBoxDef;

} // End of namespace CORBA

void OBDuplicate(CORBA::AbstractInterfaceDef_ptr);
void OBRelease(CORBA::AbstractInterfaceDef_ptr);

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

void OBDuplicate(CORBA::LocalInterfaceDef_ptr);
void OBRelease(CORBA::LocalInterfaceDef_ptr);

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

void OBDuplicate(CORBA::ValueMemberDef_ptr);
void OBRelease(CORBA::ValueMemberDef_ptr);

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

void OBDuplicate(CORBA::ValueDef_ptr);
void OBRelease(CORBA::ValueDef_ptr);

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

void OBDuplicate(CORBA::ValueBoxDef_ptr);
void OBRelease(CORBA::ValueBoxDef_ptr);

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

namespace CORBA
{

typedef OB::ObjVar< AbstractInterfaceDef > AbstractInterfaceDef_var;
typedef OB::ObjOut< AbstractInterfaceDef > AbstractInterfaceDef_out;

typedef OB::ObjVar< LocalInterfaceDef > LocalInterfaceDef_var;
typedef OB::ObjOut< LocalInterfaceDef > LocalInterfaceDef_out;

typedef OB::ObjVar< ValueMemberDef > ValueMemberDef_var;
typedef OB::ObjOut< ValueMemberDef > ValueMemberDef_out;

typedef OB::ObjVar< ValueDef > ValueDef_var;
typedef OB::ObjOut< ValueDef > ValueDef_out;

typedef OB::ObjVar< ValueBoxDef > ValueBoxDef_var;
typedef OB::ObjOut< ValueBoxDef > ValueBoxDef_out;

} // End of namespace CORBA

#endif
