bux API Reference
1.12.6
Static library of whatever are seen required in general purpose but not directly supported from Modern C++. Or whatever reusable originated from my side projects.
Toggle main menu visibility
Loading...
Searching...
No Matches
include
bux
MemIn.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <istream>
// std::basic_istream<>
4
#include <string_view>
// std::basic_string_view<>
5
6
namespace
bux
{
7
8
//
9
// Types
10
//
11
template
<
class
_CharT,
class
_Traits>
12
struct
C_IMemBufAsMember
13
{
14
// Data
15
struct
C_IMemBuf
: std::basic_streambuf<_CharT,_Traits>
16
{
17
C_IMemBuf
(
const
_CharT *buffer,
size_t
size)
18
{
19
const
auto
beg =
const_cast<
_CharT*
>
(buffer);
20
this->setg(beg, beg, beg+size);
21
}
22
C_IMemBuf
(std::basic_string_view<_CharT,_Traits> buffer)
23
{
24
const
auto
beg =
const_cast<
_CharT*
>
(buffer.data());
25
this->setg(beg, beg, beg+buffer.size());
26
}
27
}
m_Buffer
;
28
29
// Ctor
30
C_IMemBufAsMember
(
const
_CharT *buffer,
size_t
size):
m_Buffer
(buffer, size) {}
31
C_IMemBufAsMember
(std::basic_string_view<_CharT,_Traits> buffer):
m_Buffer
(buffer) {}
32
C_IMemBufAsMember
(std::basic_string<_CharT,_Traits> &&) =
delete
;
33
};
34
35
template
<
class
_CharT,
class
_Traits = std::
char
_traits<_CharT>>
36
class
C_IMemStreamT
:
37
private
C_IMemBufAsMember
<_CharT,_Traits>,
38
public
std::basic_istream<_CharT,_Traits>
// Inheritance order matters
39
{
40
public
:
41
42
// Ctors
43
C_IMemStreamT
(
const
_CharT *buffer,
size_t
size):
44
C_IMemBufAsMember
<_CharT,_Traits>(buffer, size),
45
std::basic_istream<_CharT,_Traits>(&this->
m_Buffer
)
46
{}
47
C_IMemStreamT
(std::basic_string_view<_CharT,_Traits> buffer):
48
C_IMemBufAsMember
<_CharT,_Traits>(buffer),
49
std::basic_istream<_CharT,_Traits>(&this->
m_Buffer
)
50
{}
51
C_IMemStreamT
(
const
_CharT *str):
52
C_IMemStreamT
(std::basic_string_view<_CharT,_Traits>{str})
53
{}
54
C_IMemStreamT
(std::basic_string<_CharT,_Traits> &&) =
delete
;
55
};
56
using
C_IMemStream
=
C_IMemStreamT<char>
;
57
58
}
// namespace bux
bux::C_IMemStreamT
Definition
MemIn.h:39
bux::C_IMemStreamT::C_IMemStreamT
C_IMemStreamT(const _CharT *str)
Definition
MemIn.h:51
bux::C_IMemStreamT::C_IMemStreamT
C_IMemStreamT(std::basic_string_view< _CharT, _Traits > buffer)
Definition
MemIn.h:47
bux::C_IMemStreamT::C_IMemStreamT
C_IMemStreamT(const _CharT *buffer, size_t size)
Definition
MemIn.h:43
bux::C_IMemStreamT::C_IMemStreamT
C_IMemStreamT(std::basic_string< _CharT, _Traits > &&)=delete
bux
THE common namespace of bux library.
Definition
AtomiX.cpp:3
bux::C_IMemStream
C_IMemStreamT< char > C_IMemStream
Definition
MemIn.h:56
bux::C_IMemBufAsMember::C_IMemBuf::C_IMemBuf
C_IMemBuf(std::basic_string_view< _CharT, _Traits > buffer)
Definition
MemIn.h:22
bux::C_IMemBufAsMember::C_IMemBuf::C_IMemBuf
C_IMemBuf(const _CharT *buffer, size_t size)
Definition
MemIn.h:17
bux::C_IMemBufAsMember::C_IMemBufAsMember
C_IMemBufAsMember(std::basic_string_view< _CharT, _Traits > buffer)
Definition
MemIn.h:31
bux::C_IMemBufAsMember::m_Buffer
bux::C_IMemBufAsMember::C_IMemBuf m_Buffer
bux::C_IMemBufAsMember::C_IMemBufAsMember
C_IMemBufAsMember(const _CharT *buffer, size_t size)
Definition
MemIn.h:30
bux::C_IMemBufAsMember::C_IMemBufAsMember
C_IMemBufAsMember(std::basic_string< _CharT, _Traits > &&)=delete
Generated by
1.18.0