aboutsummaryrefslogtreecommitdiff
path: root/src/uint256.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/uint256.h')
-rw-r--r--src/uint256.h38
1 files changed, 16 insertions, 22 deletions
diff --git a/src/uint256.h b/src/uint256.h
index 3e20201387..cfc2eb128e 100644
--- a/src/uint256.h
+++ b/src/uint256.h
@@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
-// Copyright (c) 2011 The Bitcoin developers
+// Copyright (c) 2009-2012 The Bitcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_UINT256_H
@@ -11,24 +11,17 @@
#include <string>
#include <vector>
-#if defined(_MSC_VER) || defined(__BORLANDC__)
-typedef __int64 int64;
-typedef unsigned __int64 uint64;
-#else
typedef long long int64;
typedef unsigned long long uint64;
-#endif
-#if defined(_MSC_VER) && _MSC_VER < 1300
-#define for if (false) ; else for
-#endif
inline int Testuint256AdHoc(std::vector<std::string> vArg);
-// We have to keep a separate base class without constructors
-// so the compiler will let us use it in a union
+/** Base class without constructors for uint256 and uint160.
+ * This makes the compiler let u use it in a union.
+ */
template<unsigned int BITS>
class base_uint
{
@@ -100,13 +93,6 @@ public:
return *this;
}
- base_uint& operator&=(uint64 b)
- {
- pn[0] &= (unsigned int)b;
- pn[1] &= (unsigned int)(b >> 32);
- return *this;
- }
-
base_uint& operator|=(uint64 b)
{
pn[0] |= (unsigned int)b;
@@ -363,20 +349,24 @@ public:
return sizeof(pn);
}
+ uint64 Get64(int n=0) const
+ {
+ return pn[2*n] | (uint64)pn[2*n+1] << 32;
+ }
- unsigned int GetSerializeSize(int nType=0, int nVersion=VERSION) const
+ unsigned int GetSerializeSize(int nType=0, int nVersion=PROTOCOL_VERSION) const
{
return sizeof(pn);
}
template<typename Stream>
- void Serialize(Stream& s, int nType=0, int nVersion=VERSION) const
+ void Serialize(Stream& s, int nType=0, int nVersion=PROTOCOL_VERSION) const
{
s.write((char*)pn, sizeof(pn));
}
template<typename Stream>
- void Unserialize(Stream& s, int nType=0, int nVersion=VERSION)
+ void Unserialize(Stream& s, int nType=0, int nVersion=PROTOCOL_VERSION)
{
s.read((char*)pn, sizeof(pn));
}
@@ -404,6 +394,7 @@ typedef base_uint<256> base_uint256;
// uint160
//
+/** 160-bit unsigned integer */
class uint160 : public base_uint160
{
public:
@@ -518,6 +509,7 @@ inline const uint160 operator-(const uint160& a, const uint160& b) { return
// uint256
//
+/** 256-bit unsigned integer */
class uint256 : public base_uint256
{
public:
@@ -631,7 +623,7 @@ inline const uint256 operator-(const uint256& a, const uint256& b) { return
-
+#ifdef TEST_UINT256
inline int Testuint256AdHoc(std::vector<std::string> vArg)
{
@@ -764,3 +756,5 @@ inline int Testuint256AdHoc(std::vector<std::string> vArg)
}
#endif
+
+#endif