Core/Utils: some code style adjustments, 6d6077e follow-up

This commit is contained in:
Treeston
2020-01-31 20:50:06 +01:00
committed by Ovahlord
parent 3ab2d9575e
commit cd3fa07389
2 changed files with 11 additions and 11 deletions

View File

@@ -41,7 +41,7 @@ namespace Trinity
}
template <class T>
class BufferWriteGuard
class CheckedBufferOutputIterator
{
public:
using iterator_category = std::output_iterator_tag;
@@ -50,20 +50,20 @@ namespace Trinity
using reference = T&;
using difference_type = std::ptrdiff_t;
BufferWriteGuard(T* buf, size_t n) : _buf(buf), _n(n) {}
CheckedBufferOutputIterator(T* buf, size_t n) : _buf(buf), _end(buf+n) {}
T& operator*() const { check(); return *_buf; }
BufferWriteGuard& operator++() { check(); ++_buf; --_n; return *this; }
T* operator++(int) { check(); T* b = _buf; ++_buf; --_n; return b; }
CheckedBufferOutputIterator& operator++() { check(); ++_buf; return *this; }
CheckedBufferOutputIterator operator++(int) { CheckedBufferOutputIterator v = *this; operator++(); return v; }
size_t size() const { return _n; }
size_t remaining() const { return (_end - _buf); }
private:
T* _buf;
size_t _n;
void check()
T* _end;
void check() const
{
if (!_n)
if (!(_buf < _end))
throw std::out_of_range("index");
}
};

View File

@@ -286,9 +286,9 @@ bool Utf8toWStr(char const* utf8str, size_t csize, wchar_t* wstr, size_t& wsize)
{
try
{
Trinity::BufferWriteGuard<wchar_t> guard(wstr, wsize);
guard = utf8::utf8to16(utf8str, utf8str + csize, guard);
wsize -= guard.size(); // remaining unused space
Trinity::CheckedBufferOutputIterator<wchar_t> out(wstr, wsize);
out = utf8::utf8to16(utf8str, utf8str + csize, out);
wsize -= out.remaining(); // remaining unused space
wstr[wsize] = L'\0';
}
catch (std::exception)