Extract MakeUnique into utilmemory.h

And use it to reduce chainparamsbase's direct reliance on util.h to
only args handling.

utilmemory.h can be replaced with <memory> once we move to C++14.
This commit is contained in:
Ben Woosley 2018-07-12 00:39:40 -04:00
parent 6fcdb5ebdd
commit 33539cb34b
No known key found for this signature in database
GPG key ID: 6EE5F3785F78B345
5 changed files with 24 additions and 10 deletions

View file

@ -179,6 +179,7 @@ BITCOIN_CORE_H = \
ui_interface.h \ ui_interface.h \
undo.h \ undo.h \
util.h \ util.h \
utilmemory.h \
utilmoneystr.h \ utilmoneystr.h \
utiltime.h \ utiltime.h \
validation.h \ validation.h \

View file

@ -7,6 +7,7 @@
#include <tinyformat.h> #include <tinyformat.h>
#include <util.h> #include <util.h>
#include <utilmemory.h>
#include <assert.h> #include <assert.h>

View file

@ -4,7 +4,7 @@
#include <interfaces/handler.h> #include <interfaces/handler.h>
#include <util.h> #include <utilmemory.h>
#include <boost/signals2/connection.hpp> #include <boost/signals2/connection.hpp>
#include <utility> #include <utility>

View file

@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2017 The Bitcoin Core developers // Copyright (c) 2009-2018 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
@ -20,11 +20,11 @@
#include <sync.h> #include <sync.h>
#include <tinyformat.h> #include <tinyformat.h>
#include <utiltime.h> #include <utiltime.h>
#include <utilmemory.h>
#include <atomic> #include <atomic>
#include <exception> #include <exception>
#include <map> #include <map>
#include <memory>
#include <set> #include <set>
#include <stdint.h> #include <stdint.h>
#include <string> #include <string>
@ -346,13 +346,6 @@ template <typename Callable> void TraceThread(const char* name, Callable func)
std::string CopyrightHolders(const std::string& strPrefix); std::string CopyrightHolders(const std::string& strPrefix);
//! Substitute for C++14 std::make_unique.
template <typename T, typename... Args>
std::unique_ptr<T> MakeUnique(Args&&... args)
{
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
/** /**
* On platforms that support it, tell the kernel the calling thread is * On platforms that support it, tell the kernel the calling thread is
* CPU-intensive and non-interactive. See SCHED_BATCH in sched(7) for details. * CPU-intensive and non-interactive. See SCHED_BATCH in sched(7) for details.

19
src/utilmemory.h Normal file
View file

@ -0,0 +1,19 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2018 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_UTILMEMORY_H
#define BITCOIN_UTILMEMORY_H
#include <memory>
#include <utility>
//! Substitute for C++14 std::make_unique.
template <typename T, typename... Args>
std::unique_ptr<T> MakeUnique(Args&&... args)
{
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
#endif