Euphoria
memorychunk.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 
5 
6 namespace eu
7 {
8  struct MemoryChunk
9  {
10  [[nodiscard]] static std::shared_ptr<MemoryChunk> allocate(int size);
11  [[nodiscard]] static std::shared_ptr<MemoryChunk> create_null();
12 
13  [[nodiscard]] char* get_data();
14 
15  [[nodiscard]] const char* get_data() const;
16  [[nodiscard]] int get_size() const;
17 
18  char operator[](int index) const;
19  char& operator[](int index);
20 
21  private:
22  std::unique_ptr<char[]> data;
23  int size;
24 
25  explicit MemoryChunk(int the_size);
26  };
27 
28  void copy_to_memory(MemoryChunk* memory, const void* src);
29 
30  [[nodiscard]] std::shared_ptr<MemoryChunk> create_memory_chunk_from_string(const std::string& content);
31 
33  {
34  std::shared_ptr<MemoryChunk> data;
35  int position;
36 
37  explicit MemoryChunkFile(std::shared_ptr<MemoryChunk> d);
38 
39  void write(const void* src, int size);
40  };
41 
42 }
Definition: assert.h:90
std::shared_ptr< MemoryChunk > create_memory_chunk_from_string(const std::string &content)
Definition: memorychunk.cc:66
void copy_to_memory(MemoryChunk *memory, const void *src)
Definition: memorychunk.cc:60
void write(const void *src, int size)
Definition: memorychunk.cc:83
std::shared_ptr< MemoryChunk > data
Definition: memorychunk.h:34
MemoryChunkFile(std::shared_ptr< MemoryChunk > d)
Definition: memorychunk.cc:76
char * get_data()
Definition: memorychunk.cc:12
char operator[](int index) const
Definition: memorychunk.cc:29
static std::shared_ptr< MemoryChunk > allocate(int size)
Definition: memorychunk.cc:40
int get_size() const
Definition: memorychunk.cc:24
static std::shared_ptr< MemoryChunk > create_null()
Definition: memorychunk.cc:47