serialize: add SER_PARAMS_OPFUNC

This commit is contained in:
Anthony Towns 2023-09-11 18:36:11 +10:00
parent 33203f59b4
commit 5e5c8f86b6
3 changed files with 15 additions and 0 deletions

View file

@ -218,6 +218,7 @@ public:
};
struct SerParams {
const Encoding enc;
SER_PARAMS_OPFUNC
};
static constexpr SerParams V1{Encoding::V1};
static constexpr SerParams V2{Encoding::V2};

View file

@ -396,6 +396,7 @@ public:
};
struct SerParams : CNetAddr::SerParams {
const Format fmt;
SER_PARAMS_OPFUNC
};
static constexpr SerParams V1_NETWORK{{CNetAddr::Encoding::V1}, Format::Network};
static constexpr SerParams V2_NETWORK{{CNetAddr::Encoding::V2}, Format::Network};

View file

@ -1192,4 +1192,17 @@ static auto WithParams(const Params& params, T&& t)
return ParamsWrapper<Params, T>{params, t};
}
/**
* Helper macro for SerParams structs
*
* Allows you define SerParams instances and then apply them directly
* to an object via function call syntax, eg:
*
* constexpr SerParams FOO{....};
* ss << FOO(obj);
*/
#define SER_PARAMS_OPFUNC \
template <typename T> \
auto operator()(T&& t) const { return WithParams(*this, t); }
#endif // BITCOIN_SERIALIZE_H