Skip to content

Commit

Permalink
Merge #11351: Refactor: Modernize disallowed copy constructors/assign…
Browse files Browse the repository at this point in the history
…ment

2a07f87 Refactor: Modernize disallowed copy constructors/assignment (Dan Raviv)

Pull request description:

  Use C++11's better capability of expressing an interface of a non-copyable class by publicly deleting its copy ctor and assignment operator instead of just declaring them private.

Tree-SHA512: 878f446be5a136bb2a90643aaeaca62948b575e6ef71ccc5b4b8f373e66f36ced00665128f36504e0ccfee639863d969329c4276154ef9f2a9de9137f0801e01
  • Loading branch information
sipa committed Sep 22, 2017
2 parents 49f3d57 + 2a07f87 commit 6c4fecf
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 34 deletions.
10 changes: 5 additions & 5 deletions src/coins.h
Expand Up @@ -214,6 +214,11 @@ class CCoinsViewCache : public CCoinsViewBacked
public:
CCoinsViewCache(CCoinsView *baseIn);

/**
* By deleting the copy constructor, we prevent accidentally using it when one intends to create a cache on top of a base cache.
*/
CCoinsViewCache(const CCoinsViewCache &) = delete;

// Standard CCoinsView methods
bool GetCoin(const COutPoint &outpoint, Coin &coin) const override;
bool HaveCoin(const COutPoint &outpoint) const override;
Expand Down Expand Up @@ -290,11 +295,6 @@ class CCoinsViewCache : public CCoinsViewBacked

private:
CCoinsMap::iterator FetchCoin(const COutPoint &outpoint) const;

/**
* By making the copy constructor private, we prevent accidentally using it when one intends to create a cache on top of a base cache.
*/
CCoinsViewCache(const CCoinsViewCache &);
};

//! Utility function to add all of a transaction's outputs to a cache.
Expand Down
6 changes: 2 additions & 4 deletions src/net.h
Expand Up @@ -702,13 +702,11 @@ class CNode

CNode(NodeId id, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn, SOCKET hSocketIn, const CAddress &addrIn, uint64_t nKeyedNetGroupIn, uint64_t nLocalHostNonceIn, const CAddress &addrBindIn, const std::string &addrNameIn = "", bool fInboundIn = false);
~CNode();
CNode(const CNode&) = delete;
CNode& operator=(const CNode&) = delete;

private:
CNode(const CNode&);
void operator=(const CNode&);
const NodeId id;


const uint64_t nLocalHostNonce;
// Services offered to this peer
const ServiceFlags nLocalServices;
Expand Down
16 changes: 8 additions & 8 deletions src/streams.h
Expand Up @@ -455,10 +455,6 @@ class CDataStream
class CAutoFile
{
private:
// Disallow copies
CAutoFile(const CAutoFile&);
CAutoFile& operator=(const CAutoFile&);

const int nType;
const int nVersion;

Expand All @@ -475,6 +471,10 @@ class CAutoFile
fclose();
}

// Disallow copies
CAutoFile(const CAutoFile&) = delete;
CAutoFile& operator=(const CAutoFile&) = delete;

