qTox
Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
src
persistence
serialize.cpp
Go to the documentation of this file.
1
/*
2
Copyright © 2014-2019 by The qTox Project Contributors
3
4
This file is part of qTox, a Qt-based graphical interface for Tox.
5
6
qTox is libre software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
qTox is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with qTox. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#include "
src/persistence/serialize.h
"
21
28
QString
dataToString
(QByteArray data)
29
{
30
char
num3;
31
int
strlen = 0;
32
int
num2 = 0;
33
int
i = 0;
34
do
{
35
num3 = data[i++];
36
strlen |= (num3 & 0x7f) << num2;
37
num2 += 7;
38
}
while
((num3 & 0x80) != 0);
39
40
if
(strlen <= 0)
41
return
QString();
42
43
// Remove the strlen
44
data.remove(0, i);
45
data.truncate(strlen);
46
47
return
QString(data);
48
}
49
50
uint64_t
dataToUint64
(
const
QByteArray& data)
51
{
52
return
static_cast<
uint64_t
>
(data[0]) | (
static_cast<
uint64_t
>
(data[1]) << 8)
53
| (
static_cast<
uint64_t
>
(data[2]) << 16) | (
static_cast<
uint64_t
>
(data[3]) << 24)
54
| (
static_cast<
uint64_t
>
(data[4]) << 32) | (
static_cast<
uint64_t
>
(data[5]) << 40)
55
| (
static_cast<
uint64_t
>
(data[6]) << 48) | (
static_cast<
uint64_t
>
(data[7]) << 56);
56
}
57
58
int
dataToVInt
(
const
QByteArray& data)
59
{
60
char
num3;
61
int
num = 0;
62
int
num2 = 0;
63
int
i = 0;
64
do
{
65
num3 = data[i++];
66
num |=
static_cast<
int
>
(num3 & 0x7f) << num2;
67
num2 += 7;
68
}
while
((num3 & 0x80) != 0);
69
return
num;
70
}
71
72
size_t
dataToVUint
(
const
QByteArray& data)
73
{
74
char
num3;
75
size_t
num = 0;
76
int
num2 = 0;
77
int
i = 0;
78
do
{
79
num3 = data[i++];
80
num |=
static_cast<
size_t
>
(num3 & 0x7f) << num2;
81
num2 += 7;
82
}
while
((num3 & 0x80) != 0);
83
return
num;
84
}
85
86
unsigned
getVUint32Size
(QByteArray data)
87
{
88
unsigned
lensize = 0;
89
90
char
num3;
91
do
{
92
num3 = data[lensize];
93
++lensize;
94
}
while
((num3 & 0x80) != 0);
95
96
return
lensize;
97
}
98
99
QByteArray
vintToData
(
int
num)
100
{
101
QByteArray data(
sizeof
(
int
), 0);
102
// Write the size in a Uint of variable lenght (8-32 bits)
103
int
i = 0;
104
while
(num >= 0x80) {
105
data[i] =
static_cast<
char
>
(num | 0x80);
106
++i;
107
num = num >> 7;
108
}
109
data[i] =
static_cast<
char
>
(num);
110
data.resize(i + 1);
111
return
data;
112
}
113
114
QByteArray
vuintToData
(
size_t
num)
115
{
116
QByteArray data(
sizeof
(
size_t
), 0);
117
// Write the size in a Uint of variable lenght (8-32 bits)
118
int
i = 0;
119
while
(num >= 0x80) {
120
data[i] =
static_cast<
char
>
(num | 0x80);
121
++i;
122
num = num >> 7;
123
}
124
data[i] =
static_cast<
char
>
(num);
125
data.resize(i + 1);
126
return
data;
127
}
getVUint32Size
unsigned getVUint32Size(QByteArray data)
Definition:
serialize.cpp:86
vintToData
QByteArray vintToData(int num)
Definition:
serialize.cpp:99
dataToVUint
size_t dataToVUint(const QByteArray &data)
Definition:
serialize.cpp:72
vuintToData
QByteArray vuintToData(size_t num)
Definition:
serialize.cpp:114
dataToString
QString dataToString(QByteArray data)
Definition:
serialize.cpp:28
serialize.h
dataToVInt
int dataToVInt(const QByteArray &data)
Definition:
serialize.cpp:58
dataToUint64
uint64_t dataToUint64(const QByteArray &data)
Definition:
serialize.cpp:50
Generated by
1.8.17