Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
dbcfile.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 DBCFILE_H
7
#define DBCFILE_H
8
#include <cassert>
9
#include <string>
10
#include "StormLib.h"
11
12
class
DBCFile
13
{
14
public
:
15
DBCFile
(HANDLE file);
16
~DBCFile
();
17
18
// Open database. It must be openened before it can be used.
19
virtual
bool
open
();
20
21
// Database exceptions
22
class
Exception
23
{
24
public
:
25
Exception
(
const
std::string &
message
) :
message
(
message
) { }
26
virtual
~Exception
() { }
27
const
std::string &
getMessage
() {
return
message
; }
28
private
:
29
std::string
message
;
30
};
31
32
class
NotFound
:
public
Exception
33
{
34
public
:
35
NotFound
():
Exception
(
"Key was not found"
) { }
36
};
37
38
// Iteration over database
39
class
Iterator;
40
class
Record
41
{
42
public
:
43
float
getFloat
(
size_t
field)
const
44
{
45
assert(field <
file
._fieldCount);
46
return
*
reinterpret_cast<
float
*
>
(
offset
+ field * 4);
47
}
48
49
unsigned
int
getUInt
(
size_t
field)
const
50
{
51
assert(field <
file
._fieldCount);
52
return
*
reinterpret_cast<
unsigned
int
*
>
(
offset
+ field * 4);
53
}
54
55
int
getInt
(
size_t
field)
const
56
{
57
assert(field <
file
._fieldCount);
58
return
*
reinterpret_cast<
int
*
>
(
offset
+ field * 4);
59
}
60
61
char
const
*
getString
(
size_t
field)
const
62
{
63
assert(field <
file
._fieldCount);
64
size_t
stringOffset =
getUInt
(field);
65
assert(stringOffset <
file
._stringSize);
66
return
reinterpret_cast<
char
*
>
(
file
._stringTable + stringOffset);
67
}
68
69
private
:
70
Record
(
DBCFile
&
file
,
unsigned
char
*
offset
):
file
(
file
),
offset
(
offset
) {}
71
DBCFile
&
file
;
72
unsigned
char
*
offset
;
73
74
friend
class
DBCFile
;
75
friend
class
DBCFile::Iterator
;
76
77
Record
&
operator=
(
Record
const
& right);
78
};
79
81
class
Iterator
82
{
83
public
:
84
Iterator
(
DBCFile
&file,
unsigned
char
* offset) :
record
(file, offset) { }
85
87
Iterator
&
operator++
()
88
{
89
record
.offset +=
record
.file._recordSize;
90
return
*
this
;
91
}
92
94
Record
const
&
operator*
()
const
{
return
record
; }
95
Record
const
*
operator->
()
const
{
return
&
record
; }
96
98
bool
operator==
(
Iterator
const
& b)
const
99
{
100
return
record
.offset == b.
record
.
offset
;
101
}
102
103
bool
operator!=
(
Iterator
const
& b)
const
104
{
105
return
record
.offset != b.
record
.
offset
;
106
}
107
108
private
:
109
Record
record
;
110
111
Iterator
&
operator=
(
Iterator
const
& right);
112
};
113
114
// Get record by id
115
Record
getRecord
(
size_t
id
);
117
Iterator
begin
();
119
Iterator
end
();
121
size_t
getRecordCount
()
const
{
return
_recordCount
; }
122
size_t
getFieldCount
()
const
{
return
_fieldCount
; }
123
size_t
getMaxId
();
124
125
protected
:
126
HANDLE
_file
;
127
size_t
_recordSize
;
128
size_t
_recordCount
;
129
size_t
_fieldCount
;
130
size_t
_stringSize
;
131
unsigned
char
*
_data
;
132
unsigned
char
*
_stringTable
;
133
};
134
135
#endif
DBCFile::Exception::Exception
Exception(const std::string &message)
Definition
dbcfile.h:25
DBCFile::Exception::message
std::string message
Definition
dbcfile.h:29
DBCFile::Exception::~Exception
virtual ~Exception()
Definition
dbcfile.h:26
DBCFile::Exception::getMessage
const std::string & getMessage()
Definition
dbcfile.h:27
DBCFile::Iterator
Definition
dbcfile.h:82
DBCFile::Iterator::operator->
Record const * operator->() const
Definition
dbcfile.h:95
DBCFile::Iterator::operator=
Iterator & operator=(Iterator const &right)
DBCFile::Iterator::operator!=
bool operator!=(Iterator const &b) const
Definition
dbcfile.h:103
DBCFile::Iterator::Iterator
Iterator(DBCFile &file, unsigned char *offset)
Definition
dbcfile.h:84
DBCFile::Iterator::operator==
bool operator==(Iterator const &b) const
Comparison.
Definition
dbcfile.h:98
DBCFile::Iterator::operator*
Record const & operator*() const
Return address of current instance.
Definition
dbcfile.h:94
DBCFile::Iterator::record
Record record
Definition
dbcfile.h:109
DBCFile::Iterator::operator++
Iterator & operator++()
Advance (prefix only).
Definition
dbcfile.h:87
DBCFile::NotFound::NotFound
NotFound()
Definition
dbcfile.h:35
DBCFile::Record
Definition
dbcfile.h:41
DBCFile::Record::Record
Record(DBCFile &file, unsigned char *offset)
Definition
dbcfile.h:70
DBCFile::Record::getString
char const * getString(size_t field) const
Definition
dbcfile.h:61
DBCFile::Record::DBCFile
friend class DBCFile
Definition
dbcfile.h:74
DBCFile::Record::getFloat
float getFloat(size_t field) const
Definition
dbcfile.h:43
DBCFile::Record::getUInt
unsigned int getUInt(size_t field) const
Definition
dbcfile.h:49
DBCFile::Record::getInt
int getInt(size_t field) const
Definition
dbcfile.h:55
DBCFile::Record::file
DBCFile & file
Definition
dbcfile.h:71
DBCFile::Record::offset
unsigned char * offset
Definition
dbcfile.h:72
DBCFile::Record::operator=
Record & operator=(Record const &right)
DBCFile::_stringSize
size_t _stringSize
Definition
dbcfile.h:130
DBCFile::getRecord
Record getRecord(size_t id)
Definition
dbcfile.cpp:68
DBCFile::~DBCFile
~DBCFile()
Definition
dbcfile.cpp:63
DBCFile::_stringTable
unsigned char * _stringTable
Definition
dbcfile.h:132
DBCFile::_data
unsigned char * _data
Definition
dbcfile.h:131
DBCFile::end
Iterator end()
Get begin iterator over records.
Definition
dbcfile.cpp:92
DBCFile::getFieldCount
size_t getFieldCount() const
Definition
dbcfile.h:122
DBCFile::_recordSize
size_t _recordSize
Definition
dbcfile.h:127
DBCFile::getMaxId
size_t getMaxId()
Definition
dbcfile.cpp:74
DBCFile::begin
Iterator begin()
Get begin iterator over records.
Definition
dbcfile.cpp:86
DBCFile::_fieldCount
size_t _fieldCount
Definition
dbcfile.h:129
DBCFile::_recordCount
size_t _recordCount
Definition
dbcfile.h:128
DBCFile::open
virtual bool open()
Definition
dbcfile.cpp:16
DBCFile::_file
HANDLE _file
Definition
dbcfile.h:126
DBCFile::getRecordCount
size_t getRecordCount() const
Trivial.
Definition
dbcfile.h:121
DBCFile::DBCFile
DBCFile(HANDLE file)
Definition
dbcfile.cpp:10
src
tools
map_extractor
dbcfile.h
Generated on
for Project SkyFire Core by
1.17.0