TrinityCore
Field.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "Field.h"
19#include "Errors.h"
20#include "FieldValueConverter.h"
21#include "Log.h"
22#include <cstring>
23
24Field::Field() : _value(nullptr), _length(0), _meta(nullptr)
25{
26}
27
28Field::~Field() = default;
29
31{
32 if (!_value)
33 return 0;
34
36}
37
39{
40 if (!_value)
41 return 0;
42
44}
45
47{
48 if (!_value)
49 return 0;
50
52}
53
55{
56 if (!_value)
57 return 0;
58
60}
61
63{
64 if (!_value)
65 return 0;
66
68}
69
71{
72 if (!_value)
73 return 0;
74
76}
77
79{
80 if (!_value)
81 return 0;
82
84}
85
87{
88 if (!_value)
89 return 0;
90
92}
93
94float Field::GetFloat() const
95{
96 if (!_value)
97 return 0.0f;
98
100}
101
102double Field::GetDouble() const
103{
104 if (!_value)
105 return 0.0;
106
108}
109
110char const* Field::GetCString() const
111{
112 if (!_value)
113 return nullptr;
114
116}
117
118std::string Field::GetString() const
119{
120 if (!_value)
121 return "";
122
123 char const* string = GetCString();
124 if (!string)
125 return "";
126
127 return std::string(string, _length);
128}
129
130std::string_view Field::GetStringView() const
131{
132 if (!_value)
133 return {};
134
135 char const* const string = GetCString();
136 if (!string)
137 return {};
138
139 return { string, _length };
140}
141
142std::vector<uint8> Field::GetBinary() const
143{
144 std::vector<uint8> result;
145 if (!_value || !_length)
146 return result;
147
148 result.resize(_length);
149 memcpy(result.data(), _value, _length);
150 return result;
151}
152
153void Field::GetBinarySizeChecked(uint8* buf, size_t length) const
154{
155 ASSERT(_value && (_length == length), "Expected %zu-byte binary blob, got %sdata (%u bytes) instead", length, _value ? "" : "no ", _length);
156 memcpy(buf, _value, length);
157}
158
159void Field::SetValue(char const* newValue, uint32 length)
160{
161 // This value stores raw bytes that have to be explicitly cast later
162 _value = newValue;
163 _length = length;
164}
165
167{
168 _meta = meta;
169}
uint8_t uint8
Definition: Define.h:144
int64_t int64
Definition: Define.h:137
int16_t int16
Definition: Define.h:139
int8_t int8
Definition: Define.h:140
int32_t int32
Definition: Define.h:138
uint64_t uint64
Definition: Define.h:141
uint16_t uint16
Definition: Define.h:143
uint32_t uint32
Definition: Define.h:142
#define ASSERT
Definition: Errors.h:68
virtual uint64 GetUInt64(char const *data, uint32 size, QueryResultFieldMetadata const *meta) const =0
virtual float GetFloat(char const *data, uint32 size, QueryResultFieldMetadata const *meta) const =0
virtual double GetDouble(char const *data, uint32 size, QueryResultFieldMetadata const *meta) const =0
virtual uint8 GetUInt8(char const *data, uint32 size, QueryResultFieldMetadata const *meta) const =0
virtual int64 GetInt64(char const *data, uint32 size, QueryResultFieldMetadata const *meta) const =0
virtual uint16 GetUInt16(char const *data, uint32 size, QueryResultFieldMetadata const *meta) const =0
virtual int32 GetInt32(char const *data, uint32 size, QueryResultFieldMetadata const *meta) const =0
virtual uint32 GetUInt32(char const *data, uint32 size, QueryResultFieldMetadata const *meta) const =0
virtual int8 GetInt8(char const *data, uint32 size, QueryResultFieldMetadata const *meta) const =0
virtual int16 GetInt16(char const *data, uint32 size, QueryResultFieldMetadata const *meta) const =0
virtual char const * GetCString(char const *data, uint32 size, QueryResultFieldMetadata const *meta) const =0
char const * _value
Definition: Field.h:131
uint8 GetUInt8() const
Definition: Field.cpp:30
QueryResultFieldMetadata const * _meta
Definition: Field.h:136
Field()
Definition: Field.cpp:24
std::string GetString() const
Definition: Field.cpp:118
uint32 _length
Definition: Field.h:132
void SetMetadata(QueryResultFieldMetadata const *meta)
Definition: Field.cpp:166
double GetDouble() const
Definition: Field.cpp:102
std::vector< uint8 > GetBinary() const
Definition: Field.cpp:142
int64 GetInt64() const
Definition: Field.cpp:86
int8 GetInt8() const
Definition: Field.cpp:38
std::string_view GetStringView() const
Definition: Field.cpp:130
uint64 GetUInt64() const
Definition: Field.cpp:78
int16 GetInt16() const
Definition: Field.cpp:54
uint16 GetUInt16() const
Definition: Field.cpp:46
char const * GetCString() const
Definition: Field.cpp:110
float GetFloat() const
Definition: Field.cpp:94
void GetBinarySizeChecked(uint8 *buf, size_t size) const
Definition: Field.cpp:153
void SetValue(char const *newValue, uint32 length)
Definition: Field.cpp:159
uint32 GetUInt32() const
Definition: Field.cpp:62
int32 GetInt32() const
Definition: Field.cpp:70
BaseDatabaseResultValueConverter const * Converter
Definition: Field.h:56