diff --git a/externals/coda-oss/UnitTest/UnitTest.vcxproj b/externals/coda-oss/UnitTest/UnitTest.vcxproj
index 19508e59c..d79dab6f9 100644
--- a/externals/coda-oss/UnitTest/UnitTest.vcxproj
+++ b/externals/coda-oss/UnitTest/UnitTest.vcxproj
@@ -325,10 +325,6 @@
true
true
-
- true
- true
-
true
true
diff --git a/externals/coda-oss/UnitTest/UnitTest.vcxproj.filters b/externals/coda-oss/UnitTest/UnitTest.vcxproj.filters
index cd789e927..f838a0433 100644
--- a/externals/coda-oss/UnitTest/UnitTest.vcxproj.filters
+++ b/externals/coda-oss/UnitTest/UnitTest.vcxproj.filters
@@ -258,9 +258,6 @@
hdf5.lite
-
- sys
-
diff --git a/externals/coda-oss/UnitTest/sys.cpp b/externals/coda-oss/UnitTest/sys.cpp
index 7bc804707..6561d2002 100644
--- a/externals/coda-oss/UnitTest/sys.cpp
+++ b/externals/coda-oss/UnitTest/sys.cpp
@@ -23,7 +23,6 @@
#include
#include
#include
-#include
namespace sys
{
@@ -59,8 +58,4 @@ TEST_CLASS(test_path){ public:
#include "sys/unittests/test_path.cpp"
};
-TEST_CLASS(test_ximd){ public:
-#include "sys/unittests/test_ximd.cpp"
-};
-
}
\ No newline at end of file
diff --git a/externals/coda-oss/modules/c++/coda-oss.vcxproj.filters b/externals/coda-oss/modules/c++/coda-oss.vcxproj.filters
index d755f9137..04a9d4d66 100644
--- a/externals/coda-oss/modules/c++/coda-oss.vcxproj.filters
+++ b/externals/coda-oss/modules/c++/coda-oss.vcxproj.filters
@@ -361,13 +361,13 @@
math.poly
- str\polygon
+ polygon
- str\polygon
+ polygon
- str\polygon
+ polygon
config
@@ -1117,7 +1117,7 @@
math.linear
- str\polygon
+ polygon
cli
@@ -1496,7 +1496,7 @@
{59f3d9a1-06d3-4779-aef2-cc55223c3017}
-
+
{f2544ccb-0933-44c7-af39-cd986982af3d}
diff --git a/externals/coda-oss/modules/c++/logging/source/Setup.cpp b/externals/coda-oss/modules/c++/logging/source/Setup.cpp
index 345c6b516..b8ff117bd 100644
--- a/externals/coda-oss/modules/c++/logging/source/Setup.cpp
+++ b/externals/coda-oss/modules/c++/logging/source/Setup.cpp
@@ -35,7 +35,7 @@
std::unique_ptr
logging::setupLogger(const path& program_,
const std::string& logLevel,
- const path& logFile_,
+ const path& logFile,
const std::string& logFormat,
size_t logCount,
size_t logBytes)
@@ -44,29 +44,25 @@ logging::setupLogger(const path& program_,
std::unique_ptr log(new logging::Logger(program));
// setup logging level
- std::string lev = logLevel;
- str::upper(lev);
+ auto lev = str::upper(logLevel);
str::trim(lev);
- logging::LogLevel level = (lev.empty()) ? logging::LogLevel::LOG_WARNING :
- logging::LogLevel(lev);
+ const auto level = lev.empty() ? logging::LogLevel::LOG_WARNING : logging::LogLevel(lev);
// setup logging formatter
std::unique_ptr formatter;
- const auto logFile = logFile_.string();
- const auto file = str::lower(logFile);
+ const auto file = str::lower(logFile.string());
if (str::endsWith(file, ".xml"))
{
- formatter.reset(
- new logging::XMLFormatter("", ""));
+ formatter = std::make_unique("", "");
}
else
{
- formatter.reset(new logging::StandardFormatter(logFormat));
+ formatter = std::make_unique(logFormat);
}
// setup logging handler
std::unique_ptr logHandler;
- if (file.empty() || file == "console")
+ if (file.empty() || (file == "console") || (file == "-"))
logHandler.reset(new logging::StreamHandler());
else
{
diff --git a/externals/coda-oss/modules/c++/str/include/str/Manip.h b/externals/coda-oss/modules/c++/str/include/str/Manip.h
index c9c96eb60..c50a37555 100644
--- a/externals/coda-oss/modules/c++/str/include/str/Manip.h
+++ b/externals/coda-oss/modules/c++/str/include/str/Manip.h
@@ -211,26 +211,30 @@ inline std::string upper(const std::string& s)
// At this point, you might want to `lower()` and `upper()` for UTF-8 and/or
// Windows-1252. That can be done, but ... our needs are mostly English (99.9%)
-// with a very occassional smattering of French (Canada). We've gotten by this
+// with a very occassional smattering of (Canadian-) French. We've gotten by this
// long without being able to upper/lower 'ä' and 'Ä' and there's no current
// requirement to do so.
//
// Furthermore, while Windows-1252 is easy as it's a single-byte encoding and
-// covers many european languages, the standard is UTF-8.
-// Upper/lower-casing in Unicode is quite a bit more complicated as there can be
+// covers many european languages, the standard is UTF-8. Changing case
+// with Unicode is quite a bit more complicated as there can be
// numerous rules for various languages. For example, in German, the "old
// rules" where that 'ß' was uppercased to "SS"; however, there is now a 'ẞ'.
// And then there are semantics: in German, no word can begin with 'ß' (or 'ẞ')
// making "ßanything" rather non-sensical.
//
// So for now (until there is a real use case), just "define these problems
-// away" by not implementing `w1252_lower()`, `utf8_upper()`, etc.
+// away" by not exposing `w1252_lower()`, `utf8_upper()`, etc.
/*
+// With Windows-1252 encoding, we can convert between 'ä' and 'Ä'.
CODA_OSS_API void w1252_lower(std::string& s);
CODA_OSS_API void w1252_upper(std::string& s);
CODA_OSS_API void lower(str::W1252string& s);
CODA_OSS_API void upper(str::W1252string& s);
+// Hooking up UTF-8 for completeness and unit-testing.
+// ** THESE ROUTINES ARE SLOW **
+// Performance improvements can be made, but nobody needs such right now.
CODA_OSS_API void utf8_lower(std::string& s);
CODA_OSS_API void utf8_upper(std::string& s);
CODA_OSS_API void lower(coda_oss::u8string& s);
@@ -244,6 +248,10 @@ CODA_OSS_API str::Windows1252_T to_w1252_lower(str::Windows1252_T);
/***********************************************************************************/
+// Using std::transform() with ::toupper() is considerably slower than a lookup-table
+CODA_OSS_API void ascii_lower(std::string& s);
+CODA_OSS_API void ascii_upper(std::string& s);
+
/*!
* Replaces any characters that are invalid in XML (&, <, >, ', ") with their
* escaped counterparts
diff --git a/externals/coda-oss/modules/c++/str/source/Encoding.cpp b/externals/coda-oss/modules/c++/str/source/Encoding.cpp
index 80603dae9..c9833ea88 100644
--- a/externals/coda-oss/modules/c++/str/source/Encoding.cpp
+++ b/externals/coda-oss/modules/c++/str/source/Encoding.cpp
@@ -29,7 +29,6 @@
#endif
#include