I will murder cmake
parent
0b97f124c5
commit
614ae1c711
|
@ -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)
|
||||||
|
|
|
@ -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";
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
)
|
||||||
|
|
|
@ -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; }
|
||||||
|
|
|
@ -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--;
|
||||||
|
|
Loading…
Reference in New Issue