aboutsummaryrefslogtreecommitdiffhomepage
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
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.
-rw-r--r--check.mak2
-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
11 files changed, 43 insertions, 13 deletions
diff --git a/check.mak b/check.mak
index 995321ce7..19a2582c7 100644
--- a/check.mak
+++ b/check.mak
@@ -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 \