diff --git a/kerep.vcxproj b/kerep.vcxproj
index cd2ba68..8579686 100644
--- a/kerep.vcxproj
+++ b/kerep.vcxproj
@@ -32,6 +32,8 @@
+
+
@@ -44,6 +46,7 @@
+
@@ -64,7 +67,11 @@
+
+
+
+
@@ -75,7 +82,7 @@
Win32Proj
{52f0bd29-a3cb-47ce-b25d-ceaf5dfb2d73}
kerep
- 10.0.18362.0
+ 10.0
@@ -218,6 +225,8 @@
Default
stdcpp20
None
+ true
+ true
Windows
diff --git a/src/Autoarr/Autoarr.c b/src/Autoarr/Autoarr.c
index 90346bb..48d595a 100644
--- a/src/Autoarr/Autoarr.c
+++ b/src/Autoarr/Autoarr.c
@@ -1,9 +1,9 @@
#include "Autoarr.h"
-Autoarr_define(uint8)
-Autoarr_define(int8)
-Autoarr_define(uint16)
-Autoarr_define(int16)
+Autoarr_define(uint8);
+Autoarr_define(int8);
+Autoarr_define(uint16);
+Autoarr_define(int16);
Autoarr_define(uint32);
Autoarr_define(int32);
Autoarr_define(uint64);
diff --git a/src/Network/README.md b/src/Network/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/src/Network/knAddress.h b/src/Network/knAddress.h
index 737421e..ff42021 100644
--- a/src/Network/knAddress.h
+++ b/src/Network/knAddress.h
@@ -19,7 +19,7 @@ typedef union knIPV4Address {
///@return Maybe as Maybe
Maybe knIPV4Address_fromStr(char* addrStr);
-typedef struct __attribute__((__packed__)) knIPV4Endpoint {
+typedef struct knIPV4Endpoint {
knIPV4Address address;
knPort port;
} knIPV4Endpoint;
diff --git a/src/Network/knPackage.h b/src/Network/knPackage.h
index f5396f0..ab7aeca 100644
--- a/src/Network/knPackage.h
+++ b/src/Network/knPackage.h
@@ -10,9 +10,9 @@ extern "C" {
#define KNPAC_MAX_DATA_SIZE (65535-sizeof(knPackage)+sizeof(uint8*))
-typedef enum __attribute__((__packed__)) knPacVersion {
+typedef enum knPacVersion PACK({
knPac_V1
-} knPacVersion;
+}) knPacVersion;
static const char knPacHeader[5]={'k','n','p','a','c'};
diff --git a/src/Network/knSocket.c b/src/Network/knSocket.c
index 7e23819..97ffa27 100644
--- a/src/Network/knSocket.c
+++ b/src/Network/knSocket.c
@@ -2,7 +2,7 @@
#include "stdSocketHeaders.h"
-Maybe knSocket_open(knSockType sockType){
+Maybe knSocket_open(knSocketType sockType){
knSocket* newSocket=malloc(sizeof(knSocket));
newSocket->type=sockType;
newSocket->channels=NULL;
@@ -13,12 +13,12 @@ Maybe knSocket_open(knSockType sockType){
default:
safethrow("unknown socket type", free(newSocket));
break;
- case knSockType_TCP:
+ case knSocketType_TCP:
newSocket->socketfd=socket(AF_INET, SOCK_STREAM, 0);
if(newSocket->socketfd==-1)
safethrow("can't create TCP socket", free(newSocket));
break;
- case knSockType_UDP:
+ case knSocketType_UDP:
newSocket->socketfd=socket(AF_INET, SOCK_DGRAM, 0);
if(newSocket->socketfd==-1)
safethrow("can't create UDP socket", free(newSocket));
diff --git a/src/Network/knSocket.h b/src/Network/knSocket.h
index 272e4a1..337f012 100644
--- a/src/Network/knSocket.h
+++ b/src/Network/knSocket.h
@@ -9,12 +9,12 @@ extern "C" {
#include "knPackage.h"
-typedef enum __attribute__((__packed__)) knSockType {
- knSockType_TCP, knSockType_UDP
-} knSockType;
+typedef enum knSocketType PACK({
+ knSocketType_TCP, knSocketType_UDP
+}) knSocketType;
typedef struct knSocket {
- knSockType type;
+ knSocketType type;
uint16 channelsAmount;
knChannel* channels;
int64 socketfd;
@@ -23,7 +23,7 @@ typedef struct knSocket {
} knSocket;
///@return Maybe new socket
-Maybe knSocket_open(knSockType sockType);
+Maybe knSocket_open(knSocketType sockType);
///@return Maybe error or nothing
Maybe knSocket_close(knSocket* socket);
diff --git a/src/Network/stdSocketHeaders.h b/src/Network/stdSocketHeaders.h
index 5c0cd0c..3be12d3 100644
--- a/src/Network/stdSocketHeaders.h
+++ b/src/Network/stdSocketHeaders.h
@@ -13,7 +13,8 @@ extern "C" {
#include
#include
#include
- #include
+ #include
+ #include
#endif
#if __cplusplus
diff --git a/src/base/std.h b/src/base/std.h
index 09193de..7d7138a 100644
--- a/src/base/std.h
+++ b/src/base/std.h
@@ -11,7 +11,6 @@ extern "C" {
#include
#include
#include
-#include
#define dbg(N) printf("\e[95m%d\n",N)
@@ -36,6 +35,7 @@ extern "C" {
#pragma GCC error "unknown compiler"
#endif
+
#ifdef _MSC_VER
#define IFWIN(YES, NO) YES
#define IFMSC(YES, NO) YES
@@ -53,6 +53,15 @@ extern "C" {
#define NULL ((void*)0)
#endif
+
+#ifdef __GNUC__
+ #define PACK(...) __VA_ARGS__ __attribute__((__packed__))
+#elif defined(_MSC_VER)
+ #define PACK(...) __pragma(pack(push, 1)) __VA_ARGS__ __pragma(pack(pop))
+#endif
+
+
+
#if __cplusplus
}
#endif
\ No newline at end of file
diff --git a/src/base/types.h b/src/base/types.h
index e34d95f..49df7da 100644
--- a/src/base/types.h
+++ b/src/base/types.h
@@ -16,7 +16,7 @@ typedef int64_t int64;
typedef uint64_t uint64;
typedef float float32;
typedef double float64;
-typedef enum __attribute__((__packed__)) my_type {
+typedef enum my_type PACK({
Null, Float32, Float64, Char, Bool,
UInt8, Int8, UInt16, Int16, UInt32, Int32, UInt64, Int64,
UInt8Ptr, Int8Ptr, UInt16Ptr, Int16Ptr, UInt32Ptr, Int32Ptr, UInt64Ptr, Int64Ptr,
@@ -25,7 +25,7 @@ typedef enum __attribute__((__packed__)) my_type {
AutoarrInt8Ptr, AutoarrUInt8Ptr, AutoarrInt16Ptr, AutoarrUInt16Ptr,
AutoarrInt32Ptr, AutoarrUInt32Ptr, AutoarrInt64Ptr, AutoarrUInt64Ptr,
AutoarrUnitypePtr, AutoarrKVPairPtr, knSocketPtr
-} my_type;
+}) my_type;
#define my_type_last knSocketPtr
const char* my_type_name(my_type t);
diff --git a/tests/test_network.c b/tests/test_network.c
index 2b52bce..8df3f07 100644
--- a/tests/test_network.c
+++ b/tests/test_network.c
@@ -20,15 +20,20 @@ void __test_knIPV4Address_fromStr(char* addrStr, uint8 a, uint8 b, uint8 c, uint
void test_network(){
optime(__func__,1,({
printf("\e[96m------------[test_network]------------\n");
- if(sizeof(knIPV4Endpoint)!=sizeof(knPort)+sizeof(knIPV4Address))
- throw(ERR_WRONGTYPE);
+
+ PRINT_SIZEOF(knIPV4Address);
+ PRINT_SIZEOF(knPort);
+ PRINT_SIZEOF(knIPV4Endpoint);
+ PRINT_SIZEOF(knPackage);
+ PRINT_SIZEOF(knChannel);
+ PRINT_SIZEOF(knSocket);
test_knIPV4Address_fromStr(127,0,0,1);
test_knIPV4Address_fromStr(34,255,45,0);
test_knIPV4Address_fromStr(3,3,3,128);
knSocket* s;
- tryLast(knSocket_open(knSockType_TCP), maybeS)
+ tryLast(knSocket_open(knSocketType_TCP), maybeS)
s=maybeS.value.VoidPtr;
printf("\e[92mTCP socket created\n");
tryLast(knSocket_close(s);,_);
diff --git a/tests/test_searchtree.c b/tests/test_searchtree.c
index cb4600e..cff22a5 100644
--- a/tests/test_searchtree.c
+++ b/tests/test_searchtree.c
@@ -7,7 +7,7 @@ void printstnode(STNode* node){
"\n address: %p\n value: ",sizeof(STNode),node);
printuni(node->value);
// prints pointers to all existing branches
- printf("\n branches: %p\n", node->branches);
+ /* printf("\n branches: %p\n", node->branches);
if(node->branches) for(uint8 i=0;i<8;i++){
printf(" \e[90m[%u]=%p\n",i,node->branches[i]);
if(node->branches[i])
@@ -18,7 +18,7 @@ void printstnode(STNode* node){
printf(" \e[90m[%u]=%p\n",iii,node->branches[i][ii][iii]);
}
- }
+ } */
}
void test_searchtree(){
diff --git a/tests/tests.h b/tests/tests.h
index 012a7e2..eb66a8f 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -15,6 +15,8 @@ void test_hashtable();
void test_dtsod();
void test_network();
+#define PRINT_SIZEOF(T) printf("\e[94m" #T " size: \e[96m" IFWIN("%llu", "%lu") "\n", sizeof(T))
+
#if __cplusplus
}
#endif
\ No newline at end of file