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);