aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj4
-rw-r--r--gtk/makefile2
-rw-r--r--qt/ScintillaEdit/ScintillaEdit.pro1
-rw-r--r--qt/ScintillaEditBase/ScintillaEditBase.pro1
-rw-r--r--src/UniqueString.cxx28
-rw-r--r--src/UniqueString.h10
-rw-r--r--test/unit/makefile3
-rw-r--r--test/unit/test.mak3
-rw-r--r--win32/makefile1
-rw-r--r--win32/scintilla.mak1
10 files changed, 42 insertions, 12 deletions
diff --git a/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj b/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj
index 9b0ad21dd..74a6937a8 100644
--- a/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj
+++ b/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj
@@ -200,6 +200,7 @@
280056FC188DDD2C00F200AE /* StringCopy.h in Headers */ = {isa = PBXBuildFile; fileRef = 280056F9188DDD2C00F200AE /* StringCopy.h */; };
280056FD188DDD2C00F200AE /* SubStyles.h in Headers */ = {isa = PBXBuildFile; fileRef = 280056FA188DDD2C00F200AE /* SubStyles.h */; };
28064A05190F12E100E6E47F /* LexDMIS.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28064A04190F12E100E6E47F /* LexDMIS.cxx */; };
+ 281225362256DD2D00AFE50C /* UniqueString.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 281225352256DD2D00AFE50C /* UniqueString.cxx */; };
282D4A961F53FE270082E4D3 /* ILoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 282D4A951F53FE270082E4D3 /* ILoader.h */; settings = {ATTRIBUTES = (Public, ); }; };
28804B2C1EEE232E00C0D154 /* DBCS.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28804B2B1EEE232E00C0D154 /* DBCS.cxx */; };
28A067111A36B42600B4966A /* LexHex.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28A067101A36B42600B4966A /* LexHex.cxx */; };
@@ -428,6 +429,7 @@
280056F9188DDD2C00F200AE /* StringCopy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StringCopy.h; path = ../../lexlib/StringCopy.h; sourceTree = "<group>"; };
280056FA188DDD2C00F200AE /* SubStyles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SubStyles.h; path = ../../lexlib/SubStyles.h; sourceTree = "<group>"; };
28064A04190F12E100E6E47F /* LexDMIS.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexDMIS.cxx; path = ../../lexers/LexDMIS.cxx; sourceTree = "<group>"; };
+ 281225352256DD2D00AFE50C /* UniqueString.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UniqueString.cxx; path = ../../src/UniqueString.cxx; sourceTree = "<group>"; };
282D4A951F53FE270082E4D3 /* ILoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ILoader.h; path = ../../include/ILoader.h; sourceTree = "<group>"; };
282E41F3B9E2BFEDD6A05BE7 /* LexIndent.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexIndent.cxx; path = ../../lexers/LexIndent.cxx; sourceTree = SOURCE_ROOT; };
28804B2B1EEE232E00C0D154 /* DBCS.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DBCS.cxx; path = ../../src/DBCS.cxx; sourceTree = "<group>"; };
@@ -772,6 +774,7 @@
114B6F7311FA7598004FB6AB /* Style.cxx */,
114B6F9511FA75BE004FB6AB /* StyleContext.cxx */,
114B6F7411FA7598004FB6AB /* UniConversion.cxx */,
+ 281225352256DD2D00AFE50C /* UniqueString.cxx */,
114B6F7511FA7598004FB6AB /* ViewStyle.cxx */,
114B6F9611FA75BE004FB6AB /* WordList.cxx */,
114B6F7611FA7598004FB6AB /* XPM.cxx */,
@@ -978,6 +981,7 @@
2744E5B60FC168C500E85C33 /* ScintillaView.mm in Sources */,
28D191A21DEA72C800159938 /* LexEDIFACT.cxx in Sources */,
28BDA1221EFB8F7C00EBD3F3 /* DefaultLexer.cxx in Sources */,
+ 281225362256DD2D00AFE50C /* UniqueString.cxx in Sources */,
114B6F0D11FA7526004FB6AB /* LexAbaqus.cxx in Sources */,
114B6F0E11FA7526004FB6AB /* LexAda.cxx in Sources */,
28B6470C1B54C0720009DC49 /* LexBatch.cxx in Sources */,
diff --git a/gtk/makefile b/gtk/makefile
index 4e1dccaa7..4cd3b7c82 100644
--- a/gtk/makefile
+++ b/gtk/makefile
@@ -118,7 +118,7 @@ $(COMPLIB): Accessor.o CharacterSet.o DefaultLexer.o LexerBase.o LexerModule.o L
ScintillaBase.o ContractionState.o EditModel.o Editor.o EditView.o ExternalLexer.o MarginView.o \
PropSetSimple.o PlatGTK.o \
KeyMap.o LineMarker.o PositionCache.o ScintillaGTK.o ScintillaGTKAccessible.o CellBuffer.o CharacterCategory.o ViewStyle.o \
- RESearch.o RunStyles.o Selection.o Style.o Indicator.o AutoComplete.o UniConversion.o XPM.o \
+ RESearch.o RunStyles.o Selection.o Style.o Indicator.o AutoComplete.o UniConversion.o UniqueString.o XPM.o \
$(MARSHALLER) $(LEXOBJS)
$(AR) $(ARFLAGS) $@ $^
$(RANLIB) $@
diff --git a/qt/ScintillaEdit/ScintillaEdit.pro b/qt/ScintillaEdit/ScintillaEdit.pro
index bfb670aeb..6f01430d6 100644
--- a/qt/ScintillaEdit/ScintillaEdit.pro
+++ b/qt/ScintillaEdit/ScintillaEdit.pro
@@ -22,6 +22,7 @@ SOURCES += \
../ScintillaEditBase/ScintillaEditBase.cpp \
../../src/XPM.cxx \
../../src/ViewStyle.cxx \
+ ../../src/UniqueString.cxx \
../../src/UniConversion.cxx \
../../src/Style.cxx \
../../src/Selection.cxx \
diff --git a/qt/ScintillaEditBase/ScintillaEditBase.pro b/qt/ScintillaEditBase/ScintillaEditBase.pro
index 16c9cf7ae..8d59f86ce 100644
--- a/qt/ScintillaEditBase/ScintillaEditBase.pro
+++ b/qt/ScintillaEditBase/ScintillaEditBase.pro
@@ -20,6 +20,7 @@ SOURCES += \
ScintillaEditBase.cpp \
../../src/XPM.cxx \
../../src/ViewStyle.cxx \
+ ../../src/UniqueString.cxx \
../../src/UniConversion.cxx \
../../src/Style.cxx \
../../src/Selection.cxx \
diff --git a/src/UniqueString.cxx b/src/UniqueString.cxx
new file mode 100644
index 000000000..7e289a1a0
--- /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 <string_view>
+#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 std::string_view sv(text);
+ std::unique_ptr<char[]> upcNew = std::make_unique<char[]>(sv.length() + 1);
+ sv.copy(upcNew.get(), sv.length());
+ return UniqueString(upcNew.release());
+}
+
+}
diff --git a/src/UniqueString.h b/src/UniqueString.h
index 8d95cb1ab..44ba26652 100644
--- a/src/UniqueString.h
+++ b/src/UniqueString.h
@@ -19,15 +19,7 @@ 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);
-}
+UniqueString UniqueStringCopy(const char *text);
}
diff --git a/test/unit/makefile b/test/unit/makefile
index 6085b54e9..6d5ead6cd 100644
--- a/test/unit/makefile
+++ b/test/unit/makefile
@@ -55,7 +55,8 @@ TESTEDSRC=\
../../src/ContractionState.cxx \
../../src/Decoration.cxx \
../../src/RunStyles.cxx \
- ../../src/UniConversion.cxx
+ ../../src/UniConversion.cxx \
+ ../../src/UniqueString.cxx
TESTS=$(EXE)
diff --git a/test/unit/test.mak b/test/unit/test.mak
index 0db79c69a..fc4bb1671 100644
--- a/test/unit/test.mak
+++ b/test/unit/test.mak
@@ -18,7 +18,8 @@ TESTEDSRC=\
../../src/ContractionState.cxx \
../../src/Decoration.cxx \
../../src/RunStyles.cxx \
- ../../src/UniConversion.cxx
+ ../../src/UniConversion.cxx \
+ ../../src/UniqueString.cxx
TESTS=$(EXE)
diff --git a/win32/makefile b/win32/makefile
index 149d689b2..d6c918600 100644
--- a/win32/makefile
+++ b/win32/makefile
@@ -103,6 +103,7 @@ BASEOBJS = \
Selection.o \
Style.o \
UniConversion.o \
+ UniqueString.o \
ViewStyle.o \
XPM.o \
HanjaDic.o
diff --git a/win32/scintilla.mak b/win32/scintilla.mak
index 58656fd31..217ba1131 100644
--- a/win32/scintilla.mak
+++ b/win32/scintilla.mak
@@ -93,6 +93,7 @@ BASEOBJS=\
$(DIR_O)\Selection.obj \
$(DIR_O)\Style.obj \
$(DIR_O)\UniConversion.obj \
+ $(DIR_O)\UniqueString.obj \
$(DIR_O)\ViewStyle.obj \
$(DIR_O)\XPM.obj \
$(DIR_O)\HanjaDic.obj \