diff options
-rw-r--r-- | cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj | 4 | ||||
-rw-r--r-- | gtk/makefile | 2 | ||||
-rw-r--r-- | qt/ScintillaEdit/ScintillaEdit.pro | 1 | ||||
-rw-r--r-- | qt/ScintillaEditBase/ScintillaEditBase.pro | 1 | ||||
-rw-r--r-- | src/UniqueString.cxx | 28 | ||||
-rw-r--r-- | src/UniqueString.h | 10 | ||||
-rw-r--r-- | test/unit/makefile | 3 | ||||
-rw-r--r-- | test/unit/test.mak | 3 | ||||
-rw-r--r-- | win32/makefile | 1 | ||||
-rw-r--r-- | win32/scintilla.mak | 1 |
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 \ |