Files
Work/socket/INADDR.HPP
2024-08-07 09:16:27 -04:00

215 lines
3.7 KiB
C++

#ifndef _SOCKET_INTERNETADDRESS_HPP_
#define _SOCKET_INTERNETADDRESS_HPP_
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _COMMON_WINSOCK_HPP_
#include <common/winsock.hpp>
#endif
class InternetAddress : private in_addr
{
public:
InternetAddress(void);
InternetAddress(BYTE a1,BYTE a2,BYTE a3,BYTE a4);
InternetAddress(const InternetAddress &someInternetAddress);
InternetAddress(const in_addr &someInAddr);
InternetAddress(const String &dottedString);
InternetAddress(unsigned value);
virtual ~InternetAddress();
InternetAddress &operator=(const InternetAddress &someInternetAddress);
InternetAddress &operator=(const in_addr &someInAddr);
WORD operator==(const InternetAddress &someInternetAddress)const;
operator String(void);
operator in_addr&(void);
String toString(void)const;
WORD isZero(void)const;
void l1(unsigned value);
unsigned l1(void)const;
BYTE b1(void)const;
void b1(BYTE b1);
BYTE b2(void)const;
void b2(BYTE b2);
BYTE b3(void)const;
void b3(BYTE b3);
BYTE b4(void)const;
void b4(BYTE b4);
private:
void setZero(void);
};
inline
InternetAddress::InternetAddress(void)
{
setZero();
}
inline
InternetAddress::InternetAddress(const InternetAddress &someInternetAddress)
{
*this=someInternetAddress;
}
inline
InternetAddress::InternetAddress(const in_addr &someInAddr)
{
*this=someInAddr;
}
inline
InternetAddress::InternetAddress(unsigned value)
{
l1(value);
}
inline
InternetAddress::InternetAddress(BYTE a1,BYTE a2,BYTE a3,BYTE a4)
{
b1(a1);
b2(a2);
b3(a3);
b4(a4);
}
inline
InternetAddress::InternetAddress(const String &dottedString)
{
DWORD internetAddress;
b1(0);
b2(0);
b3(0);
b4(0);
if(INADDR_NONE==(internetAddress=inet_addr((LPSTR)dottedString)))return;
*this=(in_addr&)internetAddress;
}
inline
InternetAddress::~InternetAddress()
{
}
inline
InternetAddress &InternetAddress::operator=(const InternetAddress &someInternetAddress)
{
b1(someInternetAddress.b1());
b2(someInternetAddress.b2());
b3(someInternetAddress.b3());
b4(someInternetAddress.b4());
return *this;
}
inline
InternetAddress &InternetAddress::operator=(const in_addr &someInAddr)
{
b1(someInAddr.S_un.S_un_b.s_b1);
b2(someInAddr.S_un.S_un_b.s_b2);
b3(someInAddr.S_un.S_un_b.s_b3);
b4(someInAddr.S_un.S_un_b.s_b4);
return *this;
}
inline
WORD InternetAddress::operator==(const InternetAddress &someInternetAddress)const
{
return (b1()==someInternetAddress.b1()&&
b2()==someInternetAddress.b2()&&
b3()==someInternetAddress.b3()&&
b4()==someInternetAddress.b4());
}
inline
InternetAddress::operator String(void)
{
return toString();
}
inline
String InternetAddress::toString(void)const
{
return inet_ntoa((in_addr&)*this);
}
inline
InternetAddress::operator in_addr&(void)
{
return *this;
}
inline
unsigned InternetAddress::l1(void)const
{
return in_addr::S_un.S_addr;
}
inline
void InternetAddress::l1(unsigned value)
{
in_addr::S_un.S_addr=value;
}
inline
BYTE InternetAddress::b1(void)const
{
return in_addr::S_un.S_un_b.s_b1;
}
inline
void InternetAddress::b1(BYTE b1)
{
in_addr::S_un.S_un_b.s_b1=b1;
}
inline
BYTE InternetAddress::b2(void)const
{
return in_addr::S_un.S_un_b.s_b2;
}
inline
void InternetAddress::b2(BYTE b2)
{
in_addr::S_un.S_un_b.s_b2=b2;
}
inline
BYTE InternetAddress::b3(void)const
{
return in_addr::S_un.S_un_b.s_b3;
}
inline
void InternetAddress::b3(BYTE b3)
{
in_addr::S_un.S_un_b.s_b3=b3;
}
inline
BYTE InternetAddress::b4(void)const
{
return in_addr::S_un.S_un_b.s_b4;
}
inline
void InternetAddress::b4(BYTE b4)
{
in_addr::S_un.S_un_b.s_b4=b4;
}
inline
WORD InternetAddress::isZero(void)const
{
return (!b1()&&!b2()&&!b3()&&!b4());
}
inline
void InternetAddress::setZero(void)
{
b1(0);
b2(0);
b3(0);
b4(0);
}
#endif