X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e1c70641a30f79b0b318dea5944ccfde6451d780..e5ee4c908b9dbcf07f0441aa74d8635b7343be4d:/include/wx/sckaddr.h diff --git a/include/wx/sckaddr.h b/include/wx/sckaddr.h index 25ee60d498..8f175f4f45 100644 --- a/include/wx/sckaddr.h +++ b/include/wx/sckaddr.h @@ -30,16 +30,20 @@ public: typedef enum { IPV4=1, IPV6=2, UNIX=3 } Addr; wxSockAddress(); + wxSockAddress(const wxSockAddress& other); virtual ~wxSockAddress(); + wxSockAddress& operator=(const wxSockAddress& other); + virtual void Clear(); virtual int Type() = 0; GAddress *GetAddress() const { return m_address; } void SetAddress(GAddress *address); - const wxSockAddress& operator =(const wxSockAddress& addr); - void CopyObject(wxObject& dest) const; + // we need to be able to create copies of the addresses polymorphically (i.e. + // wihtout knowing the exact address class) + virtual wxSockAddress *Clone() const = 0; protected: GAddress *m_address; @@ -49,6 +53,7 @@ class WXDLLEXPORT wxIPV4address : public wxSockAddress { DECLARE_DYNAMIC_CLASS(wxIPV4address) public: wxIPV4address(); + wxIPV4address(const wxIPV4address& other); virtual ~wxIPV4address(); bool Hostname(const wxString& name); @@ -56,11 +61,13 @@ public: bool Service(const wxString& name); bool Service(unsigned short port); bool LocalHost(); + bool AnyAddress(); wxString Hostname(); unsigned short Service(); - inline int Type() { return wxSockAddress::IPV4; } + virtual int Type() { return wxSockAddress::IPV4; } + virtual wxSockAddress *Clone() const { return new wxIPV4address(*this); } }; #ifdef ENABLE_IPV6 @@ -70,7 +77,8 @@ private: struct sockaddr_in6 *m_addr; public: wxIPV6address(); - ~wxIPV6address(); + wxIPV6address(const wxIPV6address& other); + virtual ~wxIPV6address(); bool Hostname(const wxString& name); bool Hostname(unsigned char addr[16]); @@ -81,11 +89,12 @@ public: wxString Hostname() const; unsigned short Service() const; - inline int Type() { return wxSockAddress::IPV6; } + virtual int Type() { return wxSockAddress::IPV6; } + virtual wxSockAddress *Clone() const { return new wxIPV6address(*this); } }; #endif -#ifdef __UNIX__ +#if defined(__UNIX__) && !defined(__WXMAC__) #include #ifndef __VMS__ # include @@ -97,12 +106,14 @@ private: struct sockaddr_un *m_addr; public: wxUNIXaddress(); - ~wxUNIXaddress(); + wxUNIXaddress(const wxUNIXaddress& other); + virtual ~wxUNIXaddress(); void Filename(const wxString& name); wxString Filename(); - inline int Type() { return wxSockAddress::UNIX; } + virtual int Type() { return wxSockAddress::UNIX; } + virtual wxSockAddress *Clone() const { return new wxUNIXaddress(*this); } }; #endif // __UNIX__