/tmp/bitcoin/src/ipc/libmultiprocess/include/mp/type-optional.h
Line | Count | Source |
1 | | // Copyright (c) The Bitcoin Core developers |
2 | | // Distributed under the MIT software license, see the accompanying |
3 | | // file COPYING or http://www.opensource.org/licenses/mit-license.php. |
4 | | |
5 | | #ifndef MP_PROXY_TYPE_OPTIONAL_H |
6 | | #define MP_PROXY_TYPE_OPTIONAL_H |
7 | | |
8 | | #include <mp/util.h> |
9 | | |
10 | | namespace mp { |
11 | | template <typename LocalType, typename Value, typename Output> |
12 | | void CustomBuildField(TypeList<std::optional<LocalType>>, |
13 | | Priority<1>, |
14 | | InvokeContext& invoke_context, |
15 | | Value&& value, |
16 | | Output&& output) |
17 | 0 | { |
18 | 0 | if (value) { |
19 | 0 | output.setHas(); |
20 | 0 | BuildField(TypeList<LocalType>(), invoke_context, output, *std::forward<Value>(value)); |
21 | 0 | } |
22 | 0 | } Unexecuted instantiation: void mp::CustomBuildField<unsigned long, std::optional<unsigned long> const&, mp::StructField<mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, ipc::capnp::messages::BlockCreateOptions::Builder>&>(mp::TypeList<std::optional<unsigned long>>, mp::Priority<1>, mp::InvokeContext&, std::optional<unsigned long> const&, mp::StructField<mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, ipc::capnp::messages::BlockCreateOptions::Builder>&) Unexecuted instantiation: void mp::CustomBuildField<interfaces::BlockRef, std::optional<interfaces::BlockRef>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 22>, ipc::capnp::messages::Mining::GetTipResults::Builder>&>(mp::TypeList<std::optional<interfaces::BlockRef>>, mp::Priority<1>, mp::InvokeContext&, std::optional<interfaces::BlockRef>&&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 22>, ipc::capnp::messages::Mining::GetTipResults::Builder>&) Unexecuted instantiation: void mp::CustomBuildField<interfaces::BlockRef, std::optional<interfaces::BlockRef>, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::Mining::WaitTipChangedResults::Builder>&>(mp::TypeList<std::optional<interfaces::BlockRef>>, mp::Priority<1>, mp::InvokeContext&, std::optional<interfaces::BlockRef>&&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, ipc::capnp::messages::Mining::WaitTipChangedResults::Builder>&) Unexecuted instantiation: void mp::CustomBuildField<uint256, std::optional<uint256>&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Builder>&>(mp::TypeList<std::optional<uint256>>, mp::Priority<1>, mp::InvokeContext&, std::optional<uint256>&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Builder>&) |
23 | | |
24 | | template <typename LocalType, typename Input, typename ReadDest> |
25 | | decltype(auto) CustomReadField(TypeList<std::optional<LocalType>>, |
26 | | Priority<1>, |
27 | | InvokeContext& invoke_context, |
28 | | Input&& input, |
29 | | ReadDest&& read_dest) |
30 | 0 | { |
31 | 0 | return read_dest.update([&](auto& value) { |
32 | 0 | if (!CustomHasField(TypeList<LocalType>(), invoke_context, input)) { |
33 | 0 | value.reset(); |
34 | 0 | } else if (value) { |
35 | 0 | ReadField(TypeList<LocalType>(), invoke_context, input, ReadDestUpdate(*value)); |
36 | 0 | } else { |
37 | 0 | ReadField(TypeList<LocalType>(), invoke_context, input, |
38 | 0 | ReadDestEmplace(TypeList<LocalType>(), [&](auto&&... args) -> auto& { |
39 | 0 | value.emplace(std::forward<decltype(args)>(args)...); |
40 | 0 | return *value; |
41 | 0 | })); Unexecuted instantiation: auto& auto decltype(auto) mp::CustomReadField<interfaces::BlockRef, mp::StructField<mp::Accessor<mp::mining_fields::Result, 22>, capnp::Response<ipc::capnp::messages::Mining::GetTipResults>>, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>>(mp::TypeList<std::optional<interfaces::BlockRef>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 22>, capnp::Response<ipc::capnp::messages::Mining::GetTipResults>>&&, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>&&)::'lambda'(interfaces::BlockRef&)::operator()<std::optional<interfaces::BlockRef>>(interfaces::BlockRef&) const::'lambda'(auto&&...)::operator()<>(auto&&...) const Unexecuted instantiation: auto& auto decltype(auto) mp::CustomReadField<interfaces::BlockRef, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>>, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>>(mp::TypeList<std::optional<interfaces::BlockRef>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>>&&, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>&&)::'lambda'(interfaces::BlockRef&)::operator()<std::optional<interfaces::BlockRef>>(interfaces::BlockRef&) const::'lambda'(auto&&...)::operator()<>(auto&&...) const Unexecuted instantiation: auto& auto decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::optional<uint256>>>(mp::TypeList<std::optional<uint256>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::optional<uint256>>&&)::'lambda'(uint256&)::operator()<std::optional<uint256>>(uint256&) const::'lambda'(auto&&...)::operator()<>(auto&&...) const Unexecuted instantiation: auto& auto decltype(auto) mp::CustomReadField<unsigned long, mp::StructField<mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, ipc::capnp::messages::BlockCreateOptions::Reader const>, mp::ReadDestUpdate<std::optional<unsigned long>>>(mp::TypeList<std::optional<unsigned long>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, ipc::capnp::messages::BlockCreateOptions::Reader const>&&, mp::ReadDestUpdate<std::optional<unsigned long>>&&)::'lambda'(unsigned long&)::operator()<std::optional<unsigned long>>(unsigned long&) const::'lambda'(auto&&...)::operator()<unsigned long>(auto&&...) const |
42 | 0 | } |
43 | 0 | }); Unexecuted instantiation: auto decltype(auto) mp::CustomReadField<interfaces::BlockRef, mp::StructField<mp::Accessor<mp::mining_fields::Result, 22>, capnp::Response<ipc::capnp::messages::Mining::GetTipResults>>, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>>(mp::TypeList<std::optional<interfaces::BlockRef>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 22>, capnp::Response<ipc::capnp::messages::Mining::GetTipResults>>&&, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>&&)::'lambda'(interfaces::BlockRef&)::operator()<std::optional<interfaces::BlockRef>>(interfaces::BlockRef&) const Unexecuted instantiation: auto decltype(auto) mp::CustomReadField<interfaces::BlockRef, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>>, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>>(mp::TypeList<std::optional<interfaces::BlockRef>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>>&&, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>&&)::'lambda'(interfaces::BlockRef&)::operator()<std::optional<interfaces::BlockRef>>(interfaces::BlockRef&) const Unexecuted instantiation: auto decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::optional<uint256>>>(mp::TypeList<std::optional<uint256>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::optional<uint256>>&&)::'lambda'(uint256&)::operator()<std::optional<uint256>>(uint256&) const Unexecuted instantiation: auto decltype(auto) mp::CustomReadField<unsigned long, mp::StructField<mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, ipc::capnp::messages::BlockCreateOptions::Reader const>, mp::ReadDestUpdate<std::optional<unsigned long>>>(mp::TypeList<std::optional<unsigned long>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, ipc::capnp::messages::BlockCreateOptions::Reader const>&&, mp::ReadDestUpdate<std::optional<unsigned long>>&&)::'lambda'(unsigned long&)::operator()<std::optional<unsigned long>>(unsigned long&) const |
44 | 0 | } Unexecuted instantiation: decltype(auto) mp::CustomReadField<interfaces::BlockRef, mp::StructField<mp::Accessor<mp::mining_fields::Result, 22>, capnp::Response<ipc::capnp::messages::Mining::GetTipResults>>, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>>(mp::TypeList<std::optional<interfaces::BlockRef>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 22>, capnp::Response<ipc::capnp::messages::Mining::GetTipResults>>&&, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>&&) Unexecuted instantiation: decltype(auto) mp::CustomReadField<interfaces::BlockRef, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>>, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>>(mp::TypeList<std::optional<interfaces::BlockRef>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Result, 18>, capnp::Response<ipc::capnp::messages::Mining::WaitTipChangedResults>>&&, mp::ReadDestUpdate<std::optional<interfaces::BlockRef>>&&) Unexecuted instantiation: decltype(auto) mp::CustomReadField<uint256, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>, mp::ReadDestUpdate<std::optional<uint256>>>(mp::TypeList<std::optional<uint256>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::Witness, 19>, ipc::capnp::messages::CoinbaseTx::Reader const>&&, mp::ReadDestUpdate<std::optional<uint256>>&&) Unexecuted instantiation: decltype(auto) mp::CustomReadField<unsigned long, mp::StructField<mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, ipc::capnp::messages::BlockCreateOptions::Reader const>, mp::ReadDestUpdate<std::optional<unsigned long>>>(mp::TypeList<std::optional<unsigned long>>, mp::Priority<1>, mp::InvokeContext&, mp::StructField<mp::Accessor<mp::mining_fields::BlockReservedWeight, 3>, ipc::capnp::messages::BlockCreateOptions::Reader const>&&, mp::ReadDestUpdate<std::optional<unsigned long>>&&) |
45 | | } // namespace mp |
46 | | |
47 | | #endif // MP_PROXY_TYPE_OPTIONAL_H |