Skip to content

Commit 0113db8

Browse files
authored
Add a SOURCEMETA_FORCEINLINE helper macro (#2281)
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
1 parent 39fd52e commit 0113db8

17 files changed

Lines changed: 350 additions & 378 deletions

File tree

.github/workflows/website-build.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ jobs:
1616
- run: >
1717
cmake -S . -B ./build
1818
-DCMAKE_BUILD_TYPE:STRING=Release
19+
-DSOURCEMETA_CORE_LANG_PREPROCESSOR:BOOL=OFF
1920
-DSOURCEMETA_CORE_LANG_IO:BOOL=OFF
2021
-DSOURCEMETA_CORE_LANG_PROCESS:BOOL=OFF
2122
-DSOURCEMETA_CORE_LANG_PARALLEL:BOOL=OFF

.github/workflows/website-deploy.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ jobs:
2626
- run: >
2727
cmake -S . -B ./build
2828
-DCMAKE_BUILD_TYPE:STRING=Release
29+
-DSOURCEMETA_CORE_LANG_PREPROCESSOR:BOOL=OFF
2930
-DSOURCEMETA_CORE_LANG_IO:BOOL=OFF
3031
-DSOURCEMETA_CORE_LANG_PROCESS:BOOL=OFF
3132
-DSOURCEMETA_CORE_LANG_PARALLEL:BOOL=OFF

CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ project(core VERSION 0.0.0 LANGUAGES C CXX ASM_MASM DESCRIPTION "Sourcemeta Core
33
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
44

55
# Options
6+
option(SOURCEMETA_CORE_LANG_PREPROCESSOR "Build the Sourcemeta Core language preprocessor library" ON)
67
option(SOURCEMETA_CORE_LANG_IO "Build the Sourcemeta Core language I/O library" ON)
78
option(SOURCEMETA_CORE_LANG_PROCESS "Build the Sourcemeta Core language Process library" ON)
89
option(SOURCEMETA_CORE_LANG_PARALLEL "Build the Sourcemeta Core language parallel library" ON)
@@ -58,6 +59,10 @@ if(SOURCEMETA_CORE_INSTALL)
5859
COMPONENT sourcemeta_${PROJECT_NAME}_dev)
5960
endif()
6061

62+
if(SOURCEMETA_CORE_LANG_PREPROCESSOR)
63+
add_subdirectory(src/lang/preprocessor)
64+
endif()
65+
6166
if(SOURCEMETA_CORE_LANG_IO)
6267
add_subdirectory(src/lang/io)
6368
endif()

config.cmake.in

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
list(APPEND SOURCEMETA_CORE_COMPONENTS ${Core_FIND_COMPONENTS})
55
list(APPEND SOURCEMETA_CORE_COMPONENTS ${core_FIND_COMPONENTS})
66
if(NOT SOURCEMETA_CORE_COMPONENTS)
7+
list(APPEND SOURCEMETA_CORE_COMPONENTS preprocessor)
78
list(APPEND SOURCEMETA_CORE_COMPONENTS io)
89
list(APPEND SOURCEMETA_CORE_COMPONENTS process)
910
list(APPEND SOURCEMETA_CORE_COMPONENTS parallel)
@@ -29,14 +30,17 @@ endif()
2930
include(CMakeFindDependencyMacro)
3031

3132
foreach(component ${SOURCEMETA_CORE_COMPONENTS})
32-
if(component STREQUAL "io")
33+
if(component STREQUAL "preprocessor")
34+
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_preprocessor.cmake")
35+
elseif(component STREQUAL "io")
3336
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_io.cmake")
3437
elseif(component STREQUAL "process")
3538
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_process.cmake")
3639
elseif(component STREQUAL "parallel")
3740
find_dependency(Threads)
3841
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_parallel.cmake")
3942
elseif(component STREQUAL "numeric")
43+
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_preprocessor.cmake")
4044
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_numeric.cmake")
4145
elseif(component STREQUAL "unicode")
4246
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_unicode.cmake")
@@ -59,6 +63,7 @@ foreach(component ${SOURCEMETA_CORE_COMPONENTS})
5963
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_io.cmake")
6064
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_uritemplate.cmake")
6165
elseif(component STREQUAL "json")
66+
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_preprocessor.cmake")
6267
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_numeric.cmake")
6368
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_io.cmake")
6469
include("${CMAKE_CURRENT_LIST_DIR}/sourcemeta_core_unicode.cmake")

src/core/json/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ endif()
99
target_link_libraries(sourcemeta_core_json PRIVATE sourcemeta::core::io)
1010
target_link_libraries(sourcemeta_core_json PRIVATE sourcemeta::core::unicode)
1111
target_link_libraries(sourcemeta_core_json PUBLIC sourcemeta::core::numeric)
12+
target_link_libraries(sourcemeta_core_json PUBLIC sourcemeta::core::preprocessor)

src/core/json/include/sourcemeta/core/json.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
#include <sourcemeta/core/json_value.h>
1212
// NOLINTEND(misc-include-cleaner)
1313

14+
#include <sourcemeta/core/preprocessor.h>
15+
1416
#include <cstdint> // std::uint64_t
1517
#include <filesystem> // std::filesystem
1618
#include <fstream> // std::basic_ifstream
@@ -228,8 +230,14 @@ auto operator<<(std::basic_ostream<JSON::Char, JSON::CharTraits> &stream,
228230
/// {sourcemeta::core::JSON::Type::Object,
229231
/// sourcemeta::core::JSON::Type::Array});
230232
/// ```
231-
SOURCEMETA_CORE_JSON_EXPORT
232-
auto make_set(std::initializer_list<JSON::Type> types) -> JSON::TypeSet;
233+
SOURCEMETA_FORCEINLINE inline auto
234+
make_set(std::initializer_list<JSON::Type> types) -> JSON::TypeSet {
235+
JSON::TypeSet result;
236+
for (const auto type : types) {
237+
result.set(static_cast<std::size_t>(type));
238+
}
239+
return result;
240+
}
233241

234242
} // namespace sourcemeta::core
235243

0 commit comments

Comments
 (0)