From 1539c2f54a43b0de6f6d75437b04d30872da9ea4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 22 Nov 2001 10:38:02 +0000 Subject: [PATCH] added wxSockAddress copy ctor which, in particular, fixes Clone() and fixed its operator=() return type git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12585 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/sckaddr.h | 11 ++++++++--- src/common/sckaddr.cpp | 30 +++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/include/wx/sckaddr.h b/include/wx/sckaddr.h index 000673d1d2..8f175f4f45 100644 --- a/include/wx/sckaddr.h +++ b/include/wx/sckaddr.h @@ -30,14 +30,16 @@ 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); // we need to be able to create copies of the addresses polymorphically (i.e. // wihtout knowing the exact address class) @@ -51,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); @@ -74,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]); @@ -102,7 +106,8 @@ private: struct sockaddr_un *m_addr; public: wxUNIXaddress(); - ~wxUNIXaddress(); + wxUNIXaddress(const wxUNIXaddress& other); + virtual ~wxUNIXaddress(); void Filename(const wxString& name); wxString Filename(); diff --git a/src/common/sckaddr.cpp b/src/common/sckaddr.cpp index 474a0f3092..8e638c3537 100644 --- a/src/common/sckaddr.cpp +++ b/src/common/sckaddr.cpp @@ -55,6 +55,11 @@ wxSockAddress::wxSockAddress() m_address = GAddress_new(); } +wxSockAddress::wxSockAddress(const wxSockAddress& other) +{ + m_address = GAddress_copy(other.m_address); +} + wxSockAddress::~wxSockAddress() { GAddress_destroy(m_address); @@ -66,7 +71,7 @@ void wxSockAddress::SetAddress(GAddress *address) m_address = GAddress_copy(address); } -const wxSockAddress& wxSockAddress::operator=(const wxSockAddress& addr) +wxSockAddress& wxSockAddress::operator=(const wxSockAddress& addr) { SetAddress(addr.GetAddress()); return *this; @@ -83,7 +88,11 @@ void wxSockAddress::Clear() // --------------------------------------------------------------------------- wxIPV4address::wxIPV4address() - : wxSockAddress() +{ +} + +wxIPV4address::wxIPV4address(const wxIPV4address& other) + : wxSockAddress(other) { } @@ -152,6 +161,11 @@ wxIPV6address::wxIPV6address() { } +wxIPV6address::wxIPV6address(const wxIPV6address& other) + : wxSockAddress(other) +{ +} + wxIPV6address::~wxIPV6address() { } @@ -191,15 +205,21 @@ unsigned short wxIPV6address::Service() return GAddress_INET_GetPort(m_address); } -#endif +#endif // 0 #if defined(__UNIX__) && !defined(__WXMAC__) + // --------------------------------------------------------------------------- // wxUNIXaddress // --------------------------------------------------------------------------- wxUNIXaddress::wxUNIXaddress() - : wxSockAddress() + : wxSockAddress() +{ +} + +wxUNIXaddress::wxUNIXaddress(const wxUNIXaddress& other) + : wxSockAddress(other) { } @@ -221,7 +241,7 @@ wxString wxUNIXaddress::Filename() return wxString(path); } -#endif +#endif // __UNIX__ #endif // wxUSE_SOCKETS -- 2.45.2