+// ----------------------------------------------------------------------------
+// macros for protocol classes
+// ----------------------------------------------------------------------------
+
+#define DECLARE_PROTOCOL(class) \
+public: \
+ static wxProtoInfo g_proto_##class;
+
+#define IMPLEMENT_PROTOCOL(class, name, serv, host) \
+wxProtoInfo class::g_proto_##class(name, serv, host, CLASSINFO(class)); \
+bool wxProtocolUse##class = TRUE;
+
+#define USE_PROTOCOL(class) \
+ extern bool wxProtocolUse##class ; \
+ static struct wxProtocolUserFor##class \
+ { \
+ wxProtocolUserFor##class() { wxProtocolUse##class = TRUE; } \
+ } wxProtocolDoUse##class;
+
+class WXDLLEXPORT wxProtoInfo : public wxObject
+{
+public:
+ wxProtoInfo(const wxChar *name,
+ const wxChar *serv_name,
+ const bool need_host1,
+ wxClassInfo *info);
+
+protected:
+ wxProtoInfo *next;
+ wxString m_protoname;
+ wxString prefix;
+ wxString m_servname;
+ wxClassInfo *m_cinfo;
+ bool m_needhost;
+
+ friend class wxURL;
+
+ DECLARE_DYNAMIC_CLASS(wxProtoInfo)
+ DECLARE_NO_COPY_CLASS(wxProtoInfo)
+};
+
+#endif // wxUSE_PROTOCOL
+