// Created: 10/07/1997
// RCS-ID: $Id$
// Copyright: (c) 1997, 1998 Guilhem Lavaux
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_PROTOCOL_PROTOCOL_H
#define _WX_PROTOCOL_PROTOCOL_H
-#ifdef __GNUG__
-#pragma interface
-#endif
-
#include "wx/defs.h"
+#if wxUSE_PROTOCOL
+
#include "wx/object.h"
#include "wx/string.h"
#include "wx/stream.h"
// wxProtocol: abstract base class for all protocols
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxProtocol
+class WXDLLIMPEXP_NET wxProtocol
#if wxUSE_SOCKETS
: public wxSocketClient
#else
#if wxUSE_SOCKETS
bool Reconnect();
virtual bool Connect( const wxString& WXUNUSED(host) ) { return FALSE; }
- virtual bool Connect( wxSockAddress& addr, bool WXUNUSED(wait) = TRUE) { return wxSocketClient::Connect(addr); }
+ virtual bool Connect( const wxSockAddress& addr, bool WXUNUSED(wait) = TRUE)
+ { return wxSocketClient::Connect(addr); }
// read a '\r\n' terminated line from the given socket and put it in
// result (without the terminators)
virtual void SetPassword(const wxString& WXUNUSED(passwd) ) {}
private:
- DECLARE_ABSTRACT_CLASS(wxProtocol)
+ DECLARE_DYNAMIC_CLASS_NO_COPY(wxProtocol)
};
-#if wxUSE_SOCKETS
-wxProtocolError WXDLLEXPORT GetLine(wxSocketBase *sock, wxString& result);
-#endif
-
// ----------------------------------------------------------------------------
// macros for protocol classes
// ----------------------------------------------------------------------------
static wxProtoInfo g_proto_##class;
#define IMPLEMENT_PROTOCOL(class, name, serv, host) \
-wxProtoInfo class::g_proto_##class(name, serv, host, CLASSINFO(class));
+wxProtoInfo class::g_proto_##class(name, serv, host, CLASSINFO(class)); \
+bool wxProtocolUse##class = TRUE;
-class WXDLLEXPORT wxProtoInfo : public wxObject
+#define USE_PROTOCOL(class) \
+ extern bool wxProtocolUse##class ; \
+ static struct wxProtocolUserFor##class \
+ { \
+ wxProtocolUserFor##class() { wxProtocolUse##class = TRUE; } \
+ } wxProtocolDoUse##class;
+
+class WXDLLIMPEXP_NET wxProtoInfo : public wxObject
{
public:
wxProtoInfo(const wxChar *name,
friend class wxURL;
DECLARE_DYNAMIC_CLASS(wxProtoInfo)
+ DECLARE_NO_COPY_CLASS(wxProtoInfo)
};
+#endif // wxUSE_PROTOCOL
+
#endif // _WX_PROTOCOL_PROTOCOL_H