mirror of
https://github.com/transmission/transmission.git
synced 2026-02-15 07:26:49 +00:00
refactor: register converters in tr_lib_init() (#8023)
This commit is contained in:
@@ -128,8 +128,6 @@ public:
|
|||||||
template<typename T>
|
template<typename T>
|
||||||
static tr_variant serialize(T const& src)
|
static tr_variant serialize(T const& src)
|
||||||
{
|
{
|
||||||
ensure_default_converters();
|
|
||||||
|
|
||||||
if (converter_storage<T>.serialize != nullptr)
|
if (converter_storage<T>.serialize != nullptr)
|
||||||
{
|
{
|
||||||
return converter_storage<T>.serialize(src);
|
return converter_storage<T>.serialize(src);
|
||||||
@@ -161,8 +159,6 @@ public:
|
|||||||
template<typename T>
|
template<typename T>
|
||||||
static bool deserialize(tr_variant const& src, T* const ptgt)
|
static bool deserialize(tr_variant const& src, T* const ptgt)
|
||||||
{
|
{
|
||||||
ensure_default_converters();
|
|
||||||
|
|
||||||
if (converter_storage<T>.deserialize != nullptr)
|
if (converter_storage<T>.deserialize != nullptr)
|
||||||
{
|
{
|
||||||
return converter_storage<T>.deserialize(src, ptgt);
|
return converter_storage<T>.deserialize(src, ptgt);
|
||||||
@@ -198,9 +194,9 @@ public:
|
|||||||
converter_storage<T> = { deserialize, serialize };
|
converter_storage<T> = { deserialize, serialize };
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
static void ensure_default_converters();
|
static void ensure_default_converters();
|
||||||
|
|
||||||
|
private:
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct ConverterStorage
|
struct ConverterStorage
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -53,6 +53,7 @@
|
|||||||
#include "libtransmission/file.h"
|
#include "libtransmission/file.h"
|
||||||
#include "libtransmission/log.h"
|
#include "libtransmission/log.h"
|
||||||
#include "libtransmission/mime-types.h"
|
#include "libtransmission/mime-types.h"
|
||||||
|
#include "libtransmission/serializer.h"
|
||||||
#include "libtransmission/tr-assert.h"
|
#include "libtransmission/tr-assert.h"
|
||||||
#include "libtransmission/tr-strbuf.h"
|
#include "libtransmission/tr-strbuf.h"
|
||||||
#include "libtransmission/utils.h"
|
#include "libtransmission/utils.h"
|
||||||
@@ -785,7 +786,14 @@ std::unique_ptr<tr_net_init_mgr> tr_net_init_mgr::instance;
|
|||||||
void tr_lib_init()
|
void tr_lib_init()
|
||||||
{
|
{
|
||||||
static auto once = std::once_flag{};
|
static auto once = std::once_flag{};
|
||||||
std::call_once(once, [] { tr_net_init_impl::tr_net_init_mgr::create(); });
|
std::call_once(
|
||||||
|
once,
|
||||||
|
[]
|
||||||
|
{
|
||||||
|
tr_net_init_impl::tr_net_init_mgr::create();
|
||||||
|
|
||||||
|
libtransmission::serializer::Converters::ensure_default_converters();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- mime-type
|
// --- mime-type
|
||||||
|
|||||||
Reference in New Issue
Block a user