uint256/uint160: add Get32() method
authorCryptoManiac <balthazar@yandex.ru>
Thu, 1 Oct 2015 21:33:17 +0000 (14:33 -0700)
committerCryptoManiac <balthazar@yandex.ru>
Thu, 1 Oct 2015 21:33:17 +0000 (14:33 -0700)
src/uint256.h

index 95e3749..3bb0167 100644 (file)
@@ -24,7 +24,7 @@ class base_uint
 {
 protected:
     enum { WIDTH=BITS/32 };
-    unsigned int pn[WIDTH];
+    uint32_t pn[WIDTH];
 public:
 
     bool operator!() const
@@ -65,8 +65,8 @@ public:
 
     base_uint& operator=(uint64_t b)
     {
-        pn[0] = (unsigned int)b;
-        pn[1] = (unsigned int)(b >> 32);
+        pn[0] = (uint32_t)b;
+        pn[1] = (uint32_t)(b >> 32);
         for (int i = 2; i < WIDTH; i++)
             pn[i] = 0;
         return *this;
@@ -95,15 +95,15 @@ public:
 
     base_uint& operator^=(uint64_t b)
     {
-        pn[0] ^= (unsigned int)b;
-        pn[1] ^= (unsigned int)(b >> 32);
+        pn[0] ^= (uint32_t)b;
+        pn[1] ^= (uint32_t)(b >> 32);
         return *this;
     }
 
     base_uint& operator|=(uint64_t b)
     {
-        pn[0] |= (unsigned int)b;
-        pn[1] |= (unsigned int)(b >> 32);
+        pn[0] |= (uint32_t)b;
+        pn[1] |= (uint32_t)(b >> 32);
         return *this;
     }
 
@@ -269,9 +269,9 @@ public:
 
     friend inline bool operator==(const base_uint& a, uint64_t b)
     {
-        if (a.pn[0] != (unsigned int)b)
+        if (a.pn[0] != (uint32_t)b)
             return false;
-        if (a.pn[1] != (unsigned int)(b >> 32))
+        if (a.pn[1] != (uint32_t)(b >> 32))
             return false;
         for (int i = 2; i < base_uint::WIDTH; i++)
             if (a.pn[i] != 0)
@@ -289,8 +289,6 @@ public:
         return (!(a == b));
     }
 
-
-
     std::string GetHex() const
     {
         char psz[sizeof(pn)*2 + 1];
@@ -356,7 +354,7 @@ public:
         return std::vector<unsigned char>(begin(), end());
     }
 
-    unsigned int size()
+    size_t size()
     {
         return sizeof(pn);
     }
@@ -366,6 +364,11 @@ public:
         return pn[2*n] | (uint64_t)pn[2*n+1] << 32;
     }
 
+    uint32_t Get32(int n=0) const
+    {
+        return pn[n];
+    }
+
     unsigned int GetSerializeSize(int nType, int nVersion) const
     {
         return sizeof(pn);
@@ -430,16 +433,16 @@ public:
 
     uint160(uint64_t b)
     {
-        pn[0] = (unsigned int)b;
-        pn[1] = (unsigned int)(b >> 32);
+        pn[0] = (uint32_t)b;
+        pn[1] = (uint32_t)(b >> 32);
         for (int i = 2; i < WIDTH; i++)
             pn[i] = 0;
     }
 
     uint160& operator=(uint64_t b)
     {
-        pn[0] = (unsigned int)b;
-        pn[1] = (unsigned int)(b >> 32);
+        pn[0] = (uint32_t)b;
+        pn[1] = (uint32_t)(b >> 32);
         for (int i = 2; i < WIDTH; i++)
             pn[i] = 0;
         return *this;
@@ -545,16 +548,16 @@ public:
 
     uint256(uint64_t b)
     {
-        pn[0] = (unsigned int)b;
-        pn[1] = (unsigned int)(b >> 32);
+        pn[0] = (uint32_t)b;
+        pn[1] = (uint32_t)(b >> 32);
         for (int i = 2; i < WIDTH; i++)
             pn[i] = 0;
     }
 
     uint256& operator=(uint64_t b)
     {
-        pn[0] = (unsigned int)b;
-        pn[1] = (unsigned int)(b >> 32);
+        pn[0] = (uint32_t)b;
+        pn[1] = (uint32_t)(b >> 32);
         for (int i = 2; i < WIDTH; i++)
             pn[i] = 0;
         return *this;