// **********************************************************************
//
// 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_OBORB_fwd_h__
#define __OB_OBORB_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 Context;
typedef Context* Context_ptr;
typedef Context* ContextRef;

class NVList;
typedef NVList* NVList_ptr;
typedef NVList* NVListRef;

class NamedValue;
typedef NamedValue* NamedValue_ptr;
typedef NamedValue* NamedValueRef;

class ContextList;
typedef ContextList* ContextList_ptr;
typedef ContextList* ContextListRef;

class ExceptionList;
typedef ExceptionList* ExceptionList_ptr;
typedef ExceptionList* ExceptionListRef;

class Environment;
typedef Environment* Environment_ptr;
typedef Environment* EnvironmentRef;

class OperationDef;
typedef OperationDef* OperationDef_ptr;
typedef OperationDef* OperationDefRef;

class Request;
typedef Request* Request_ptr;
typedef Request* RequestRef;

class ORB;
typedef ORB* ORB_ptr;
typedef ORB* ORBRef;

} // End of namespace CORBA

namespace OB
{

class Logger;
typedef Logger* Logger_ptr;
typedef Logger* LoggerRef;

class Reactor;
typedef Reactor* Reactor_ptr;
typedef Reactor* ReactorRef;

class UnknownExceptionStrategy;
typedef UnknownExceptionStrategy* UnknownExceptionStrategy_ptr;
typedef UnknownExceptionStrategy* UnknownExceptionStrategyRef;

} // End of namespace OB

namespace OBCORBA
{

class ORB;
typedef ORB* ORB_ptr;
typedef ORB* ORBRef;

} // End of namespace OBCORBA

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

void OBDuplicate(OB::Logger_ptr);
void OBRelease(OB::Logger_ptr);

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

void OBDuplicate(OB::Reactor_ptr);
void OBRelease(OB::Reactor_ptr);

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

void OBDuplicate(OB::UnknownExceptionStrategy_ptr);
void OBRelease(OB::UnknownExceptionStrategy_ptr);

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

void OBDuplicate(OBCORBA::ORB_ptr);
void OBRelease(OBCORBA::ORB_ptr);

void OBMarshal(OBCORBA::ORB_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(OBCORBA::ORB_ptr&, OB::InputStreamImpl*);

namespace CORBA
{

typedef OB::ObjVar< Context > Context_var;
typedef OB::ObjOut< Context > Context_out;

typedef OB::ObjVar< NVList > NVList_var;
typedef OB::ObjOut< NVList > NVList_out;

typedef OB::ObjVar< NamedValue > NamedValue_var;
typedef OB::ObjOut< NamedValue > NamedValue_out;

typedef OB::ObjVar< ContextList > ContextList_var;
typedef OB::ObjOut< ContextList > ContextList_out;

typedef OB::ObjVar< ExceptionList > ExceptionList_var;
typedef OB::ObjOut< ExceptionList > ExceptionList_out;

typedef OB::ObjVar< Environment > Environment_var;
typedef OB::ObjOut< Environment > Environment_out;

typedef OB::ObjVar< OperationDef > OperationDef_var;
typedef OB::ObjOut< OperationDef > OperationDef_out;

typedef OB::ObjVar< Request > Request_var;
typedef OB::ObjOut< Request > Request_out;

typedef OB::ObjVar< ORB > ORB_var;
typedef OB::ObjOut< ORB > ORB_out;

} // End of namespace CORBA

namespace OB
{

typedef OB::ObjVar< Logger > Logger_var;
typedef OB::ObjOut< Logger > Logger_out;

typedef OB::ObjVar< Reactor > Reactor_var;
typedef OB::ObjOut< Reactor > Reactor_out;

typedef OB::ObjVar< UnknownExceptionStrategy > UnknownExceptionStrategy_var;
typedef OB::ObjOut< UnknownExceptionStrategy > UnknownExceptionStrategy_out;

} // End of namespace OB

namespace OBCORBA
{

typedef OB::ObjVar< ORB > ORB_var;
typedef OB::ObjOut< ORB > ORB_out;

} // End of namespace OBCORBA

#endif