void fclose()
{
if (file) {
Expand Down Expand Up @@ -564,10 +564,6 @@ class CAutoFile
class CBufferedFile
{
private:
// Disallow copies
CBufferedFile(const CBufferedFile&);
CBufferedFile& operator=(const CBufferedFile&);

const int nType;
const int nVersion;

Expand Down Expand Up @@ -609,6 +605,10 @@ class CBufferedFile
fclose();
}

// Disallow copies
CBufferedFile(const CBufferedFile&) = delete;
CBufferedFile& operator=(const CBufferedFile&) = delete;

int GetVersion() const { return nVersion; }
int GetType() const { return nType; }

Expand Down
12 changes: 6 additions & 6 deletions src/support/lockedpool.h
Expand Up @@ -50,6 +50,9 @@ class Arena
Arena(void *base, size_t size, size_t alignment);
virtual ~Arena();

Arena(const Arena& other) = delete; // non construction-copyable
Arena& operator=(const Arena&) = delete; // non copyable

/** Memory statistics. */
struct Stats
{
Expand Down Expand Up @@ -85,9 +88,6 @@ class Arena
*/
bool addressInArena(void *ptr) const { return ptr >= base && ptr < end; }
private:
Arena(const Arena& other) = delete; // non construction-copyable
Arena& operator=(const Arena&) = delete; // non copyable

/** Map of chunk address to chunk information. This class makes use of the
* sorted order to merge previous and next chunks during deallocation.
*/
Expand Down Expand Up @@ -153,6 +153,9 @@ class LockedPool
explicit LockedPool(std::unique_ptr<LockedPageAllocator> allocator, LockingFailed_Callback lf_cb_in = nullptr);
~LockedPool();

LockedPool(const LockedPool& other) = delete; // non construction-copyable
LockedPool& operator=(const LockedPool&) = delete; // non copyable

/** Allocate size bytes from this arena.
* Returns pointer on success, or 0 if memory is full or
* the application tried to allocate 0 bytes.
Expand All @@ -168,9 +171,6 @@ class LockedPool
/** Get pool usage statistics */
Stats stats() const;
private:
LockedPool(const LockedPool& other) = delete; // non construction-copyable
LockedPool& operator=(const LockedPool&) = delete; // non copyable

std::unique_ptr<LockedPageAllocator> allocator;

/** Create an arena from locked pages */
Expand Down
8 changes: 4 additions & 4 deletions src/txdb.h
Expand Up @@ -110,10 +110,10 @@ class CBlockTreeDB : public CDBWrapper
{
public:
explicit CBlockTreeDB(size_t nCacheSize, bool fMemory = false, bool fWipe = false);
private:
CBlockTreeDB(const CBlockTreeDB&);
void operator=(const CBlockTreeDB&);
public:

CBlockTreeDB(const CBlockTreeDB&) = delete;
CBlockTreeDB& operator=(const CBlockTreeDB&) = delete;

bool WriteBatchSync(const std::vector<std::pair<int, const CBlockFileInfo*> >& fileInfo, int nLastFile, const std::vector<const CBlockIndex*>& blockinfo);
bool ReadBlockFileInfo(int nFile, CBlockFileInfo &fileinfo);
bool ReadLastBlockFile(int &nFile);
Expand Down
7 changes: 3 additions & 4 deletions src/wallet/db.h
Expand Up @@ -156,6 +156,9 @@ class CDB
explicit CDB(CWalletDBWrapper& dbw, const char* pszMode = "r+", bool fFlushOnCloseIn=true);
~CDB() { Close(); }

CDB(const CDB&) = delete;
CDB& operator=(const CDB&) = delete;

void Flush();
void Close();
static bool Recover(const std::string& filename, void *callbackDataIn, bool (*recoverKVcallback)(void* callbackData, CDataStream ssKey, CDataStream ssValue), std::string& out_backup_filename);
Expand All @@ -168,10 +171,6 @@ class CDB
/* verifies the database file */
static bool VerifyDatabaseFile(const std::string& walletFile, const fs::path& dataDir, std::string& warningStr, std::string& errorStr, CDBEnv::recoverFunc_type recoverFunc);

private:
CDB(const CDB&);
void operator=(const CDB&);

public:
template <typename K, typename T>
bool Read(const K& key, T& value)
Expand Down
5 changes: 2 additions & 3 deletions src/wallet/walletdb.h
Expand Up @@ -167,6 +167,8 @@ class CWalletDB
m_dbw(dbw)
{
}
CWalletDB(const CWalletDB&) = delete;
CWalletDB& operator=(const CWalletDB&) = delete;

bool WriteName(const std::string& strAddress, const std::string& strName);
bool EraseName(const std::string& strAddress);
Expand Down Expand Up @@ -244,9 +246,6 @@ class CWalletDB
private:
CDB batch;
CWalletDBWrapper& m_dbw;

CWalletDB(const CWalletDB&);
void operator=(const CWalletDB&);
};

//! Compacts BDB state so that wallet.dat is self-contained (if there are changes)
Expand Down

0 comments on commit 6c4fecf

Please sign in to comment.