I will murder cmake

trie-skips
Jef Roosens 2022-11-15 17:05:14 +01:00
parent 0b97f124c5
commit 614ae1c711
Signed by: Jef Roosens
GPG Key ID: B75D4F293C7052DB
5 changed files with 23 additions and 15 deletions

View File

@ -1,15 +1,16 @@
cmake_minimum_required(VERSION 3.20) cmake_minimum_required(VERSION 3.20)
project(lander C CXX) project(lander C CXX)
set(CMAKE_C_STANDARD 17) set(CMAKE_CXX_STANDARD 11)
include_directories(crow/include tries/include)
add_subdirectory(crow) add_subdirectory(crow)
add_subdirectory(tries) add_subdirectory(tries)
include_directories(crow/include tries/include)
if(CMAKE_BUILD_TYPE STREQUAL Release) if(CMAKE_BUILD_TYPE STREQUAL Release)
add_compile_options(-O3 -flto) add_compile_options(-O3 -flto)
endif() endif()
add_executable(lander src/main.cpp) add_executable(lander src/main.cpp)
target_link_libraries(lander PUBLIC Crow ternarytrie) target_link_libraries(lander Crow ternarytrie)

View File

@ -1,10 +1,13 @@
#include "crow.h" #include "crow.h"
#include "ternarytrie.h"
int main() int main()
{ {
TernaryTrie *trie = ternarytrie_init();
crow::SimpleApp app; crow::SimpleApp app;
CROW_ROUTE(app, "/")([](){ CROW_ROUTE(app, "/").methods(crow::HTTPMethod::Get, crow::HTTPMethod::Post)([](){
return "Hello world"; return "Hello world";
}); });

View File

@ -1,8 +1,12 @@
cmake_minimum_required(VERSION 3.20) cmake_minimum_required(VERSION 3.20)
project(AD3-project-2022-2023 C) project(ternarytrie C)
set(CMAKE_C_STANDARD 17) set(CMAKE_C_STANDARD 17)
include_directories(include)
add_library(ternarytrie STATIC include/ternarytrie.h src/ternarytrie.c) add_library(ternarytrie STATIC src/ternarytrie.c)
target_include_directories(
ternarytrie PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
)

View File

@ -14,7 +14,7 @@ typedef struct ttrie {
* *
* @return pointer to the empty TernaryTrie * @return pointer to the empty TernaryTrie
*/ */
inline TernaryTrie *ternarytrie_init() { TernaryTrie *ternarytrie_init() {
TernaryTrie *node = calloc(1, sizeof(TernaryTrie)); TernaryTrie *node = calloc(1, sizeof(TernaryTrie));
node->root = ttnode_init(); node->root = ttnode_init();
@ -26,7 +26,7 @@ inline TernaryTrie *ternarytrie_init() {
* *
* @param trie trie to free * @param trie trie to free
*/ */
inline void ternarytrie_free(TernaryTrie *trie) { void ternarytrie_free(TernaryTrie *trie) {
ttnode_free(trie->root); ttnode_free(trie->root);
free(trie); free(trie);
} }
@ -94,7 +94,7 @@ SearchResult ternarytrie_search_node(TernaryTrie *trie, const char *string) {
* @param string string to look up * @param string string to look up
* @return true if the string is present in the trie, false otherwise * @return true if the string is present in the trie, false otherwise
*/ */
inline bool ternarytrie_search(TernaryTrie *trie, const char *string) { bool ternarytrie_search(TernaryTrie *trie, const char *string) {
SearchResult res = ternarytrie_search_node(trie, string); SearchResult res = ternarytrie_search_node(trie, string);
return res.child != NULL; return res.child != NULL;
@ -244,4 +244,4 @@ bool ternarytrie_remove(TernaryTrie *trie, const char *string) {
* @param trie trie to return size for * @param trie trie to return size for
* @return size of the trie * @return size of the trie
*/ */
inline size_t ternarytrie_size(TernaryTrie *trie) { return trie->size; } size_t ternarytrie_size(TernaryTrie *trie) { return trie->size; }

View File

@ -51,7 +51,7 @@ void ttnode_free(TernaryTrieNode *node);
* @param c character to represent * @param c character to represent
* @return pointer to newly allocated struct * @return pointer to newly allocated struct
*/ */
inline TernaryTrieInnerNode *ttinode_init(char c) { TernaryTrieInnerNode *ttinode_init(char c) {
TernaryTrieInnerNode *node = calloc(1, sizeof(TernaryTrieInnerNode)); TernaryTrieInnerNode *node = calloc(1, sizeof(TernaryTrieInnerNode));
node->key = c; node->key = c;
@ -63,7 +63,7 @@ inline TernaryTrieInnerNode *ttinode_init(char c) {
* *
* @return pointer to newly allocated struct * @return pointer to newly allocated struct
*/ */
inline TernaryTrieNode *ttnode_init() { return calloc(1, sizeof(TernaryTrieNode)); } TernaryTrieNode *ttnode_init() { return calloc(1, sizeof(TernaryTrieNode)); }
/** /**
* Free a TernaryTrieInnerNode and its underlying tree structure. This should * Free a TernaryTrieInnerNode and its underlying tree structure. This should
@ -109,7 +109,7 @@ void ttnode_free(TernaryTrieNode *node) {
* @param node node to add string to * @param node node to add string to
* @param string string to add * @param string string to add
*/ */
inline void ttnode_set_string(TernaryTrieNode *node, const char *string) { void ttnode_set_string(TernaryTrieNode *node, const char *string) {
node->type = 2; node->type = 2;
node->size = strlen(string); node->size = strlen(string);
node->ptr.string = my_strdup(string); node->ptr.string = my_strdup(string);
@ -301,7 +301,7 @@ void ttinode_remove(TernaryTrieInnerNode *node, const char c) {
* @param node node to remove character from * @param node node to remove character from
* @param c character to remove * @param c character to remove
*/ */
inline void ttnode_remove(TernaryTrieNode *node, const char c) { void ttnode_remove(TernaryTrieNode *node, const char c) {
ttinode_remove(node->ptr.root, c); ttinode_remove(node->ptr.root, c);
node->size--; node->size--;