From b46dccb70d633c2fb07755d070c3bb603b4c7e06 Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Sat, 10 Feb 2018 16:01:01 -0800 Subject: [PATCH] Add a utility header to convert error codes. --- CMakeLists.txt | 2 +- include/libabacus.h | 4 +++- include/libabacus_util.h | 21 +++++++++++++++++++++ src/libabacus_util.c | 20 ++++++++++++++++++++ 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 include/libabacus_util.h create mode 100644 src/libabacus_util.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 8fe7bdd..2b94868 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ project(libabacus) add_compile_options(-pedantic -Wall) -add_library(abacus STATIC src/lexer.c) +add_library(abacus STATIC src/lexer.c src/libabacus_util.c) add_executable(libabacus src/main.c) add_subdirectory(external/liblex) diff --git a/include/libabacus.h b/include/libabacus.h index e74312d..fca344f 100644 --- a/include/libabacus.h +++ b/include/libabacus.h @@ -7,7 +7,9 @@ */ enum libab_result { LIBAB_SUCCESS, - LIBAB_MALLOC + LIBAB_MALLOC, + LIBAB_BAD_PATTERN, + LIBAB_FAILED_MATCH }; typedef enum libab_result libab_result; diff --git a/include/libabacus_util.h b/include/libabacus_util.h new file mode 100644 index 0000000..e688280 --- /dev/null +++ b/include/libabacus_util.h @@ -0,0 +1,21 @@ +#ifndef LIBABACUS_UTIL_H +#define LIBABACUS_UTIL_H + +#include "libds.h" +#include "liblex.h" +#include "libabacus.h" + +/** + * Converts a result code from liblex to libabacus. + * @param to_convert the code to convert. + * @return the libabacus equivalent of the error code. + */ +libab_result convert_lex_result(liblex_result to_convert); +/** + * Converts a result code from libds to libabacus. + * @param to_convert the code to convert. + * @return the libabacus equivalent of the error code. + */ +libab_result convert_ds_result(libds_result to_convert); + +#endif diff --git a/src/libabacus_util.c b/src/libabacus_util.c new file mode 100644 index 0000000..9334aab --- /dev/null +++ b/src/libabacus_util.c @@ -0,0 +1,20 @@ +#include "libabacus_util.h" + +libab_result convert_lex_result(liblex_result to_convert) { + libab_result result = LIBAB_SUCCESS; + if(to_convert == LIBLEX_MALLOC) { + result = LIBAB_MALLOC; + } else if(to_convert == LIBLEX_INVALID) { + result = LIBAB_BAD_PATTERN; + } else if(to_convert == LIBLEX_UNRECOGNIZED) { + result = LIBAB_FAILED_MATCH; + } + return result; +} +libab_result convert_ds_result(libds_result to_convert) { + libab_result result = LIBAB_SUCCESS; + if(to_convert == LIBDS_MALLOC) { + result = LIBAB_MALLOC; + } + return result; +}