diff --git a/CMakeLists.txt b/CMakeLists.txt index c399113..f0f7edc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,8 +4,6 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) project(podrm LANGUAGES C CXX) -add_subdirectory(components) - if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) option(PFR_ORM_ASAN "Build podrm with address sanitizer" OFF) @@ -16,3 +14,5 @@ if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) include(CTest) endif() + +add_subdirectory(components) diff --git a/components/CMakeLists.txt b/components/CMakeLists.txt index 965cba1..f4809b1 100644 --- a/components/CMakeLists.txt +++ b/components/CMakeLists.txt @@ -1,5 +1,4 @@ -add_subdirectory(span) -add_subdirectory(reflection) add_subdirectory(metadata) -add_subdirectory(sqlite) -add_subdirectory(postgres) +add_subdirectory(reflection) +add_subdirectory(databases) +add_subdirectory(utils) diff --git a/components/databases/CMakeLists.txt b/components/databases/CMakeLists.txt new file mode 100644 index 0000000..fe0db30 --- /dev/null +++ b/components/databases/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(postgres) +add_subdirectory(sqlite) diff --git a/components/postgres/CMakeLists.txt b/components/databases/postgres/CMakeLists.txt similarity index 84% rename from components/postgres/CMakeLists.txt rename to components/databases/postgres/CMakeLists.txt index d851d4d..b1aa8bd 100644 --- a/components/postgres/CMakeLists.txt +++ b/components/databases/postgres/CMakeLists.txt @@ -7,5 +7,5 @@ target_sources(podrm-postgres PRIVATE lib/connection.cpp lib/result.cpp target_link_libraries( podrm-postgres PUBLIC podrm-metadata - PRIVATE PostgreSQL::PostgreSQL fmt::fmt) + PRIVATE podrm-multilambda PostgreSQL::PostgreSQL fmt::fmt) target_include_directories(podrm-postgres PUBLIC include) diff --git a/components/postgres/include/podrm/postgres/database.hpp b/components/databases/postgres/include/podrm/postgres/database.hpp similarity index 100% rename from components/postgres/include/podrm/postgres/database.hpp rename to components/databases/postgres/include/podrm/postgres/database.hpp diff --git a/components/postgres/include/podrm/postgres/detail/connection.hpp b/components/databases/postgres/include/podrm/postgres/detail/connection.hpp similarity index 100% rename from components/postgres/include/podrm/postgres/detail/connection.hpp rename to components/databases/postgres/include/podrm/postgres/detail/connection.hpp diff --git a/components/postgres/include/podrm/postgres/detail/result.hpp b/components/databases/postgres/include/podrm/postgres/detail/result.hpp similarity index 100% rename from components/postgres/include/podrm/postgres/detail/result.hpp rename to components/databases/postgres/include/podrm/postgres/detail/result.hpp diff --git a/components/postgres/include/podrm/postgres/detail/str.hpp b/components/databases/postgres/include/podrm/postgres/detail/str.hpp similarity index 100% rename from components/postgres/include/podrm/postgres/detail/str.hpp rename to components/databases/postgres/include/podrm/postgres/detail/str.hpp diff --git a/components/postgres/lib/connection.cpp b/components/databases/postgres/lib/connection.cpp similarity index 99% rename from components/postgres/lib/connection.cpp rename to components/databases/postgres/lib/connection.cpp index 10fac9a..aa44fed 100644 --- a/components/postgres/lib/connection.cpp +++ b/components/databases/postgres/lib/connection.cpp @@ -1,7 +1,7 @@ -#include "detail/multilambda.hpp" #include "formatters.hpp" // IWYU pragma: keep #include +#include #include #include #include diff --git a/components/postgres/lib/formatters.hpp b/components/databases/postgres/lib/formatters.hpp similarity index 100% rename from components/postgres/lib/formatters.hpp rename to components/databases/postgres/lib/formatters.hpp diff --git a/components/postgres/lib/result.cpp b/components/databases/postgres/lib/result.cpp similarity index 100% rename from components/postgres/lib/result.cpp rename to components/databases/postgres/lib/result.cpp diff --git a/components/postgres/lib/str.cpp b/components/databases/postgres/lib/str.cpp similarity index 100% rename from components/postgres/lib/str.cpp rename to components/databases/postgres/lib/str.cpp diff --git a/components/sqlite/CMakeLists.txt b/components/databases/sqlite/CMakeLists.txt similarity index 88% rename from components/sqlite/CMakeLists.txt rename to components/databases/sqlite/CMakeLists.txt index 99e464f..1b66609 100644 --- a/components/sqlite/CMakeLists.txt +++ b/components/databases/sqlite/CMakeLists.txt @@ -7,7 +7,7 @@ target_sources(podrm-sqlite PRIVATE lib/connection.cpp lib/cursor.cpp target_link_libraries( podrm-sqlite PUBLIC podrm-metadata - PRIVATE SQLite::SQLite3 fmt::fmt) + PRIVATE podrm-multilambda SQLite::SQLite3 fmt::fmt) target_include_directories(podrm-sqlite PUBLIC include) if(BUILD_TESTING) diff --git a/components/sqlite/include/podrm/sqlite.hpp b/components/databases/sqlite/include/podrm/sqlite.hpp similarity index 100% rename from components/sqlite/include/podrm/sqlite.hpp rename to components/databases/sqlite/include/podrm/sqlite.hpp diff --git a/components/sqlite/include/podrm/sqlite/cursor.hpp b/components/databases/sqlite/include/podrm/sqlite/cursor.hpp similarity index 100% rename from components/sqlite/include/podrm/sqlite/cursor.hpp rename to components/databases/sqlite/include/podrm/sqlite/cursor.hpp diff --git a/components/sqlite/include/podrm/sqlite/database.hpp b/components/databases/sqlite/include/podrm/sqlite/database.hpp similarity index 100% rename from components/sqlite/include/podrm/sqlite/database.hpp rename to components/databases/sqlite/include/podrm/sqlite/database.hpp diff --git a/components/sqlite/include/podrm/sqlite/detail/connection.hpp b/components/databases/sqlite/include/podrm/sqlite/detail/connection.hpp similarity index 100% rename from components/sqlite/include/podrm/sqlite/detail/connection.hpp rename to components/databases/sqlite/include/podrm/sqlite/detail/connection.hpp diff --git a/components/sqlite/include/podrm/sqlite/detail/cursor.hpp b/components/databases/sqlite/include/podrm/sqlite/detail/cursor.hpp similarity index 100% rename from components/sqlite/include/podrm/sqlite/detail/cursor.hpp rename to components/databases/sqlite/include/podrm/sqlite/detail/cursor.hpp diff --git a/components/sqlite/include/podrm/sqlite/detail/entry.hpp b/components/databases/sqlite/include/podrm/sqlite/detail/entry.hpp similarity index 100% rename from components/sqlite/include/podrm/sqlite/detail/entry.hpp rename to components/databases/sqlite/include/podrm/sqlite/detail/entry.hpp diff --git a/components/sqlite/include/podrm/sqlite/detail/result.hpp b/components/databases/sqlite/include/podrm/sqlite/detail/result.hpp similarity index 100% rename from components/sqlite/include/podrm/sqlite/detail/result.hpp rename to components/databases/sqlite/include/podrm/sqlite/detail/result.hpp diff --git a/components/sqlite/include/podrm/sqlite/detail/row.hpp b/components/databases/sqlite/include/podrm/sqlite/detail/row.hpp similarity index 100% rename from components/sqlite/include/podrm/sqlite/detail/row.hpp rename to components/databases/sqlite/include/podrm/sqlite/detail/row.hpp diff --git a/components/sqlite/lib/connection.cpp b/components/databases/sqlite/lib/connection.cpp similarity index 99% rename from components/sqlite/lib/connection.cpp rename to components/databases/sqlite/lib/connection.cpp index 839c363..50d74a9 100644 --- a/components/sqlite/lib/connection.cpp +++ b/components/databases/sqlite/lib/connection.cpp @@ -1,6 +1,5 @@ -#include "detail/multilambda.hpp" - #include +#include #include #include #include diff --git a/components/sqlite/lib/cursor.cpp b/components/databases/sqlite/lib/cursor.cpp similarity index 98% rename from components/sqlite/lib/cursor.cpp rename to components/databases/sqlite/lib/cursor.cpp index 18625af..5db5b61 100644 --- a/components/sqlite/lib/cursor.cpp +++ b/components/databases/sqlite/lib/cursor.cpp @@ -1,6 +1,5 @@ -#include "detail/multilambda.hpp" - #include +#include #include #include #include diff --git a/components/sqlite/lib/entry.cpp b/components/databases/sqlite/lib/entry.cpp similarity index 100% rename from components/sqlite/lib/entry.cpp rename to components/databases/sqlite/lib/entry.cpp diff --git a/components/sqlite/lib/result.cpp b/components/databases/sqlite/lib/result.cpp similarity index 100% rename from components/sqlite/lib/result.cpp rename to components/databases/sqlite/lib/result.cpp diff --git a/components/sqlite/lib/row.cpp b/components/databases/sqlite/lib/row.cpp similarity index 100% rename from components/sqlite/lib/row.cpp rename to components/databases/sqlite/lib/row.cpp diff --git a/components/sqlite/test/.clang-tidy b/components/databases/sqlite/test/.clang-tidy similarity index 100% rename from components/sqlite/test/.clang-tidy rename to components/databases/sqlite/test/.clang-tidy diff --git a/components/sqlite/test/CMakeLists.txt b/components/databases/sqlite/test/CMakeLists.txt similarity index 100% rename from components/sqlite/test/CMakeLists.txt rename to components/databases/sqlite/test/CMakeLists.txt diff --git a/components/sqlite/test/field.hpp b/components/databases/sqlite/test/field.hpp similarity index 100% rename from components/sqlite/test/field.hpp rename to components/databases/sqlite/test/field.hpp diff --git a/components/sqlite/test/test.cpp b/components/databases/sqlite/test/test.cpp similarity index 100% rename from components/sqlite/test/test.cpp rename to components/databases/sqlite/test/test.cpp diff --git a/components/sqlite/lib/detail/multilambda.hpp b/components/sqlite/lib/detail/multilambda.hpp deleted file mode 100644 index a643a0d..0000000 --- a/components/sqlite/lib/detail/multilambda.hpp +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -namespace podrm::detail { - -/// Invocable that overloads its call operator using call operators of the -/// parent classes -/// @tparam Ts types of the parent classes -template struct MultiLambda : Ts... { - using Ts::operator()...; -}; - -template MultiLambda(Ts...) -> MultiLambda; - -} // namespace podrm::detail diff --git a/components/utils/CMakeLists.txt b/components/utils/CMakeLists.txt new file mode 100644 index 0000000..2e72a30 --- /dev/null +++ b/components/utils/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(span) +add_subdirectory(multilambda) diff --git a/components/utils/multilambda/CMakeLists.txt b/components/utils/multilambda/CMakeLists.txt new file mode 100644 index 0000000..8bdf8c5 --- /dev/null +++ b/components/utils/multilambda/CMakeLists.txt @@ -0,0 +1,2 @@ +add_library(podrm-multilambda INTERFACE) +target_include_directories(podrm-multilambda INTERFACE SYSTEM include) diff --git a/components/postgres/lib/detail/multilambda.hpp b/components/utils/multilambda/include/podrm/multilambda.hpp similarity index 100% rename from components/postgres/lib/detail/multilambda.hpp rename to components/utils/multilambda/include/podrm/multilambda.hpp diff --git a/components/span/CMakeLists.txt b/components/utils/span/CMakeLists.txt similarity index 100% rename from components/span/CMakeLists.txt rename to components/utils/span/CMakeLists.txt diff --git a/components/span/include/podrm/span.hpp b/components/utils/span/include/podrm/span.hpp similarity index 100% rename from components/span/include/podrm/span.hpp rename to components/utils/span/include/podrm/span.hpp