diff --git a/src/main.c b/src/main.c index c5d03f9b..7392f762 100644 --- a/src/main.c +++ b/src/main.c @@ -18,38 +18,40 @@ #include "datatypes/image/imagefile.h" #include "utils/encoders/encoder.h" #include "utils/timer.h" +#include "utils/hashtable.h" int main(int argc, char *argv[]) { term_init(); atexit(term_restore); logr(info, "c-ray v%s [%.8s], © 2015-2023 Valtteri Koskivuori\n", cr_get_version(), cr_get_git_hash()); - args_parse(argc, argv); + + struct driver_args *opts = args_parse(argc, argv); - if (args_is_set("v")) log_toggle_verbose(); + if (args_is_set(opts, "v")) log_toggle_verbose(); struct cr_renderer *renderer = cr_new_renderer(); - if (args_is_set("asset_path")) { - cr_renderer_set_str_pref(renderer, cr_renderer_asset_path, args_asset_path()); - } else if (args_is_set("inputFile")) { - cr_renderer_set_str_pref(renderer, cr_renderer_asset_path, get_file_path(args_path())); + if (args_is_set(opts, "asset_path")) { + cr_renderer_set_str_pref(renderer, cr_renderer_asset_path, args_asset_path(opts)); + } else if (args_is_set(opts, "inputFile")) { + cr_renderer_set_str_pref(renderer, cr_renderer_asset_path, get_file_path(args_path(opts))); } int ret = 0; - if (args_is_set("is_worker")) { - int port = args_is_set("worker_port") ? args_int("worker_port") : C_RAY_PROTO_DEFAULT_PORT; + if (args_is_set(opts, "is_worker")) { + int port = args_is_set(opts, "worker_port") ? args_int(opts, "worker_port") : C_RAY_PROTO_DEFAULT_PORT; cr_start_render_worker(port); goto done; } size_t bytes = 0; - char *input = args_is_set("inputFile") ? load_file(args_path(), &bytes, NULL) : read_stdin(&bytes); + char *input = args_is_set(opts, "inputFile") ? load_file(args_path(opts), &bytes, NULL) : read_stdin(&bytes); if (!input) { logr(info, "No input provided, exiting.\n"); ret = -1; goto done; } - logr(info, "%zi bytes of input JSON loaded from %s, parsing.\n", bytes, args_is_set("inputFile") ? "file" : "stdin"); + logr(info, "%zi bytes of input JSON loaded from %s, parsing.\n", bytes, args_is_set(opts, "inputFile") ? "file" : "stdin"); cJSON *scene = cJSON_Parse(input); if (!scene) { const char *errptr = cJSON_GetErrorPtr(); @@ -63,8 +65,8 @@ int main(int argc, char *argv[]) { //FIXME: mmap() input free(input); - if (args_is_set("nodes_list")) { - cr_renderer_set_str_pref(renderer, cr_renderer_node_list, args_string("nodes_list")); + if (args_is_set(opts, "nodes_list")) { + cr_renderer_set_str_pref(renderer, cr_renderer_node_list, args_string(opts, "nodes_list")); } if (parse_json(renderer, scene) < 0) { @@ -73,16 +75,16 @@ int main(int argc, char *argv[]) { goto done; } - if (args_is_set("cam_index")) { - cr_renderer_set_num_pref(renderer, cr_renderer_override_cam, args_int("cam_index")); + if (args_is_set(opts, "cam_index")) { + cr_renderer_set_num_pref(renderer, cr_renderer_override_cam, args_int(opts, "cam_index")); } // FIXME: Remove global options table, store it in a local in main() and run overrides // from there. // Now check and apply potential CLI overrides. - if (args_is_set("thread_override")) { - size_t threads = args_int("thread_override"); + if (args_is_set(opts, "thread_override")) { + size_t threads = args_int(opts, "thread_override"); int64_t curr = cr_renderer_get_num_pref(renderer, cr_renderer_threads); if (curr != (int64_t)threads) { logr(info, "Overriding thread count to %zu\n", threads); @@ -91,42 +93,42 @@ int main(int argc, char *argv[]) { } } - if (args_is_set("samples_override")) { - if (args_is_set("is_worker")) { + if (args_is_set(opts, "samples_override")) { + if (args_is_set(opts, "is_worker")) { logr(warning, "Can't override samples when in worker mode\n"); } else { - int samples = args_int("samples_override"); + int samples = args_int(opts, "samples_override"); logr(info, "Overriding sample count to %i\n", samples); cr_renderer_set_num_pref(renderer, cr_renderer_samples, samples); } } - if (args_is_set("dims_override")) { - if (args_is_set("is_worker")) { + if (args_is_set(opts, "dims_override")) { + if (args_is_set(opts, "is_worker")) { logr(warning, "Can't override dimensions when in worker mode\n"); } else { - int width = args_int("dims_width"); - int height = args_int("dims_height"); + int width = args_int(opts, "dims_width"); + int height = args_int(opts, "dims_height"); logr(info, "Overriding image dimensions to %ix%i\n", width, height); cr_renderer_set_num_pref(renderer, cr_renderer_override_width, width); cr_renderer_set_num_pref(renderer, cr_renderer_override_height, height); } } - if (args_is_set("tiledims_override")) { - if (args_is_set("is_worker")) { + if (args_is_set(opts, "tiledims_override")) { + if (args_is_set(opts, "is_worker")) { logr(warning, "Can't override tile dimensions when in worker mode\n"); } else { - int width = args_int("tile_width"); - int height = args_int("tile_height"); + int width = args_int(opts, "tile_width"); + int height = args_int(opts, "tile_height"); logr(info, "Overriding tile dimensions to %ix%i\n", width, height); cr_renderer_set_num_pref(renderer, cr_renderer_tile_width, width); cr_renderer_set_num_pref(renderer, cr_renderer_tile_height, height); } } - if (args_is_set("interactive")) { - if (args_is_set("nodes_list")) { + if (args_is_set(opts, "interactive")) { + if (args_is_set(opts, "nodes_list")) { logr(warning, "Can't use iterative mode with network rendering yet, sorry.\n"); } else { cr_renderer_set_num_pref(renderer, cr_renderer_is_iterative, 1); @@ -136,13 +138,13 @@ int main(int argc, char *argv[]) { // This is where we prepare a cache of scene data to be sent to worker nodes // We also apply any potential command-line overrides to that cache here as well. // FIXME: This overrides setting should be integrated with scene loading, probably. - if (args_is_set("nodes_list")) { + if (args_is_set(opts, "nodes_list")) { // Stash a cache of scene data here // Apply overrides to the cache here - if (args_is_set("samples_override")) { + if (args_is_set(opts, "samples_override")) { cJSON *renderer = cJSON_GetObjectItem(scene, "renderer"); if (cJSON_IsObject(renderer)) { - int samples = args_int("samples_override"); + int samples = args_int(opts, "samples_override"); logr(debug, "Overriding cache sample count to %i\n", samples); if (cJSON_IsNumber(cJSON_GetObjectItem(renderer, "samples"))) { cJSON_ReplaceItemInObject(renderer, "samples", cJSON_CreateNumber(samples)); @@ -152,11 +154,11 @@ int main(int argc, char *argv[]) { } } - if (args_is_set("dims_override")) { + if (args_is_set(opts, "dims_override")) { cJSON *renderer = cJSON_GetObjectItem(scene, "renderer"); if (cJSON_IsObject(renderer)) { - int width = args_int("dims_width"); - int height = args_int("dims_height"); + int width = args_int(opts, "dims_width"); + int height = args_int(opts, "dims_height"); logr(info, "Overriding cache image dimensions to %ix%i\n", width, height); if (cJSON_IsNumber(cJSON_GetObjectItem(renderer, "width")) && cJSON_IsNumber(cJSON_GetObjectItem(renderer, "height"))) { cJSON_ReplaceItemInObject(renderer, "width", cJSON_CreateNumber(width)); @@ -168,11 +170,11 @@ int main(int argc, char *argv[]) { } } - if (args_is_set("tiledims_override")) { + if (args_is_set(opts, "tiledims_override")) { cJSON *renderer = cJSON_GetObjectItem(scene, "renderer"); if (cJSON_IsObject(renderer)) { - int width = args_int("tile_width"); - int height = args_int("tile_height"); + int width = args_int(opts, "tile_width"); + int height = args_int(opts, "tile_height"); logr(info, "Overriding cache tile dimensions to %ix%i\n", width, height); if (cJSON_IsNumber(cJSON_GetObjectItem(renderer, "tileWidth")) && cJSON_IsNumber(cJSON_GetObjectItem(renderer, "tileHeight"))) { cJSON_ReplaceItemInObject(renderer, "tileWidth", cJSON_CreateNumber(width)); @@ -184,8 +186,8 @@ int main(int argc, char *argv[]) { } } - if (args_is_set("cam_index")) { - cJSON_AddItemToObject(scene, "selected_camera", cJSON_CreateNumber(args_int("cam_index"))); + if (args_is_set(opts, "cam_index")) { + cJSON_AddItemToObject(scene, "selected_camera", cJSON_CreateNumber(args_int(opts, "cam_index"))); } // Store cache. This is what gets sent to worker nodes. @@ -209,8 +211,8 @@ int main(int argc, char *argv[]) { // FIXME: What the fuck const char *output_path = NULL; const char *output_name = NULL; - if (args_is_set("output_path")) { - char *path = args_string("output_path"); + if (args_is_set(opts, "output_path")) { + char *path = args_string(opts, "output_path"); logr(info, "Overriding output path to %s\n", path); char *temp_path = get_file_path(path); char *temp_name = get_file_name(path); @@ -244,7 +246,7 @@ int main(int argc, char *argv[]) { done: cr_destroy_renderer(renderer); - args_destroy(); + args_destroy(opts); logr(info, "Render finished, exiting.\n"); return ret; } diff --git a/src/utils/args.c b/src/utils/args.c index a915886d..4fcca8c9 100644 --- a/src/utils/args.c +++ b/src/utils/args.c @@ -1,9 +1,9 @@ // // args.c -// C-ray +// c-ray // // Created by Valtteri on 6.4.2020. -// Copyright © 2020-2022 Valtteri Koskivuori. All rights reserved. +// Copyright © 2020-2023 Valtteri Koskivuori. All rights reserved. // #include @@ -23,8 +23,6 @@ #include "string.h" #include "protocol/server.h" -static struct constantsDatabase *g_options; - static void printUsage(const char *progname) { printf("Usage: %s [-hjsdtocv] [input_json...]\n", progname); printf(" Available options are:\n"); @@ -69,8 +67,8 @@ bool parseDims(const char *dimStr, int *widthOut, int *heightOut) { return true; } -void args_parse(int argc, char **argv) { - g_options = newConstantsDatabase(); +struct driver_args *args_parse(int argc, char **argv) { + struct driver_args *args = newConstantsDatabase(); static bool inputFileSet = false; int testIdx = -1; (void)testIdx; @@ -82,7 +80,7 @@ void args_parse(int argc, char **argv) { // *only* in release builds. WTF. if (stringEquals(argv[i], "--asset-path")) { if (argv[i + 1]) { - setDatabaseString(g_options, "asset_path", argv[i + 1]); + setDatabaseString(args, "asset_path", argv[i + 1]); } continue; } @@ -94,10 +92,10 @@ void args_parse(int argc, char **argv) { alternatePath = stringConcat(argv[i], ".json"); if (is_valid_file(argv[i], NULL) && !inputFileSet) { - setDatabaseString(g_options, "inputFile", argv[i]); + setDatabaseString(args, "inputFile", argv[i]); inputFileSet = true; } else if (is_valid_file(alternatePath, NULL) && !inputFileSet) { - setDatabaseString(g_options, "inputFile", alternatePath); + setDatabaseString(args, "inputFile", alternatePath); inputFileSet = true; } @@ -111,7 +109,7 @@ void args_parse(int argc, char **argv) { int n = atoi(threadstr); n = n < 0 ? 0 : n; n = n > getSysCores() * 2 ? getSysCores() * 2 : n; - setDatabaseInt(g_options, "thread_override", n); + setDatabaseInt(args, "thread_override", n); } else { logr(warning, "Invalid -j parameter given!\n"); } @@ -122,7 +120,7 @@ void args_parse(int argc, char **argv) { if (sampleStr) { int n = atoi(sampleStr); n = n < 1 ? 1 : n; - setDatabaseInt(g_options, "samples_override", n); + setDatabaseInt(args, "samples_override", n); } else { logr(warning, "Invalid -s parameter given!\n"); } @@ -133,9 +131,9 @@ void args_parse(int argc, char **argv) { int width = 0; int height = 0; if (parseDims(dimstr, &width, &height)) { - setDatabaseTag(g_options, "dims_override"); - setDatabaseInt(g_options, "dims_width", width); - setDatabaseInt(g_options, "dims_height", height); + setDatabaseTag(args, "dims_override"); + setDatabaseInt(args, "dims_width", width); + setDatabaseInt(args, "dims_height", height); } else { logr(warning, "Invalid -d parameter given!\n"); } @@ -146,9 +144,9 @@ void args_parse(int argc, char **argv) { int width = 0; int height = 0; if (parseDims(dimstr, &width, &height)) { - setDatabaseTag(g_options, "tiledims_override"); - setDatabaseInt(g_options, "tile_width", width); - setDatabaseInt(g_options, "tile_height", height); + setDatabaseTag(args, "tiledims_override"); + setDatabaseInt(args, "tile_width", width); + setDatabaseInt(args, "tile_height", height); } else { logr(warning, "Invalid -t parameter given!\n"); } @@ -156,7 +154,7 @@ void args_parse(int argc, char **argv) { if (stringEquals(argv[i], "-o")) { char *pathstr = argv[i + 1]; - setDatabaseString(g_options, "output_path", pathstr); + setDatabaseString(args, "output_path", pathstr); } if (stringEquals(argv[i], "-c")) { @@ -164,7 +162,7 @@ void args_parse(int argc, char **argv) { if (str) { int n = atoi(str); n = n < 0 ? 0 : n; - setDatabaseInt(g_options, "cam_index", n); + setDatabaseInt(args, "cam_index", n); } else { logr(warning, "Invalid -c parameter given!\n"); } @@ -172,12 +170,12 @@ void args_parse(int argc, char **argv) { if (stringEquals(argv[i], "--suite")) { if (argv[i + 1]) { - setDatabaseString(g_options, "test_suite", argv[i + 1]); + setDatabaseString(args, "test_suite", argv[i + 1]); } } if (stringEquals(argv[i], "--test")) { - setDatabaseTag(g_options, "runTests"); + setDatabaseTag(args, "runTests"); char *testIdxStr = argv[i + 1]; if (testIdxStr) { int n = atoi(testIdxStr); @@ -187,7 +185,7 @@ void args_parse(int argc, char **argv) { } if (stringEquals(argv[i], "--test-perf")) { - setDatabaseTag(g_options, "runPerfTests"); + setDatabaseTag(args, "runPerfTests"); char *testIdxStr = argv[i + 1]; if (testIdxStr) { int n = atoi(testIdxStr); @@ -197,49 +195,49 @@ void args_parse(int argc, char **argv) { } if (stringEquals(argv[i], "--tcount")) { - setDatabaseTag(g_options, "runTests"); + setDatabaseTag(args, "runTests"); testIdx = -2; } if (stringEquals(argv[i], "--ptcount")) { - setDatabaseTag(g_options, "runTests"); + setDatabaseTag(args, "runTests"); testIdx = -3; } if (stringEquals(argv[i], "--iterative")) { - setDatabaseTag(g_options, "interactive"); + setDatabaseTag(args, "interactive"); } if (stringEquals(argv[i], "--shutdown")) { - setDatabaseTag(g_options, "shutdown"); + setDatabaseTag(args, "shutdown"); } if (stringEquals(argv[i], "--nodes")) { ASSERT(i + 1 <= argc); char *nodes = argv[i + 1]; - if (nodes) setDatabaseString(g_options, "nodes_list", nodes); + if (nodes) setDatabaseString(args, "nodes_list", nodes); } if (stringEquals(argv[i], "--worker")) { - setDatabaseTag(g_options, "is_worker"); + setDatabaseTag(args, "is_worker"); char *portStr = argv[i + 1]; if (portStr && portStr[0] != '-') { int port = atoi(portStr); // Verify it's in the valid port range port = port < 1024 ? 1024 : port; port = port > 65535 ? 65535 : port; - setDatabaseInt(g_options, "worker_port", port); + setDatabaseInt(args, "worker_port", port); } } if (strncmp(argv[i], "-", 1) == 0) { - setDatabaseTag(g_options, ++argv[i]); + setDatabaseTag(args, ++argv[i]); } } logr(debug, "Verbose mode enabled\n"); - if (args_is_set("shutdown") && args_is_set("nodes_list")) { - shutdownClients(args_string("nodes_list")); + if (args_is_set(args, "shutdown") && args_is_set(args, "nodes_list")) { + shutdownClients(args_string(args, "nodes_list")); term_restore(); exit(0); } @@ -249,10 +247,10 @@ void args_parse(int argc, char **argv) { alternatePath = NULL; } - if (args_is_set("runTests") || args_is_set("runPerfTests")) { + if (args_is_set(args, "runTests") || args_is_set(args, "runPerfTests")) { #ifdef CRAY_TESTING char *suite = NULL; - if (args_is_set("test_suite")) suite = getDatabaseString(g_options, "test_suite"); + if (args_is_set(args, "test_suite")) suite = getDatabaseString(args, "test_suite"); switch (testIdx) { case -3: printf("%i", getPerfTestCount(suite)); @@ -263,10 +261,10 @@ void args_parse(int argc, char **argv) { exit(0); break; case -1: - exit(args_is_set("runPerfTests") ? runPerfTests(suite) : runTests(suite)); + exit(args_is_set(args, "runPerfTests") ? runPerfTests(suite) : runTests(suite)); break; default: - exit(args_is_set("runPerfTests") ? runPerfTest(testIdx, suite) : runTest(testIdx, suite)); + exit(args_is_set(args, "runPerfTests") ? runPerfTest(testIdx, suite) : runTest(testIdx, suite)); break; } #else @@ -275,32 +273,33 @@ void args_parse(int argc, char **argv) { exit(-1); #endif } + return args; } -bool args_is_set(const char *key) { - if (!g_options) return false; - return existsInDatabase(g_options, key); +bool args_is_set(struct driver_args *args, const char *key) { + if (!args) return false; + return existsInDatabase(args, key); } -int args_int(const char *key) { - ASSERT(existsInDatabase(g_options, key)); - return getDatabaseInt(g_options, key); +int args_int(struct driver_args *args, const char *key) { + ASSERT(existsInDatabase(args, key)); + return getDatabaseInt(args, key); } -char *args_string(const char *key) { - return getDatabaseString(g_options, key); +char *args_string(struct driver_args *args, const char *key) { + return getDatabaseString(args, key); } -char *args_path() { - ASSERT(existsInDatabase(g_options, "inputFile")); - return getDatabaseString(g_options, "inputFile"); +char *args_path(struct driver_args *args) { + ASSERT(existsInDatabase(args, "inputFile")); + return getDatabaseString(args, "inputFile"); } -char *args_asset_path(void) { - ASSERT(existsInDatabase(g_options, "asset_path")); - return getDatabaseString(g_options, "asset_path"); +char *args_asset_path(struct driver_args *args) { + ASSERT(existsInDatabase(args, "asset_path")); + return getDatabaseString(args, "asset_path"); } -void args_destroy() { - freeConstantsDatabase(g_options); +void args_destroy(struct driver_args *args) { + freeConstantsDatabase(args); } diff --git a/src/utils/args.h b/src/utils/args.h index b8d41498..5dea6af1 100644 --- a/src/utils/args.h +++ b/src/utils/args.h @@ -8,16 +8,16 @@ #pragma once -void args_parse(int argc, char **argv); +struct driver_args *args_parse(int argc, char **argv); -bool args_is_set(const char *key); +bool args_is_set(struct driver_args *args, const char *key); -int args_int(const char *key); +int args_int(struct driver_args *args, const char *key); -char *args_string(const char *key); +char *args_string(struct driver_args *args, const char *key); -char *args_path(void); +char *args_path(struct driver_args *args); -char *args_asset_path(void); +char *args_asset_path(struct driver_args *args); -void args_destroy(void); +void args_destroy(struct driver_args *args); diff --git a/src/utils/hashtable.c b/src/utils/hashtable.c index e5d6f597..3947c625 100644 --- a/src/utils/hashtable.c +++ b/src/utils/hashtable.c @@ -174,11 +174,11 @@ bool compareDatabaseEntry(const void *entry1, const void *entry2) { return stringEquals((const char *)entry1, *(const char **)entry2); } -struct constantsDatabase *newConstantsDatabase(void) { - return (struct constantsDatabase *)newHashtable(compareDatabaseEntry, NULL); +struct driver_args *newConstantsDatabase(void) { + return (struct driver_args *)newHashtable(compareDatabaseEntry, NULL); } -bool existsInDatabase(struct constantsDatabase *database, const char *key) { +bool existsInDatabase(struct driver_args *database, const char *key) { return findInHashtable(&database->hashtable, key, hashString(hashInit(), key)) != NULL; } @@ -192,7 +192,7 @@ struct databaseEntry { struct databaseEntry entry; \ T value; \ }; \ - void setterName(struct constantsDatabase *database, const char *key, T value) { \ + void setterName(struct driver_args *database, const char *key, T value) { \ uint32_t hash = hashString(hashInit(), key); \ struct entryName *entry = findInHashtable(&database->hashtable, key, hash); \ if (entry) { \ @@ -205,7 +205,7 @@ struct databaseEntry { hash); \ } \ } \ - T getterName(struct constantsDatabase *database, const char *key) { \ + T getterName(struct driver_args *database, const char *key) { \ struct entryName *entry = findInHashtable(&database->hashtable, key, hashString(hashInit(), key)); \ return entry ? entry->value : (defaultValue); \ } @@ -215,7 +215,7 @@ DATABASE_ACCESSORS(float, floatEntry, setDatabaseFloat, getDatabaseFlo DATABASE_ACCESSORS(char *, stringEntry, ignoreAccessor, getDatabaseString, NULL) DATABASE_ACCESSORS(int, intEntry, setDatabaseInt, getDatabaseInt, 0) -void setDatabaseString(struct constantsDatabase *database, const char *key, const char *value) { +void setDatabaseString(struct driver_args *database, const char *key, const char *value) { struct stringEntry *entry = findInHashtable(&database->hashtable, key, hashString(hashInit(), key)); char *valueCopy = stringCopy(value); if (entry) { @@ -231,7 +231,7 @@ void setDatabaseString(struct constantsDatabase *database, const char *key, cons } } -void setDatabaseTag(struct constantsDatabase *database, const char *key) { +void setDatabaseTag(struct driver_args *database, const char *key) { uint32_t hash = hashString(hashInit(), key); if (!findInHashtable(&database->hashtable, key, hash)) { forceInsertInHashtable( @@ -242,7 +242,7 @@ void setDatabaseTag(struct constantsDatabase *database, const char *key) { } } -void freeConstantsDatabase(struct constantsDatabase *database) { +void freeConstantsDatabase(struct driver_args *database) { for (size_t i = 0, n = database->hashtable.bucketCount; i < n; ++i) { struct bucket *bucket = database->hashtable.buckets[i]; while (bucket) { diff --git a/src/utils/hashtable.h b/src/utils/hashtable.h index 6fdda81e..09f35da9 100644 --- a/src/utils/hashtable.h +++ b/src/utils/hashtable.h @@ -53,21 +53,21 @@ void forceInsertInHashtable(struct hashtable *hashtable, const void *element, si bool removeFromHashtable(struct hashtable *hashtable, const void *element, uint32_t hash); void destroyHashtable(struct hashtable *hashtable); -// Database used by the scene to store constants. -struct constantsDatabase { +// Database used by the driver program to store constants. +struct driver_args { struct hashtable hashtable; }; -struct constantsDatabase *newConstantsDatabase(void); -bool existsInDatabase(struct constantsDatabase *database, const char *key); -void setDatabaseVector(struct constantsDatabase *database, const char *key, struct vector value); -struct vector getDatabaseVector(struct constantsDatabase *database, const char *key); -void setDatabaseFloat(struct constantsDatabase *database, const char *key, float value); -float getDatabaseFloat(struct constantsDatabase *database, const char *key); -void setDatabaseString(struct constantsDatabase *database, const char *key, const char *value); -char *getDatabaseString(struct constantsDatabase *database, const char *key); -void setDatabaseInt(struct constantsDatabase *database, const char *key, int value); -int getDatabaseInt(struct constantsDatabase *database, const char *key); +struct driver_args *newConstantsDatabase(void); +bool existsInDatabase(struct driver_args *database, const char *key); +void setDatabaseVector(struct driver_args *database, const char *key, struct vector value); +struct vector getDatabaseVector(struct driver_args *database, const char *key); +void setDatabaseFloat(struct driver_args *database, const char *key, float value); +float getDatabaseFloat(struct driver_args *database, const char *key); +void setDatabaseString(struct driver_args *database, const char *key, const char *value); +char *getDatabaseString(struct driver_args *database, const char *key); +void setDatabaseInt(struct driver_args *database, const char *key, int value); +int getDatabaseInt(struct driver_args *database, const char *key); // No data is stored. This key is just occupied, and can be checked for with existsInDatabase() -void setDatabaseTag(struct constantsDatabase *database, const char *key); -void freeConstantsDatabase(struct constantsDatabase *database); +void setDatabaseTag(struct driver_args *database, const char *key); +void freeConstantsDatabase(struct driver_args *database); diff --git a/tests/test_hashtable.h b/tests/test_hashtable.h index 3beac9ff..77c3dd91 100644 --- a/tests/test_hashtable.h +++ b/tests/test_hashtable.h @@ -33,7 +33,7 @@ bool hashtable_doubleInsert(void) { } bool hashtable_mixed(void) { - struct constantsDatabase *database = newConstantsDatabase(); + struct driver_args *database = newConstantsDatabase(); setDatabaseVector(database, "key0", (struct vector){1.0f, 2.0f, 3.0f}); setDatabaseFloat(database, "key1", 123.4f); @@ -53,7 +53,7 @@ bool hashtable_mixed(void) { } bool hashtable_fill(void) { - struct constantsDatabase *database = newConstantsDatabase(); + struct driver_args *database = newConstantsDatabase(); char buf[20]; size_t iterCount = 10000; for (size_t i = 0; i < iterCount; ++i) {