From f47ecfe41478b690ef8a8fc2f5a9950d90d33339 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 3 Aug 2013 20:18:12 +0200 Subject: [PATCH] Added unsigned int constructor to ByteArray/String classes Former-commit-id: 2b52c0dabcd6fbf4ad33b31ef3cb84e668edcd54 --- include/Nazara/Core/ByteArray.hpp | 1 + include/Nazara/Core/String.hpp | 1 + src/Nazara/Core/ByteArray.cpp | 13 +++++++++++++ src/Nazara/Core/String.cpp | 24 +++++++++++++++++++++--- src/Nazara/Core/StringStream.cpp | 2 +- 5 files changed, 37 insertions(+), 4 deletions(-) diff --git a/include/Nazara/Core/ByteArray.hpp b/include/Nazara/Core/ByteArray.hpp index 745165e5f..9c0a87733 100644 --- a/include/Nazara/Core/ByteArray.hpp +++ b/include/Nazara/Core/ByteArray.hpp @@ -21,6 +21,7 @@ class NAZARA_API NzByteArray : public NzHashable struct SharedArray; NzByteArray(); + explicit NzByteArray(unsigned int size); NzByteArray(const void* buffer, unsigned int size); NzByteArray(const NzByteArray& buffer); NzByteArray(NzByteArray&& buffer) noexcept; diff --git a/include/Nazara/Core/String.hpp b/include/Nazara/Core/String.hpp index cb38105eb..bd7ab638a 100644 --- a/include/Nazara/Core/String.hpp +++ b/include/Nazara/Core/String.hpp @@ -33,6 +33,7 @@ class NAZARA_API NzString : public NzHashable NzString(); explicit NzString(char character); + explicit NzString(unsigned int length, char character = '\0'); NzString(const char* string); NzString(const char* string, unsigned int length); NzString(const std::string& string); diff --git a/src/Nazara/Core/ByteArray.cpp b/src/Nazara/Core/ByteArray.cpp index dc30e6c93..18fe58a79 100644 --- a/src/Nazara/Core/ByteArray.cpp +++ b/src/Nazara/Core/ByteArray.cpp @@ -29,6 +29,19 @@ m_sharedArray(&emptyArray) { } +NzByteArray::NzByteArray(unsigned int size) +{ + if (size > 0) + { + m_sharedArray = new SharedArray; + m_sharedArray->buffer = new nzUInt8[size]; + m_sharedArray->capacity = size; + m_sharedArray->size = size; + } + else + m_sharedArray = &emptyArray; +} + NzByteArray::NzByteArray(const void* buffer, unsigned int size) { if (size > 0) diff --git a/src/Nazara/Core/String.cpp b/src/Nazara/Core/String.cpp index 42d03d61c..f261dcfed 100644 --- a/src/Nazara/Core/String.cpp +++ b/src/Nazara/Core/String.cpp @@ -77,9 +77,7 @@ m_sharedString(&emptyString) NzString::NzString(char character) { - if (character == '\0') - m_sharedString = &emptyString; - else + if (character != '\0') { m_sharedString = new SharedString; m_sharedString->capacity = 1; @@ -88,6 +86,26 @@ NzString::NzString(char character) m_sharedString->string[0] = character; m_sharedString->string[1] = '\0'; } + else + m_sharedString = &emptyString; +} + +NzString::NzString(unsigned int length, char character) +{ + if (length > 0) + { + m_sharedString = new SharedString; + m_sharedString->capacity = length; + m_sharedString->size = length; + m_sharedString->string = new char[length+1]; + + if (character != '\0') + std::memset(m_sharedString->string, character, length); + + m_sharedString->string[length] = '\0'; + } + else + m_sharedString = &emptyString; } NzString::NzString(const char* string) : diff --git a/src/Nazara/Core/StringStream.cpp b/src/Nazara/Core/StringStream.cpp index 5aafd57fe..994d45b39 100644 --- a/src/Nazara/Core/StringStream.cpp +++ b/src/Nazara/Core/StringStream.cpp @@ -163,7 +163,7 @@ NzStringStream& NzStringStream::operator<<(unsigned char character) { NazaraLock(m_mutex) - m_strings.push_back(NzString(character)); + m_strings.push_back(NzString(static_cast(character))); m_bufferSize++; return *this;