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
This commit is contained in:
Vadim Zeitlin 2001-11-22 10:38:02 +00:00
parent a60b1f5d57
commit 1539c2f54a
2 changed files with 33 additions and 8 deletions

View File

@ -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();

View File

@ -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