retdec
address.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_COMMON_ADDRESS_H
8 #define RETDEC_COMMON_ADDRESS_H
9 
10 #include <cstddef>
11 #include <ostream>
12 #include <set>
13 #include <sstream>
14 
15 #include "retdec/common/range.h"
16 
17 namespace retdec {
18 namespace common {
19 
20 class Address
21 {
22  public:
23  Address();
24  Address(uint64_t a);
25  explicit Address(const std::string &a);
26  operator uint64_t() const;
27  explicit operator bool() const;
28 
30  Address operator++(int);
32  Address operator--(int);
33  Address& operator+=(const Address& rhs);
34  Address& operator-=(const Address& rhs);
35  Address& operator|=(const Address& rhs);
36 
37  bool isUndefined() const;
38  bool isDefined() const;
39 
40  uint64_t getValue() const;
41 
42  std::string toHexString() const;
43  std::string toHexPrefixString() const;
44  friend std::ostream& operator<< (std::ostream &out, const Address &a);
45 
46  public:
47  static const uint64_t Undefined;
48 
49  private:
50  uint64_t address;
51 };
52 
54 AddressRange stringToAddrRange(const std::string &r);
55 
57 
58 } // namespace common
59 } // namespace retdec
60 
61 #endif
Definition: address.h:21
static const uint64_t Undefined
Definition: address.h:47
friend std::ostream & operator<<(std::ostream &out, const Address &a)
Definition: address.cpp:139
Address & operator+=(const Address &rhs)
Definition: address.cpp:94
bool isDefined() const
Definition: address.cpp:115
Address & operator|=(const Address &rhs)
Definition: address.cpp:104
bool isUndefined() const
Definition: address.cpp:110
Address()
Definition: address.cpp:26
std::string toHexString() const
Definition: address.cpp:126
uint64_t getValue() const
Definition: address.cpp:120
Address & operator++()
Definition: address.cpp:64
Address & operator-=(const Address &rhs)
Definition: address.cpp:99
uint64_t address
Definition: address.h:50
std::string toHexPrefixString() const
Definition: address.cpp:132
Address & operator--()
Definition: address.cpp:79
Definition: range.h:281
Definition: range.h:45
Declaration of templated Range class.
AddressRange stringToAddrRange(const std::string &r)
Definition: address.cpp:153
Definition: archive_wrapper.h:19