acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
streamable.h
1// Created by camilo on 2021-08-01 22:40 Thomas Month!! <3ThomasBS__!!
2#pragma once
3
4
5#include "translatable.h"
6#include "acme/input_output/OutputStream.h"
7
8
9namespace file
10{
11
12
13
14
15
16 class CLASS_DECL_ACME readable :
17 virtual public translatable
18 {
19 public:
20
21
22 readable();
23 ~readable() override;
24
25 virtual memsize read(void * p, ::memsize s);
26
27 inline memsize read(const ::block & block) { return read(block.data(), block.size()); }
28
29 virtual ::file::file * get_file();
30
31
32 };
33
34
35 class CLASS_DECL_ACME writable :
36 virtual public translatable,
37 virtual public OutputStream
38 {
39 public:
40
41
42 writable();
43 ~writable() override ;
44
45
46 virtual void write(const void * p, ::memsize s);
47
48 inline void write(const ::block & block) { write(block.data(), block.size()); }
49
50 //template < typename ITERATOR_TYPE2, ::i32 t_size >
51 //inline void write(const ::const_string_range_static_array < ITERATOR_TYPE2, t_size > & a)
52 //{
53 // for (::i32 i = 0; i < t_size; i++)
54 // {
55 // write(a.element_at(i).begin(), a.element_at(i).size());
56 // }
57 //}
58
59 ::memsize defer_write(const void * p, ::memsize s) override;
60
61 inline ::memsize defer_write(const ::block & block) { return defer_write(block.data(), block.size()); }
62 void flush() override;
63
64 };
65
66
67 class CLASS_DECL_ACME streamable :
68 virtual public readable,
69 virtual public writable
70 {
71 public:
72
73
74
75 streamable() {}
76 streamable(streamable &&) = delete;
77
78
79 virtual enum_status _open(const ::scoped_string & scopedstrFilePath, const ::file::enum_open & eopen);
80
81 void translate(filesize offset, ::enum_seek eseek) override;
82
83 void close() override;
84 virtual void abort();
85
86
87 virtual void set_size(filesize dwNewLen);
88
89 virtual filesize size() const;
90 virtual filesize right_size() const;
91
92
93 virtual ::memory right_memory(::memsize iReadAtMostByteCount = -1);
94 virtual void right_memory(memory_base & memory, ::memsize iReadAtMostByteCount = -1);
95 virtual ::string right_string(::memsize iReadAtMostByteCount = -1);
96 virtual void right_string(::string & str, ::memsize iReadAtMostByteCount = -1);
97
98 virtual string full_string(::memsize iReadAtMostByteCount = -1);
99
100 virtual void full_memory(memory_base & memory, ::memsize iReadAtMostByteCount = -1);
101 virtual ::memory full_memory(::memsize iReadAtMostByteCount = -1);
102
103
104
105
106 // virtual ::memory left_memory(::memsize iReadAtMostByteCount = -1);
107
108
109 };
110
111
112} // namespace file
113
114
115CLASS_DECL_ACME void __transfer_to_writable(::file::writable * pwritable, ::file::file * pfileIn, memsize uiBufSize = -1);
116
117
118
Definition OutputStream.h:38
Definition file.h:33
Definition translatable.h:26
Definition streamable.h:38
void flush() override
Definition streamable.cpp:90
::memsize defer_write(const void *p, ::memsize s) override
Definition streamable.cpp:81
Definition memory_base.h:92
Definition memory.h:33
Definition filesystem.h:16
Definition block.h:46