aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/old/vlib/net/conv
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/old/vlib/net/conv')
-rw-r--r--v_windows/v/old/vlib/net/conv/conv.c.v21
-rw-r--r--v_windows/v/old/vlib/net/conv/conv_default.c.v46
-rw-r--r--v_windows/v/old/vlib/net/conv/conv_windows.c.v21
3 files changed, 88 insertions, 0 deletions
diff --git a/v_windows/v/old/vlib/net/conv/conv.c.v b/v_windows/v/old/vlib/net/conv/conv.c.v
new file mode 100644
index 0000000..e29741a
--- /dev/null
+++ b/v_windows/v/old/vlib/net/conv/conv.c.v
@@ -0,0 +1,21 @@
+module conv
+
+// host to net 32 (htonl)
+pub fn htn32(host &u32) u32 {
+ return C.htonl(host)
+}
+
+// host to net 16 (htons)
+pub fn htn16(host &u16) u16 {
+ return C.htons(host)
+}
+
+// net to host 32 (ntohl)
+pub fn nth32(host &u32) u32 {
+ return C.ntohl(host)
+}
+
+// net to host 16 (ntohs)
+pub fn nth16(host &u16) u16 {
+ return C.ntohs(host)
+}
diff --git a/v_windows/v/old/vlib/net/conv/conv_default.c.v b/v_windows/v/old/vlib/net/conv/conv_default.c.v
new file mode 100644
index 0000000..8e8c582
--- /dev/null
+++ b/v_windows/v/old/vlib/net/conv/conv_default.c.v
@@ -0,0 +1,46 @@
+module conv
+
+#include <arpa/inet.h>
+
+fn C.htonl(host u32) u32
+fn C.htons(host u16) u16
+
+fn C.ntohl(net u32) u32
+fn C.ntohs(net u16) u16
+
+struct Bytes {
+mut:
+ first u32
+ last u32
+}
+
+union LongLong {
+ Bytes
+ ll u64
+}
+
+// host to net 64 (htonll)
+pub fn htn64(host &u64) u64 {
+ mut ll := LongLong{
+ ll: host
+ }
+
+ unsafe {
+ ll.first = htn32(ll.first)
+ ll.last = htn32(ll.last)
+ }
+ return unsafe { ll.ll }
+}
+
+// net to host 64 (ntohll)
+pub fn nth64(net &u64) u64 {
+ mut ll := LongLong{
+ ll: net
+ }
+
+ unsafe {
+ ll.first = nth32(ll.first)
+ ll.last = nth32(ll.last)
+ }
+ return unsafe { ll.ll }
+}
diff --git a/v_windows/v/old/vlib/net/conv/conv_windows.c.v b/v_windows/v/old/vlib/net/conv/conv_windows.c.v
new file mode 100644
index 0000000..15827f7
--- /dev/null
+++ b/v_windows/v/old/vlib/net/conv/conv_windows.c.v
@@ -0,0 +1,21 @@
+module conv
+
+#include <winsock2.h>
+
+fn C.htonll(host u64) u64
+fn C.htonl(host u32) u32
+fn C.htons(host u16) u16
+
+fn C.ntohll(net u32) u32
+fn C.ntohl(net u32) u32
+fn C.ntohs(net u16) u16
+
+// host to net 64 (htonll)
+pub fn htn64(host &u64) u64 {
+ return C.htonll(host)
+}
+
+// net to host 64 (htonll)
+pub fn nth64(host &u64) u64 {
+ return C.ntohll(host)
+}