6 #ifndef RETDEC_UTILS_BYTE_VALUE_STORAGE_H
7 #define RETDEC_UTILS_BYTE_VALUE_STORAGE_H
42 std::uint64_t address,
47 std::uint64_t address,
49 std::vector<std::uint8_t>& res)
const = 0;
52 std::uint64_t address,
57 std::uint64_t address,
58 const std::vector<std::uint8_t>& val) = 0;
65 bool hexToBig(std::string& str)
const;
69 bool bitsToBig(std::vector<unsigned char>& values)
const;
70 bool bitsToLittle(std::vector<unsigned char>& values)
const;
73 std::uint64_t address,
77 std::uint64_t address,
81 std::uint64_t address,
85 std::uint64_t address,
89 std::uint64_t address,
90 long double& res)
const;
92 std::uint64_t address,
96 std::uint64_t address,
99 std::uint64_t address,
103 std::uint64_t address,
107 std::uint64_t address,
111 std::uint64_t address,
115 std::uint64_t address,
119 std::uint64_t address,
122 std::uint64_t address,
126 std::uint64_t address,
129 std::uint64_t address,
133 std::uint64_t address,
135 std::vector<std::uint64_t>& res,
139 std::uint64_t address,
140 std::vector<std::uint64_t>& res,
144 std::uint64_t address,
145 std::vector<std::uint64_t>& res,
149 std::uint64_t address,
150 std::vector<std::uint64_t>& res,
154 std::uint64_t address,
155 std::vector<std::uint64_t>& res,
159 std::uint64_t address,
160 std::vector<long double>& res,
161 std::size_t size)
const;
163 std::uint64_t address,
164 std::vector<std::uint64_t>& res,
168 std::uint64_t address,
169 std::vector<float>& res, std::size_t size)
const;
171 std::uint64_t address,
172 std::vector<double>& res, std::size_t size)
const;
175 std::uint64_t address,
177 std::size_t size = 0)
const;
179 std::uint64_t address,
181 std::vector<std::uint64_t>& res)
const;
183 std::uint64_t address,
185 std::vector<std::uint64_t>& res)
const;
189 const std::vector<std::uint8_t>& data,
190 std::uint64_t& value,
192 std::uint64_t offset = 0,
193 std::uint64_t size = 0)
const;
197 std::vector<std::uint8_t>& value,
201 const std::vector<std::uint8_t>& data,
202 long double& res)
const;
204 const std::vector<std::uint8_t>& data,
207 const std::vector<std::uint8_t>& data,
221 std::uint64_t address,
223 std::size_t size)
const;
226 std::uint64_t address,
228 std::vector<std::uint64_t>& res)
const;
231 std::uint64_t address,
233 std::vector<std::uint64_t>& res)
const;
Definition: byte_value_storage.h:28
bool set10Byte(std::uint64_t address, long double val)
Definition: byte_value_storage.cpp:529
virtual std::size_t getBytesPerWord() const =0
bool get4Byte(std::uint64_t address, std::uint64_t &res, Endianness e=Endianness::UNKNOWN) const
Definition: byte_value_storage.cpp:321
bool setFloat(std::uint64_t address, float val)
Definition: byte_value_storage.cpp:567
bool bitsToBig(std::string &str) const
Definition: byte_value_storage.cpp:214
virtual std::size_t getNumberOfNibblesInByte() const =0
virtual std::size_t getByteLength() const =0
bool createValueFromBytes(const std::vector< std::uint8_t > &data, std::uint64_t &value, Endianness endian, std::uint64_t offset=0, std::uint64_t size=0) const
Definition: byte_value_storage.cpp:926
virtual Endianness getEndianness() const =0
bool get1ByteArray(std::uint64_t address, std::vector< std::uint64_t > &res, std::size_t size, Endianness e=Endianness::UNKNOWN) const
Definition: byte_value_storage.cpp:726
bool setDouble(std::uint64_t address, double val)
Definition: byte_value_storage.cpp:582
bool get8Byte(std::uint64_t address, std::uint64_t &res, Endianness e=Endianness::UNKNOWN) const
Definition: byte_value_storage.cpp:339
bool get2Byte(std::uint64_t address, std::uint64_t &res, Endianness e=Endianness::UNKNOWN) const
Definition: byte_value_storage.cpp:303
virtual std::size_t getWordLength() const =0
bool getFloatArray(std::uint64_t address, std::vector< float > &res, std::size_t size) const
Definition: byte_value_storage.cpp:857
Endianness getInverseEndianness() const
Definition: byte_value_storage.cpp:115
virtual bool hasMixedEndianForDouble() const =0
bool bitsToLittle(std::string &str) const
Definition: byte_value_storage.cpp:231
bool getNTBS(std::uint64_t address, std::string &res, std::size_t size=0) const
Definition: byte_value_storage.cpp:608
bool getFloat(std::uint64_t address, float &res) const
Definition: byte_value_storage.cpp:399
bool getNTWS(std::uint64_t address, std::size_t width, std::vector< std::uint64_t > &res) const
Definition: byte_value_storage.cpp:636
bool set1Byte(std::uint64_t address, std::uint64_t val, Endianness e=Endianness::UNKNOWN)
Definition: byte_value_storage.cpp:457
bool getNTWSNice(std::uint64_t address, std::size_t width, std::vector< std::uint64_t > &res) const
Definition: byte_value_storage.cpp:664
bool get10ByteArray(std::uint64_t address, std::vector< long double > &res, std::size_t size) const
Definition: byte_value_storage.cpp:805
std::function< bool(std::uint64_t, std::uint64_t &, Endianness)> GetNByteFn
Definition: byte_value_storage.h:213
bool get2ByteArray(std::uint64_t address, std::vector< std::uint64_t > &res, std::size_t size, Endianness e=Endianness::UNKNOWN) const
Definition: byte_value_storage.cpp:746
bool isUnknownEndian() const
Definition: byte_value_storage.cpp:156
bool isLittleEndian() const
Definition: byte_value_storage.cpp:136
bool set4Byte(std::uint64_t address, std::uint64_t val, Endianness e=Endianness::UNKNOWN)
Definition: byte_value_storage.cpp:493
virtual bool setXByte(std::uint64_t address, std::uint64_t x, std::uint64_t val, Endianness e=Endianness::UNKNOWN)=0
bool set8Byte(std::uint64_t address, std::uint64_t val, Endianness e=Endianness::UNKNOWN)
Definition: byte_value_storage.cpp:511
bool getDoubleImpl(const std::vector< std::uint8_t > &data, double &res) const
Definition: byte_value_storage.cpp:1041
bool getNTWSNiceImpl(const GetXByteFn &getXByteFn, std::uint64_t address, std::size_t width, std::vector< std::uint64_t > &res) const
Definition: byte_value_storage.cpp:1109
virtual bool getXBytes(std::uint64_t address, std::uint64_t x, std::vector< std::uint8_t > &res) const =0
bool isBigEndian() const
Definition: byte_value_storage.cpp:146
std::function< bool(std::uint64_t, std::uint64_t, std::uint64_t &, Endianness)> GetXByteFn
Definition: byte_value_storage.h:217
bool getWord(std::uint64_t address, std::uint64_t &res, Endianness e=Endianness::UNKNOWN) const
Definition: byte_value_storage.cpp:383
bool getWordArray(std::uint64_t address, std::vector< std::uint64_t > &res, std::size_t, Endianness e=Endianness::UNKNOWN) const
Definition: byte_value_storage.cpp:839
virtual std::size_t getNibbleLength() const =0
bool set2Byte(std::uint64_t address, std::uint64_t val, Endianness e=Endianness::UNKNOWN)
Definition: byte_value_storage.cpp:475
bool getNTBSImpl(const GetNByteFn &get1ByteFn, std::uint64_t address, std::string &res, std::size_t size) const
Definition: byte_value_storage.cpp:1054
bool getDoubleArray(std::uint64_t address, std::vector< double > &res, std::size_t size) const
Definition: byte_value_storage.cpp:889
bool setWord(std::uint64_t address, std::uint64_t val, Endianness e=Endianness::UNKNOWN)
Definition: byte_value_storage.cpp:551
ByteValueStorage()=default
bool get4ByteArray(std::uint64_t address, std::vector< std::uint64_t > &res, std::size_t size, Endianness e=Endianness::UNKNOWN) const
Definition: byte_value_storage.cpp:766
bool getNTWSImpl(const GetXByteFn &getXByteFn, std::uint64_t address, std::size_t width, std::vector< std::uint64_t > &res) const
Definition: byte_value_storage.cpp:1076
bool get10ByteImpl(const std::vector< std::uint8_t > &data, long double &res) const
Definition: byte_value_storage.cpp:1010
bool hexToBig(std::string &str) const
Definition: byte_value_storage.cpp:168
virtual bool setXBytes(std::uint64_t address, const std::vector< std::uint8_t > &val)=0
virtual bool getXByte(std::uint64_t address, std::uint64_t x, std::uint64_t &res, Endianness e=Endianness::UNKNOWN) const =0
bool get1Byte(std::uint64_t address, std::uint64_t &res, Endianness e=Endianness::UNKNOWN) const
Definition: byte_value_storage.cpp:285
bool getFloatImpl(const std::vector< std::uint8_t > &data, float &res) const
Definition: byte_value_storage.cpp:1028
bool getXByteArray(std::uint64_t address, std::uint64_t x, std::vector< std::uint64_t > &res, std::size_t size, Endianness e=Endianness::UNKNOWN) const
Definition: byte_value_storage.cpp:690
bool get10Byte(std::uint64_t address, long double &res) const
Definition: byte_value_storage.cpp:357
bool hexToLittle(std::string &str) const
Definition: byte_value_storage.cpp:191
bool createBytesFromValue(std::uint64_t data, std::uint64_t x, std::vector< std::uint8_t > &value, Endianness endian) const
Definition: byte_value_storage.cpp:977
bool get8ByteArray(std::uint64_t address, std::vector< std::uint64_t > &res, std::size_t size, Endianness e=Endianness::UNKNOWN) const
Definition: byte_value_storage.cpp:786
virtual ~ByteValueStorage()=default
bool getDouble(std::uint64_t address, double &res) const
Definition: byte_value_storage.cpp:419
Endianness
Definition: byte_value_storage.h:21
Definition: archive_wrapper.h:19