Bitcoin Core 29.99.0
P2P Digital Currency
foo.h
Go to the documentation of this file.
1// Copyright (c) 2019 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_TEST_FOO_H
6#define MP_TEST_FOO_H
7
8#include <map>
9#include <memory>
10#include <string>
11#include <set>
12#include <vector>
13
14namespace mp {
15namespace test {
16
18{
19 std::string name;
20 std::set<int> setint;
21 std::vector<bool> vbool;
22};
23
24enum class FooEnum : uint8_t { ONE = 1, TWO = 2, };
25
27{
28 std::string v1;
29 int v2;
30};
31
33{
34};
35
37{
38 std::string message;
39};
40
42{
43 std::string message;
44};
45
47{
48public:
49 virtual ~FooCallback() = default;
50 virtual int call(int arg) = 0;
51};
52
54{
55public:
56 virtual int callExtended(int arg) = 0;
57};
58
60{
61public:
62 int add(int a, int b) { return a + b; }
63 int mapSize(const std::map<std::string, std::string>& map) { return map.size(); }
64 FooStruct pass(FooStruct foo) { return foo; }
65 void raise(FooStruct foo) { throw foo; }
66 void initThreadMap() {}
67 int callback(FooCallback& callback, int arg) { return callback.call(arg); }
68 int callbackUnique(std::unique_ptr<FooCallback> callback, int arg) { return callback->call(arg); }
69 int callbackShared(std::shared_ptr<FooCallback> callback, int arg) { return callback->call(arg); } // NOLINT(performance-unnecessary-value-param)
70 void saveCallback(std::shared_ptr<FooCallback> callback) { m_callback = std::move(callback); }
71 int callbackSaved(int arg) { return m_callback->call(arg); }
72 int callbackExtended(ExtendedCallback& callback, int arg) { return callback.callExtended(arg); }
73 FooCustom passCustom(FooCustom foo) { return foo; }
74 FooEmpty passEmpty(FooEmpty foo) { return foo; }
75 FooMessage passMessage(FooMessage foo) { foo.message += " call"; return foo; }
76 void passMutable(FooMutable& foo) { foo.message += " call"; }
77 FooEnum passEnum(FooEnum foo) { return foo; }
78 std::shared_ptr<FooCallback> m_callback;
79};
80
81} // namespace test
82} // namespace mp
83
84#endif // MP_TEST_FOO_H
virtual int callExtended(int arg)=0
virtual int call(int arg)=0
virtual ~FooCallback()=default
int callbackSaved(int arg)
Definition: foo.h:71
void passMutable(FooMutable &foo)
Definition: foo.h:76
FooEmpty passEmpty(FooEmpty foo)
Definition: foo.h:74
std::shared_ptr< FooCallback > m_callback
Definition: foo.h:78
int callbackShared(std::shared_ptr< FooCallback > callback, int arg)
Definition: foo.h:69
void raise(FooStruct foo)
Definition: foo.h:65
int callbackUnique(std::unique_ptr< FooCallback > callback, int arg)
Definition: foo.h:68
FooEnum passEnum(FooEnum foo)
Definition: foo.h:77
int add(int a, int b)
Definition: foo.h:62
FooMessage passMessage(FooMessage foo)
Definition: foo.h:75
int callback(FooCallback &callback, int arg)
Definition: foo.h:67
FooStruct pass(FooStruct foo)
Definition: foo.h:64
FooCustom passCustom(FooCustom foo)
Definition: foo.h:73
void saveCallback(std::shared_ptr< FooCallback > callback)
Definition: foo.h:70
int callbackExtended(ExtendedCallback &callback, int arg)
Definition: foo.h:72
int mapSize(const std::map< std::string, std::string > &map)
Definition: foo.h:63
FooEnum
Definition: foo.h:24
Functions to serialize / deserialize common bitcoin types.
Definition: common-types.h:57
std::string v1
Definition: foo.h:28
std::string message
Definition: foo.h:38
std::string message
Definition: foo.h:43
std::string name
Definition: foo.h:19
std::set< int > setint
Definition: foo.h:20
std::vector< bool > vbool
Definition: foo.h:21