Cayley
Pseudo-Random Bits from Finite Groups
uintx_t.h
Go to the documentation of this file.
1 
4 #ifndef __uintx_t__
5 #define __uintx_t__
6 
7 #include "Includes.h"
8 #include <cinttypes>
9 
13 
14 class uintx_t{
15  private:
16  uint32_t* m_pData;
17  int m_nSize;
18 
19  void loadstring(const char* string);
20  void reallocate(const int s);
21  void grow(const int s);
22  void normalize();
23  int bitcount();
24 
25  public:
26  uintx_t();
27  uintx_t(int);
28  uintx_t(const char*);
29  uintx_t(const uintx_t&);
30 
31  ~uintx_t();
32 
33  std::string GetString() const;
34 
35  //assignment operators
36 
37  uintx_t& operator=(const uintx_t&);
38  uintx_t& operator=(const int);
39  uintx_t& operator=(const char*);
40 
41  //addition operators
42 
43  uintx_t& operator+=(const uintx_t&);
44  uintx_t& operator+=(const int&);
45  friend uintx_t operator+(uintx_t, uintx_t);
46 
47  //multiplication operators
48 
49  uintx_t& operator*=(const uintx_t&);
50  friend uintx_t operator*(uintx_t, uintx_t);
51  friend uintx_t operator*(uintx_t, int);
52  friend uintx_t operator*(int, uintx_t);
53  friend uintx_t operator*(uintx_t, uint32_t);
54  friend uintx_t operator*(uint32_t, uintx_t);
55 
56  //comparison operators
57 
58  friend bool operator>(uintx_t, uintx_t);
59  friend bool operator>(uintx_t, int);
60 
61  friend bool operator>=(uintx_t, uintx_t);
62  friend bool operator>=(uintx_t, int);
63 
64  friend bool operator<(uintx_t, uintx_t);
65  friend bool operator<(uintx_t, int);
66 
67  friend bool operator<=(uintx_t, uintx_t);
68  friend bool operator<=(uintx_t, int);
69 
70  friend bool operator==(uintx_t, uintx_t);
71  friend bool operator==(uintx_t, uint32_t);
72  friend bool operator==(uint32_t, uintx_t);
73 
74  friend bool operator!=(uintx_t, uintx_t);
75  friend bool operator!=(uintx_t, uint32_t);
76  friend bool operator!=(uint32_t, uintx_t);
77 
78  //bit shift operators
79 
80  uintx_t& operator<<=(const int);
81  friend uintx_t operator<<(uintx_t, int);
82 
83  uintx_t& operator>>=(const int);
84  friend uintx_t operator>>(uintx_t, int);
85 
86  //bitwise operators
87 
88  friend int operator&(uintx_t, int);
89  friend uintx_t operator&(uintx_t, const uintx_t&);
90 
91  friend int operator|(uintx_t, int);
92  friend uintx_t operator|(uintx_t, const uintx_t&);
93 
94  //subtraction operators
95 
96  uintx_t& operator-=(const uintx_t&);
97  friend uintx_t operator-(uintx_t, uintx_t);
98 
99  //division operators
100 
101  uintx_t& operator/=(const uintx_t&);
102  friend uintx_t operator/(uintx_t, uintx_t);
103  friend uintx_t operator/(uintx_t, uint32_t);
104 
105  uintx_t& operator%=(const uintx_t&);
106  friend uintx_t operator%(uintx_t, uintx_t);
107  friend uintx_t operator%(uintx_t, uint32_t);
108 
109  //type casts
110 
111  operator uint32_t();
112  operator uint64_t();
113 };
114 
115 #endif
friend int operator &(uintx_t, int)
Bit-wise AND.
Definition: uintx_t.cpp:647
std::string GetString() const
Get as string.
Definition: uintx_t.cpp:72
friend bool operator==(uintx_t, uintx_t)
Equal to.
Definition: uintx_t.cpp:460
int bitcount()
Number of bits.
Definition: uintx_t.cpp:222
uintx_t & operator<<=(const int)
Left shift by.
Definition: uintx_t.cpp:528
void grow(const int s)
Grow space for s words.
Definition: uintx_t.cpp:121
uintx_t & operator>>=(const int)
Right shift by.
Definition: uintx_t.cpp:576
uintx_t & operator *=(const uintx_t &)
Multiply by.
Definition: uintx_t.cpp:766
void reallocate(const int s)
Reallocate space for s words.
Definition: uintx_t.cpp:107
Useful includes.
friend uintx_t operator-(uintx_t, uintx_t)
Subtraction.
Definition: uintx_t.cpp:782
uintx_t & operator/=(const uintx_t &)
Divide by.
Definition: uintx_t.cpp:870
void loadstring(const char *string)
Load hex string.
Definition: uintx_t.cpp:177
friend bool operator>(uintx_t, uintx_t)
Greater than.
Definition: uintx_t.cpp:371
friend uintx_t operator<<(uintx_t, int)
Left shift.
Definition: uintx_t.cpp:568
uintx_t & operator-=(const uintx_t &)
Subtract from.
Definition: uintx_t.cpp:790
friend int operator|(uintx_t, int)
Bit-wise OR operator.
Definition: uintx_t.cpp:670
friend bool operator<(uintx_t, uintx_t)
Less than.
Definition: uintx_t.cpp:424
friend bool operator!=(uintx_t, uintx_t)
Not equal to.
Definition: uintx_t.cpp:495
friend uintx_t operator%(uintx_t, uintx_t)
Remainder.
Definition: uintx_t.cpp:880
int m_nSize
Number of words in m_pData.
Definition: uintx_t.h:17
The extensible unsigned integer class.
Definition: uintx_t.h:14
friend bool operator>=(uintx_t, uintx_t)
Greater than or equal.
Definition: uintx_t.cpp:397
~uintx_t()
Destructor.
Definition: uintx_t.cpp:58
uintx_t & operator+=(const uintx_t &)
Add to.
Definition: uintx_t.cpp:307
uint32_t * m_pData
Array of 32-bit words, least significant first.
Definition: uintx_t.h:16
void normalize()
Remove leading zero words.
Definition: uintx_t.cpp:157
friend uintx_t operator>>(uintx_t, int)
Right shift.
Definition: uintx_t.cpp:617
uintx_t & operator%=(const uintx_t &)
Remainder.
Definition: uintx_t.cpp:900
uintx_t & operator=(const uintx_t &)
Assignment.
Definition: uintx_t.cpp:247
friend uintx_t operator *(uintx_t, uintx_t)
Multiplication.
Definition: uintx_t.cpp:686
uintx_t()
Constructor.
Definition: uintx_t.cpp:19
friend uintx_t operator+(uintx_t, uintx_t)
Addition.
Definition: uintx_t.cpp:290
friend uintx_t operator/(uintx_t, uintx_t)
Division.
Definition: uintx_t.cpp:832
friend bool operator<=(uintx_t, uintx_t)
Less than or equal.
Definition: uintx_t.cpp:442