// **********************************************************************
//
// 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_OCIClient_fwd_h__
#define __OB_OCIClient_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 OCI
{

class AcceptorInfo;
typedef AcceptorInfo* AcceptorInfo_ptr;
typedef AcceptorInfo* AcceptorInfoRef;

class Plugin;
typedef Plugin* Plugin_ptr;
typedef Plugin* PluginRef;

class Transport;
typedef Transport* Transport_ptr;
typedef Transport* TransportRef;

class TransportInfo;
typedef TransportInfo* TransportInfo_ptr;
typedef TransportInfo* TransportInfoRef;

class CloseCB;
typedef CloseCB* CloseCB_ptr;
typedef CloseCB* CloseCBRef;

class Connector;
typedef Connector* Connector_ptr;
typedef Connector* ConnectorRef;

class ConnectorInfo;
typedef ConnectorInfo* ConnectorInfo_ptr;
typedef ConnectorInfo* ConnectorInfoRef;

class ConnectCB;
typedef ConnectCB* ConnectCB_ptr;
typedef ConnectCB* ConnectCBRef;

class ConFactory;
typedef ConFactory* ConFactory_ptr;
typedef ConFactory* ConFactoryRef;

class ConFactoryInfo;
typedef ConFactoryInfo* ConFactoryInfo_ptr;
typedef ConFactoryInfo* ConFactoryInfoRef;

class ConFactoryRegistry;
typedef ConFactoryRegistry* ConFactoryRegistry_ptr;
typedef ConFactoryRegistry* ConFactoryRegistryRef;

} // End of namespace OCI

void OBDuplicate(OCI::AcceptorInfo_ptr);
void OBRelease(OCI::AcceptorInfo_ptr);

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

void OBDuplicate(OCI::Plugin_ptr);
void OBRelease(OCI::Plugin_ptr);

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

void OBDuplicate(OCI::Transport_ptr);
void OBRelease(OCI::Transport_ptr);

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

void OBDuplicate(OCI::TransportInfo_ptr);
void OBRelease(OCI::TransportInfo_ptr);

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

void OBDuplicate(OCI::CloseCB_ptr);
void OBRelease(OCI::CloseCB_ptr);

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

void OBDuplicate(OCI::Connector_ptr);
void OBRelease(OCI::Connector_ptr);

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

void OBDuplicate(OCI::ConnectorInfo_ptr);
void OBRelease(OCI::ConnectorInfo_ptr);

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

void OBDuplicate(OCI::ConnectCB_ptr);
void OBRelease(OCI::ConnectCB_ptr);

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

void OBDuplicate(OCI::ConFactory_ptr);
void OBRelease(OCI::ConFactory_ptr);

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

void OBDuplicate(OCI::ConFactoryInfo_ptr);
void OBRelease(OCI::ConFactoryInfo_ptr);

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

void OBDuplicate(OCI::ConFactoryRegistry_ptr);
void OBRelease(OCI::ConFactoryRegistry_ptr);

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

namespace OCI
{

typedef OB::ObjVar< AcceptorInfo > AcceptorInfo_var;
typedef OB::ObjOut< AcceptorInfo > AcceptorInfo_out;

typedef OB::ObjVar< Plugin > Plugin_var;
typedef OB::ObjOut< Plugin > Plugin_out;

typedef OB::ObjVar< Transport > Transport_var;
typedef OB::ObjOut< Transport > Transport_out;

typedef OB::ObjVar< TransportInfo > TransportInfo_var;
typedef OB::ObjOut< TransportInfo > TransportInfo_out;

typedef OB::ObjVar< CloseCB > CloseCB_var;
typedef OB::ObjOut< CloseCB > CloseCB_out;

typedef OB::ObjVar< Connector > Connector_var;
typedef OB::ObjOut< Connector > Connector_out;

typedef OB::ObjVar< ConnectorInfo > ConnectorInfo_var;
typedef OB::ObjOut< ConnectorInfo > ConnectorInfo_out;

typedef OB::ObjVar< ConnectCB > ConnectCB_var;
typedef OB::ObjOut< ConnectCB > ConnectCB_out;

typedef OB::ObjVar< ConFactory > ConFactory_var;
typedef OB::ObjOut< ConFactory > ConFactory_out;

typedef OB::ObjVar< ConFactoryInfo > ConFactoryInfo_var;
typedef OB::ObjOut< ConFactoryInfo > ConFactoryInfo_out;

typedef OB::ObjVar< ConFactoryRegistry > ConFactoryRegistry_var;
typedef OB::ObjOut< ConFactoryRegistry > ConFactoryRegistry_out;

} // End of namespace OCI

#endif
