diff options
author | mitchell <unknown> | 2019-04-17 00:22:27 -0400 |
---|---|---|
committer | mitchell <unknown> | 2019-04-17 00:22:27 -0400 |
commit | 5746a0c90259cd39255749a33389b2854100905b (patch) | |
tree | 1adec96f4f20b866b5c8babbc21dc30aa80c5a98 | |
parent | 639b77a3634190cb6b8ea2e93896b10449a4f687 (diff) | |
download | scintilla-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.
-rw-r--r-- | check.mak | 2 | ||||
-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 |
11 files changed, 43 insertions, 13 deletions
@@ -23,7 +23,7 @@ base_src_objs = AutoComplete.o CallTip.o CaseConvert.o CaseFolder.o \ ExternalLexer.o Indicator.o KeyMap.o LineMarker.o MarginView.o \ PerLine.o PositionCache.o RESearch.o RunStyles.o \ ScintillaBase.o Selection.o Style.o UniConversion.o \ - ViewStyle.o XPM.o + ViewStyle.o UniqueString.o XPM.o base_lexlib_objs = Accessor.o CharacterCategory.o CharacterSet.o LexerBase.o \ LexerModule.o LexerNoExceptions.o LexerSimple.o \ PropSetSimple.o StyleContext.o WordList.o diff --git a/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj b/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj index 150157d5f..c49747bcd 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 */; }; @@ -429,6 +430,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>"; }; @@ -775,6 +777,7 @@ 114B6F7311FA7598004FB6AB /* Style.cxx */, 114B6F9511FA75BE004FB6AB /* StyleContext.cxx */, 114B6F7411FA7598004FB6AB /* UniConversion.cxx */, + 281225352256DD2D00AFE50C /* UniqueString.cxx */, 114B6F7511FA7598004FB6AB /* ViewStyle.cxx */, 114B6F9611FA75BE004FB6AB /* WordList.cxx */, 114B6F7611FA7598004FB6AB /* XPM.cxx */, @@ -984,6 +987,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 26cfb2b55..cdd186027 100644 --- a/gtk/makefile +++ b/gtk/makefile @@ -130,7 +130,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) $(LUAOBJS) $(AR) $(ARFLAGS) $@ $^ $(RANLIB) $@ diff --git a/qt/ScintillaEdit/ScintillaEdit.pro b/qt/ScintillaEdit/ScintillaEdit.pro index efb01c7b2..0386d2779 100644 --- a/qt/ScintillaEdit/ScintillaEdit.pro +++ b/qt/ScintillaEdit/ScintillaEdit.pro @@ -30,6 +30,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 c074a1c1b..5103a0944 100644 --- a/qt/ScintillaEditBase/ScintillaEditBase.pro +++ b/qt/ScintillaEditBase/ScintillaEditBase.pro @@ -27,6 +27,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..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()); +} + +} 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 ecd99fd7a..51c4950d5 100644 --- a/test/unit/makefile +++ b/test/unit/makefile @@ -53,7 +53,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 1e056fcba..228689d2c 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 1b6c36933..bc96c76be 100644 --- a/win32/makefile +++ b/win32/makefile @@ -116,6 +116,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 c1fb54cd6..31b362225 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 \ |