-
Notifications
You must be signed in to change notification settings - Fork 5
/
packentrymetadata.cpp
110 lines (94 loc) · 3.27 KB
/
packentrymetadata.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include "packentrymetadata.h"
namespace ProjectZomboidPackManager
{
PackEntryMetaData::PackEntryMetaData(QDataStream &stream)
{
ReadMetaData(stream);
}
PackEntryMetaData::PackEntryMetaData(const PackEntryMetaData& other)
{
if (&other != this)
{
_entryName = other._entryName;
_xPos = other._xPos;
_yPos = other._yPos;
_width = other._width;
_height = other._height;
_xOffset = other._xOffset;
_yOffset = other._yOffset;
_totalWidth = other._totalWidth;
_totalHeight = other._totalHeight;
}
}
PackEntryMetaData::PackEntryMetaData(PackEntryMetaData&& other)
{
if (&other != this)
{
_entryName = std::move(other._entryName);
_xPos = std::move(other._xPos);
_yPos = std::move(other._yPos);
_width = std::move(other._width);
_height = std::move(other._height);
_xOffset = std::move(other._xOffset);
_yOffset = std::move(other._yOffset);
_totalWidth = std::move(other._totalWidth);
_totalHeight = std::move(other._totalHeight);
}
}
PackEntryMetaData& PackEntryMetaData::operator =(const PackEntryMetaData& other)
{
if (&other != this)
{
_entryName = other._entryName;
_xPos = other._xPos;
_yPos = other._yPos;
_width = other._width;
_height = other._height;
_xOffset = other._xOffset;
_yOffset = other._yOffset;
_totalWidth = other._totalWidth;
_totalHeight = other._totalHeight;
}
return *this;
}
PackEntryMetaData& PackEntryMetaData::operator =(PackEntryMetaData&& other)
{
if (&other != this)
{
_entryName = std::move(other._entryName);
_xPos = std::move(other._xPos);
_yPos = std::move(other._yPos);
_width = std::move(other._width);
_height = std::move(other._height);
_xOffset = std::move(other._xOffset);
_yOffset = std::move(other._yOffset);
_totalWidth = std::move(other._totalWidth);
_totalHeight = std::move(other._totalHeight);
}
return *this;
}
PackEntryMetaData::~PackEntryMetaData()
{
}
void PackEntryMetaData::ReadMetaData(QDataStream &stream)
{
if (!stream.atEnd())
{
int nameLength = 0;
stream >> nameLength;
if (nameLength > 0 &&
nameLength < stream.device()->size() - stream.device()->pos())
{
char* nameChars = new char[nameLength];
int bytesRead = stream.readRawData(nameChars, nameLength);
if (bytesRead > -1)
{
_entryName = QString::fromUtf8(nameChars, nameLength);
stream >> _xPos >> _yPos >> _width >> _height >> _xOffset >>
_yOffset >> _totalWidth >> _totalHeight;
}
delete [] nameChars;
}
}
}
}