1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-22 17:18:39 +00:00

Reserve vectors before pushing and other code quality changes (#11161)

This commit is contained in:
sfan5 2021-04-05 13:38:31 +02:00 committed by GitHub
parent 3e1904fa8c
commit f0bad0e2ba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 106 additions and 108 deletions

View file

@ -96,16 +96,15 @@ void AreaStore::deserialize(std::istream &is)
u16 num_areas = readU16(is);
std::vector<Area> areas;
areas.reserve(num_areas);
for (u32 i = 0; i < num_areas; ++i) {
Area a(U32_MAX);
a.minedge = readV3S16(is);
a.maxedge = readV3S16(is);
u16 data_len = readU16(is);
char *data = new char[data_len];
is.read(data, data_len);
a.data = std::string(data, data_len);
areas.emplace_back(a);
delete [] data;
a.data = std::string(data_len, '\0');
is.read(&a.data[0], data_len);
areas.emplace_back(std::move(a));
}
bool read_ids = is.good(); // EOF for old formats

View file

@ -90,8 +90,7 @@ public:
bool get(const Key &name, Value *result) const
{
MutexAutoLock lock(m_mutex);
typename std::map<Key, Value>::const_iterator n =
m_values.find(name);
auto n = m_values.find(name);
if (n == m_values.end())
return false;
if (result)
@ -103,11 +102,9 @@ public:
{
MutexAutoLock lock(m_mutex);
std::vector<Value> result;
for (typename std::map<Key, Value>::const_iterator
it = m_values.begin();
it != m_values.end(); ++it){
result.reserve(m_values.size());
for (auto it = m_values.begin(); it != m_values.end(); ++it)
result.push_back(it->second);
}
return result;
}
@ -136,7 +133,7 @@ public:
return m_queue.empty();
}
void push_back(T t)
void push_back(const T &t)
{
MutexAutoLock lock(m_mutex);
m_queue.push_back(t);
@ -151,7 +148,7 @@ public:
if (m_signal.wait(wait_time_max_ms)) {
MutexAutoLock lock(m_mutex);
T t = m_queue.front();
T t = std::move(m_queue.front());
m_queue.pop_front();
return t;
}
@ -164,7 +161,7 @@ public:
if (m_signal.wait(wait_time_max_ms)) {
MutexAutoLock lock(m_mutex);
T t = m_queue.front();
T t = std::move(m_queue.front());
m_queue.pop_front();
return t;
}
@ -178,7 +175,7 @@ public:
MutexAutoLock lock(m_mutex);
T t = m_queue.front();
T t = std::move(m_queue.front());
m_queue.pop_front();
return t;
}
@ -188,7 +185,7 @@ public:
if (m_signal.wait(wait_time_max_ms)) {
MutexAutoLock lock(m_mutex);
T t = m_queue.back();
T t = std::move(m_queue.back());
m_queue.pop_back();
return t;
}
@ -204,7 +201,7 @@ public:
if (m_signal.wait(wait_time_max_ms)) {
MutexAutoLock lock(m_mutex);
T t = m_queue.back();
T t = std::move(m_queue.back());
m_queue.pop_back();
return t;
}
@ -218,7 +215,7 @@ public:
MutexAutoLock lock(m_mutex);
T t = m_queue.back();
T t = std::move(m_queue.back());
m_queue.pop_back();
return t;
}

View file

@ -65,12 +65,14 @@ void EnrichedString::operator=(const wchar_t *str)
addAtEnd(translate_string(std::wstring(str)), m_default_color);
}
void EnrichedString::addAtEnd(const std::wstring &s, const SColor &initial_color)
void EnrichedString::addAtEnd(const std::wstring &s, SColor initial_color)
{
SColor color(initial_color);
bool use_default = (m_default_length == m_string.size() &&
color == m_default_color);
m_colors.reserve(m_colors.size() + s.size());
size_t i = 0;
while (i < s.length()) {
if (s[i] != L'\x1b') {
@ -200,12 +202,6 @@ const std::wstring &EnrichedString::getString() const
return m_string;
}
void EnrichedString::setDefaultColor(const irr::video::SColor &color)
{
m_default_color = color;
updateDefaultColor();
}
void EnrichedString::updateDefaultColor()
{
sanity_check(m_default_length <= m_colors.size());

View file

@ -23,18 +23,22 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <vector>
#include <SColor.h>
using namespace irr;
class EnrichedString {
public:
EnrichedString();
EnrichedString(const std::wstring &s,
const irr::video::SColor &color = irr::video::SColor(255, 255, 255, 255));
const video::SColor &color = video::SColor(255, 255, 255, 255));
EnrichedString(const wchar_t *str,
const irr::video::SColor &color = irr::video::SColor(255, 255, 255, 255));
const video::SColor &color = video::SColor(255, 255, 255, 255));
EnrichedString(const std::wstring &string,
const std::vector<irr::video::SColor> &colors);
void clear();
const std::vector<video::SColor> &colors);
void operator=(const wchar_t *str);
void addAtEnd(const std::wstring &s, const irr::video::SColor &color);
void clear();
void addAtEnd(const std::wstring &s, video::SColor color);
// Adds the character source[i] at the end.
// An EnrichedString should always be able to be copied
@ -49,12 +53,16 @@ public:
EnrichedString operator+(const EnrichedString &other) const;
void operator+=(const EnrichedString &other);
const wchar_t *c_str() const;
const std::vector<irr::video::SColor> &getColors() const;
const std::vector<video::SColor> &getColors() const;
const std::wstring &getString() const;
void setDefaultColor(const irr::video::SColor &color);
inline void setDefaultColor(video::SColor color)
{
m_default_color = color;
updateDefaultColor();
}
void updateDefaultColor();
inline const irr::video::SColor &getDefaultColor() const
inline const video::SColor &getDefaultColor() const
{
return m_default_color;
}
@ -80,11 +88,11 @@ public:
{
return m_has_background;
}
inline irr::video::SColor getBackground() const
inline video::SColor getBackground() const
{
return m_background;
}
inline void setBackground(const irr::video::SColor &color)
inline void setBackground(video::SColor color)
{
m_background = color;
m_has_background = true;
@ -92,10 +100,10 @@ public:
private:
std::wstring m_string;
std::vector<irr::video::SColor> m_colors;
std::vector<video::SColor> m_colors;
bool m_has_background;
irr::video::SColor m_default_color;
irr::video::SColor m_background;
video::SColor m_default_color;
video::SColor m_background;
// This variable defines the length of the default-colored text.
// Change this to a std::vector if an "end coloring" tag is wanted.
size_t m_default_length = 0;