From c6c70c6fcce11c7e7bf419ad6d2c4f2676db6186 Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Sun, 8 May 2022 13:59:28 +0300 Subject: [PATCH 01/40] project structure changed for clion --- .gitignore | 1 - .idea/.gitignore | 8 +++++ .idea/inspectionProfiles/Project_Default.xml | 12 +++++++ .idea/misc.xml | 31 +++++++++++++++++++ .idea/vcs.xml | 6 ++++ Makefile | 23 ++++++++------ {Autoarr => src/Autoarr}/Autoarr.c | 0 {Autoarr => src/Autoarr}/Autoarr.h | 0 .../Autoarr}/Autoarr_KVPair_exported.c | 0 .../Autoarr}/Autoarr_Unitype_exported.c | 0 {Autoarr => src/Autoarr}/Autoarr_declare.h | 0 {Autoarr => src/Autoarr}/Autoarr_define.h | 0 {DtsodParser => src/DtsodParser}/DtsodV24.c | 0 {DtsodParser => src/DtsodParser}/DtsodV24.h | 0 .../DtsodParser}/DtsodV24_deserialize.c | 0 .../DtsodParser}/DtsodV24_exported.c | 0 .../DtsodParser}/DtsodV24_serialize.c | 0 {DtsodParser => src/DtsodParser}/README.md | 0 {Hashtable => src/Hashtable}/Hashtable.c | 4 +-- {Hashtable => src/Hashtable}/Hashtable.h | 0 {Hashtable => src/Hashtable}/KeyValuePair.c | 0 {Hashtable => src/Hashtable}/KeyValuePair.h | 0 {Hashtable => src/Hashtable}/hash.c | 4 +-- {Hashtable => src/Hashtable}/hash.h | 4 +-- {SearchTree => src/SearchTree}/SearchTree.c | 0 {SearchTree => src/SearchTree}/SearchTree.h | 0 {SearchTree => src/SearchTree}/SearchTree.md | 0 {String => src/String}/StringBuilder.c | 0 {String => src/String}/StringBuilder.h | 2 +- {String => src/String}/string.c | 2 +- {String => src/String}/string.h | 0 {base => src/base}/base.h | 0 {base => src/base}/cptr.c | 0 {base => src/base}/cptr.h | 0 {base => src/base}/errors.c | 4 ++- {base => src/base}/errors.h | 2 +- {base => src/base}/std.h | 0 {base => src/base}/types.c | 0 {base => src/base}/types.h | 0 tests/test_autoarr.c | 2 +- tests/test_dtsod.c | 6 ++-- tests/test_hashtable.c | 2 +- tests/test_marshalling.c | 2 +- tests/test_searchtree.c | 2 +- tests/test_string.c | 2 +- tests/tests.h | 2 +- 46 files changed, 92 insertions(+), 29 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml rename {Autoarr => src/Autoarr}/Autoarr.c (100%) rename {Autoarr => src/Autoarr}/Autoarr.h (100%) rename {Autoarr => src/Autoarr}/Autoarr_KVPair_exported.c (100%) rename {Autoarr => src/Autoarr}/Autoarr_Unitype_exported.c (100%) rename {Autoarr => src/Autoarr}/Autoarr_declare.h (100%) rename {Autoarr => src/Autoarr}/Autoarr_define.h (100%) rename {DtsodParser => src/DtsodParser}/DtsodV24.c (100%) rename {DtsodParser => src/DtsodParser}/DtsodV24.h (100%) rename {DtsodParser => src/DtsodParser}/DtsodV24_deserialize.c (100%) rename {DtsodParser => src/DtsodParser}/DtsodV24_exported.c (100%) rename {DtsodParser => src/DtsodParser}/DtsodV24_serialize.c (100%) rename {DtsodParser => src/DtsodParser}/README.md (100%) rename {Hashtable => src/Hashtable}/Hashtable.c (96%) rename {Hashtable => src/Hashtable}/Hashtable.h (100%) rename {Hashtable => src/Hashtable}/KeyValuePair.c (100%) rename {Hashtable => src/Hashtable}/KeyValuePair.h (100%) rename {Hashtable => src/Hashtable}/hash.c (82%) rename {Hashtable => src/Hashtable}/hash.h (78%) rename {SearchTree => src/SearchTree}/SearchTree.c (100%) rename {SearchTree => src/SearchTree}/SearchTree.h (100%) rename {SearchTree => src/SearchTree}/SearchTree.md (100%) rename {String => src/String}/StringBuilder.c (100%) rename {String => src/String}/StringBuilder.h (96%) rename {String => src/String}/string.c (97%) rename {String => src/String}/string.h (100%) rename {base => src/base}/base.h (100%) rename {base => src/base}/cptr.c (100%) rename {base => src/base}/cptr.h (100%) rename {base => src/base}/errors.c (96%) rename {base => src/base}/errors.h (99%) rename {base => src/base}/std.h (100%) rename {base => src/base}/types.c (100%) rename {base => src/base}/types.h (100%) diff --git a/.gitignore b/.gitignore index 3cf06f0..f72a415 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ obj/ .vs/ .vscode/ .vshistory/ -.idea/ .editorconfig *.user diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..1c2fda5 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..09dbac8 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..2b9936c --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..9661ac7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Makefile b/Makefile index f6c333c..200b80d 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ -SRC=$(wildcard [^tests]**/*.c) +SRC=$(wildcard src/**/*.c) $(wildcard src/*.c) TESTS=$(wildcard tests/*c) $(wildcard tests/**/*.c) OUTDIR=bin CMP=gcc -OPT_ARGS=-O2 -flto -WARN_ARGS=-Wall -Wno-discarded-qualifiers -std=c17 +OPT_ARGS=-O2 -std=c17 +WARN_ARGS=-Wall -Wno-discarded-qualifiers all: clear_c clear_bin build_test build_lib @@ -26,11 +26,11 @@ clang: all TEST_FILE=kerep_test.com TEST_ARGS=$(WARN_ARGS) $(SRC) $(TESTS) -o $(OUTDIR)/$(TEST_FILE) -build_test: +build_test: @echo -e '\n\e[96m-------------[build_test]-------------\e[0m' $(CMP) $(OPT_ARGS) $(TEST_ARGS) -build_test_dbg: +build_test_dbg: @echo -e '\n\e[96m-----------[build_test_dbg]-----------\e[0m' $(CMP) -g -O0 $(TEST_ARGS).dbg @@ -39,7 +39,7 @@ LIB_ARGS=$(OPT_ARGS) $(WARN_ARGS)\ $(SRC) tests/test_marshalling.c LIB_FILE=kerep.so -build_lib: +build_lib: @echo -e '\n\e[96m-------------[build_lib]--------------\e[0m' $(CMP) $(LIB_ARGS) -o $(OUTDIR)/$(LIB_FILE) @@ -47,12 +47,17 @@ build_lib: ###### Run tasks ####### ###################################### test: clear_c build_test - @echo -e '\n\e[96m-------------[build_test]-------------\e[0m' - tabs 4 + @echo -e '\n\e[96m----------------[test]----------------\e[0m' + @tabs 4 + $(OUTDIR)/$(TEST_FILE) + +test_dbg: clear_c build_test + @echo -e '\n\e[96m--------------[test_dbg]--------------\e[0m' + @tabs 4 $(OUTDIR)/$(TEST_FILE) valgrind: clear_c build_test_dbg @echo -e '\n\e[96m--------------[valgrind]--------------\e[0m' - tabs 4 + @tabs 4 valgrind -s --read-var-info=yes --track-origins=yes --fullpath-after=kerep/ \ --leak-check=full --show-leak-kinds=all $(OUTDIR)/$(TEST_FILE).dbg diff --git a/Autoarr/Autoarr.c b/src/Autoarr/Autoarr.c similarity index 100% rename from Autoarr/Autoarr.c rename to src/Autoarr/Autoarr.c diff --git a/Autoarr/Autoarr.h b/src/Autoarr/Autoarr.h similarity index 100% rename from Autoarr/Autoarr.h rename to src/Autoarr/Autoarr.h diff --git a/Autoarr/Autoarr_KVPair_exported.c b/src/Autoarr/Autoarr_KVPair_exported.c similarity index 100% rename from Autoarr/Autoarr_KVPair_exported.c rename to src/Autoarr/Autoarr_KVPair_exported.c diff --git a/Autoarr/Autoarr_Unitype_exported.c b/src/Autoarr/Autoarr_Unitype_exported.c similarity index 100% rename from Autoarr/Autoarr_Unitype_exported.c rename to src/Autoarr/Autoarr_Unitype_exported.c diff --git a/Autoarr/Autoarr_declare.h b/src/Autoarr/Autoarr_declare.h similarity index 100% rename from Autoarr/Autoarr_declare.h rename to src/Autoarr/Autoarr_declare.h diff --git a/Autoarr/Autoarr_define.h b/src/Autoarr/Autoarr_define.h similarity index 100% rename from Autoarr/Autoarr_define.h rename to src/Autoarr/Autoarr_define.h diff --git a/DtsodParser/DtsodV24.c b/src/DtsodParser/DtsodV24.c similarity index 100% rename from DtsodParser/DtsodV24.c rename to src/DtsodParser/DtsodV24.c diff --git a/DtsodParser/DtsodV24.h b/src/DtsodParser/DtsodV24.h similarity index 100% rename from DtsodParser/DtsodV24.h rename to src/DtsodParser/DtsodV24.h diff --git a/DtsodParser/DtsodV24_deserialize.c b/src/DtsodParser/DtsodV24_deserialize.c similarity index 100% rename from DtsodParser/DtsodV24_deserialize.c rename to src/DtsodParser/DtsodV24_deserialize.c diff --git a/DtsodParser/DtsodV24_exported.c b/src/DtsodParser/DtsodV24_exported.c similarity index 100% rename from DtsodParser/DtsodV24_exported.c rename to src/DtsodParser/DtsodV24_exported.c diff --git a/DtsodParser/DtsodV24_serialize.c b/src/DtsodParser/DtsodV24_serialize.c similarity index 100% rename from DtsodParser/DtsodV24_serialize.c rename to src/DtsodParser/DtsodV24_serialize.c diff --git a/DtsodParser/README.md b/src/DtsodParser/README.md similarity index 100% rename from DtsodParser/README.md rename to src/DtsodParser/README.md diff --git a/Hashtable/Hashtable.c b/src/Hashtable/Hashtable.c similarity index 96% rename from Hashtable/Hashtable.c rename to src/Hashtable/Hashtable.c index d8c680b..33ec495 100644 --- a/Hashtable/Hashtable.c +++ b/src/Hashtable/Hashtable.c @@ -39,7 +39,7 @@ void Hashtable_expand(Hashtable* ht){ uint32 arlen=Autoarr_length(ar); for(uint16 k=0;khein]; + uint16 newrown=ihash(p.key)%HT_HEIGHTS[ht->hein]; Autoarr(KVPair)* newar=newrows[newrown]; Autoarr_add(newar,p); } @@ -53,7 +53,7 @@ void Hashtable_expand(Hashtable* ht){ } Autoarr(KVPair)* getrow(Hashtable* ht, char* key, bool can_expand){ - uint32 hash=hash32(key); + uint32 hash=ihash(key); Autoarr(KVPair)* ar=ht->rows[hash%HT_HEIGHTS[ht->hein]]; if(can_expand && Autoarr_length(ar)==Autoarr_max_length(ar)) optime("expand",1,(Hashtable_expand(ht))); diff --git a/Hashtable/Hashtable.h b/src/Hashtable/Hashtable.h similarity index 100% rename from Hashtable/Hashtable.h rename to src/Hashtable/Hashtable.h diff --git a/Hashtable/KeyValuePair.c b/src/Hashtable/KeyValuePair.c similarity index 100% rename from Hashtable/KeyValuePair.c rename to src/Hashtable/KeyValuePair.c diff --git a/Hashtable/KeyValuePair.h b/src/Hashtable/KeyValuePair.h similarity index 100% rename from Hashtable/KeyValuePair.h rename to src/Hashtable/KeyValuePair.h diff --git a/Hashtable/hash.c b/src/Hashtable/hash.c similarity index 82% rename from Hashtable/hash.c rename to src/Hashtable/hash.c index dfa6cb7..32ff34f 100644 --- a/Hashtable/hash.c +++ b/src/Hashtable/hash.c @@ -1,13 +1,13 @@ #include "hash.h" -uint32 hash32(char *str){ +uint32 ihash(char *str){ uint32 hash=5381; for (char c=*str;c;c=*(++str)) hash=((hash<<5)+hash)+c; return hash; } -uint64 hash64(char* str){ +uint64 lhash(char* str){ uint64 hash = 0; for (char c=*str;c;c=*(++str)) hash=c+(hash<<6)+(hash<<16)-hash; diff --git a/Hashtable/hash.h b/src/Hashtable/hash.h similarity index 78% rename from Hashtable/hash.h rename to src/Hashtable/hash.h index b3b7d2b..2f575c5 100644 --- a/Hashtable/hash.h +++ b/src/Hashtable/hash.h @@ -7,9 +7,9 @@ extern "C" { #include "../base/base.h" // djb2 hash function from http:// www.cse.yorku.ca/~oz/hash.html -uint32 hash32(char *str); +uint32 ihash(char *str); // sdbm hash function -uint64 hash64(char* str); +uint64 lhash(char* str); #if __cplusplus } diff --git a/SearchTree/SearchTree.c b/src/SearchTree/SearchTree.c similarity index 100% rename from SearchTree/SearchTree.c rename to src/SearchTree/SearchTree.c diff --git a/SearchTree/SearchTree.h b/src/SearchTree/SearchTree.h similarity index 100% rename from SearchTree/SearchTree.h rename to src/SearchTree/SearchTree.h diff --git a/SearchTree/SearchTree.md b/src/SearchTree/SearchTree.md similarity index 100% rename from SearchTree/SearchTree.md rename to src/SearchTree/SearchTree.md diff --git a/String/StringBuilder.c b/src/String/StringBuilder.c similarity index 100% rename from String/StringBuilder.c rename to src/String/StringBuilder.c diff --git a/String/StringBuilder.h b/src/String/StringBuilder.h similarity index 96% rename from String/StringBuilder.h rename to src/String/StringBuilder.h index d1ed61f..1a4e898 100644 --- a/String/StringBuilder.h +++ b/src/String/StringBuilder.h @@ -5,7 +5,7 @@ extern "C" { #endif #include "../Autoarr/Autoarr.h" -#include "../String/string.h" +#include "string.h" declare_Autoarr(string) diff --git a/String/string.c b/src/String/string.c similarity index 97% rename from String/string.c rename to src/String/string.c index 80699e4..2926359 100644 --- a/String/string.c +++ b/src/String/string.c @@ -1,4 +1,4 @@ -#include "../String/string.h" +#include "string.h" // copies str content to new char pointer value (adding '\0' at the end) char* string_extract(string str){ diff --git a/String/string.h b/src/String/string.h similarity index 100% rename from String/string.h rename to src/String/string.h diff --git a/base/base.h b/src/base/base.h similarity index 100% rename from base/base.h rename to src/base/base.h diff --git a/base/cptr.c b/src/base/cptr.c similarity index 100% rename from base/cptr.c rename to src/base/cptr.c diff --git a/base/cptr.h b/src/base/cptr.h similarity index 100% rename from base/cptr.h rename to src/base/cptr.h diff --git a/base/errors.c b/src/base/errors.c similarity index 96% rename from base/errors.c rename to src/base/errors.c index f56687a..24ae3ce 100644 --- a/base/errors.c +++ b/src/base/errors.c @@ -42,10 +42,12 @@ void Maybe_free(Maybe e){ free(e.errmsg); Unitype_free(e.value); } + void printMaybe(Maybe e){ if(e.errmsg) printf("%s\n",e.errmsg); else printuni(e.value); } char* __doNothing(char* a) {return a;} -char* __unknownErr() {return "UNKNOWN ERROR";} \ No newline at end of file + +char* __unknownErr() {return "UNKNOWN ERROR";} diff --git a/base/errors.h b/src/base/errors.h similarity index 99% rename from base/errors.h rename to src/base/errors.h index 84e0b1a..19da077 100644 --- a/base/errors.h +++ b/src/base/errors.h @@ -57,7 +57,7 @@ char* __unknownErr( ); #define tryLast(_funcCall, _rezult) Maybe _rezult=_funcCall; if(_rezult.errmsg){\ _rezult.errmsg=__extendErrMsg(_rezult.errmsg, __FILE__,__LINE__,__func__);\ __EXIT(_rezult.errmsg);\ - }else + }else #if __cplusplus } diff --git a/base/std.h b/src/base/std.h similarity index 100% rename from base/std.h rename to src/base/std.h diff --git a/base/types.c b/src/base/types.c similarity index 100% rename from base/types.c rename to src/base/types.c diff --git a/base/types.h b/src/base/types.h similarity index 100% rename from base/types.h rename to src/base/types.h diff --git a/tests/test_autoarr.c b/tests/test_autoarr.c index c52bfa7..26db9e4 100644 --- a/tests/test_autoarr.c +++ b/tests/test_autoarr.c @@ -1,5 +1,5 @@ #include "tests.h" -#include "../Autoarr/Autoarr.h" +#include "../src/Autoarr/Autoarr.h" static void printautoarr(Autoarr(uint16)* ar){ printf("\e[94mAutoarr(uint16): " diff --git a/tests/test_dtsod.c b/tests/test_dtsod.c index a42a970..317c7da 100644 --- a/tests/test_dtsod.c +++ b/tests/test_dtsod.c @@ -1,5 +1,5 @@ #include "tests.h" -#include "../DtsodParser/DtsodV24.h" +#include "../src/DtsodParser/DtsodV24.h" const char text[]= "list_of_lists: [ [\"sss\"]];" @@ -33,7 +33,7 @@ void print_dtsod(Hashtable* dtsod){ } void test_dtsod(){ - optime(__func__,1,({ + //optime(__func__,1,({ printf("\e[96m-------------[test_dtsod]-------------\n"); Hashtable* dtsod; char* s; @@ -61,5 +61,5 @@ void test_dtsod(){ })); free(s); - })); + //})); } \ No newline at end of file diff --git a/tests/test_hashtable.c b/tests/test_hashtable.c index e0cf59d..55aa80e 100644 --- a/tests/test_hashtable.c +++ b/tests/test_hashtable.c @@ -1,5 +1,5 @@ #include "tests.h" -#include "../Hashtable/Hashtable.h" +#include "../src/Hashtable/Hashtable.h" void print_hashtable(Hashtable* ht){ printf("\e[94mHashtable: " diff --git a/tests/test_marshalling.c b/tests/test_marshalling.c index 6e5017b..3dde3c0 100644 --- a/tests/test_marshalling.c +++ b/tests/test_marshalling.c @@ -1,4 +1,4 @@ -#include "../Hashtable/KeyValuePair.h" +#include "../src/Hashtable/KeyValuePair.h" EXPORT void CALL test_marshalling(char* text, KVPair** kptr){ KVPair* k=malloc(sizeof(KVPair)); diff --git a/tests/test_searchtree.c b/tests/test_searchtree.c index a94bb06..cdaf0ed 100644 --- a/tests/test_searchtree.c +++ b/tests/test_searchtree.c @@ -1,5 +1,5 @@ #include "tests.h" -#include "../SearchTree/SearchTree.h" +#include "../src/SearchTree/SearchTree.h" void printstnode(STNode* node){ printf("\e[94mSTNode: " diff --git a/tests/test_string.c b/tests/test_string.c index 90110f6..047f84d 100644 --- a/tests/test_string.c +++ b/tests/test_string.c @@ -1,5 +1,5 @@ #include "tests.h" -#include "../String/string.h" +#include "../src/String/string.h" void test_string(){ optime(__func__,1,({ diff --git a/tests/tests.h b/tests/tests.h index edaa49f..ce80143 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -1,6 +1,6 @@ #pragma once -#include "../base/base.h" +#include "../src/base/base.h" void printuni(Unitype v); From c9864f3b68d0007b05fb24b81464c51ed092b88a Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Sun, 8 May 2022 15:06:38 +0300 Subject: [PATCH 02/40] fixed some warnings --- .idea/inspectionProfiles/Project_Default.xml | 12 ++++++++++++ .idea/misc.xml | 1 - Makefile | 14 ++++++++++++-- src/DtsodParser/DtsodV24_deserialize.c | 13 +++++-------- src/DtsodParser/DtsodV24_serialize.c | 9 ++++----- src/Hashtable/Hashtable.c | 2 +- src/String/StringBuilder.c | 3 +-- src/base/errors.c | 4 ++-- src/base/std.h | 5 +++++ src/base/types.c | 12 ++++++------ tests/test_autoarr.c | 6 +++--- tests/test_hashtable.c | 2 +- tests/tests.h | 2 -- 13 files changed, 52 insertions(+), 33 deletions(-) diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 09dbac8..cf5403e 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -1,12 +1,24 @@ \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b9936c..d125c3a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -7,7 +7,6 @@ - diff --git a/Makefile b/Makefile index 200b80d..fef7668 100644 --- a/Makefile +++ b/Makefile @@ -3,10 +3,10 @@ TESTS=$(wildcard tests/*c) $(wildcard tests/**/*.c) OUTDIR=bin CMP=gcc -OPT_ARGS=-O2 -std=c17 +OPT_ARGS=-O2 -flto -std=c17 WARN_ARGS=-Wall -Wno-discarded-qualifiers -all: clear_c clear_bin build_test build_lib +all: clear_c clear_bin build_test_dbg clear_c: clear @@ -43,6 +43,16 @@ build_lib: @echo -e '\n\e[96m-------------[build_lib]--------------\e[0m' $(CMP) $(LIB_ARGS) -o $(OUTDIR)/$(LIB_FILE) +DLL_ARGS=$(OPT_ARGS) $(WARN_ARGS)\ + -shared -fpic -static-libgcc -static-libstdc++\ + $(SRC) tests/test_marshalling.c +DLL_FILE=kerep.dll + +build_dll: + gcc --version + @echo -e '\n\e[96m-------------[build_dll]--------------\e[0m' + $(CMP) $(DLL_ARGS) -o $(OUTDIR)/$(DLL_FILE) + ###################################### ###### Run tasks ####### ###################################### diff --git a/src/DtsodParser/DtsodV24_deserialize.c b/src/DtsodParser/DtsodV24_deserialize.c index 1c1a09c..f8dd4d0 100644 --- a/src/DtsodParser/DtsodV24_deserialize.c +++ b/src/DtsodParser/DtsodV24_deserialize.c @@ -44,7 +44,7 @@ Maybe ERROR_WRONGCHAR(const char c, char* _text, char* text_first, const char* s if(!_c) break; } char errmsg[1024]; - IFWIN( + IFMSC( sprintf_s(errmsg,1024, "unexpected <%c> at:\n" " \"%s\"\n" "\\___[%s:%d] %s()", @@ -85,7 +85,6 @@ Maybe __ReadName(DeserializeSharedData* shared){ case '[': case ']': case '{': safethrow_wrongchar(c,;); - break; case '#': ; char _c=c; char* _text=text; @@ -180,7 +179,6 @@ Maybe __ParseValue(DeserializeSharedData* shared, string str){ else if(string_compare(str,falseStr)) return SUCCESS(UniFalse); else safethrow_wrongchar(*str.ptr,;); - break; // Float64 case 'f': { char* _c=string_extract(str); @@ -192,9 +190,9 @@ Maybe __ParseValue(DeserializeSharedData* shared, string str){ case 'u': { uint64 lu=0; char* _c=string_extract(str); - if(sscanf(_c,"%lu",&lu)!=1){ + if(sscanf(_c, IFWIN("%llu", "%lu"), &lu)!=1){ char err[64]; - IFWIN( + IFMSC( sprintf_s(err,64,"can't parse to int: <%s>",_c), sprintf(err,"can't parse to int: <%s>",_c) ); @@ -208,9 +206,9 @@ Maybe __ParseValue(DeserializeSharedData* shared, string str){ case '5': case '6': case '7': case '8': case '9': { int64 li=0; char* _c=string_extract(str); - if(sscanf(_c,"%li",&li)!=1){ + if(sscanf(_c, IFWIN("%lli", "%li"), &li)!=1){ char err[64]; - IFWIN( + IFMSC( sprintf_s(err,64,"can't parse to int: <%s>",_c), sprintf(err,"can't parse to int: <%s>",_c) ); @@ -245,7 +243,6 @@ Maybe __ReadValue(DeserializeSharedData* shared, bool* readingList){ case '}': case '$': case '\'': safethrow_wrongchar(c,Unitype_free(value)); - break; case '#':; char _c=c; char* _text=text; diff --git a/src/DtsodParser/DtsodV24_serialize.c b/src/DtsodParser/DtsodV24_serialize.c index 4a6181e..4618104 100644 --- a/src/DtsodParser/DtsodV24_serialize.c +++ b/src/DtsodParser/DtsodV24_serialize.c @@ -49,7 +49,6 @@ Maybe __AppendValue(SerializeSharedData* shared, Unitype u){ break; case Null: safethrow("Null isn't supported in DtsodV24",;); - break; case AutoarrUnitypePtr: if(Autoarr_length(((Autoarr_Unitype*)(u.VoidPtr)))){ addc('\n'); @@ -79,7 +78,7 @@ Maybe __AppendValue(SerializeSharedData* shared, Unitype u){ goto hashtableNotBlank; if(__.key); // weird way to disable warning })); - + // blank hashtable addc('{'); @@ -96,7 +95,7 @@ Maybe __AppendValue(SerializeSharedData* shared, Unitype u){ AppendTabs(); addc('}'); break; - default: dbg((u.type)); safethrow(ERR_WRONGTYPE,;); + default: dbg((u.type)); safethrow(ERR_WRONGTYPE,;); } return MaybeNull; @@ -104,11 +103,11 @@ Maybe __AppendValue(SerializeSharedData* shared, Unitype u){ Maybe __serialize(StringBuilder* _b, uint8 _tabs, Hashtable* dtsod){ SerializeSharedData _shared={ - .sh_builder=_b, + .sh_builder=_b, .sh_tabs=_tabs }; SerializeSharedData* shared=&_shared; - + Hashtable_foreach(dtsod, p, ({ AppendTabs(); StringBuilder_append_cptr(b,p.key); diff --git a/src/Hashtable/Hashtable.c b/src/Hashtable/Hashtable.c index 33ec495..ba6b1c9 100644 --- a/src/Hashtable/Hashtable.c +++ b/src/Hashtable/Hashtable.c @@ -37,7 +37,7 @@ void Hashtable_expand(Hashtable* ht){ for(uint16 i=0;ihein-1];i++){ Autoarr(KVPair)* ar=ht->rows[i]; uint32 arlen=Autoarr_length(ar); - for(uint16 k=0;khein]; Autoarr(KVPair)* newar=newrows[newrown]; diff --git a/src/String/StringBuilder.c b/src/String/StringBuilder.c index f6d7f54..848a51d 100644 --- a/src/String/StringBuilder.c +++ b/src/String/StringBuilder.c @@ -2,7 +2,6 @@ define_Autoarr(string) -#define MAXLENGTH 32768 #define BL_C 32 #define BL_L 1024 @@ -136,7 +135,7 @@ void StringBuilder_append_uint64(StringBuilder* b, uint64 a){ void StringBuilder_append_float64(StringBuilder* b, double a){ try_complete_buf(b); char buf[32]; - IFWIN( + IFMSC( sprintf_s(buf,32,"%lf",a), sprintf(buf,"%lf",a) ); diff --git a/src/base/errors.c b/src/base/errors.c index 24ae3ce..f5c317c 100644 --- a/src/base/errors.c +++ b/src/base/errors.c @@ -20,7 +20,7 @@ char* errname(err_t err){ char* __genErrMsg(const char* errmsg, const char* srcfile, int line, const char* funcname){ size_t bufsize=ERRMSG_MAXLENGTH; char* rezult=malloc(bufsize); - IFWIN( + IFMSC( sprintf_s(rezult,bufsize,"[%s:%d] %s() throwed error: %s",srcfile,line,funcname,errmsg), sprintf(rezult,"[%s:%d] %s() throwed error: %s",srcfile,line,funcname,errmsg) ); @@ -30,7 +30,7 @@ char* __genErrMsg(const char* errmsg, const char* srcfile, int line, const char* char* __extendErrMsg(const char* errmsg, const char* srcfile, int line, const char* funcname){ size_t bufsize=cptr_length(errmsg)+ERRMSG_MAXLENGTH; char* rezult=malloc(bufsize); - IFWIN( + IFMSC( sprintf_s(rezult,bufsize,"%s\n \\___[%s:%d] %s()",errmsg,srcfile,line,funcname), sprintf(rezult,"%s\n \\___[%s:%d] %s()",errmsg,srcfile,line,funcname) ); diff --git a/src/base/std.h b/src/base/std.h index 4607014..704016b 100644 --- a/src/base/std.h +++ b/src/base/std.h @@ -40,8 +40,13 @@ extern "C" { #ifdef _MSC_VER #define IFWIN(YES, NO) YES + #define IFMSC(YES, NO) NO +#elif defined(_WIN64) || defined(_WIN32) + #define IFWIN(YES, NO) YES + #define IFMSC(YES, NO) NO #elif defined(__GNUC__) #define IFWIN(YES, NO) NO + #define IFMSC(YES, NO) NO #else #pragma GCC error "unknown compiler" #endif diff --git a/src/base/types.c b/src/base/types.c index 459ffa5..d4c7a59 100644 --- a/src/base/types.c +++ b/src/base/types.c @@ -116,7 +116,7 @@ void Unitype_free(Unitype u){ #define BUFSIZE 64 char* sprintuni(Unitype v){ char* buf=malloc(BUFSIZE); - IFWIN( + IFMSC( switch (v.type) { case Null: sprintf_s(buf, BUFSIZE, "{Null}");break; case Float64: sprintf_s(buf, BUFSIZE, "{%s : %lf}", my_type_name(v.type),v.Float64);break; @@ -131,17 +131,17 @@ char* sprintuni(Unitype v){ default: sprintf_s(buf, BUFSIZE, "{%s : %p}", my_type_name(v.type),v.VoidPtr);break; }, switch (v.type) { - case Null: sprintf(buf, "{Null}");break; - case Float64: sprintf(buf, "{%s : %lf}", my_type_name(v.type),v.Float64);break; + case Null: sprintf(buf, "{Null}"); break; + case Float64: sprintf(buf, "{%s : %lf}", my_type_name(v.type),v.Float64); break; case Bool: - case UInt64: sprintf(buf, "{%s : %lu}", my_type_name(v.type),v.UInt64);break; - case Int64: sprintf(buf, "{%s : %ld}", my_type_name(v.type),v.Int64);break; + case UInt64: sprintf(buf, "{%s : " IFWIN("%llu", "%lu") "}", my_type_name(v.type),v.UInt64); break; + case Int64: sprintf(buf, "{%s : " IFWIN("%lld", "%ld") "}", my_type_name(v.type),v.Int64); break; case CharPtr: ; size_t newBUFSIZE=cptr_length(v.VoidPtr) + BUFSIZE/2; buf=realloc(buf, newBUFSIZE); sprintf(buf, "{%s : \"%s\"}", my_type_name(v.type),(char*)v.VoidPtr); break; - default: sprintf(buf, "{%s : %p}", my_type_name(v.type),v.VoidPtr);break; + default: sprintf(buf, "{%s : %p}", my_type_name(v.type),v.VoidPtr);break; } ); return buf; diff --git a/tests/test_autoarr.c b/tests/test_autoarr.c index 26db9e4..45f85ba 100644 --- a/tests/test_autoarr.c +++ b/tests/test_autoarr.c @@ -20,17 +20,17 @@ static void printautoarr(Autoarr(uint16)* ar){ } static void fillar(Autoarr(uint16)* ar){ - for (uint16 i=0;i Date: Sun, 8 May 2022 15:17:17 +0300 Subject: [PATCH 03/40] visual studio project updated --- kerep.vcxproj | 64 ++++++++-------- kerep.vcxproj.filters | 172 ++++++++++++++++++++++-------------------- src/base/std.h | 2 +- 3 files changed, 123 insertions(+), 115 deletions(-) diff --git a/kerep.vcxproj b/kerep.vcxproj index 9159891..e79f56e 100644 --- a/kerep.vcxproj +++ b/kerep.vcxproj @@ -202,41 +202,43 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/kerep.vcxproj.filters b/kerep.vcxproj.filters index e6b847a..3785ed4 100644 --- a/kerep.vcxproj.filters +++ b/kerep.vcxproj.filters @@ -15,89 +15,62 @@ - - Файлы заголовков - - - Файлы заголовков - - - Файлы заголовков - - - Файлы заголовков - - - Файлы заголовков - - - Файлы заголовков - - - Файлы заголовков - - - Файлы заголовков - - - Файлы заголовков - - - Файлы заголовков - - - Файлы заголовков - - - Файлы заголовков - - - Файлы заголовков - Файлы заголовков Файлы заголовков - + Файлы заголовков - + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + Файлы заголовков - - Исходные файлы - - - Исходные файлы - - - Исходные файлы - - - Исходные файлы - - - Исходные файлы - - - Исходные файлы - - - Исходные файлы - - - Исходные файлы - - - Исходные файлы - - - Исходные файлы - Исходные файлы @@ -119,25 +92,58 @@ Исходные файлы - - Исходные файлы - - - Исходные файлы - - - Исходные файлы - Исходные файлы - + Исходные файлы - + Исходные файлы - + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + + Исходные файлы + + Исходные файлы diff --git a/src/base/std.h b/src/base/std.h index 704016b..87ad564 100644 --- a/src/base/std.h +++ b/src/base/std.h @@ -40,7 +40,7 @@ extern "C" { #ifdef _MSC_VER #define IFWIN(YES, NO) YES - #define IFMSC(YES, NO) NO + #define IFMSC(YES, NO) YES #elif defined(_WIN64) || defined(_WIN32) #define IFWIN(YES, NO) YES #define IFMSC(YES, NO) NO From 745ae56aadf505cb4c5f4f14c2d3fbe10c39770f Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Sun, 8 May 2022 15:17:33 +0300 Subject: [PATCH 04/40] Network --- src/Network/knSocket.c | 1 + src/Network/network.h | 43 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 src/Network/knSocket.c create mode 100644 src/Network/network.h diff --git a/src/Network/knSocket.c b/src/Network/knSocket.c new file mode 100644 index 0000000..f0dec47 --- /dev/null +++ b/src/Network/knSocket.c @@ -0,0 +1 @@ +#include "network.h" \ No newline at end of file diff --git a/src/Network/network.h b/src/Network/network.h new file mode 100644 index 0000000..f877cac --- /dev/null +++ b/src/Network/network.h @@ -0,0 +1,43 @@ +#pragma once + +#if __cplusplus +extern "C" { +#endif + +#include "../Hashtable/Hashtable.h" + +#if defined(_MSC_VER) || defined(_WIN64) || defined(_WIN32) + #include "winsock.h" +#else + #include "../Hashtable/Hashtable.h" + #include + #include + #include + #include +#endif + +#define KNPAC_MAX_DATA_SIZE 65503 + +typedef struct knPackage{ + char header[5]; // knpac + uint8 version; // protocol version + uint16 data_size; // size of data block in bytes (1-) + uint32 package_num; // number in sequence of sent packages + uint32 destination_hash; // hash32 of knDestination.name + uint64 data_hash; // hash64 of data + uint8* data; // ptr to data +} knPackage; + +typedef struct knDestination{ + char* name; + +} knDestination; + +typedef struct knSocket { + Hashtable* destinations; + int socketfd; +} knSocket; + +#if __cplusplus +} +#endif \ No newline at end of file From 343d23dc26d3e2cd2a057e42d43e6f9798ef2938 Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Tue, 10 May 2022 01:07:07 +0300 Subject: [PATCH 05/40] started working on new Autoarr and Hashtable --- .idea/codeStyles/codeStyleConfig.xml | 5 +++ .idea/inspectionProfiles/Project_Default.xml | 4 +- src/Autoarr/Autoarr2.cpp | 40 ++++++++++++++++++++ src/Autoarr/Autoarr2.hpp | 19 ++++++++++ src/Hashtable/Hashtable.h | 1 - src/Hashtable/Hashtable2.cpp | 35 +++++++++++++++++ src/Hashtable/Hashtable2.hpp | 20 ++++++++++ src/base/std.h | 4 +- 8 files changed, 125 insertions(+), 3 deletions(-) create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 src/Autoarr/Autoarr2.cpp create mode 100644 src/Autoarr/Autoarr2.hpp create mode 100644 src/Hashtable/Hashtable2.cpp create mode 100644 src/Hashtable/Hashtable2.hpp diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..df5f35d --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index cf5403e..154ddf7 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -12,7 +12,9 @@ - + + + @@ -16,11 +17,13 @@ + + + - \ No newline at end of file diff --git a/src/base/types.c b/src/base/types.c index d4c7a59..fed1f0b 100644 --- a/src/base/types.c +++ b/src/base/types.c @@ -41,7 +41,7 @@ const char* my_type_name(my_type t){ case AutoarrUInt64Ptr: return "AutoarrUInt64Ptr"; case AutoarrUnitypePtr: return "AutoarrUnitypePtr"; case AutoarrKVPairPtr: return "AutoarrKVPairPtr"; - default: throw(ERR_WRONGTYPE); return "ERROR"; + default: throw(ERR_WRONGTYPE); } } diff --git a/tests/test_autoarr2.cpp b/tests/test_autoarr2.cpp index cf19f6b..66af88e 100644 --- a/tests/test_autoarr2.cpp +++ b/tests/test_autoarr2.cpp @@ -5,6 +5,17 @@ #define maxlength 160 void printautoarr2(Autoarr2* ar){ + printf("\e[94mAutoarr2: " + IFWIN("%llu", "%lu") + "\n blocks_count: %u\n" + " max_block_length: %u\n" + " block_length: %u\n" + " length: %u\n", + sizeof(Autoarr2), + ar->blocks_count, + ar->max_block_length, + ar->block_length, + ar->length); } void fillar2(Autoarr2* ar){ diff --git a/tests/test_safethrow.c b/tests/test_safethrow.c index 98fc566..4ccd4dc 100644 --- a/tests/test_safethrow.c +++ b/tests/test_safethrow.c @@ -21,7 +21,6 @@ Maybe test_maybe(){ try(throw_error(),rez1,;) printMaybe(rez1); throw("test_maybe failed"); - return MaybeNull; } From 2e3f16905bbd2ccbe0a940cc30374f7f5e37f096 Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Fri, 10 Jun 2022 18:47:36 +0300 Subject: [PATCH 25/40] working on Hashtable2 --- src/Hashtable2/Hashtable2.hpp | 134 ++++++++++++++++++++++++++-------- src/base/errors.c | 1 + src/base/errors.h | 4 +- 3 files changed, 108 insertions(+), 31 deletions(-) diff --git a/src/Hashtable2/Hashtable2.hpp b/src/Hashtable2/Hashtable2.hpp index cf84e91..e734f0a 100644 --- a/src/Hashtable2/Hashtable2.hpp +++ b/src/Hashtable2/Hashtable2.hpp @@ -3,58 +3,132 @@ #include "../Hashtable/hash.h" #include "../Autoarr2/Autoarr2.hpp" +// amount of rows +typedef uint32 HT_HEIGHT_T; +typedef uint32 HT_HASH_T; +#define HT_HASH(K) hashb_sdbm32(K, sizeof(K)) + +static const HT_HEIGHT_T HT_HEIGHTS[]={17,61,257,1021,4099,16381,65521}; +#define _HT_HEIN_MIN 0 +#define _HT_HEIN_MAX 6 + +#define _HT_ARR_BC 2 +#define _HT_ARR_BL 8 + + template class Hashtable2{ - uint8 hein; -public: + Autoarr2* hashes; Autoarr2* keys; Autoarr2* values; + uint8 hein; + void expand(); + +public: Hashtable2(); + virtual ~Hashtable2(); + + HT_HEIGHT_T height(){ return HT_HEIGHTS[hein]; } + TVal* getptr(TKey key); TVal get(TKey key); - TVal getptr(TKey key); bool addOrSet(TKey key, TVal); bool remove(TKey); - virtual ~Hashtable2(); }; -// amount of rows -static const uint16 HT_HEIGHTS[]={17,61,257,1021,4099,16381,65521}; -#define HT_HEIN_MIN 0 -#define HT_HEIN_MAX 6 - -#define ARR_BC 2 -#define ARR_BL 8 - template -Hashtable2::Hashtable2() { - hein=HT_HEIN_MIN; - keys=new Autoarr2; - values=new Autoarr2; +Hashtable2::Hashtable2(){ + hein=_HT_HEIN_MIN; + HT_HEIGHT_T h=height(); + hashes=new Autoarr2[h]; + keys=new Autoarr2[h]; + values=new Autoarr2[h]; + for(HT_HEIGHT_T i=0; i(_HT_ARR_BL); + keys[i]=Autoarr2(_HT_ARR_BL); + values[i]=Autoarr2(_HT_ARR_BL); + } } template -TVal Hashtable2::get(TKey key) { +void Hashtable2::expand(){ + if(hein>=_HT_HEIN_MAX) + throw_id(ERR_MAXLENGTH); + if(hashes->length!=keys->length || hashes->length!=values->length) + throw_id(ERR_DESYNC); + + uint32 oldHeight=height(); + hein++; + uint32 newHeight=height(); + Autoarr2* newHashes=new Autoarr2[newHeight]; + Autoarr2* newKeys=new Autoarr2[newHeight]; + Autoarr2* newValues=new Autoarr2[newHeight]; + for(HT_HEIGHT_T i=0; i(_HT_ARR_BL); + newKeys[i]=Autoarr2(_HT_ARR_BL); + newValues[i]=Autoarr2(_HT_ARR_BL); + } + + for(HT_HEIGHT_T rowN=0; rowN* oldHashesRow= hashes+rowN; + Autoarr2* oldKeysRow = keys +rowN; + Autoarr2* oldValuesRow= values+rowN; + + for(uint32 k=0; k < oldHashesRow->length; k++){ + HT_HASH_T currentHash=oldHashesRow->get(k); + HT_HEIGHT_T newRowN=currentHash%oldHeight; + + Autoarr2* newHashesRow= newHashes+newRowN; + Autoarr2* newKeysRow = newKeys +newRowN; + Autoarr2* newValuesRow= newValues+newRowN; + + newHashesRow->add(currentHash); + newKeysRow->add(oldKeysRow->get(k)); + newValuesRow->add(oldValuesRow->get(k)); + } + //delete oldHashesRow; + //delete oldKeysRow; + //delete oldValuesRow; + } + + delete[] hashes; + delete[] keys; + delete[] values; + hashes=newHashes; + keys=newKeys; + values=newValues; +} + +template +TVal* Hashtable2::getptr(TKey key){ + HT_HASH_T keyHash=HT_HASH(key); + HT_HEIGHT_T rowHeight=keyHash%height(); + Autoarr2* hashesRow=hashes+rowHeight; + uint32 index=hashesRow->search(keyHash); + if(index==Autoarr2_NO_REZULT) + return NULL; + Autoarr2* valuesRow=values+rowHeight; + return valuesRow->getptr(index); +} + +template +TVal Hashtable2::get(TKey key){ } template -TVal Hashtable2::getptr(TKey key) { +bool Hashtable2::addOrSet(TKey key, TVal){ + //expand +} + +template +bool Hashtable2::remove(TKey){ } template -bool Hashtable2::addOrSet(TKey key, TVal) { - -} - -template -bool Hashtable2::remove(TKey) { - -} - -template -Hashtable2::~Hashtable2() { - +Hashtable2::~Hashtable2(){ + delete[] keys; + delete[] values; } diff --git a/src/base/errors.c b/src/base/errors.c index a2a2864..1df7552 100644 --- a/src/base/errors.c +++ b/src/base/errors.c @@ -11,6 +11,7 @@ char* errname(ErrorId err){ case ERR_NOTIMPLEMENTED: return "ERR_NOTIMPLEMENTED"; case ERR_NULLPTR: return "ERR_NULLPTR"; case ERR_ENDOFSTR: return "ERR_ENDOFSTR"; + case ERR_DESYNC: return "ERR_DESYNC"; default: return "UNKNOWN_ERROR"; } } diff --git a/src/base/errors.h b/src/base/errors.h index 0b43378..c4c59b5 100644 --- a/src/base/errors.h +++ b/src/base/errors.h @@ -9,7 +9,9 @@ extern "C" { typedef enum ErrorId { SUCCESS, // not an error - ERR_MAXLENGTH, ERR_WRONGTYPE, ERR_WRONGINDEX, ERR_NOTIMPLEMENTED, ERR_NULLPTR, ERR_ENDOFSTR + ERR_MAXLENGTH, ERR_WRONGTYPE, ERR_WRONGINDEX, + ERR_NOTIMPLEMENTED, ERR_NULLPTR, ERR_ENDOFSTR, + ERR_DESYNC } ErrorId; char* errname(ErrorId err); From a475b0d73cf4d443a5613d5ad897bafd4276dd1e Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Sat, 11 Jun 2022 15:10:45 +0300 Subject: [PATCH 26/40] parallel compilation --- build_scripts/functions.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/build_scripts/functions.sh b/build_scripts/functions.sh index f7a23ca..0e09cc3 100644 --- a/build_scripts/functions.sh +++ b/build_scripts/functions.sh @@ -21,19 +21,20 @@ function compile { print "${BLUE}args: ${GRAY}$args\n" local sources=$5 print "${BLUE}sources: ${GRAY}$sources\n" - local error=0 + local compilation_error=0 + for srcfile in $sources - do + do ( local object="$OBJDIR/$(basename $srcfile).o" - #print "$BLUE$object\n" if ! $($cmp -std=$std $warn $args -c -o $object $srcfile) then print "${RED}some error happened\n" - error=1 + compilation_error=1 fi - done + ) & done + wait - if [ $error != 0 ] + if [ $compilation_error != 0 ] then exit 1 fi @@ -42,7 +43,7 @@ function compile { # (args, sources) function compile_c { print "${CYAN}-------------[compile_c]--------------\n" - compile $CMP_C $STD_C "$WARN_C " "$1" "$2" + compile $CMP_C $STD_C "$WARN_C" "$1" "$2" } # (args, sources) From abdc56d404952c19fce83bb0cbc9be14509d2626 Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Sat, 11 Jun 2022 15:38:35 +0300 Subject: [PATCH 27/40] xxhash added --- .idea/inspectionProfiles/Project_Default.xml | 4 +- .idea/misc.xml | 4 +- src/{Hashtable => HashFunctions}/hash.c | 7 +- src/{Hashtable => HashFunctions}/hash.h | 2 + src/HashFunctions/xxhash.c | 12 + src/HashFunctions/xxhash.h | 6075 ++++++++++++++++++ src/Hashtable/Hashtable.h | 2 +- src/Hashtable2/Hashtable2.hpp | 3 +- src/base/std.h | 3 - tests/main.cpp | 2 +- tests/test_hash_functions.c | 56 +- 11 files changed, 6134 insertions(+), 36 deletions(-) rename src/{Hashtable => HashFunctions}/hash.c (96%) rename src/{Hashtable => HashFunctions}/hash.h (74%) create mode 100644 src/HashFunctions/xxhash.c create mode 100644 src/HashFunctions/xxhash.h diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 7cf8c34..a0da399 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -17,8 +17,8 @@