-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathpackfilemetadata.cpp
85 lines (67 loc) · 1.96 KB
/
packfilemetadata.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
#include "packfilemetadata.h"
#include "packfilepagemetadata.h"
#include <QFile>
#include <QDataStream>
namespace ProjectZomboidPackManager
{
PackFileMetaData::PackFileMetaData(QString packFilePath)
{
_numberOfPages = 0;
ReadMetaData(packFilePath);
}
PackFileMetaData::PackFileMetaData(const PackFileMetaData& other)
{
if (&other != this)
{
_numberOfPages = other._numberOfPages;
_pages = other._pages;
}
}
PackFileMetaData::PackFileMetaData(PackFileMetaData&& other)
{
if (&other != this)
{
_numberOfPages = std::move(other._numberOfPages);
_pages = std::move(other._pages);
}
}
PackFileMetaData& PackFileMetaData::operator =(const PackFileMetaData& other)
{
if (&other != this)
{
_numberOfPages = other._numberOfPages;
_pages = other._pages;
}
return *this;
}
PackFileMetaData& PackFileMetaData::operator =(PackFileMetaData&& other)
{
if (&other != this)
{
_numberOfPages = std::move(other._numberOfPages);
_pages = std::move(other._pages);
}
return *this;
}
PackFileMetaData::~PackFileMetaData()
{
}
void PackFileMetaData::ReadMetaData(
QString packFilePath)
{
QFile packFile(packFilePath);
if (packFile.exists())
{
packFile.open(QIODevice::ReadOnly);
QDataStream stream(&packFile);
stream.setByteOrder(QDataStream::LittleEndian);
stream >> _numberOfPages;
for (int i = 0; i < _numberOfPages && !stream.atEnd(); ++i)
{
PackFilePageMetaData packPage(stream);
_pages.push_back(std::move(packPage));
}
packFile.close();
}
}
}