diff options
Diffstat (limited to 'src/UniqueString.h')
-rw-r--r-- | src/UniqueString.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/UniqueString.h b/src/UniqueString.h new file mode 100644 index 000000000..07da0f171 --- /dev/null +++ b/src/UniqueString.h @@ -0,0 +1,34 @@ +// Scintilla source code edit control +/** @file UniqueString.h + ** Define UniqueString, a unique_ptr based string type for storage in containers + ** and 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. + +#ifndef UNIQUESTRING_H +#define UNIQUESTRING_H + +#ifdef SCI_NAMESPACE +namespace Scintilla { +#endif + +using UniqueString = std::unique_ptr<const char[]>; + +/// Equivalent to strdup but produces a std::unique_ptr<const char[]> allocation to go +/// into collections. +inline UniqueString UniqueStringCopy(const char *text) { + if (!text) { + return UniqueString(); + } + const size_t len = strlen(text); + char *sNew = new char[len + 1]; + std::copy(text, text + len + 1, sNew); + return UniqueString(sNew); +} + +#ifdef SCI_NAMESPACE +} +#endif + +#endif |