mirror of
https://github.com/Naios/continuable.git
synced 2026-02-10 20:29:49 +08:00
Start to implement loop and async
This commit is contained in:
parent
5c1cd87739
commit
135ebfccf3
@ -20,39 +20,41 @@
|
|||||||
# SOFTWARE.
|
# SOFTWARE.
|
||||||
|
|
||||||
set(WITH_SOURCE_TREE "hierarchical")
|
set(WITH_SOURCE_TREE "hierarchical")
|
||||||
macro(group_sources dir)
|
macro(group_sources)
|
||||||
# Skip this if WITH_SOURCE_TREE is not set (empty string).
|
# Skip this if WITH_SOURCE_TREE is not set (empty string).
|
||||||
if (NOT ${WITH_SOURCE_TREE} STREQUAL "")
|
if (NOT ${WITH_SOURCE_TREE} STREQUAL "")
|
||||||
# Include all header and c files
|
foreach(dir ${ARGN})
|
||||||
file(GLOB_RECURSE elements RELATIVE ${dir} *.h *.hpp *.inl *.inc *.c *.cpp *.cc)
|
# Include all header and c files
|
||||||
|
file(GLOB_RECURSE elements RELATIVE ${dir} ${dir}/*)
|
||||||
|
|
||||||
foreach(element ${elements})
|
foreach(element ${elements})
|
||||||
# Extract filename and directory
|
# Extract filename and directory
|
||||||
get_filename_component(element_name ${element} NAME)
|
get_filename_component(element_name ${element} NAME)
|
||||||
get_filename_component(element_dir ${element} DIRECTORY)
|
get_filename_component(element_dir ${element} DIRECTORY)
|
||||||
|
|
||||||
if (NOT ${element_dir} STREQUAL "")
|
if (NOT ${element_dir} STREQUAL "")
|
||||||
# If the file is in a subdirectory use it as source group.
|
# If the file is in a subdirectory use it as source group.
|
||||||
if (${WITH_SOURCE_TREE} STREQUAL "flat")
|
if (${WITH_SOURCE_TREE} STREQUAL "flat")
|
||||||
# Build flat structure by using only the first subdirectory.
|
# Build flat structure by using only the first subdirectory.
|
||||||
string(FIND ${element_dir} "/" delemiter_pos)
|
string(FIND ${element_dir} "/" delemiter_pos)
|
||||||
if (NOT ${delemiter_pos} EQUAL -1)
|
if (NOT ${delemiter_pos} EQUAL -1)
|
||||||
string(SUBSTRING ${element_dir} 0 ${delemiter_pos} group_name)
|
string(SUBSTRING ${element_dir} 0 ${delemiter_pos} group_name)
|
||||||
source_group("${group_name}" FILES ${dir}/${element})
|
source_group("${group_name}" FILES ${dir}/${element})
|
||||||
|
else()
|
||||||
|
# Build hierarchical structure.
|
||||||
|
# File is in root directory.
|
||||||
|
source_group("${element_dir}" FILES ${dir}/${element})
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
# Build hierarchical structure.
|
# Use the full hierarchical structure to build source_groups.
|
||||||
# File is in root directory.
|
string(REPLACE "/" "\\" group_name ${element_dir})
|
||||||
source_group("${element_dir}" FILES ${dir}/${element})
|
source_group("${group_name}" FILES ${dir}/${element})
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
# Use the full hierarchical structure to build source_groups.
|
# If the file is in the root directory, place it in the root source_group.
|
||||||
string(REPLACE "/" "\\" group_name ${element_dir})
|
source_group("\\" FILES ${dir}/${element})
|
||||||
source_group("${group_name}" FILES ${dir}/${element})
|
|
||||||
endif()
|
endif()
|
||||||
else()
|
endforeach()
|
||||||
# If the file is in the root directory, place it in the root source_group.
|
|
||||||
source_group("\\" FILES ${dir}/${element})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
40
include/continuable/continuable-operations.hpp
Normal file
40
include/continuable/continuable-operations.hpp
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
/~` _ _ _|_. _ _ |_ | _
|
||||||
|
\_,(_)| | | || ||_|(_||_)|(/_
|
||||||
|
|
||||||
|
https://github.com/Naios/continuable
|
||||||
|
v4.0.0
|
||||||
|
|
||||||
|
Copyright(c) 2015 - 2019 Denis Blank <denis.blank at outlook dot com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files(the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions :
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef CONTINUABLE_OPERATIONS_HPP_INCLUDED
|
||||||
|
#define CONTINUABLE_OPERATIONS_HPP_INCLUDED
|
||||||
|
|
||||||
|
/// \defgroup Operations Operations
|
||||||
|
/// provides functions to work with asynchronous control flows.
|
||||||
|
|
||||||
|
#include <continuable/operations/async.hpp>
|
||||||
|
#include <continuable/operations/loop.hpp>
|
||||||
|
|
||||||
|
#endif // CONTINUABLE_OPERATIONS_HPP_INCLUDED
|
||||||
@ -48,6 +48,7 @@ namespace cti {}
|
|||||||
#include <continuable/continuable-base.hpp>
|
#include <continuable/continuable-base.hpp>
|
||||||
#include <continuable/continuable-connections.hpp>
|
#include <continuable/continuable-connections.hpp>
|
||||||
#include <continuable/continuable-coroutine.hpp>
|
#include <continuable/continuable-coroutine.hpp>
|
||||||
|
#include <continuable/continuable-operations.hpp>
|
||||||
#include <continuable/continuable-primitives.hpp>
|
#include <continuable/continuable-primitives.hpp>
|
||||||
#include <continuable/continuable-promise-base.hpp>
|
#include <continuable/continuable-promise-base.hpp>
|
||||||
#include <continuable/continuable-promisify.hpp>
|
#include <continuable/continuable-promisify.hpp>
|
||||||
|
|||||||
47
include/continuable/detail/operations/async.hpp
Normal file
47
include/continuable/detail/operations/async.hpp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
/~` _ _ _|_. _ _ |_ | _
|
||||||
|
\_,(_)| | | || ||_|(_||_)|(/_
|
||||||
|
|
||||||
|
https://github.com/Naios/continuable
|
||||||
|
v4.0.0
|
||||||
|
|
||||||
|
Copyright(c) 2015 - 2019 Denis Blank <denis.blank at outlook dot com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files(the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions :
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef CONTINUABLE_DETAIL_OPERATIONS_ASYNC_HPP_INCLUDED
|
||||||
|
#define CONTINUABLE_DETAIL_OPERATIONS_ASYNC_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include <continuable/continuable-base.hpp>
|
||||||
|
|
||||||
|
namespace cti {
|
||||||
|
namespace detail {
|
||||||
|
namespace operations {
|
||||||
|
template <typename Callable, typename... Args>
|
||||||
|
auto async(Callable&& callable, Args&&... args) {
|
||||||
|
}
|
||||||
|
} // namespace operations
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
} // namespace cti
|
||||||
|
|
||||||
|
#endif // CONTINUABLE_DETAIL_OPERATIONS_ASYNC_HPP_INCLUDED
|
||||||
126
include/continuable/detail/operations/loop.hpp
Normal file
126
include/continuable/detail/operations/loop.hpp
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
/~` _ _ _|_. _ _ |_ | _
|
||||||
|
\_,(_)| | | || ||_|(_||_)|(/_
|
||||||
|
|
||||||
|
https://github.com/Naios/continuable
|
||||||
|
v4.0.0
|
||||||
|
|
||||||
|
Copyright(c) 2015 - 2019 Denis Blank <denis.blank at outlook dot com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files(the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions :
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef CONTINUABLE_DETAIL_OPERATIONS_LOOP_HPP_INCLUDED
|
||||||
|
#define CONTINUABLE_DETAIL_OPERATIONS_LOOP_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include <cassert>
|
||||||
|
#include <memory>
|
||||||
|
#include <tuple>
|
||||||
|
#include <type_traits>
|
||||||
|
#include <continuable/continuable-base.hpp>
|
||||||
|
#include <continuable/continuable-result.hpp>
|
||||||
|
#include <continuable/detail/utility/traits.hpp>
|
||||||
|
#include <continuable/detail/utility/util.hpp>
|
||||||
|
|
||||||
|
namespace cti {
|
||||||
|
namespace detail {
|
||||||
|
template <typename T>
|
||||||
|
struct loop_trait {
|
||||||
|
static_assert(!std::is_same<T, T>::value,
|
||||||
|
"The callable passed to cti::loop must always return a "
|
||||||
|
"cti::continuable_base which resolves to a cti::result.");
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename Continuation, typename... Args>
|
||||||
|
struct loop_trait<continuable_base<Continuation, //
|
||||||
|
signature_arg_t<result<Args...>>>> {
|
||||||
|
template <typename Callable>
|
||||||
|
static auto make(Callable&& callable) {
|
||||||
|
return make_continuable<Args...>(std::forward<Callable>(callable));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
template <typename Continuation>
|
||||||
|
struct loop_trait<continuable_base<Continuation, signature_arg_t<result<>>>> {
|
||||||
|
template <typename Callable>
|
||||||
|
static auto make(Callable&& callable) {
|
||||||
|
return make_continuable<void>(std::forward<Callable>(callable));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace operations {
|
||||||
|
template <typename Promise, typename Callable, typename ArgsTuple>
|
||||||
|
class loop_frame : public std::enable_shared_from_this<
|
||||||
|
loop_frame<Promise, Callable, ArgsTuple>> {
|
||||||
|
Promise promise_;
|
||||||
|
Callable callable_;
|
||||||
|
ArgsTuple args_;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void loop() {
|
||||||
|
traits::unpack(
|
||||||
|
[&callable_](auto&&... args) {
|
||||||
|
util::invoke(callable_, std::forward<decltype(args)>(args)...)
|
||||||
|
.then([me = this->shared_from_this()](auto&& result) {
|
||||||
|
if (result.is_empty()) {
|
||||||
|
me->loop();
|
||||||
|
} else if (result.is_value()) {
|
||||||
|
traits::unpack(std::move(promise_), result);
|
||||||
|
} else {
|
||||||
|
assert(result.is_exception());
|
||||||
|
traits::unpack(std::move(promise_), exception_arg_t{},
|
||||||
|
result.get_exception());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
args_);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename Promise, typename Callable, typename ArgsTuple>
|
||||||
|
auto make_loop_frame(Promise&& promise, Callable&& callable,
|
||||||
|
ArgsTuple&& args_tuple) {
|
||||||
|
using frame_t =
|
||||||
|
loop_frame<traits::unrefcv_t<Promise>, traits::unrefcv_t<Callable>,
|
||||||
|
traits::unrefcv_t<ArgsTuple>>;
|
||||||
|
|
||||||
|
return std::make_shared<frame_t>(std::forward<Promise>(promise),
|
||||||
|
std::forward<Callable>(callable),
|
||||||
|
std::forward<ArgsTuple>(args_tuple));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Callable, typename... Args>
|
||||||
|
auto loop(Callable&& callable, Args&&... args) {
|
||||||
|
using invocation_result_t =
|
||||||
|
decltype(util::invoke(callable, args...).finish());
|
||||||
|
using trait_t = loop_trait<invocation_result_t>;
|
||||||
|
return trait_t::make([callable = std::forward<decltype(callable)>(callable),
|
||||||
|
args = std::make_tuple(std::forward<decltype(args)>(
|
||||||
|
args)...)](auto&& promise) mutable {
|
||||||
|
// Do the actual looping
|
||||||
|
auto frame = make_loop_frame(std::forward<decltype(promise)>(promise));
|
||||||
|
frame->loop();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} // namespace operations
|
||||||
|
} // namespace detail
|
||||||
|
} // namespace cti
|
||||||
|
|
||||||
|
#endif // CONTINUABLE_DETAIL_OPERATIONS_LOOP_HPP_INCLUDED
|
||||||
49
include/continuable/operations/async.hpp
Normal file
49
include/continuable/operations/async.hpp
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
/~` _ _ _|_. _ _ |_ | _
|
||||||
|
\_,(_)| | | || ||_|(_||_)|(/_
|
||||||
|
|
||||||
|
https://github.com/Naios/continuable
|
||||||
|
v4.0.0
|
||||||
|
|
||||||
|
Copyright(c) 2015 - 2019 Denis Blank <denis.blank at outlook dot com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files(the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions :
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef CONTINUABLE_OPERATIONS_ASYNC_HPP_INCLUDED
|
||||||
|
#define CONTINUABLE_OPERATIONS_ASYNC_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
#include <continuable/detail/operations/async.hpp>
|
||||||
|
|
||||||
|
namespace cti {
|
||||||
|
/// \ingroup Operations
|
||||||
|
/// \{
|
||||||
|
|
||||||
|
template <typename Callable, typename... Args>
|
||||||
|
auto async(Callable&& callable, Args&&... args) {
|
||||||
|
return detail::operations::async(std::forward<Callable>(callable),
|
||||||
|
std::forward<Args>(args)...);
|
||||||
|
}
|
||||||
|
/// \}
|
||||||
|
} // namespace cti
|
||||||
|
|
||||||
|
#endif // CONTINUABLE_OPERATIONS_ASYNC_HPP_INCLUDED
|
||||||
49
include/continuable/operations/loop.hpp
Normal file
49
include/continuable/operations/loop.hpp
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
/~` _ _ _|_. _ _ |_ | _
|
||||||
|
\_,(_)| | | || ||_|(_||_)|(/_
|
||||||
|
|
||||||
|
https://github.com/Naios/continuable
|
||||||
|
v4.0.0
|
||||||
|
|
||||||
|
Copyright(c) 2015 - 2019 Denis Blank <denis.blank at outlook dot com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files(the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions :
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef CONTINUABLE_OPERATIONS_LOOP_HPP_INCLUDED
|
||||||
|
#define CONTINUABLE_OPERATIONS_LOOP_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
#include <continuable/detail/operations/loop.hpp>
|
||||||
|
|
||||||
|
namespace cti {
|
||||||
|
/// \ingroup Operations
|
||||||
|
/// \{
|
||||||
|
|
||||||
|
template <typename Callable, typename... Args>
|
||||||
|
auto loop(Callable&& callable, Args&&... args) {
|
||||||
|
return detail::operations::loop(std::forward<Callable>(callable),
|
||||||
|
std::forward<Args>(args)...);
|
||||||
|
}
|
||||||
|
/// \}
|
||||||
|
} // namespace cti
|
||||||
|
|
||||||
|
#endif // CONTINUABLE_OPERATIONS_LOOP_HPP_INCLUDED
|
||||||
@ -1,34 +1,16 @@
|
|||||||
set(INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include/continuable)
|
set(INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include)
|
||||||
|
|
||||||
file(GLOB LIB_SOURCES CONFIGURE_DEPENDS ${INCLUDE_DIR}/*.hpp)
|
file(GLOB_RECURSE LIB_SOURCES CONFIGURE_DEPENDS ${INCLUDE_DIR}/*.hpp)
|
||||||
file(GLOB LIB_SOURCES_DETAIL CONFIGURE_DEPENDS ${INCLUDE_DIR}/detail/*.hpp)
|
|
||||||
file(GLOB LIB_SOURCES_DETAIL_CONNECTIONS CONFIGURE_DEPENDS ${INCLUDE_DIR}/detail/connection/*.hpp)
|
|
||||||
file(GLOB LIB_SOURCES_DETAIL_CORE CONFIGURE_DEPENDS ${INCLUDE_DIR}/detail/core/*.hpp)
|
|
||||||
file(GLOB LIB_SOURCES_DETAIL_OTHER CONFIGURE_DEPENDS ${INCLUDE_DIR}/detail/other/*.hpp)
|
|
||||||
file(GLOB LIB_SOURCES_DETAIL_TRAVERSAL CONFIGURE_DEPENDS ${INCLUDE_DIR}/detail/traversal/*.hpp)
|
|
||||||
file(GLOB LIB_SOURCES_DETAIL_UTILITY CONFIGURE_DEPENDS ${INCLUDE_DIR}/detail/utility/*.hpp)
|
|
||||||
|
|
||||||
set(TEST
|
set(TEST
|
||||||
${CMAKE_CURRENT_LIST_DIR}/test-playground.cpp)
|
${CMAKE_CURRENT_LIST_DIR}/test-playground.cpp)
|
||||||
|
|
||||||
add_executable(test-playground
|
add_executable(test-playground
|
||||||
${LIB_SOURCES}
|
${LIB_SOURCES}
|
||||||
${LIB_SOURCES_DETAIL}
|
|
||||||
${LIB_SOURCES_DETAIL_CONNECTIONS}
|
|
||||||
${LIB_SOURCES_DETAIL_CORE}
|
|
||||||
${LIB_SOURCES_DETAIL_OTHER}
|
|
||||||
${LIB_SOURCES_DETAIL_TRAVERSAL}
|
|
||||||
${LIB_SOURCES_DETAIL_UTILITY}
|
|
||||||
${TEST})
|
${TEST})
|
||||||
|
|
||||||
source_group(continuable FILES ${LIB_SOURCES})
|
group_sources(${CMAKE_CURRENT_LIST_DIR}
|
||||||
source_group(continuable\\detail FILES ${LIB_SOURCES_DETAIL})
|
${CMAKE_SOURCE_DIR}/include/)
|
||||||
source_group(continuable\\detail\\connections FILES ${LIB_SOURCES_DETAIL_CONNECTIONS})
|
|
||||||
source_group(continuable\\detail\\core FILES ${LIB_SOURCES_DETAIL_CORE})
|
|
||||||
source_group(continuable\\detail\\other FILES ${LIB_SOURCES_DETAIL_OTHER})
|
|
||||||
source_group(continuable\\detail\\traversal FILES ${LIB_SOURCES_DETAIL_TRAVERSAL})
|
|
||||||
source_group(continuable\\detail\\utility FILES ${LIB_SOURCES_DETAIL_UTILITY})
|
|
||||||
source_group(test FILES ${TEST})
|
|
||||||
|
|
||||||
target_link_libraries(test-playground
|
target_link_libraries(test-playground
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user