LeechCraft
0.6.70-15082-g543737046d
Modular cross-platform feature rich live environment.
utilitytypes.h
Go to the documentation of this file.
1
/**********************************************************************
2
* LeechCraft - modular cross-platform feature rich internet client.
3
* Copyright (C) 2006-2014 Georg Rudoy
4
*
5
* Distributed under the Boost Software License, Version 1.0.
6
* (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7
**********************************************************************/
8
9
#pragma once
10
11
#include <utility>
12
#include <QDataStream>
13
#include <QByteArray>
14
15
namespace
LC::Util::oral
16
{
17
template
<
typename
T>
18
struct
AsDataStream
19
{
20
using
BaseType
= QByteArray;
21
22
T
Val_
;
23
24
operator
T () const &
25
{
26
return
Val_
;
27
}
28
29
operator
T&& () &&
30
{
31
return
std::move (
Val_
);
32
}
33
34
AsDataStream
() =
default
;
35
AsDataStream
(
const
AsDataStream
&) =
default
;
36
AsDataStream
(
AsDataStream
&&) =
default
;
37
38
AsDataStream
&
operator=
(
const
AsDataStream
&) =
default
;
39
AsDataStream
&
operator=
(
AsDataStream
&&) =
default
;
40
41
template
<
typename
... Args>
42
AsDataStream
(Args&&... args)
43
:
Val_
{ std::forward<Args> (args)... }
44
{
45
}
46
47
template
<
typename
U>
48
AsDataStream
&
operator=
(U&& val)
49
{
50
Val_
= std::forward<U> (val);
51
return
*
this
;
52
}
53
54
BaseType
ToBaseType
()
const
55
{
56
QByteArray ba;
57
{
58
QDataStream out { &ba, QIODevice::WriteOnly };
59
out <<
Val_
;
60
}
61
return
ba;
62
}
63
64
static
AsDataStream
FromBaseType
(
const
QByteArray& ba)
65
{
66
QDataStream in { ba };
67
68
AsDataStream
res;
69
in >> res.Val_;
70
return
res;
71
}
72
};
73
74
}
LC::Util::oral::AsDataStream::AsDataStream
AsDataStream()=default
LC::Util::oral
Definition:
impldefs.h:17
LC::Util::oral::AsDataStream::operator=
AsDataStream & operator=(const AsDataStream &)=default
LC::Util::oral::AsDataStream::FromBaseType
static AsDataStream FromBaseType(const QByteArray &ba)
Definition:
utilitytypes.h:76
LC::Util::oral::AsDataStream::Val_
T Val_
Definition:
utilitytypes.h:34
LC::Util::oral::AsDataStream::BaseType
QByteArray BaseType
Definition:
utilitytypes.h:32
LC::Util::oral::AsDataStream::ToBaseType
BaseType ToBaseType() const
Definition:
utilitytypes.h:66
LC::Util::oral::AsDataStream
Definition:
utilitytypes.h:24
src
util
db
oral
utilitytypes.h
Generated by
1.8.17