]> git.tdb.fi Git - libs/net.git/blobdiff - source/net/inet.cpp
Move most platform-specific code into overlay directories
[libs/net.git] / source / net / inet.cpp
index 29e24aa7836d6843652da740fb47de576e8db387..8e75cd89dfb1eb930b3e55a0217a93e42ab03e15 100644 (file)
@@ -1,8 +1,4 @@
-#ifdef WIN32
-#include <winsock2.h>
-#else
-#include <netinet/in.h>
-#endif
+#include "platform_api.h"
 #include <msp/strings/format.h>
 #include "inet.h"
 #include "sockaddr_private.h"
@@ -21,10 +17,8 @@ InetAddr::InetAddr():
 InetAddr::InetAddr(const SysAddr &sa)
 {
        const sockaddr_in &sai = reinterpret_cast<const sockaddr_in &>(sa.addr);
-       addr[0] = sai.sin_addr.s_addr>>24;
-       addr[1] = sai.sin_addr.s_addr>>16;
-       addr[2] = sai.sin_addr.s_addr>>8;
-       addr[3] = sai.sin_addr.s_addr;
+       const char *ptr = reinterpret_cast<const char *>(&sai.sin_addr.s_addr);
+       std::copy(ptr, ptr+4, addr);
        port = ntohs(sai.sin_port);
 }
 
@@ -34,7 +28,8 @@ SockAddr::SysAddr InetAddr::to_sys() const
        sa.size = sizeof(sockaddr_in);
        sockaddr_in &sai = reinterpret_cast<sockaddr_in &>(sa.addr);
        sai.sin_family = AF_INET;
-       sai.sin_addr.s_addr = (addr[0]<<24) | (addr[1]<<16) | (addr[2]<<8) | (addr[3]);
+       char *ptr = reinterpret_cast<char *>(&sai.sin_addr.s_addr);
+       std::copy(addr, addr+4, ptr);
        sai.sin_port = htons(port);
 
        return sa;