18#include <unordered_map>
22 auto nLen = rStr.length();
23 std::size_t nDecimalPoint = std::u16string_view::npos;
27 bool validNomDen =
true;
28 for (nIdx = 0; nIdx < nLen; nIdx++)
33 if (nDecimalPoint != std::u16string_view::npos)
34 return std::u16string_view::npos;
38 if (cD <
u'0' ||
u'9' < cD)
43 || nom >= std::numeric_limits<sal_Int32>::max()
44 || (nDecimalPoint != std::u16string_view::npos
50 if (nIdx == 0 || (nIdx == 1 && nDecimalPoint == 0))
51 return std::u16string_view::npos;
64 rtl_math_uStringToDouble(rStr.data(), rStr.data() + nIdx,
'.', 0,
nullptr,
nullptr));
73 return std::u16string_view::npos;
74 bool bNegative = (rStr[0] ==
'-');
75 std::size_t nOffset = bNegative ? 1 : 0;
77 if (nIdx == std::u16string_view::npos || !rN.
IsValid())
78 return std::u16string_view::npos;
81 return nOffset + nIdx;
87 if (nIdx == std::u16string_view::npos)
89 std::u16string_view sRest = rStr.substr(nIdx);
126 if (sRest[0] ==
u'%')
135 static const std::unordered_map<OUString, MathMLMathvariantValue>
aMap{
156 auto it =
aMap.find(rStr);
157 if (it !=
aMap.end())
bool ParseMathMLAttributeLengthValue(std::u16string_view rStr, MathMLAttributeLengthValue &rV)
static std::size_t ParseMathMLNumber(std::u16string_view rStr, Fraction &rN)
bool GetMathMLMathvariantValue(const OUString &rStr, MathMLMathvariantValue &rV)
static std::size_t ParseMathMLUnsignedNumber(std::u16string_view rStr, Fraction &rUN)
std::enable_if< std::is_signed< T >::value, bool >::type checked_add(T a, T b, T &result)
std::enable_if< std::is_signed< T >::value, bool >::type checked_multiply(T a, T b, T &result)
constexpr bool starts_with(std::basic_string_view< charT, traits > sv, std::basic_string_view< charT, traits > x) noexcept
HashMap_OWString_Interface aMap