Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ FetchContent_Declare(
execution
# FETCHCONTENT_SOURCE_DIR_EXECUTION ${CMAKE_SOURCE_DIR}/../execution
GIT_REPOSITORY https://github.com/bemanproject/execution
GIT_TAG afde940
GIT_TAG 7df0f75
SYSTEM
FIND_PACKAGE_ARGS
0.2.0
Expand Down
2 changes: 1 addition & 1 deletion examples/affinity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace ex = beman::execution;

namespace {
struct test_receiver {
using receiver_concept = ex::receiver_t;
using receiver_concept = ex::receiver_tag;

auto set_value(auto&&...) && noexcept {}
auto set_error(auto&&) && noexcept {}
Expand Down
4 changes: 2 additions & 2 deletions examples/async-lock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,12 @@ struct queue {
};

struct request {
using sender_concept = ex::sender_t;
using sender_concept = ex::sender_tag;
using completion_signatures = ex::completion_signatures<ex::set_value_t(int)>;

template <typename Receiver>
struct state : queue::notify {
using operation_state_concept = ex::operation_state_t;
using operation_state_concept = ex::operation_state_tag;
Receiver receiver;
int value;
queue& que;
Expand Down
2 changes: 1 addition & 1 deletion examples/demo-scope.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class scope {
};

struct receiver {
using receiver_concept = ex::receiver_t;
using receiver_concept = ex::receiver_tag;
scope* self;
job_base* state{};

Expand Down
12 changes: 6 additions & 6 deletions examples/demo-tls_scheduler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ struct tls_domain {

template <::beman::execution::receiver Rcvr, typename Data>
struct affine_receiver {
using receiver_concept = ::beman::execution::receiver_t;
using receiver_concept = ::beman::execution::receiver_tag;
struct env_t {
affine_state_base<Rcvr, Data>* st;
template <typename Q, typename... A>
Expand All @@ -51,7 +51,7 @@ struct tls_domain {

template <::beman::execution::sender Sndr, ::beman::execution::scheduler Sch, ::beman::execution::receiver Rcvr>
struct affine_state : affine_state_base<Rcvr, typename Sch::type> {
using operation_state_concept = ::beman::execution::operation_state_t;
using operation_state_concept = ::beman::execution::operation_state_tag;
using env_t = decltype(::beman::execution::get_env(std::declval<Rcvr>()));
using base_t = affine_state_base<Rcvr, typename Sch::type>;
using data_t = typename Sch::type;
Expand All @@ -75,7 +75,7 @@ struct tls_domain {
};
template <::beman::execution::sender Sndr, ::beman::execution::scheduler Sch>
struct affine_sender {
using sender_concept = ::beman::execution::sender_t;
using sender_concept = ::beman::execution::sender_tag;

std::remove_cvref_t<Sndr> sndr;
std::remove_cvref_t<Sch> sch;
Expand Down Expand Up @@ -105,7 +105,7 @@ struct tls_domain {

template <typename Data, ::beman::execution::scheduler Scheduler>
struct tls_scheduler {
using scheduler_concept = ::beman::execution::scheduler_t;
using scheduler_concept = ::beman::execution::scheduler_tag;
using type = Data;
struct env {
Scheduler sched;
Expand All @@ -116,7 +116,7 @@ struct tls_scheduler {
};
template <::beman::execution::receiver Receiver>
struct state {
using operation_state_concept = ::beman::execution::operation_state_t;
using operation_state_concept = ::beman::execution::operation_state_tag;
using upstream_state_t = decltype(::beman::execution::connect(
::beman::execution::schedule(std::declval<Scheduler>()), std::declval<std::remove_cvref_t<Receiver>>()));

Expand All @@ -128,7 +128,7 @@ struct tls_scheduler {
auto start() & noexcept -> void { ::beman::execution::start(this->upstream); }
};
struct tls_sender {
using sender_concept = ::beman::execution::sender_t;
using sender_concept = ::beman::execution::sender_tag;
using sender_type = decltype(::beman::execution::schedule(std::declval<Scheduler>()));

Scheduler sched;
Expand Down
6 changes: 3 additions & 3 deletions examples/environment.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class environment {
thread_local std::string environment::name{"<none>"};

struct env_scheduler {
using scheduler_concept = ex::scheduler_t;
using scheduler_concept = ex::scheduler_tag;

std::string name;
ex::task_scheduler scheduler;
Expand All @@ -47,7 +47,7 @@ struct env_scheduler {

template <ex::receiver Rcvr>
struct receiver {
using receiver_concept = ex::receiver_t;
using receiver_concept = ex::receiver_tag;

std::remove_cvref_t<Rcvr> rcvr;
std::string name;
Expand Down Expand Up @@ -79,7 +79,7 @@ struct env_scheduler {
};

struct sender {
using sender_concept = ex::sender_t;
using sender_concept = ex::sender_tag;
using task_sender = decltype(ex::schedule(std::declval<ex::task_scheduler>()));
template <typename E>
auto get_completion_signatures(const E& e) const noexcept {
Expand Down
2 changes: 1 addition & 1 deletion examples/into_optional.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace ex = beman::execution;
namespace {
template <typename... S>
struct multi_sender {
using sender_concept = ex::sender_t;
using sender_concept = ex::sender_tag;
using completion_signatures = ex::completion_signatures<S...>;

template <typename Receiver>
Expand Down
6 changes: 3 additions & 3 deletions examples/loop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,22 @@ struct run_loop_env {

template <ex::scheduler Scheduler>
struct log_scheduler {
using scheduler_concept = ex::scheduler_t;
using scheduler_concept = ex::scheduler_tag;

std::remove_cvref_t<Scheduler> scheduler;

log_scheduler(auto&& sched) : scheduler(std::forward<decltype(sched)>(sched)) {}

struct sender {
using sender_concept = ex::sender_t;
using sender_concept = ex::sender_tag;
using completion_signatures = ex::completion_signatures<ex::set_value_t()>;
using up_sender = decltype(ex::schedule(std::declval<Scheduler>()));

up_sender _sender;

template <ex::receiver Receiver>
struct state {
using operation_state_concept = ex::operation_state_t;
using operation_state_concept = ex::operation_state_tag;
using up_state_t = decltype(ex::connect(std::declval<up_sender>(), std::declval<Receiver>()));

up_state_t _state;
Expand Down
2 changes: 1 addition & 1 deletion examples/rvalue-task.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace ex = beman::execution;

namespace {
struct receiver {
using receiver_concept = ex::receiver_t;
using receiver_concept = ex::receiver_tag;
void set_value() && noexcept { std::cout << "set_value called\n"; }
void set_error(std::exception_ptr) && noexcept { std::cout << "set_error called\n"; }
void set_stopped() && noexcept { std::cout << "set_stopped called\n"; }
Expand Down
2 changes: 1 addition & 1 deletion include/beman/task/detail/awaiter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
namespace beman::task::detail {
template <typename Awaiter>
struct awaiter_scheduler_receiver {
using receiver_concept = ::beman::execution::receiver_t;
using receiver_concept = ::beman::execution::receiver_tag;
Awaiter* aw;
auto set_value(auto&&...) noexcept { this->aw->actual_complete().resume(); }
auto set_error(auto&&) noexcept { this->aw->actual_complete().resume(); }
Expand Down
2 changes: 1 addition & 1 deletion include/beman/task/detail/into_optional.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ inline constexpr struct into_optional_t : beman::execution::sender_adaptor_closu
template <::beman::execution::sender Upstream>
struct sender {
using upstream_t = std::remove_cvref_t<Upstream>;
using sender_concept = ::beman::execution::sender_t;
using sender_concept = ::beman::execution::sender_tag;
upstream_t upstream;

template <typename...>
Expand Down
2 changes: 1 addition & 1 deletion include/beman/task/detail/state.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ namespace beman::task::detail {

template <typename Task, typename T, typename C, typename Receiver>
struct state : ::beman::task::detail::state_base<T, C>, ::beman::task::detail::state_rep<C, Receiver> {
using operation_state_concept = ::beman::execution::operation_state_t;
using operation_state_concept = ::beman::execution::operation_state_tag;
using promise_type = ::beman::task::detail::promise_type<Task, T, C>;
using scheduler_type = typename ::beman::task::detail::state_base<T, C>::scheduler_type;
using allocator_type = typename ::beman::task::detail::state_base<T, C>::allocator_type;
Expand Down
2 changes: 1 addition & 1 deletion include/beman/task/detail/task.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class task {

public:
using task_concept = int;
using sender_concept = ::beman::execution::sender_t;
using sender_concept = ::beman::execution::sender_tag;
using completion_signatures = ::beman::execution::detail::meta::combine<
::beman::execution::completion_signatures<beman::task::detail::completion_t<Value>,
::beman::execution::set_stopped_t()>,
Expand Down
12 changes: 6 additions & 6 deletions include/beman/task/detail/task_scheduler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class task_scheduler {
struct inner_state {
struct receiver;
struct receiver {
using receiver_concept = ::beman::execution::receiver_t;
using receiver_concept = ::beman::execution::receiver_tag;
state_base* state;
void set_value() && noexcept { this->state->complete_value(); }
};
Expand All @@ -70,7 +70,7 @@ class task_scheduler {

template <::beman::execution::receiver Receiver>
struct state : state_base {
using operation_state_concept = ::beman::execution::operation_state_t;
using operation_state_concept = ::beman::execution::operation_state_tag;
std::remove_cvref_t<Receiver> receiver;
inner_state s;

Expand Down Expand Up @@ -109,8 +109,8 @@ class task_scheduler {
};
template <::beman::execution::scheduler Scheduler>
struct concrete : base {
using sender_t = decltype(::beman::execution::schedule(std::declval<Scheduler>()));
sender_t sender;
using sender_tag = decltype(::beman::execution::schedule(std::declval<Scheduler>()));
sender_tag sender;

template <::beman::execution::scheduler S>
concrete(S&& s) : sender(::beman::execution::schedule(std::forward<S>(s))) {}
Expand All @@ -125,7 +125,7 @@ class task_scheduler {
poly<base, 4 * sizeof(void*)> inner_sender;

public:
using sender_concept = ::beman::execution::sender_t;
using sender_concept = ::beman::execution::sender_tag;
using completion_signatures = ::beman::execution::completion_signatures<::beman::execution::set_value_t()>;
template <typename...>
static consteval auto get_completion_signatures() noexcept -> completion_signatures {
Expand Down Expand Up @@ -171,7 +171,7 @@ class task_scheduler {
poly<base, 4 * sizeof(void*)> scheduler;

public:
using scheduler_concept = ::beman::execution::scheduler_t;
using scheduler_concept = ::beman::execution::scheduler_tag;

template <typename S, typename Allocator = ::std::allocator<void>>
requires(not std::same_as<task_scheduler, std::remove_cvref_t<S>>) &&
Expand Down
4 changes: 2 additions & 2 deletions tests/beman/task/promise_base.test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ namespace {
void unexpected_call_assert(const char* message) { assert(nullptr == message); }

struct void_receiver {
using receiver_concept = ::beman::execution::receiver_t;
using receiver_concept = ::beman::execution::receiver_tag;

bool& flag;
void set_value() && noexcept { flag = true; }
Expand All @@ -31,7 +31,7 @@ struct void_receiver {
static_assert(::beman::execution::receiver<void_receiver>);

struct int_receiver {
using receiver_concept = ::beman::execution::receiver_t;
using receiver_concept = ::beman::execution::receiver_tag;

int& value;
void set_value(int v) && noexcept { this->value = v; }
Expand Down
8 changes: 4 additions & 4 deletions tests/beman/task/promise_type.test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ struct thread_pool {
}

struct scheduler {
using scheduler_concept = ex::scheduler_t;
using scheduler_concept = ex::scheduler_tag;
struct env {
thread_pool* pool;

Expand All @@ -84,7 +84,7 @@ struct thread_pool {
};
template <typename Receiver>
struct state final : thread_pool::node {
using operation_state_concept = ex::operation_state_t;
using operation_state_concept = ex::operation_state_tag;
std::remove_cvref_t<Receiver> receiver;
thread_pool* pool;

Expand All @@ -100,7 +100,7 @@ struct thread_pool {
void run() override { ex::set_value(std::move(this->receiver)); }
};
struct sender {
using sender_concept = ex::sender_t;
using sender_concept = ex::sender_tag;
using completion_signatures = ex::completion_signatures<ex::set_value_t()>;
thread_pool* pool;
template <typename Receiver>
Expand Down Expand Up @@ -167,7 +167,7 @@ struct test_task : beman::task::detail::state_base<int, environment> {
};

struct exception_receiver {
using receiver_concept = beman::execution::receiver_t;
using receiver_concept = beman::execution::receiver_tag;
bool& flag;

auto set_value(int) && noexcept { unexpected_call_assert("unexcepted set_value"); }
Expand Down
8 changes: 4 additions & 4 deletions tests/beman/task/result_type.test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ namespace {
void unexpected_call_assert(const char* msg) { assert(nullptr == msg); }

struct stopped_receiver {
using receiver_concept = ::beman::execution::receiver_t;
using receiver_concept = ::beman::execution::receiver_tag;
bool& flag;
void set_value(auto&&...) && noexcept { unexpected_call_assert("set_value unexpectedly called"); }
void set_error(auto&&) && noexcept { unexpected_call_assert("set_error unexpectedly called"); }
Expand All @@ -26,7 +26,7 @@ struct stopped_receiver {
static_assert(::beman::execution::receiver<stopped_receiver>);

struct value_receiver {
using receiver_concept = ::beman::execution::receiver_t;
using receiver_concept = ::beman::execution::receiver_tag;
int& value;
void set_value(int v) && noexcept { value = v; }
void set_value(auto&&...) && noexcept { unexpected_call_assert("unexpected set_value called"); }
Expand All @@ -36,7 +36,7 @@ struct value_receiver {
static_assert(::beman::execution::receiver<value_receiver>);

struct void_receiver {
using receiver_concept = ::beman::execution::receiver_t;
using receiver_concept = ::beman::execution::receiver_tag;
bool& flag;
void set_value() && noexcept { flag = true; }
void set_value(auto&&...) && noexcept { unexpected_call_assert("unexpected set_value called"); }
Expand All @@ -46,7 +46,7 @@ struct void_receiver {
static_assert(::beman::execution::receiver<value_receiver>);

struct error_receiver {
using receiver_concept = ::beman::execution::receiver_t;
using receiver_concept = ::beman::execution::receiver_tag;
int& error;
void set_value(auto&&...) && noexcept { unexpected_call_assert("unexpected set_value called"); }
void set_error(auto&&) && noexcept { unexpected_call_assert("unexpected set_error called"); }
Expand Down
8 changes: 4 additions & 4 deletions tests/beman/task/task_scheduler.test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ struct thread_context {
thread_context& operator=(const thread_context&) = delete;

struct scheduler {
using scheduler_concept = ex::scheduler_t;
using scheduler_concept = ex::scheduler_tag;
thread_context* context;
complete cmpl{complete::success};
bool operator==(const scheduler&) const = default;
Expand All @@ -92,7 +92,7 @@ struct thread_context {
ex::set_stopped(std::move(self->receiver));
}
};
using operation_state_concept = ex::operation_state_t;
using operation_state_concept = ex::operation_state_tag;
using token_t = decltype(ex::get_stop_token(ex::get_env(std::declval<Receiver>())));
using callback_t = ex::stop_callback_for_t<token_t, stopper>;

Expand Down Expand Up @@ -120,7 +120,7 @@ struct thread_context {
}
};
struct sender {
using sender_concept = ex::sender_t;
using sender_concept = ex::sender_tag;
using completion_signatures = ex::completion_signatures<ex::set_value_t()>;
template <typename Env>
static consteval auto get_completion_signatures() -> completion_signatures {
Expand Down Expand Up @@ -165,7 +165,7 @@ stop_env(Token&&) -> stop_env<std::remove_cvref_t<Token>>;

template <typename Token>
struct stop_receiver {
using receiver_concept = ex::receiver_t;
using receiver_concept = ex::receiver_tag;
Token token;
stop_result& result;
std::latch* completed{};
Expand Down
Loading