aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/UniqueString.cxx
diff options
context:
space:
mode:
authormitchell <unknown>2019-04-17 00:22:27 -0400
committermitchell <unknown>2019-04-17 00:22:27 -0400
commit5746a0c90259cd39255749a33389b2854100905b (patch)
tree1adec96f4f20b866b5c8babbc21dc30aa80c5a98 /src/UniqueString.cxx
parent639b77a3634190cb6b8ea2e93896b10449a4f687 (diff)
downloadscintilla-mirror-5746a0c90259cd39255749a33389b2854100905b.tar.gz
Backport: Move UniqueStringCopy into its own source file UniqueString.cxx to hide the implementation.
Backport of changeset 7402:751b76b567f9, but with an alternative to C++17's string_view.
Diffstat (limited to 'src/UniqueString.cxx')
-rw-r--r--src/UniqueString.cxx28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/UniqueString.cxx b/src/UniqueString.cxx
new file mode 100644
index 000000000..dcbdc441c
--- /dev/null
+++ b/src/UniqueString.cxx
@@ -0,0 +1,28 @@
+// Scintilla source code edit control
+/** @file UniqueString.cxx
+ ** Define an allocator for UniqueString.
+ **/
+// Copyright 2017 by Neil Hodgson <neilh@scintilla.org>
+// The License.txt file describes the conditions under which this software may be distributed.
+
+#include <cstring>
+#include <algorithm>
+#include <memory>
+
+#include "UniqueString.h"
+
+namespace Scintilla {
+
+/// Equivalent to strdup but produces a std::unique_ptr<const char[]> allocation to go
+/// into collections.
+UniqueString UniqueStringCopy(const char *text) {
+ if (!text) {
+ return UniqueString();
+ }
+ const size_t len = strlen(text);
+ std::unique_ptr<char[]> upcNew(new char[len + 1]);
+ memcpy(&upcNew[0], text, len + 1);
+ return UniqueString(upcNew.release());
+}
+
+}