diff --git a/src/beast/Builds/VisualStudio2013/beast.vcxproj b/src/beast/Builds/VisualStudio2013/beast.vcxproj
index 899aecb55..b9ab9df0a 100644
--- a/src/beast/Builds/VisualStudio2013/beast.vcxproj
+++ b/src/beast/Builds/VisualStudio2013/beast.vcxproj
@@ -271,7 +271,6 @@
-
@@ -359,7 +358,6 @@
-
@@ -1268,12 +1266,6 @@
true
true
-
- true
- true
- true
- true
-
true
true
diff --git a/src/beast/Builds/VisualStudio2013/beast.vcxproj.filters b/src/beast/Builds/VisualStudio2013/beast.vcxproj.filters
index 568e628c0..6e339bc91 100644
--- a/src/beast/Builds/VisualStudio2013/beast.vcxproj.filters
+++ b/src/beast/Builds/VisualStudio2013/beast.vcxproj.filters
@@ -464,9 +464,6 @@
beast_core\text
-
- beast_core\text
-
beast_core\threads
@@ -683,9 +680,6 @@
beast_core\maths
-
- beast_asio\sockets
-
beast_asio\basics
@@ -1481,9 +1475,6 @@
beast_core\text
-
- beast_core\text
-
beast_core\threads
diff --git a/src/beast/modules/beast_core/beast_core.cpp b/src/beast/modules/beast_core/beast_core.cpp
index 2bcd1f08e..156cf509c 100644
--- a/src/beast/modules/beast_core/beast_core.cpp
+++ b/src/beast/modules/beast_core/beast_core.cpp
@@ -182,7 +182,6 @@ namespace beast
#include "text/StringArray.cpp"
#include "text/StringPairArray.cpp"
#include "text/StringPool.cpp"
-#include "text/TextDiff.cpp"
#include "thread/impl/TrackedMutex.cpp"
#include "thread/DeadlineTimer.cpp"
diff --git a/src/beast/modules/beast_core/beast_core.h b/src/beast/modules/beast_core/beast_core.h
index c96186239..4f0e544bb 100644
--- a/src/beast/modules/beast_core/beast_core.h
+++ b/src/beast/modules/beast_core/beast_core.h
@@ -194,7 +194,6 @@ class FileOutputStream;
#include "text/LocalisedStrings.h"
#include "diagnostic/SemanticVersion.h"
#include "text/StringPool.h"
-#include "text/TextDiff.h"
#include "threads/ChildProcess.h"
#include "threads/DynamicLibrary.h"
#include "threads/HighResolutionTimer.h"
diff --git a/src/beast/modules/beast_core/text/TextDiff.cpp b/src/beast/modules/beast_core/text/TextDiff.cpp
deleted file mode 100644
index 8dfbce64b..000000000
--- a/src/beast/modules/beast_core/text/TextDiff.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-//------------------------------------------------------------------------------
-/*
- This file is part of Beast: https://github.com/vinniefalco/Beast
- Copyright 2013, Vinnie Falco
-
- Portions of this file are from JUCE.
- Copyright (c) 2013 - Raw Material Software Ltd.
- Please visit http://www.juce.com
-
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted, provided that the above
- copyright notice and this permission notice appear in all copies.
-
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-*/
-//==============================================================================
-
-struct TextDiffHelpers
-{
- enum { minLengthToMatch = 3 };
-
- struct StringRegion
- {
- StringRegion (const String& s) noexcept
- : text (s.getCharPointer()), start (0), length (s.length()) {}
-
- StringRegion (const String::CharPointerType t, int s, int len) noexcept
- : text (t), start (s), length (len) {}
-
- String::CharPointerType text;
- int start, length;
- };
-
- static void addInsertion (TextDiff& td, const String::CharPointerType text, int index, int length)
- {
- TextDiff::Change c;
- c.insertedText = String (text, (size_t) length);
- c.start = index;
- c.length = length;
- td.changes.add (c);
- }
-
- static void addDeletion (TextDiff& td, int index, int length)
- {
- TextDiff::Change c;
- c.start = index;
- c.length = length;
- td.changes.add (c);
- }
-
- static void diffSkippingCommonStart (TextDiff& td, const StringRegion& a, const StringRegion& b)
- {
- String::CharPointerType sa (a.text);
- String::CharPointerType sb (b.text);
- const int maxLen = bmax (a.length, b.length);
-
- for (int i = 0; i < maxLen; ++i, ++sa, ++sb)
- {
- if (*sa != *sb)
- {
- diffRecursively (td, StringRegion (sa, a.start + i, a.length - i),
- StringRegion (sb, b.start + i, b.length - i));
- break;
- }
- }
- }
-
- static void diffRecursively (TextDiff& td, const StringRegion& a, const StringRegion& b)
- {
- int indexA, indexB;
- const int len = findLongestCommonSubstring (a.text, a.length,
- b.text, b.length,
- indexA, indexB);
-
- if (len >= minLengthToMatch)
- {
- if (indexA > 0 && indexB > 0)
- diffSkippingCommonStart (td, StringRegion (a.text, a.start, indexA),
- StringRegion (b.text, b.start, indexB));
- else if (indexA > 0)
- addDeletion (td, b.start, indexA);
- else if (indexB > 0)
- addInsertion (td, b.text, b.start, indexB);
-
- diffRecursively (td, StringRegion (a.text + indexA + len, a.start + indexA + len, a.length - indexA - len),
- StringRegion (b.text + indexB + len, b.start + indexB + len, b.length - indexB - len));
- }
- else
- {
- if (a.length > 0) addDeletion (td, b.start, a.length);
- if (b.length > 0) addInsertion (td, b.text, b.start, b.length);
- }
- }
-
- static int findLongestCommonSubstring (String::CharPointerType a, const int lenA,
- const String::CharPointerType b, const int lenB,
- int& indexInA, int& indexInB)
- {
- if (lenA == 0 || lenB == 0)
- return 0;
-
- HeapBlock lines;
- lines.calloc (2 + 2 * (size_t) lenB);
-
- int* l0 = lines;
- int* l1 = l0 + lenB + 1;
-
- int bestLength = 0;
- indexInA = indexInB = 0;
-
- for (int i = 0; i < lenA; ++i)
- {
- const beast_wchar ca = a.getAndAdvance();
- String::CharPointerType b2 (b);
-
- for (int j = 0; j < lenB; ++j)
- {
- if (ca != b2.getAndAdvance())
- {
- l1[j + 1] = 0;
- }
- else
- {
- const int len = l0[j] + 1;
- l1[j + 1] = len;
-
- if (len > bestLength)
- {
- bestLength = len;
- indexInA = i;
- indexInB = j;
- }
- }
- }
-
- std::swap (l0, l1);
- }
-
- indexInA -= bestLength - 1;
- indexInB -= bestLength - 1;
- return bestLength;
- }
-};
-
-TextDiff::TextDiff (const String& original, const String& target)
-{
- TextDiffHelpers::diffSkippingCommonStart (*this, original, target);
-}
-
-String TextDiff::appliedTo (String text) const
-{
- for (int i = 0; i < changes.size(); ++i)
- text = changes.getReference(i).appliedTo (text);
-
- return text;
-}
-
-bool TextDiff::Change::isDeletion() const noexcept
-{
- return insertedText.isEmpty();
-}
-
-String TextDiff::Change::appliedTo (const String& text) const noexcept
-{
- return text.substring (0, start) + (isDeletion() ? text.substring (start + length)
- : (insertedText + text.substring (start)));
-}
-
-//==============================================================================
-
-class DiffTests : public UnitTest
-{
-public:
- DiffTests() : UnitTest ("TextDiff", "beast") {}
-
- static String createString()
- {
- beast_wchar buffer[50] = { 0 };
- Random r;
-
- for (int i = r.nextInt (49); --i >= 0;)
- {
- if (r.nextInt (10) == 0)
- {
- do
- {
- buffer[i] = (beast_wchar) (1 + r.nextInt (0x10ffff - 1));
- }
- while (! CharPointer_UTF16::canRepresent (buffer[i]));
- }
- else
- buffer[i] = (beast_wchar) ('a' + r.nextInt (3));
- }
-
- return CharPointer_UTF32 (buffer);
- }
-
- void testDiff (const String& a, const String& b)
- {
- TextDiff diff (a, b);
- const String result (diff.appliedTo (a));
- expectEquals (result, b);
- }
-
- void runTest()
- {
- beginTestCase ("TextDiff");
-
- testDiff (String::empty, String::empty);
- testDiff ("x", String::empty);
- testDiff (String::empty, "x");
- testDiff ("x", "x");
- testDiff ("x", "y");
- testDiff ("xxx", "x");
- testDiff ("x", "xxx");
-
- for (int i = 5000; --i >= 0;)
- {
- String s (createString());
- testDiff (s, createString());
- testDiff (s + createString(), s + createString());
- }
- }
-};
-
-static DiffTests diffTests;
diff --git a/src/beast/modules/beast_core/text/TextDiff.h b/src/beast/modules/beast_core/text/TextDiff.h
deleted file mode 100644
index 2e900b999..000000000
--- a/src/beast/modules/beast_core/text/TextDiff.h
+++ /dev/null
@@ -1,75 +0,0 @@
-//------------------------------------------------------------------------------
-/*
- This file is part of Beast: https://github.com/vinniefalco/Beast
- Copyright 2013, Vinnie Falco
-
- Portions of this file are from JUCE.
- Copyright (c) 2013 - Raw Material Software Ltd.
- Please visit http://www.juce.com
-
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted, provided that the above
- copyright notice and this permission notice appear in all copies.
-
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-*/
-//==============================================================================
-
-#ifndef BEAST_TEXTDIFF_H_INCLUDED
-#define BEAST_TEXTDIFF_H_INCLUDED
-
-
-/**
- Calculates and applies a sequence of changes to convert one text string into
- another.
-
- Once created, the TextDiff object contains an array of change objects, where
- each change can be either an insertion or a deletion. When applied in order
- to the original string, these changes will convert it to the target string.
-*/
-class BEAST_API TextDiff
-{
-public:
- /** Creates a set of diffs for converting the original string into the target. */
- TextDiff (const String& original,
- const String& target);
-
- /** Applies this sequence of changes to the original string, producing the
- target string that was specified when generating them.
-
- Obviously it only makes sense to call this function with the string that
- was originally passed to the constructor. Any other input will produce an
- undefined result.
- */
- String appliedTo (String text) const;
-
- /** Describes a change, which can be either an insertion or deletion. */
- struct Change
- {
- String insertedText; /**< If this change is a deletion, this string will be empty; otherwise,
- it'll be the text that should be inserted at the index specified by start. */
- int start; /**< Specifies the character index in a string at which text should be inserted or deleted. */
- int length; /**< If this change is a deletion, this specifies the number of characters to delete. For an
- insertion, this is the length of the new text being inserted. */
-
- /** Returns true if this change is a deletion, or false for an insertion. */
- bool isDeletion() const noexcept;
-
- /** Returns the result of applying this change to a string. */
- String appliedTo (const String& original) const noexcept;
- };
-
- /** The list of changes required to perform the transformation.
- Applying each of these, in order, to the original string will produce the target.
- */
- Array changes;
-};
-
-
-#endif // BEAST_TEXTDIFF_H_INCLUDED