Line | Count | Source |
1 | | // Copyright (c) 2023 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 BITCOIN_UTIL_ANY_H |
6 | | #define BITCOIN_UTIL_ANY_H |
7 | | |
8 | | #include <any> |
9 | | |
10 | | namespace util { |
11 | | |
12 | | /** |
13 | | * Helper function to access the contained object of a std::any instance. |
14 | | * Returns a pointer to the object if passed instance has a value and the type |
15 | | * matches, nullptr otherwise. |
16 | | */ |
17 | | template<typename T> |
18 | | T* AnyPtr(const std::any& any) noexcept |
19 | 2.35M | { |
20 | 2.35M | T* const* ptr = std::any_cast<T*>(&any); |
21 | 2.35M | return ptr ? *ptr : nullptr; Branch (21:12): [True: 2.34M, False: 0]
Branch (21:12): [True: 11.0k, False: 0]
|
22 | 2.35M | } node::NodeContext* util::AnyPtr<node::NodeContext>(std::any const&) Line | Count | Source | 19 | 2.34M | { | 20 | 2.34M | T* const* ptr = std::any_cast<T*>(&any); | 21 | 2.34M | return ptr ? *ptr : nullptr; Branch (21:12): [True: 2.34M, False: 0]
| 22 | 2.34M | } |
wallet::WalletContext* util::AnyPtr<wallet::WalletContext>(std::any const&) Line | Count | Source | 19 | 11.0k | { | 20 | 11.0k | T* const* ptr = std::any_cast<T*>(&any); | 21 | 11.0k | return ptr ? *ptr : nullptr; Branch (21:12): [True: 11.0k, False: 0]
| 22 | 11.0k | } |
|
23 | | |
24 | | } // namespace util |
25 | | |
26 | | #endif // BITCOIN_UTIL_ANY_H |