Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core/StarLexicalCast.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/core/StarLexicalCast.cpp')
-rw-r--r--source/core/StarLexicalCast.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/source/core/StarLexicalCast.cpp b/source/core/StarLexicalCast.cpp
index 1387b2e..e607ee5 100644
--- a/source/core/StarLexicalCast.cpp
+++ b/source/core/StarLexicalCast.cpp
@@ -10,4 +10,27 @@ void throwLexicalCastError(std::errc ec, const char* first, const char* last) {
throw BadLexicalCast(strf("Lexical cast failed on '{}'", str));
}
+template <>
+bool tryLexicalCast(bool& result, const char* first, const char* last) {
+ size_t len = last - first;
+ if (strncmp(first, "true", len) == 0)
+ result = true;
+ else if (strncmp(first, "false", len) != 0)
+ return false;
+
+ result = false;
+ return true;
+}
+
+template <>
+bool lexicalCast(const char* first, const char* last) {
+ size_t len = last - first;
+ if (strncmp(first, "true", len) == 0)
+ return true;
+ else if (strncmp(first, "false", len) != 0)
+ throwLexicalCastError(std::errc(), first, last);
+
+ return false;
+}
+
} \ No newline at end of file