XipZ
Mini packer ▶►▸ for small programs.
data.hh
Go to the documentation of this file.
1 #ifndef __DATA_HH_2W020__
2 #define __DATA_HH_2W020__
3 #include <vector>
4 #include <inttypes.h>
5 
20 class Data {
21 protected:
22  uint16_t loadaddr;
23  std::vector<uint8_t> data;
24 
25 public:
33  Data(const std::vector<uint8_t> &inp) {
34  if(inp.size() < 3) {
35  throw std::underflow_error("not enough bytes for Data");
36  }
37  loadaddr = (static_cast<uint16_t>(inp.at(1)) << 8) | inp.at(0);
38  data.resize(inp.size() - 2);
39  std::copy(inp.begin() + 2, inp.end(), data.begin());
40  }
47  uint16_t get_loadaddr() const { return loadaddr; }
54  std::vector<uint8_t>::size_type size() const { return data.size(); }
55  uint8_t operator[](unsigned int i) const { return data.at(i); }
56  std::vector<uint8_t>::const_iterator begin() const { return data.begin(); }
57  std::vector<uint8_t>::const_iterator end() const { return data.end(); }
58 };
59 
60 
61 #endif
Data::Data
Data(const std::vector< uint8_t > &inp)
Constructor with raw binary data as input.
Definition: data.hh:33
Data::loadaddr
uint16_t loadaddr
original load address
Definition: data.hh:22
Data
Input data type.
Definition: data.hh:20
Data::size
std::vector< uint8_t >::size_type size() const
get data size
Definition: data.hh:54
Data::get_loadaddr
uint16_t get_loadaddr() const
get load address of data
Definition: data.hh:47
Data::data
std::vector< uint8_t > data
binary data without the load address
Definition: data.hh:23