RetroLinker
Linker for several 8-bit, 16-bit and 32-bit formats
Loading...
Searching...
No Matches
buffer.h
1#ifndef BUFFER_H
2#define BUFFER_H
3
4#include <algorithm>
5#include <iostream>
6#include <string>
7#include <variant>
8#include <vector>
9#include "../common.h"
10#include "image.h"
11
12namespace Linker
13{
14 class Reader;
15 class Segment;
16 class Writer;
17
21 class Buffer : public Image
22 {
23 protected:
24 std::vector<uint8_t> data;
25
26 public:
27 Buffer() = default;
28
29 Buffer(size_t size)
30 {
31 data.resize(size);
32 }
33
34 Buffer(const std::vector<uint8_t>& data)
35 : data(data)
36 {
37 }
38
39 offset_t ImageSize() const override;
43 void Resize(offset_t new_size);
47 void Append(std::vector<uint8_t>& additional_data);
53 virtual void ReadFile(Reader& rd);
59 void ReadFileRemaining(Reader& rd);
65 void ReadFile(Reader& rd, offset_t count);
69 static std::shared_ptr<Buffer> ReadFromFile(Reader& rd);
75 static std::shared_ptr<Buffer> ReadFromFile(Reader& rd, offset_t count);
77 offset_t WriteFile(Writer& wr, offset_t count, offset_t offset = 0) const override;
78 size_t ReadData(size_t bytes, offset_t offset, void * buffer) const override;
79
80 friend class Section;
81 friend class Contents;
82 };
83}
84
85#endif /* BUFFER_H */
A buffer that can be used to read and store data from a file.
Definition buffer.h:22
void Resize(offset_t new_size)
Resize buffer.
Definition buffer.cc:14
offset_t ImageSize() const override
Retrieves size of stored data.
Definition buffer.cc:9
void ReadFileRemaining(Reader &rd)
Overwrites buffer data with contents of reader.
Definition buffer.cc:29
size_t ReadData(size_t bytes, offset_t offset, void *buffer) const override
Attempts to fill a buffer with data.
Definition buffer.cc:58
offset_t WriteFile(Writer &wr, offset_t count, offset_t offset=0) const override
Writes data of non-zero filled sections.
Definition buffer.cc:53
static std::shared_ptr< Buffer > ReadFromFile(Reader &rd)
Creates a buffer containing the remaining data in the reader.
Definition buffer.cc:39
void Append(std::vector< uint8_t > &additional_data)
Append data to buffer.
Definition buffer.cc:19
virtual void ReadFile(Reader &rd)
Overwrites buffer data with contents of reader.
Definition buffer.cc:24
Represents abstract data contents whose data can be written to a file.
Definition image.h:17
virtual offset_t WriteFile(Writer &wr, offset_t count, offset_t offset=0) const =0
Writes data of non-zero filled sections.
Definition image.h:43
A helper class, encapsulating functionality needed to import binary data.
Definition reader.h:20
A section of data as read from an object file.
Definition section.h:28
A helper class, encapsulating functionality needed to export binary data.
Definition writer.h:15