diff --git a/CMakeLists.txt b/CMakeLists.txt index f51bd7d..cc1fb27 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,35 +10,28 @@ project (SEQAN_STD DESCRIPTION "Implementation of several C++23/26 views" ) -get_filename_component (SEQAN_STD_DIR_NAME "${CMAKE_CURRENT_SOURCE_DIR}" NAME) -if (NOT SEQAN_STD_DIR_NAME STREQUAL "seqan-std") - message (FATAL_ERROR "The directory name must be 'seqan-std'.") -endif () - -file (REAL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/.." SEQAN_STD_INCLUDE_DIR) - add_library (seqan-std INTERFACE) target_sources (seqan-std INTERFACE FILE_SET HEADERS TYPE HEADERS - BASE_DIRS ${SEQAN_STD_INCLUDE_DIR} + BASE_DIRS ${PROJECT_SOURCE_DIR}/include FILES - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/all_view.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/chunk_by_view.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/chunk_view.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/concepts.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/detail/adaptor_base.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/detail/adaptor_for_view_without_args.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/detail/adaptor_from_functor.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/detail/exposition_only.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/detail/movable_box.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/detail/non_propagating_cache.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/enumerate_view.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/join_with_view.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/pair.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/to.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/tuple.hpp - ${SEQAN_STD_INCLUDE_DIR}/seqan-std/zip_view.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/all_view.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/chunk_by_view.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/chunk_view.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/concepts.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/detail/adaptor_base.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/detail/adaptor_for_view_without_args.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/detail/adaptor_from_functor.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/detail/exposition_only.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/detail/movable_box.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/detail/non_propagating_cache.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/enumerate_view.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/join_with_view.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/pair.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/to.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/tuple.hpp + ${PROJECT_SOURCE_DIR}/include/seqan-std/zip_view.hpp ) target_compile_features (seqan-std INTERFACE cxx_std_20) add_library (seqan::std ALIAS seqan-std) diff --git a/all_view.hpp b/include/seqan-std/all_view.hpp similarity index 97% rename from all_view.hpp rename to include/seqan-std/all_view.hpp index 52548d4..467d0ce 100644 --- a/all_view.hpp +++ b/include/seqan-std/all_view.hpp @@ -30,9 +30,9 @@ using std::ranges::views::all_t; } // namespace seqan::stl::views #else -# include "concepts.hpp" -# include "detail/adaptor_base.hpp" -# include "detail/exposition_only.hpp" +# include +# include +# include namespace seqan::stl::ranges { diff --git a/chunk_by_view.hpp b/include/seqan-std/chunk_by_view.hpp similarity index 96% rename from chunk_by_view.hpp rename to include/seqan-std/chunk_by_view.hpp index ceef717..e6fcef4 100644 --- a/chunk_by_view.hpp +++ b/include/seqan-std/chunk_by_view.hpp @@ -26,11 +26,11 @@ using std::ranges::views::chunk_by; #else -# include "all_view.hpp" -# include "concepts.hpp" -# include "detail/adaptor_from_functor.hpp" -# include "detail/movable_box.hpp" -# include "detail/non_propagating_cache.hpp" +# include +# include +# include +# include +# include namespace seqan::stl::ranges { diff --git a/chunk_view.hpp b/include/seqan-std/chunk_view.hpp similarity index 98% rename from chunk_view.hpp rename to include/seqan-std/chunk_view.hpp index 59570e5..a4c01bd 100644 --- a/chunk_view.hpp +++ b/include/seqan-std/chunk_view.hpp @@ -28,11 +28,11 @@ using std::ranges::views::chunk; # include -# include "all_view.hpp" -# include "concepts.hpp" -# include "detail/adaptor_from_functor.hpp" -# include "detail/exposition_only.hpp" -# include "detail/non_propagating_cache.hpp" +# include +# include +# include +# include +# include namespace seqan::stl::detail::chunk { diff --git a/concepts.hpp b/include/seqan-std/concepts.hpp similarity index 95% rename from concepts.hpp rename to include/seqan-std/concepts.hpp index 1864e81..d51f033 100644 --- a/concepts.hpp +++ b/include/seqan-std/concepts.hpp @@ -21,7 +21,7 @@ using std::ranges::viewable_range; } #else -# include "detail/exposition_only.hpp" +# include namespace seqan::stl::ranges { diff --git a/detail/adaptor_base.hpp b/include/seqan-std/detail/adaptor_base.hpp similarity index 100% rename from detail/adaptor_base.hpp rename to include/seqan-std/detail/adaptor_base.hpp diff --git a/detail/adaptor_for_view_without_args.hpp b/include/seqan-std/detail/adaptor_for_view_without_args.hpp similarity index 98% rename from detail/adaptor_for_view_without_args.hpp rename to include/seqan-std/detail/adaptor_for_view_without_args.hpp index 0a1b7b5..fa2a007 100644 --- a/detail/adaptor_for_view_without_args.hpp +++ b/include/seqan-std/detail/adaptor_for_view_without_args.hpp @@ -11,7 +11,7 @@ #ifndef SEQAN_STD_DETAIL_ADAPTOR_FOR_VIEW_WITHOUT_ARGS #define SEQAN_STD_DETAIL_ADAPTOR_FOR_VIEW_WITHOUT_ARGS -#include "adaptor_base.hpp" +#include namespace seqan::stl::detail { diff --git a/detail/adaptor_from_functor.hpp b/include/seqan-std/detail/adaptor_from_functor.hpp similarity index 98% rename from detail/adaptor_from_functor.hpp rename to include/seqan-std/detail/adaptor_from_functor.hpp index bbffd4d..464ba12 100644 --- a/detail/adaptor_from_functor.hpp +++ b/include/seqan-std/detail/adaptor_from_functor.hpp @@ -11,7 +11,7 @@ #ifndef SEQAN_STD_DETAIL_ADAPTOR_FROM_FUNCTOR #define SEQAN_STD_DETAIL_ADAPTOR_FROM_FUNCTOR -#include "adaptor_base.hpp" +#include namespace seqan::stl::detail { diff --git a/detail/exposition_only.hpp b/include/seqan-std/detail/exposition_only.hpp similarity index 100% rename from detail/exposition_only.hpp rename to include/seqan-std/detail/exposition_only.hpp diff --git a/detail/movable_box.hpp b/include/seqan-std/detail/movable_box.hpp similarity index 100% rename from detail/movable_box.hpp rename to include/seqan-std/detail/movable_box.hpp diff --git a/detail/non_propagating_cache.hpp b/include/seqan-std/detail/non_propagating_cache.hpp similarity index 100% rename from detail/non_propagating_cache.hpp rename to include/seqan-std/detail/non_propagating_cache.hpp diff --git a/enumerate_view.hpp b/include/seqan-std/enumerate_view.hpp similarity index 98% rename from enumerate_view.hpp rename to include/seqan-std/enumerate_view.hpp index 5751f98..0c74866 100644 --- a/enumerate_view.hpp +++ b/include/seqan-std/enumerate_view.hpp @@ -25,10 +25,10 @@ using std::ranges::views::enumerate; #else -# include "all_view.hpp" -# include "concepts.hpp" -# include "detail/adaptor_from_functor.hpp" -# include "detail/exposition_only.hpp" +# include +# include +# include +# include namespace seqan::stl::ranges { diff --git a/join_with_view.hpp b/include/seqan-std/join_with_view.hpp similarity index 98% rename from join_with_view.hpp rename to include/seqan-std/join_with_view.hpp index 6256d4f..463e2f0 100644 --- a/join_with_view.hpp +++ b/include/seqan-std/join_with_view.hpp @@ -26,11 +26,11 @@ using std::ranges::views::join_with; # include -# include "all_view.hpp" -# include "concepts.hpp" -# include "detail/adaptor_from_functor.hpp" -# include "detail/exposition_only.hpp" -# include "detail/non_propagating_cache.hpp" +# include +# include +# include +# include +# include namespace seqan::stl::detail::join_with { diff --git a/pair.hpp b/include/seqan-std/pair.hpp similarity index 100% rename from pair.hpp rename to include/seqan-std/pair.hpp diff --git a/to.hpp b/include/seqan-std/to.hpp similarity index 99% rename from to.hpp rename to include/seqan-std/to.hpp index 153c083..778ea87 100644 --- a/to.hpp +++ b/include/seqan-std/to.hpp @@ -35,7 +35,7 @@ using std::ranges::to; # include -# include "detail/adaptor_from_functor.hpp" +# include namespace seqan::stl { diff --git a/tuple.hpp b/include/seqan-std/tuple.hpp similarity index 99% rename from tuple.hpp rename to include/seqan-std/tuple.hpp index 94e0744..c95e98e 100644 --- a/tuple.hpp +++ b/include/seqan-std/tuple.hpp @@ -23,8 +23,8 @@ using std::tuple; #else -# include "detail/exposition_only.hpp" -# include "pair.hpp" +# include +# include namespace seqan::stl { diff --git a/zip_view.hpp b/include/seqan-std/zip_view.hpp similarity index 98% rename from zip_view.hpp rename to include/seqan-std/zip_view.hpp index 66df807..4ad9b0c 100644 --- a/zip_view.hpp +++ b/include/seqan-std/zip_view.hpp @@ -28,11 +28,11 @@ using std::ranges::views::zip; # include # include -# include "all_view.hpp" -# include "concepts.hpp" -# include "detail/exposition_only.hpp" -# include "pair.hpp" -# include "tuple.hpp" +# include +# include +# include +# include +# include namespace seqan::stl::detail::zip { diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 805bc3f..348c5a7 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -32,8 +32,9 @@ target_link_libraries (${target} seqan-std_test) add_test (NAME "header/${target}" COMMAND ${target}) get_target_property (header_files seqan-std HEADER_SET_HEADERS) +get_target_property (include_dir seqan-std HEADER_DIRS) foreach (absolute_header_path ${header_files}) - file (RELATIVE_PATH header "${SEQAN_STD_INCLUDE_DIR}" "${absolute_header_path}") + file (RELATIVE_PATH header "${include_dir}" "${absolute_header_path}") get_filename_component (header_test_name "${absolute_header_path}" NAME_WE) foreach (header_sub_test "header-guard" "no-self-include") diff --git a/test/generate_header_source.cmake b/test/generate_header_source.cmake index a241c6b..8fdbbc0 100644 --- a/test/generate_header_source.cmake +++ b/test/generate_header_source.cmake @@ -17,9 +17,6 @@ if (HEADER_SUB_TEST STREQUAL "no-self-include") string (REGEX REPLACE "#[a-z]+ +(// +)?SEQAN_STD[A-Z_]+\n" "" header_content "${header_content}") - string (REPLACE "#include \"adaptor_base.hpp\"" "#include " header_content "${header_content}") - string (REGEX REPLACE "include \"([a-z_./]+)\"" "include " header_content "${header_content}") - file (APPEND "${HEADER_TARGET_SOURCE}" "// header-test-no-self-include-start\n" "${header_content}\n"