Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
DB2FileLoader.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#ifndef DB2_FILE_LOADER_H
7
#define DB2_FILE_LOADER_H
8
9
#include "
Define.h
"
10
#include "
Utilities/ByteConverter.h
"
11
#include <cassert>
12
#include <string>
13
14
class
DB2FileLoader
15
{
16
public
:
17
DB2FileLoader
() :
recordSize
(0),
recordCount
(0),
fieldCount
(0),
stringSize
(0),
data
(NULL),
fieldsOffset
(NULL),
stringTable
(NULL),
18
tableHash
(0),
build
(0),
unk1
(0),
minIndex
(0),
maxIndex
(0),
locale
(0),
unk5
(0) { }
19
20
~DB2FileLoader
();
21
22
bool
Load
(
const
char
* filename,
const
char
* fmt);
23
24
class
Record
25
{
26
public
:
27
float
getFloat
(
size_t
field)
const
28
{
29
assert(field <
file
.fieldCount);
30
float
val = *
reinterpret_cast<
float
*
>
(
offset
+
file
.GetOffset(field));
31
EndianConvert
(val);
32
return
val;
33
}
34
uint32
getUInt
(
size_t
field)
const
35
{
36
assert(field <
file
.fieldCount);
37
uint32
val = *
reinterpret_cast<
uint32
*
>
(
offset
+
file
.GetOffset(field));
38
EndianConvert
(val);
39
return
val;
40
}
41
uint8
getUInt8
(
size_t
field)
const
42
{
43
assert(field <
file
.fieldCount);
44
return
*
reinterpret_cast<
uint8
*
>
(
offset
+
file
.GetOffset(field));
45
}
46
47
const
char
*
getString
(
size_t
field)
const
48
{
49
assert(field <
file
.fieldCount);
50
size_t
stringOffset =
getUInt
(field);
51
assert(stringOffset <
file
.stringSize);
52
return
reinterpret_cast<
char
*
>
(
file
.stringTable + stringOffset);
53
}
54
55
private
:
56
Record
(
DB2FileLoader
& file_,
unsigned
char
* offset_) :
offset
(offset_),
file
(file_) {}
57
unsigned
char
*
offset
;
58
DB2FileLoader
&
file
;
59
60
friend
class
DB2FileLoader
;
61
};
62
63
// Get record by id
64
Record
getRecord
(
size_t
id
);
66
67
uint32
GetNumRows
()
const
{
return
recordCount
; }
68
uint32
GetCols
()
const
{
return
fieldCount
; }
69
uint32
GetOffset
(
size_t
id
)
const
{
return
(
fieldsOffset
!= NULL &&
id
<
fieldCount
) ?
fieldsOffset
[id] : 0; }
70
uint32
GetHash
()
const
{
return
tableHash
; }
71
bool
IsLoaded
()
const
{
return
(
data
!= NULL); }
72
char
*
AutoProduceData
(std::string fmt,
uint32
& count,
char
**& indexTable);
73
char
*
AutoProduceStringsArrayHolders
(std::string fmt,
char
* dataTable);
74
char
*
AutoProduceStrings
(std::string fmt,
char
* dataTable,
uint32
locale
);
75
static
uint32
GetFormatRecordSize
(std::string format,
int32
* index_pos = NULL);
76
static
uint32
GetFormatStringsFields
(std::string format);
77
78
private
:
79
uint32
recordSize
;
80
uint32
recordCount
;
81
uint32
fieldCount
;
82
uint32
stringSize
;
83
uint32
*
fieldsOffset
;
84
unsigned
char
*
data
;
85
unsigned
char
*
stringTable
;
86
87
// WDB2 / WCH2 fields
88
uint32
tableHash
;
// WDB2
89
uint32
build
;
// WDB2
90
91
int
unk1
;
// WDB2 (Unix time in WCH2)
92
int
minIndex
;
// WDB2
93
int
maxIndex
;
// WDB2 (index table)
94
int
locale
;
// WDB2
95
int
unk5
;
// WDB2
96
};
97
98
#endif
ByteConverter.h
EndianConvert
void EndianConvert(T &)
Definition
ByteConverter.h:40
Define.h
int32
std::int32_t int32
Definition
Define.h:73
uint8
std::uint8_t uint8
Definition
Define.h:79
uint32
std::uint32_t uint32
Definition
Define.h:77
DB2FileLoader::Record
Definition
DB2FileLoader.h:25
DB2FileLoader::Record::getFloat
float getFloat(size_t field) const
Definition
DB2FileLoader.h:27
DB2FileLoader::Record::getUInt8
uint8 getUInt8(size_t field) const
Definition
DB2FileLoader.h:41
DB2FileLoader::Record::DB2FileLoader
friend class DB2FileLoader
Definition
DB2FileLoader.h:60
DB2FileLoader::Record::offset
unsigned char * offset
Definition
DB2FileLoader.h:57
DB2FileLoader::Record::getUInt
uint32 getUInt(size_t field) const
Definition
DB2FileLoader.h:34
DB2FileLoader::Record::file
DB2FileLoader & file
Definition
DB2FileLoader.h:58
DB2FileLoader::Record::Record
Record(DB2FileLoader &file_, unsigned char *offset_)
Definition
DB2FileLoader.h:56
DB2FileLoader::Record::getString
const char * getString(size_t field) const
Definition
DB2FileLoader.h:47
DB2FileLoader::GetFormatStringsFields
static uint32 GetFormatStringsFields(std::string format)
Definition
DB2FileLoader.cpp:206
DB2FileLoader::data
unsigned char * data
Definition
DB2FileLoader.h:84
DB2FileLoader::~DB2FileLoader
~DB2FileLoader()
Definition
DB2FileLoader.cpp:158
DB2FileLoader::GetFormatRecordSize
static uint32 GetFormatRecordSize(std::string format, int32 *index_pos=NULL)
Definition
DB2FileLoader.cpp:172
DB2FileLoader::tableHash
uint32 tableHash
Definition
DB2FileLoader.h:88
DB2FileLoader::Load
bool Load(const char *filename, const char *fmt)
Definition
DB2FileLoader.cpp:13
DB2FileLoader::build
uint32 build
Definition
DB2FileLoader.h:89
DB2FileLoader::recordSize
uint32 recordSize
Definition
DB2FileLoader.h:79
DB2FileLoader::AutoProduceStrings
char * AutoProduceStrings(std::string fmt, char *dataTable, uint32 locale)
Definition
DB2FileLoader.cpp:349
DB2FileLoader::DB2FileLoader
DB2FileLoader()
Definition
DB2FileLoader.h:17
DB2FileLoader::AutoProduceData
char * AutoProduceData(std::string fmt, uint32 &count, char **&indexTable)
Definition
DB2FileLoader.cpp:216
DB2FileLoader::locale
int locale
Definition
DB2FileLoader.h:94
DB2FileLoader::IsLoaded
bool IsLoaded() const
Definition
DB2FileLoader.h:71
DB2FileLoader::recordCount
uint32 recordCount
Definition
DB2FileLoader.h:80
DB2FileLoader::GetNumRows
uint32 GetNumRows() const
Get begin iterator over records.
Definition
DB2FileLoader.h:67
DB2FileLoader::getRecord
Record getRecord(size_t id)
Definition
DB2FileLoader.cpp:166
DB2FileLoader::stringTable
unsigned char * stringTable
Definition
DB2FileLoader.h:85
DB2FileLoader::stringSize
uint32 stringSize
Definition
DB2FileLoader.h:82
DB2FileLoader::unk5
int unk5
Definition
DB2FileLoader.h:95
DB2FileLoader::fieldCount
uint32 fieldCount
Definition
DB2FileLoader.h:81
DB2FileLoader::maxIndex
int maxIndex
Definition
DB2FileLoader.h:93
DB2FileLoader::GetHash
uint32 GetHash() const
Definition
DB2FileLoader.h:70
DB2FileLoader::GetOffset
uint32 GetOffset(size_t id) const
Definition
DB2FileLoader.h:69
DB2FileLoader::fieldsOffset
uint32 * fieldsOffset
Definition
DB2FileLoader.h:83
DB2FileLoader::minIndex
int minIndex
Definition
DB2FileLoader.h:92
DB2FileLoader::AutoProduceStringsArrayHolders
char * AutoProduceStringsArrayHolders(std::string fmt, char *dataTable)
Definition
DB2FileLoader.cpp:291
DB2FileLoader::GetCols
uint32 GetCols() const
Definition
DB2FileLoader.h:68
DB2FileLoader::unk1
int unk1
Definition
DB2FileLoader.h:91
src
server
shared
DataStores
DB2FileLoader.h
Generated on
for Project SkyFire Core by
1.17.0