Cleanup code using forward declarations.
Use misc methods of avoiding unnecesary header includes. Replace int typedefs with int##_t from stdint.h. Replace PRI64[xdu] with PRI[xdu]64 from inttypes.h. Normalize QT_VERSION ifs where possible. Resolve some indirect dependencies as direct ones. Remove extern declarations from .cpp files.
This commit is contained in:
149
src/serialize.h
149
src/serialize.h
@@ -2,32 +2,31 @@
|
||||
// Copyright (c) 2009-2013 The Bitcoin developers
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_SERIALIZE_H
|
||||
#define BITCOIN_SERIALIZE_H
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "allocators.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <assert.h>
|
||||
#include <limits>
|
||||
#include <ios>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <cassert>
|
||||
#include <limits>
|
||||
#include <cstring>
|
||||
#include <cstdio>
|
||||
#include <stdint.h>
|
||||
#include <string>
|
||||
#include <string.h>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <boost/type_traits/is_fundamental.hpp>
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
#include <boost/tuple/tuple_comparison.hpp>
|
||||
#include <boost/tuple/tuple_io.hpp>
|
||||
#include <boost/type_traits/is_fundamental.hpp>
|
||||
|
||||
#include "allocators.h"
|
||||
#include "version.h"
|
||||
|
||||
typedef long long int64;
|
||||
typedef unsigned long long uint64;
|
||||
|
||||
class CScript;
|
||||
class CDataStream;
|
||||
class CAutoFile;
|
||||
class CDataStream;
|
||||
class CScript;
|
||||
|
||||
static const unsigned int MAX_SIZE = 0x02000000;
|
||||
|
||||
// Used to bypass the rule against non-const reference to temporary
|
||||
@@ -103,47 +102,47 @@ enum
|
||||
#define WRITEDATA(s, obj) s.write((char*)&(obj), sizeof(obj))
|
||||
#define READDATA(s, obj) s.read((char*)&(obj), sizeof(obj))
|
||||
|
||||
inline unsigned int GetSerializeSize(char a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(signed char a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(unsigned char a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(signed short a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(unsigned short a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(signed int a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(unsigned int a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(signed long a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(unsigned long a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(int64 a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(uint64 a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(float a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(double a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(char a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(signed char a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(unsigned char a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(signed short a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(unsigned short a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(signed int a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(unsigned int a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(signed long a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(unsigned long a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(signed long long a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(unsigned long long a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(float a, int, int=0) { return sizeof(a); }
|
||||
inline unsigned int GetSerializeSize(double a, int, int=0) { return sizeof(a); }
|
||||
|
||||
template<typename Stream> inline void Serialize(Stream& s, char a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, signed char a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, unsigned char a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, signed short a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, unsigned short a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, signed int a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, unsigned int a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, signed long a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, unsigned long a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, int64 a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, uint64 a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, float a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, double a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, char a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, signed char a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, unsigned char a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, signed short a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, unsigned short a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, signed int a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, unsigned int a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, signed long a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, unsigned long a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, signed long long a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, unsigned long long a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, float a, int, int=0) { WRITEDATA(s, a); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, double a, int, int=0) { WRITEDATA(s, a); }
|
||||
|
||||
template<typename Stream> inline void Unserialize(Stream& s, char& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, signed char& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, unsigned char& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, signed short& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, unsigned short& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, signed int& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, unsigned int& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, signed long& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, unsigned long& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, int64& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, uint64& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, float& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, double& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, char& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, signed char& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, unsigned char& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, signed short& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, unsigned short& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, signed int& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, unsigned int& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, signed long& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, unsigned long& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, signed long long& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, unsigned long long& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, float& a, int, int=0) { READDATA(s, a); }
|
||||
template<typename Stream> inline void Unserialize(Stream& s, double& a, int, int=0) { READDATA(s, a); }
|
||||
|
||||
inline unsigned int GetSerializeSize(bool a, int, int=0) { return sizeof(char); }
|
||||
template<typename Stream> inline void Serialize(Stream& s, bool a, int, int=0) { char f=a; WRITEDATA(s, f); }
|
||||
@@ -161,16 +160,16 @@ template<typename Stream> inline void Unserialize(Stream& s, bool& a, int, int=0
|
||||
// size <= UINT_MAX -- 5 bytes (254 + 4 bytes)
|
||||
// size > UINT_MAX -- 9 bytes (255 + 8 bytes)
|
||||
//
|
||||
inline unsigned int GetSizeOfCompactSize(uint64 nSize)
|
||||
inline unsigned int GetSizeOfCompactSize(uint64_t nSize)
|
||||
{
|
||||
if (nSize < 253) return sizeof(unsigned char);
|
||||
else if (nSize <= std::numeric_limits<unsigned short>::max()) return sizeof(unsigned char) + sizeof(unsigned short);
|
||||
else if (nSize <= std::numeric_limits<unsigned int>::max()) return sizeof(unsigned char) + sizeof(unsigned int);
|
||||
else return sizeof(unsigned char) + sizeof(uint64);
|
||||
else return sizeof(unsigned char) + sizeof(uint64_t);
|
||||
}
|
||||
|
||||
template<typename Stream>
|
||||
void WriteCompactSize(Stream& os, uint64 nSize)
|
||||
void WriteCompactSize(Stream& os, uint64_t nSize)
|
||||
{
|
||||
if (nSize < 253)
|
||||
{
|
||||
@@ -194,7 +193,7 @@ void WriteCompactSize(Stream& os, uint64 nSize)
|
||||
else
|
||||
{
|
||||
unsigned char chSize = 255;
|
||||
uint64 xSize = nSize;
|
||||
uint64_t xSize = nSize;
|
||||
WRITEDATA(os, chSize);
|
||||
WRITEDATA(os, xSize);
|
||||
}
|
||||
@@ -202,11 +201,11 @@ void WriteCompactSize(Stream& os, uint64 nSize)
|
||||
}
|
||||
|
||||
template<typename Stream>
|
||||
uint64 ReadCompactSize(Stream& is)
|
||||
uint64_t ReadCompactSize(Stream& is)
|
||||
{
|
||||
unsigned char chSize;
|
||||
READDATA(is, chSize);
|
||||
uint64 nSizeRet = 0;
|
||||
uint64_t nSizeRet = 0;
|
||||
if (chSize < 253)
|
||||
{
|
||||
nSizeRet = chSize;
|
||||
@@ -229,13 +228,13 @@ uint64 ReadCompactSize(Stream& is)
|
||||
}
|
||||
else
|
||||
{
|
||||
uint64 xSize;
|
||||
uint64_t xSize;
|
||||
READDATA(is, xSize);
|
||||
nSizeRet = xSize;
|
||||
if (nSizeRet < 0x100000000LLu)
|
||||
throw std::ios_base::failure("non-canonical ReadCompactSize()");
|
||||
}
|
||||
if (nSizeRet > (uint64)MAX_SIZE)
|
||||
if (nSizeRet > (uint64_t)MAX_SIZE)
|
||||
throw std::ios_base::failure("ReadCompactSize() : size too large");
|
||||
return nSizeRet;
|
||||
}
|
||||
@@ -1227,10 +1226,10 @@ class CBufferedFile
|
||||
{
|
||||
private:
|
||||
FILE *src; // source file
|
||||
uint64 nSrcPos; // how many bytes have been read from source
|
||||
uint64 nReadPos; // how many bytes have been read from this
|
||||
uint64 nReadLimit; // up to which position we're allowed to read
|
||||
uint64 nRewind; // how many bytes we guarantee to rewind
|
||||
uint64_t nSrcPos; // how many bytes have been read from source
|
||||
uint64_t nReadPos; // how many bytes have been read from this
|
||||
uint64_t nReadLimit; // up to which position we're allowed to read
|
||||
uint64_t nRewind; // how many bytes we guarantee to rewind
|
||||
std::vector<char> vchBuf; // the buffer
|
||||
|
||||
short state;
|
||||
@@ -1266,8 +1265,8 @@ public:
|
||||
int nType;
|
||||
int nVersion;
|
||||
|
||||
CBufferedFile(FILE *fileIn, uint64 nBufSize, uint64 nRewindIn, int nTypeIn, int nVersionIn) :
|
||||
src(fileIn), nSrcPos(0), nReadPos(0), nReadLimit((uint64)(-1)), nRewind(nRewindIn), vchBuf(nBufSize, 0),
|
||||
CBufferedFile(FILE *fileIn, uint64_t nBufSize, uint64_t nRewindIn, int nTypeIn, int nVersionIn) :
|
||||
src(fileIn), nSrcPos(0), nReadPos(0), nReadLimit((uint64_t)(-1)), nRewind(nRewindIn), vchBuf(nBufSize, 0),
|
||||
state(0), exceptmask(std::ios_base::badbit | std::ios_base::failbit), nType(nTypeIn), nVersion(nVersionIn) {
|
||||
}
|
||||
|
||||
@@ -1305,12 +1304,12 @@ public:
|
||||
}
|
||||
|
||||
// return the current reading position
|
||||
uint64 GetPos() {
|
||||
uint64_t GetPos() {
|
||||
return nReadPos;
|
||||
}
|
||||
|
||||
// rewind to a given reading position
|
||||
bool SetPos(uint64 nPos) {
|
||||
bool SetPos(uint64_t nPos) {
|
||||
nReadPos = nPos;
|
||||
if (nReadPos + nRewind < nSrcPos) {
|
||||
nReadPos = nSrcPos - nRewind;
|
||||
@@ -1323,9 +1322,9 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
bool Seek(uint64 nPos) {
|
||||
bool Seek(uint64_t nPos) {
|
||||
long nLongPos = nPos;
|
||||
if (nPos != (uint64)nLongPos)
|
||||
if (nPos != (uint64_t)nLongPos)
|
||||
return false;
|
||||
if (fseek(src, nLongPos, SEEK_SET))
|
||||
return false;
|
||||
@@ -1338,7 +1337,7 @@ public:
|
||||
|
||||
// prevent reading beyond a certain position
|
||||
// no argument removes the limit
|
||||
bool SetLimit(uint64 nPos = (uint64)(-1)) {
|
||||
bool SetLimit(uint64_t nPos = (uint64_t)(-1)) {
|
||||
if (nPos < nReadPos)
|
||||
return false;
|
||||
nReadLimit = nPos;
|
||||
|
||||
Reference in New Issue
Block a user