// **********************************************************************
//
// 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_IFR3_fwd_h__
#define __OB_IFR3_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 Repository;
typedef Repository* Repository_ptr;
typedef Repository* RepositoryRef;

OB_IMPORT extern OB::TypeCodeConst _tc_Repository;

class ModuleDef;
typedef ModuleDef* ModuleDef_ptr;
typedef ModuleDef* ModuleDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ModuleDef;

class ConstantDef;
typedef ConstantDef* ConstantDef_ptr;
typedef ConstantDef* ConstantDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ConstantDef;

class TypedefDef;
typedef TypedefDef* TypedefDef_ptr;
typedef TypedefDef* TypedefDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_TypedefDef;

class StructDef;
typedef StructDef* StructDef_ptr;
typedef StructDef* StructDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_StructDef;

class UnionDef;
typedef UnionDef* UnionDef_ptr;
typedef UnionDef* UnionDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_UnionDef;

class EnumDef;
typedef EnumDef* EnumDef_ptr;
typedef EnumDef* EnumDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_EnumDef;

class AliasDef;
typedef AliasDef* AliasDef_ptr;
typedef AliasDef* AliasDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_AliasDef;

class NativeDef;
typedef NativeDef* NativeDef_ptr;
typedef NativeDef* NativeDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_NativeDef;

class PrimitiveDef;
typedef PrimitiveDef* PrimitiveDef_ptr;
typedef PrimitiveDef* PrimitiveDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_PrimitiveDef;

class StringDef;
typedef StringDef* StringDef_ptr;
typedef StringDef* StringDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_StringDef;

class WstringDef;
typedef WstringDef* WstringDef_ptr;
typedef WstringDef* WstringDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_WstringDef;

class FixedDef;
typedef FixedDef* FixedDef_ptr;
typedef FixedDef* FixedDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_FixedDef;

class SequenceDef;
typedef SequenceDef* SequenceDef_ptr;
typedef SequenceDef* SequenceDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_SequenceDef;

class ArrayDef;
typedef ArrayDef* ArrayDef_ptr;
typedef ArrayDef* ArrayDefRef;

OB_IMPORT extern OB::TypeCodeConst _tc_ArrayDef;

} // End of namespace CORBA

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

namespace CORBA
{

typedef OB::ObjVar< Repository > Repository_var;
typedef OB::ObjOut< Repository > Repository_out;

typedef OB::ObjVar< ModuleDef > ModuleDef_var;
typedef OB::ObjOut< ModuleDef > ModuleDef_out;

typedef OB::ObjVar< ConstantDef > ConstantDef_var;
typedef OB::ObjOut< ConstantDef > ConstantDef_out;

typedef OB::ObjVar< TypedefDef > TypedefDef_var;
typedef OB::ObjOut< TypedefDef > TypedefDef_out;

typedef OB::ObjVar< StructDef > StructDef_var;
typedef OB::ObjOut< StructDef > StructDef_out;

typedef OB::ObjVar< UnionDef > UnionDef_var;
typedef OB::ObjOut< UnionDef > UnionDef_out;

typedef OB::ObjVar< EnumDef > EnumDef_var;
typedef OB::ObjOut< EnumDef > EnumDef_out;

typedef OB::ObjVar< AliasDef > AliasDef_var;
typedef OB::ObjOut< AliasDef > AliasDef_out;

typedef OB::ObjVar< NativeDef > NativeDef_var;
typedef OB::ObjOut< NativeDef > NativeDef_out;

typedef OB::ObjVar< PrimitiveDef > PrimitiveDef_var;
typedef OB::ObjOut< PrimitiveDef > PrimitiveDef_out;

typedef OB::ObjVar< StringDef > StringDef_var;
typedef OB::ObjOut< StringDef > StringDef_out;

typedef OB::ObjVar< WstringDef > WstringDef_var;
typedef OB::ObjOut< WstringDef > WstringDef_out;

typedef OB::ObjVar< FixedDef > FixedDef_var;
typedef OB::ObjOut< FixedDef > FixedDef_out;

typedef OB::ObjVar< SequenceDef > SequenceDef_var;
typedef OB::ObjOut< SequenceDef > SequenceDef_out;

typedef OB::ObjVar< ArrayDef > ArrayDef_var;
typedef OB::ObjOut< ArrayDef > ArrayDef_out;

} // End of namespace CORBA

#endif
