Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
DBCFileLoader.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 DBC_FILE_LOADER_H
7
#define DBC_FILE_LOADER_H
8
#include "
Define.h
"
9
#include "
Utilities/ByteConverter.h
"
10
#include <cassert>
11
#include <string>
12
13
class
DBCFileLoader
14
{
15
public
:
16
DBCFileLoader
();
17
~DBCFileLoader
();
18
19
bool
Load
(
const
char
* filename,
const
char
* fmt);
20
21
class
Record
22
{
23
public
:
24
float
getFloat
(
size_t
field)
const
25
{
26
assert(field <
file
.fieldCount);
27
float
val = *
reinterpret_cast<
float
*
>
(
offset
+
file
.GetOffset(field));
28
EndianConvert
(val);
29
return
val;
30
}
31
uint32
getUInt
(
size_t
field)
const
32
{
33
assert(field <
file
.fieldCount);
34
uint32
val = *
reinterpret_cast<
uint32
*
>
(
offset
+
file
.GetOffset(field));
35
EndianConvert
(val);
36
return
val;
37
}
38
uint8
getUInt8
(
size_t
field)
const
39
{
40
assert(field <
file
.fieldCount);
41
return
*
reinterpret_cast<
uint8
*
>
(
offset
+
file
.GetOffset(field));
42
}
43
44
const
char
*
getString
(
size_t
field)
const
45
{
46
assert(field <
file
.fieldCount);
47
size_t
stringOffset =
getUInt
(field);
48
assert(stringOffset <
file
.stringSize);
49
return
reinterpret_cast<
char
*
>
(
file
.stringTable + stringOffset);
50
}
51
52
private
:
53
Record
(
DBCFileLoader
& file_,
unsigned
char
* offset_) :
offset
(offset_),
file
(file_) { }
54
unsigned
char
*
offset
;
55
DBCFileLoader
&
file
;
56
57
friend
class
DBCFileLoader
;
58
};
59
60
// Get record by id
61
Record
getRecord
(
size_t
id
);
63
64
uint32
GetNumRows
()
const
{
return
recordCount
; }
65
uint32
GetRowSize
()
const
{
return
recordSize
; }
66
uint32
GetCols
()
const
{
return
fieldCount
; }
67
uint32
GetOffset
(
size_t
id
)
const
{
return
(
fieldsOffset
!= NULL &&
id
<
fieldCount
) ?
fieldsOffset
[id] : 0; }
68
bool
IsLoaded
()
const
{
return
data
!= NULL; }
69
char
*
AutoProduceData
(std::string fmt,
uint32
& count,
char
**& indexTable,
uint32
sqlRecordCount,
uint32
sqlHighestIndex,
char
*& sqlDataTable);
70
char
*
AutoProduceStrings
(std::string fmt,
char
* dataTable);
71
static
uint32
GetFormatRecordSize
(std::string format,
int32
* index_pos = NULL);
72
73
private
:
74
uint32
recordSize
;
75
uint32
recordCount
;
76
uint32
fieldCount
;
77
uint32
stringSize
;
78
uint32
*
fieldsOffset
;
79
unsigned
char
*
data
;
80
unsigned
char
*
stringTable
;
81
DBCFileLoader
(
DBCFileLoader
const
& right) =
delete
;
82
DBCFileLoader
&
operator=
(
DBCFileLoader
const
& right) =
delete
;
83
};
84
#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
DBCFileLoader::Record
Definition
DBCFileLoader.h:22
DBCFileLoader::Record::offset
unsigned char * offset
Definition
DBCFileLoader.h:54
DBCFileLoader::Record::file
DBCFileLoader & file
Definition
DBCFileLoader.h:55
DBCFileLoader::Record::Record
Record(DBCFileLoader &file_, unsigned char *offset_)
Definition
DBCFileLoader.h:53
DBCFileLoader::Record::getString
const char * getString(size_t field) const
Definition
DBCFileLoader.h:44
DBCFileLoader::Record::getUInt
uint32 getUInt(size_t field) const
Definition
DBCFileLoader.h:31
DBCFileLoader::Record::DBCFileLoader
friend class DBCFileLoader
Definition
DBCFileLoader.h:57
DBCFileLoader::Record::getFloat
float getFloat(size_t field) const
Definition
DBCFileLoader.h:24
DBCFileLoader::Record::getUInt8
uint8 getUInt8(size_t field) const
Definition
DBCFileLoader.h:38
DBCFileLoader::stringSize
uint32 stringSize
Definition
DBCFileLoader.h:77
DBCFileLoader::data
unsigned char * data
Definition
DBCFileLoader.h:79
DBCFileLoader::recordCount
uint32 recordCount
Definition
DBCFileLoader.h:75
DBCFileLoader::getRecord
Record getRecord(size_t id)
Definition
DBCFileLoader.cpp:109
DBCFileLoader::IsLoaded
bool IsLoaded() const
Definition
DBCFileLoader.h:68
DBCFileLoader::DBCFileLoader
DBCFileLoader(DBCFileLoader const &right)=delete
DBCFileLoader::~DBCFileLoader
~DBCFileLoader()
Definition
DBCFileLoader.cpp:100
DBCFileLoader::Load
bool Load(const char *filename, const char *fmt)
Definition
DBCFileLoader.cpp:15
DBCFileLoader::GetCols
uint32 GetCols() const
Definition
DBCFileLoader.h:66
DBCFileLoader::stringTable
unsigned char * stringTable
Definition
DBCFileLoader.h:80
DBCFileLoader::GetOffset
uint32 GetOffset(size_t id) const
Definition
DBCFileLoader.h:67
DBCFileLoader::fieldsOffset
uint32 * fieldsOffset
Definition
DBCFileLoader.h:78
DBCFileLoader::fieldCount
uint32 fieldCount
Definition
DBCFileLoader.h:76
DBCFileLoader::DBCFileLoader
DBCFileLoader()
Definition
DBCFileLoader.cpp:13
DBCFileLoader::recordSize
uint32 recordSize
Definition
DBCFileLoader.h:74
DBCFileLoader::operator=
DBCFileLoader & operator=(DBCFileLoader const &right)=delete
DBCFileLoader::AutoProduceData
char * AutoProduceData(std::string fmt, uint32 &count, char **&indexTable, uint32 sqlRecordCount, uint32 sqlHighestIndex, char *&sqlDataTable)
Definition
DBCFileLoader.cpp:157
DBCFileLoader::GetFormatRecordSize
static uint32 GetFormatRecordSize(std::string format, int32 *index_pos=NULL)
Definition
DBCFileLoader.cpp:115
DBCFileLoader::GetNumRows
uint32 GetNumRows() const
Get begin iterator over records.
Definition
DBCFileLoader.h:64
DBCFileLoader::AutoProduceStrings
char * AutoProduceStrings(std::string fmt, char *dataTable)
Definition
DBCFileLoader.cpp:252
DBCFileLoader::GetRowSize
uint32 GetRowSize() const
Definition
DBCFileLoader.h:65
src
server
shared
DataStores
DBCFileLoader.h
Generated on
for Project SkyFire Core by
1.17.0