diff options
author | m-holger <m-holger@kubitscheck.org> | 2022-08-18 16:23:35 +0200 |
---|---|---|
committer | m-holger <m-holger@kubitscheck.org> | 2022-08-18 16:23:35 +0200 |
commit | 45a6100cbb014f5d4b89b7af1d03e8a846c474d9 (patch) | |
tree | f8cf57128df9cde6ccf3bed809bb0e49359f0edb | |
parent | c08bb0ec0208683ecd0ad89c3d46d4d66b938fbd (diff) | |
download | qpdf-45a6100cbb014f5d4b89b7af1d03e8a846c474d9.tar.zst |
Inline QUtil functions used by QPDFTokenizer
-rw-r--r-- | include/qpdf/QUtil.hh | 55 | ||||
-rw-r--r-- | libqpdf/QUtil.cc | 46 |
2 files changed, 51 insertions, 50 deletions
diff --git a/include/qpdf/QUtil.hh b/include/qpdf/QUtil.hh index 32aeae1f..41b89da4 100644 --- a/include/qpdf/QUtil.hh +++ b/include/qpdf/QUtil.hh @@ -25,6 +25,7 @@ #include <qpdf/DLL.h> #include <qpdf/PointerHolder.hh> #include <qpdf/Types.h> +#include <cstring> #include <functional> #include <list> #include <memory> @@ -489,16 +490,16 @@ namespace QUtil // classes without using ctype, which we avoid because of locale // considerations. QPDF_DLL - bool is_hex_digit(char); + inline bool is_hex_digit(char); QPDF_DLL - bool is_space(char); + inline bool is_space(char); QPDF_DLL - bool is_digit(char); + inline bool is_digit(char); QPDF_DLL - bool is_number(char const*); + inline bool is_number(char const*); // This method parses the numeric range syntax used by the qpdf // command-line tool. May throw std::runtime_error. @@ -526,4 +527,50 @@ namespace QUtil #endif // QPDF_NO_WCHAR_T }; // namespace QUtil +inline bool +QUtil::is_hex_digit(char ch) +{ + return (ch && (strchr("0123456789abcdefABCDEF", ch) != nullptr)); +} + +inline bool +QUtil::is_space(char ch) +{ + return (ch && (strchr(" \f\n\r\t\v", ch) != nullptr)); +} + +inline bool +QUtil::is_digit(char ch) +{ + return ((ch >= '0') && (ch <= '9')); +} + +inline bool +QUtil::is_number(char const* p) +{ + // ^[\+\-]?(\.\d*|\d+(\.\d*)?)$ + if (!*p) { + return false; + } + if ((*p == '-') || (*p == '+')) { + ++p; + } + bool found_dot = false; + bool found_digit = false; + for (; *p; ++p) { + if (*p == '.') { + if (found_dot) { + // only one dot + return false; + } + found_dot = true; + } else if (QUtil::is_digit(*p)) { + found_digit = true; + } else { + return false; + } + } + return found_digit; +} + #endif // QUTIL_HH diff --git a/libqpdf/QUtil.cc b/libqpdf/QUtil.cc index 4e58aaf7..d565ece0 100644 --- a/libqpdf/QUtil.cc +++ b/libqpdf/QUtil.cc @@ -1207,52 +1207,6 @@ QUtil::random() return result; } -bool -QUtil::is_hex_digit(char ch) -{ - return (ch && (strchr("0123456789abcdefABCDEF", ch) != nullptr)); -} - -bool -QUtil::is_space(char ch) -{ - return (ch && (strchr(" \f\n\r\t\v", ch) != nullptr)); -} - -bool -QUtil::is_digit(char ch) -{ - return ((ch >= '0') && (ch <= '9')); -} - -bool -QUtil::is_number(char const* p) -{ - // ^[\+\-]?(\.\d*|\d+(\.\d*)?)$ - if (!*p) { - return false; - } - if ((*p == '-') || (*p == '+')) { - ++p; - } - bool found_dot = false; - bool found_digit = false; - for (; *p; ++p) { - if (*p == '.') { - if (found_dot) { - // only one dot - return false; - } - found_dot = true; - } else if (QUtil::is_digit(*p)) { - found_digit = true; - } else { - return false; - } - } - return found_digit; -} - void QUtil::read_file_into_memory( char const* filename, std::shared_ptr<char>& file_buf, size_t& size) |