#pragma once /* * Copyright 2018-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace pushmi { // property_set template struct property_traits; template struct property_set_traits; template struct property_set; // trait & tag types template struct is_single; template struct is_many; template struct is_flow; template struct is_receiver; template struct is_sender; template struct is_executor; template struct is_time; template struct is_constrained; template struct is_always_blocking; template struct is_never_blocking; template struct is_maybe_blocking; template struct is_fifo_sequence; template struct is_concurrent_sequence; // implementation types template class receiver; template class flow_receiver; template class single_sender; template class many_sender; template class constrained_single_sender; template class time_single_sender; template class flow_single_sender; template class flow_many_sender; template class any_receiver; template < class PE = std::exception_ptr, class PV = std::ptrdiff_t, class E = PE, class... VN> class any_flow_receiver; template class any_single_sender; template class any_many_sender; template class any_flow_single_sender; template < class PE = std::exception_ptr, class PV = std::ptrdiff_t, class E = PE, class... VN> class any_flow_many_sender; template class any_constrained_single_sender; template < class E = std::exception_ptr, class TP = std::chrono::system_clock::time_point, class... VN> class any_time_single_sender; template struct any_executor; template struct any_executor_ref; template struct any_constrained_executor; template struct any_constrained_executor_ref; template < class E = std::exception_ptr, class TP = std::chrono::system_clock::time_point> struct any_time_executor; template < class E = std::exception_ptr, class TP = std::chrono::system_clock::time_point> struct any_time_executor_ref; namespace operators {} namespace extension_operators {} namespace aliases { namespace v = ::pushmi; namespace mi = ::pushmi; namespace op = ::pushmi::operators; namespace ep = ::pushmi::extension_operators; } // namespace aliases namespace detail { struct any { template constexpr any(T&&) noexcept {} }; } // namespace detail } // namespace pushmi