acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
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
9
namespace
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
115
CLASS_DECL_ACME
void
__transfer_to_writable(
::file::writable
* pwritable,
::file::file
* pfileIn, memsize uiBufSize = -1);
116
117
118
OutputStream
Definition
OutputStream.h:38
file::file
Definition
file.h:33
file::translatable
Definition
translatable.h:26
file::writable
Definition
streamable.h:38
file::writable::flush
void flush() override
Definition
streamable.cpp:90
file::writable::defer_write
::memsize defer_write(const void *p, ::memsize s) override
Definition
streamable.cpp:81
memory_base
Definition
memory_base.h:92
memory
Definition
memory.h:33
file
Definition
filesystem.h:16
block
Definition
block.h:46
filesystem
file
streamable.h
Generated by
1.17.0