From 86a0cec08f11de875d25012e5b251a91739ce06c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Sat, 6 Aug 2022 01:27:42 +0200 Subject: Rearrange source. --- c/wcharptr.cpp | 61 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 31 insertions(+), 30 deletions(-) (limited to 'c/wcharptr.cpp') diff --git a/c/wcharptr.cpp b/c/wcharptr.cpp index 25ddae1..d1332d5 100644 --- a/c/wcharptr.cpp +++ b/c/wcharptr.cpp @@ -4,8 +4,39 @@ #include "wcharptr.h" #include "win.h" +WcharPtr WcharPtr::FromNarrow(const char* const src, const int cp) +{ + int cbMultiByte = strlen(src)+1; + int cchWideChar = MultiByteToWideChar(cp, 0, src, cbMultiByte, nullptr, 0); + wchar_t* dst = new wchar_t[cchWideChar]; + if (!MultiByteToWideChar(cp, 0, src, cbMultiByte, dst, cchWideChar)) { + delete dst; + throw Win32Error(); + } + return dst; +} + +WcharPtr WcharPtr::Copy(const wchar_t* const src) +{ + const int cb = wcslen(src)+1; + wchar_t* dst = new wchar_t[cb]; + memcpy(dst, src, cb*sizeof(wchar_t)); + return dst; +} + + WcharPtr::WcharPtr() noexcept {} +WcharPtr::~WcharPtr() noexcept +{ + delete m_p; +} + +WcharPtr::operator wchar_t*() noexcept +{ + return m_p; +} + WcharPtr::WcharPtr(wchar_t* const s) noexcept : m_p(s) {} WcharPtr& WcharPtr::operator=(wchar_t* const s) noexcept @@ -26,39 +57,9 @@ WcharPtr& WcharPtr::operator=(WcharPtr&& other) noexcept return *this; } -WcharPtr::operator wchar_t*() noexcept -{ - return m_p; -} - wchar_t* WcharPtr::Release() noexcept { wchar_t* p2 = m_p; m_p = nullptr; return p2; } - -WcharPtr::~WcharPtr() noexcept -{ - delete m_p; -} - -WcharPtr WcharPtr::FromNarrow(const char* const src, const int cp) -{ - int cbMultiByte = strlen(src)+1; - int cchWideChar = MultiByteToWideChar(cp, 0, src, cbMultiByte, nullptr, 0); - wchar_t* dst = new wchar_t[cchWideChar]; - if (!MultiByteToWideChar(cp, 0, src, cbMultiByte, dst, cchWideChar)) { - delete dst; - throw Win32Error(); - } - return dst; -} - -WcharPtr WcharPtr::Copy(const wchar_t* const src) -{ - const int cb = wcslen(src)+1; - wchar_t* dst = new wchar_t[cb]; - memcpy(dst, src, cb*sizeof(wchar_t)); - return dst; -} -- cgit v1.2.3