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 ActualImage
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 offset_t ImageSize() const override;
35 void ReadFile(Reader& rd);
36 void ReadFile(Reader& rd, offset_t count);
37 static std::shared_ptr<Buffer> ReadFromFile(Reader& rd);
38 static std::shared_ptr<Buffer> ReadFromFile(Reader& rd, offset_t count);
39 using Image::WriteFile;
40 offset_t WriteFile(Writer& wr, offset_t count, offset_t offset = 0) const override;
41 size_t ReadData(size_t bytes, offset_t offset, void * buffer) const override;
42
43 friend class Section;
44 friend class Image;
45 };
46}
47
48#endif /* BUFFER_H */
Definition image.h:43
A buffer that can be used to read and store data from a file.
Definition buffer.h:22
offset_t ImageSize() const override
Retrieves size of stored data.
Definition buffer.cc:9
size_t ReadData(size_t bytes, offset_t offset, void *buffer) const override
Attempts to fill a buffer with data.
Definition buffer.cc:48
offset_t WriteFile(Writer &wr, offset_t count, offset_t offset=0) const override
Writes data of non-zero filled sections.
Definition buffer.cc:43
Represents an abstract data image 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.
A helper class, encapsulating functionality needed to import binary data.
Definition reader.h:16
A section of data as read from an object file.
Definition section.h:24
A helper class, encapsulating functionality needed to export binary data.
Definition writer.h:15