diff --git a/CMakeLists.txt b/CMakeLists.txt index 9eec095..6fdd0ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,12 +24,12 @@ add_executable(base16384_b base16384.c) IF ((NOT FORCE_32BIT) AND CMAKE_SIZEOF_VOID_P EQUAL 8) message(STATUS "Adding 64bit libraries...") add_definitions(-DIS_64BIT_PROCESSOR) - add_library(base16384 SHARED file.c base1464.c) - add_library(base16384_s STATIC file.c base1464.c) + add_library(base16384 SHARED wrap.c file.c base1464.c) + add_library(base16384_s STATIC wrap.c file.c base1464.c) ELSE () message(STATUS "Adding 32bit libraries...") - add_library(base16384 SHARED file.c base1432.c) - add_library(base16384_s STATIC file.c base1432.c) + add_library(base16384 SHARED wrap.c file.c base1432.c) + add_library(base16384_s STATIC wrap.c file.c base1432.c) ENDIF () set_target_properties(base16384_b PROPERTIES OUTPUT_NAME base16384) diff --git a/base16384.h b/base16384.h index fe93fd7..b5be8a5 100644 --- a/base16384.h +++ b/base16384.h @@ -244,9 +244,7 @@ base16384_err_t base16384_decode_fp_detailed(base16384_typed_flag_params(FILE*)) base16384_err_t base16384_decode_fd_detailed(base16384_typed_flag_params(int)); #define BASE16384_WRAP_DECL(method, name, type) \ - static inline base16384_err_t base16384_##method##_##name(base16384_typed_params(type)) { \ - return base16384_##method##_##name##_detailed(input, output, encbuf, decbuf, 0); \ - } + base16384_err_t base16384_##method##_##name(base16384_typed_params(type)); BASE16384_WRAP_DECL(encode, file, const char*); BASE16384_WRAP_DECL(encode, fp, FILE*); diff --git a/wrap.c b/wrap.c new file mode 100644 index 0000000..5358b5f --- /dev/null +++ b/wrap.c @@ -0,0 +1,38 @@ +/* wrap.c + * This file is part of the base16384 distribution (https://github.com/fumiama/base16384). + * Copyright (c) 2022-2024 Fumiama Minamoto. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "base16384.h" + +#define base16384_typed_params(type) type input, type output, char* encbuf, char* decbuf + +#define BASE16384_WRAP_DECL(method, name, type) \ + base16384_err_t base16384_##method##_##name(base16384_typed_params(type)) { \ + return base16384_##method##_##name##_detailed(input, output, encbuf, decbuf, 0); \ + } + + BASE16384_WRAP_DECL(encode, file, const char*); + BASE16384_WRAP_DECL(encode, fp, FILE*); + BASE16384_WRAP_DECL(encode, fd, int); + + BASE16384_WRAP_DECL(decode, file, const char*); + BASE16384_WRAP_DECL(decode, fp, FILE*); + BASE16384_WRAP_DECL(decode, fd, int); + +#undef BASE16384_WRAP_DECL + +#undef base16384_typed_params