OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "../../../../../core/include/fxcrt/fx_xml.h" | 7 #include "../../../../../core/include/fxcrt/fx_xml.h" |
8 #include "../fgas_base.h" | 8 #include "../fgas_base.h" |
9 #include "fx_localeimp.h" | 9 #include "fx_localeimp.h" |
10 | 10 |
(...skipping 917 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
928 return TRUE; | 928 return TRUE; |
929 } | 929 } |
930 FX_BOOL CFX_FormatString::ParseText(const CFX_WideString& wsSrcText, | 930 FX_BOOL CFX_FormatString::ParseText(const CFX_WideString& wsSrcText, |
931 const CFX_WideString& wsPattern, | 931 const CFX_WideString& wsPattern, |
932 CFX_WideString& wsValue) { | 932 CFX_WideString& wsValue) { |
933 wsValue.Empty(); | 933 wsValue.Empty(); |
934 if (wsSrcText.IsEmpty() || wsPattern.IsEmpty()) { | 934 if (wsSrcText.IsEmpty() || wsPattern.IsEmpty()) { |
935 return FALSE; | 935 return FALSE; |
936 } | 936 } |
937 CFX_WideString wsTextFormat; | 937 CFX_WideString wsTextFormat; |
938 IFX_Locale* pLocale = | 938 GetTextFormat(wsPattern, FX_WSTRC(L"text"), wsTextFormat); |
939 GetTextFormat(wsPattern, FX_WSTRC(L"text"), wsTextFormat); | |
940 if (wsTextFormat.IsEmpty()) { | 939 if (wsTextFormat.IsEmpty()) { |
941 return FALSE; | 940 return FALSE; |
942 } | 941 } |
943 int32_t iText = 0, iPattern = 0; | 942 int32_t iText = 0, iPattern = 0; |
944 const FX_WCHAR* pStrText = (const FX_WCHAR*)wsSrcText; | 943 const FX_WCHAR* pStrText = (const FX_WCHAR*)wsSrcText; |
945 int32_t iLenText = wsSrcText.GetLength(); | 944 int32_t iLenText = wsSrcText.GetLength(); |
946 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; | 945 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; |
947 int32_t iLenPattern = wsTextFormat.GetLength(); | 946 int32_t iLenPattern = wsTextFormat.GetLength(); |
948 while (iPattern < iLenPattern && iText < iLenText) { | 947 while (iPattern < iLenPattern && iText < iLenText) { |
949 switch (pStrPattern[iPattern]) { | 948 switch (pStrPattern[iPattern]) { |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1011 FX_DWORD dwFormatStyle = 0; | 1010 FX_DWORD dwFormatStyle = 0; |
1012 CFX_WideString wsNumFormat; | 1011 CFX_WideString wsNumFormat; |
1013 IFX_Locale* pLocale = | 1012 IFX_Locale* pLocale = |
1014 GetNumericFormat(wsPattern, dot_index_f, dwFormatStyle, wsNumFormat); | 1013 GetNumericFormat(wsPattern, dot_index_f, dwFormatStyle, wsNumFormat); |
1015 if (!pLocale || wsNumFormat.IsEmpty()) { | 1014 if (!pLocale || wsNumFormat.IsEmpty()) { |
1016 return FALSE; | 1015 return FALSE; |
1017 } | 1016 } |
1018 int32_t iExponent = 0; | 1017 int32_t iExponent = 0; |
1019 CFX_WideString wsDotSymbol; | 1018 CFX_WideString wsDotSymbol; |
1020 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Decimal, wsDotSymbol); | 1019 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Decimal, wsDotSymbol); |
1021 int32_t iDotLen = wsDotSymbol.GetLength(); | |
1022 CFX_WideString wsGroupSymbol; | 1020 CFX_WideString wsGroupSymbol; |
1023 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Grouping, wsGroupSymbol); | 1021 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Grouping, wsGroupSymbol); |
1024 int32_t iGroupLen = wsGroupSymbol.GetLength(); | 1022 int32_t iGroupLen = wsGroupSymbol.GetLength(); |
1025 CFX_WideString wsMinus; | 1023 CFX_WideString wsMinus; |
1026 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Minus, wsMinus); | 1024 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Minus, wsMinus); |
1027 int32_t iMinusLen = wsMinus.GetLength(); | 1025 int32_t iMinusLen = wsMinus.GetLength(); |
1028 int cc = 0, ccf = 0; | 1026 int cc = 0, ccf = 0; |
1029 const FX_WCHAR* str = (const FX_WCHAR*)wsSrcNum; | 1027 const FX_WCHAR* str = (const FX_WCHAR*)wsSrcNum; |
1030 int len = wsSrcNum.GetLength(); | 1028 int len = wsSrcNum.GetLength(); |
1031 const FX_WCHAR* strf = (const FX_WCHAR*)wsNumFormat; | 1029 const FX_WCHAR* strf = (const FX_WCHAR*)wsNumFormat; |
(...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1778 FX_DWORD dwFormatStyle = 0; | 1776 FX_DWORD dwFormatStyle = 0; |
1779 CFX_WideString wsNumFormat; | 1777 CFX_WideString wsNumFormat; |
1780 IFX_Locale* pLocale = | 1778 IFX_Locale* pLocale = |
1781 GetNumericFormat(wsPattern, dot_index_f, dwFormatStyle, wsNumFormat); | 1779 GetNumericFormat(wsPattern, dot_index_f, dwFormatStyle, wsNumFormat); |
1782 if (!pLocale || wsNumFormat.IsEmpty()) { | 1780 if (!pLocale || wsNumFormat.IsEmpty()) { |
1783 return FALSE; | 1781 return FALSE; |
1784 } | 1782 } |
1785 int32_t iExponent = 0; | 1783 int32_t iExponent = 0; |
1786 CFX_WideString wsDotSymbol; | 1784 CFX_WideString wsDotSymbol; |
1787 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Decimal, wsDotSymbol); | 1785 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Decimal, wsDotSymbol); |
1788 int32_t iDotLen = wsDotSymbol.GetLength(); | |
1789 CFX_WideString wsGroupSymbol; | 1786 CFX_WideString wsGroupSymbol; |
1790 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Grouping, wsGroupSymbol); | 1787 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Grouping, wsGroupSymbol); |
1791 int32_t iGroupLen = wsGroupSymbol.GetLength(); | 1788 int32_t iGroupLen = wsGroupSymbol.GetLength(); |
1792 CFX_WideString wsMinus; | 1789 CFX_WideString wsMinus; |
1793 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Minus, wsMinus); | 1790 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Minus, wsMinus); |
1794 int32_t iMinusLen = wsMinus.GetLength(); | 1791 int32_t iMinusLen = wsMinus.GetLength(); |
1795 int cc = 0, ccf = 0; | 1792 int cc = 0, ccf = 0; |
1796 const FX_WCHAR* str = (const FX_WCHAR*)wsSrcNum; | 1793 const FX_WCHAR* str = (const FX_WCHAR*)wsSrcNum; |
1797 int len = wsSrcNum.GetLength(); | 1794 int len = wsSrcNum.GetLength(); |
1798 const FX_WCHAR* strf = (const FX_WCHAR*)wsNumFormat; | 1795 const FX_WCHAR* strf = (const FX_WCHAR*)wsNumFormat; |
(...skipping 1058 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2857 !FX_ParseLocaleTime(wsSrcDateTime, wsTimePattern, pLocale, dtValue, | 2854 !FX_ParseLocaleTime(wsSrcDateTime, wsTimePattern, pLocale, dtValue, |
2858 iStart)) { | 2855 iStart)) { |
2859 return FALSE; | 2856 return FALSE; |
2860 } | 2857 } |
2861 } | 2858 } |
2862 return TRUE; | 2859 return TRUE; |
2863 } | 2860 } |
2864 FX_BOOL CFX_FormatString::ParseZero(const CFX_WideString& wsSrcText, | 2861 FX_BOOL CFX_FormatString::ParseZero(const CFX_WideString& wsSrcText, |
2865 const CFX_WideString& wsPattern) { | 2862 const CFX_WideString& wsPattern) { |
2866 CFX_WideString wsTextFormat; | 2863 CFX_WideString wsTextFormat; |
2867 IFX_Locale* pLocale = | 2864 GetTextFormat(wsPattern, FX_WSTRC(L"zero"), wsTextFormat); |
2868 GetTextFormat(wsPattern, FX_WSTRC(L"zero"), wsTextFormat); | |
2869 int32_t iText = 0, iPattern = 0; | 2865 int32_t iText = 0, iPattern = 0; |
2870 const FX_WCHAR* pStrText = (const FX_WCHAR*)wsSrcText; | 2866 const FX_WCHAR* pStrText = (const FX_WCHAR*)wsSrcText; |
2871 int32_t iLenText = wsSrcText.GetLength(); | 2867 int32_t iLenText = wsSrcText.GetLength(); |
2872 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; | 2868 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; |
2873 int32_t iLenPattern = wsTextFormat.GetLength(); | 2869 int32_t iLenPattern = wsTextFormat.GetLength(); |
2874 while (iPattern < iLenPattern && iText < iLenText) { | 2870 while (iPattern < iLenPattern && iText < iLenText) { |
2875 if (pStrPattern[iPattern] == '\'') { | 2871 if (pStrPattern[iPattern] == '\'') { |
2876 CFX_WideString wsLiteral = | 2872 CFX_WideString wsLiteral = |
2877 FX_GetLiteralText(pStrPattern, iPattern, iLenPattern); | 2873 FX_GetLiteralText(pStrPattern, iPattern, iLenPattern); |
2878 int32_t iLiteralLen = wsLiteral.GetLength(); | 2874 int32_t iLiteralLen = wsLiteral.GetLength(); |
(...skipping 10 matching lines...) Expand all Loading... |
2889 } else { | 2885 } else { |
2890 iText++; | 2886 iText++; |
2891 iPattern++; | 2887 iPattern++; |
2892 } | 2888 } |
2893 } | 2889 } |
2894 return iPattern == iLenPattern && iText == iLenText; | 2890 return iPattern == iLenPattern && iText == iLenText; |
2895 } | 2891 } |
2896 FX_BOOL CFX_FormatString::ParseNull(const CFX_WideString& wsSrcText, | 2892 FX_BOOL CFX_FormatString::ParseNull(const CFX_WideString& wsSrcText, |
2897 const CFX_WideString& wsPattern) { | 2893 const CFX_WideString& wsPattern) { |
2898 CFX_WideString wsTextFormat; | 2894 CFX_WideString wsTextFormat; |
2899 IFX_Locale* pLocale = | 2895 GetTextFormat(wsPattern, FX_WSTRC(L"null"), wsTextFormat); |
2900 GetTextFormat(wsPattern, FX_WSTRC(L"null"), wsTextFormat); | |
2901 int32_t iText = 0, iPattern = 0; | 2896 int32_t iText = 0, iPattern = 0; |
2902 const FX_WCHAR* pStrText = (const FX_WCHAR*)wsSrcText; | 2897 const FX_WCHAR* pStrText = (const FX_WCHAR*)wsSrcText; |
2903 int32_t iLenText = wsSrcText.GetLength(); | 2898 int32_t iLenText = wsSrcText.GetLength(); |
2904 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; | 2899 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; |
2905 int32_t iLenPattern = wsTextFormat.GetLength(); | 2900 int32_t iLenPattern = wsTextFormat.GetLength(); |
2906 while (iPattern < iLenPattern && iText < iLenText) { | 2901 while (iPattern < iLenPattern && iText < iLenText) { |
2907 if (pStrPattern[iPattern] == '\'') { | 2902 if (pStrPattern[iPattern] == '\'') { |
2908 CFX_WideString wsLiteral = | 2903 CFX_WideString wsLiteral = |
2909 FX_GetLiteralText(pStrPattern, iPattern, iLenPattern); | 2904 FX_GetLiteralText(pStrPattern, iPattern, iLenPattern); |
2910 int32_t iLiteralLen = wsLiteral.GetLength(); | 2905 int32_t iLiteralLen = wsLiteral.GetLength(); |
(...skipping 18 matching lines...) Expand all Loading... |
2929 const CFX_WideString& wsPattern, | 2924 const CFX_WideString& wsPattern, |
2930 CFX_WideString& wsOutput) { | 2925 CFX_WideString& wsOutput) { |
2931 if (wsPattern.IsEmpty()) { | 2926 if (wsPattern.IsEmpty()) { |
2932 return FALSE; | 2927 return FALSE; |
2933 } | 2928 } |
2934 int32_t iLenText = wsSrcText.GetLength(); | 2929 int32_t iLenText = wsSrcText.GetLength(); |
2935 if (iLenText == 0) { | 2930 if (iLenText == 0) { |
2936 return FALSE; | 2931 return FALSE; |
2937 } | 2932 } |
2938 CFX_WideString wsTextFormat; | 2933 CFX_WideString wsTextFormat; |
2939 IFX_Locale* pLocale = | 2934 GetTextFormat(wsPattern, FX_WSTRC(L"text"), wsTextFormat); |
2940 GetTextFormat(wsPattern, FX_WSTRC(L"text"), wsTextFormat); | |
2941 int32_t iText = 0, iPattern = 0; | 2935 int32_t iText = 0, iPattern = 0; |
2942 const FX_WCHAR* pStrText = (const FX_WCHAR*)wsSrcText; | 2936 const FX_WCHAR* pStrText = (const FX_WCHAR*)wsSrcText; |
2943 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; | 2937 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; |
2944 int32_t iLenPattern = wsTextFormat.GetLength(); | 2938 int32_t iLenPattern = wsTextFormat.GetLength(); |
2945 while (iPattern < iLenPattern) { | 2939 while (iPattern < iLenPattern) { |
2946 switch (pStrPattern[iPattern]) { | 2940 switch (pStrPattern[iPattern]) { |
2947 case '\'': { | 2941 case '\'': { |
2948 wsOutput += FX_GetLiteralText(pStrPattern, iPattern, iLenPattern); | 2942 wsOutput += FX_GetLiteralText(pStrPattern, iPattern, iLenPattern); |
2949 iPattern++; | 2943 iPattern++; |
2950 break; | 2944 break; |
(...skipping 1483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4434 return FX_FormatDateTime(dt, wsPattern, wsTimePattern, | 4428 return FX_FormatDateTime(dt, wsPattern, wsTimePattern, |
4435 eCategory != FX_DATETIMETYPE_TimeDate, pLocale, | 4429 eCategory != FX_DATETIMETYPE_TimeDate, pLocale, |
4436 wsOutput); | 4430 wsOutput); |
4437 } | 4431 } |
4438 FX_BOOL CFX_FormatString::FormatZero(const CFX_WideString& wsPattern, | 4432 FX_BOOL CFX_FormatString::FormatZero(const CFX_WideString& wsPattern, |
4439 CFX_WideString& wsOutput) { | 4433 CFX_WideString& wsOutput) { |
4440 if (wsPattern.IsEmpty()) { | 4434 if (wsPattern.IsEmpty()) { |
4441 return FALSE; | 4435 return FALSE; |
4442 } | 4436 } |
4443 CFX_WideString wsTextFormat; | 4437 CFX_WideString wsTextFormat; |
4444 IFX_Locale* pLocale = | 4438 GetTextFormat(wsPattern, FX_WSTRC(L"zero"), wsTextFormat); |
4445 GetTextFormat(wsPattern, FX_WSTRC(L"zero"), wsTextFormat); | |
4446 int32_t iPattern = 0; | 4439 int32_t iPattern = 0; |
4447 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; | 4440 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; |
4448 int32_t iLenPattern = wsTextFormat.GetLength(); | 4441 int32_t iLenPattern = wsTextFormat.GetLength(); |
4449 while (iPattern < iLenPattern) { | 4442 while (iPattern < iLenPattern) { |
4450 if (pStrPattern[iPattern] == '\'') { | 4443 if (pStrPattern[iPattern] == '\'') { |
4451 wsOutput += FX_GetLiteralText(pStrPattern, iPattern, iLenPattern); | 4444 wsOutput += FX_GetLiteralText(pStrPattern, iPattern, iLenPattern); |
4452 iPattern++; | 4445 iPattern++; |
4453 continue; | 4446 continue; |
4454 } else { | 4447 } else { |
4455 wsOutput += pStrPattern[iPattern++]; | 4448 wsOutput += pStrPattern[iPattern++]; |
4456 continue; | 4449 continue; |
4457 } | 4450 } |
4458 } | 4451 } |
4459 return TRUE; | 4452 return TRUE; |
4460 } | 4453 } |
4461 FX_BOOL CFX_FormatString::FormatNull(const CFX_WideString& wsPattern, | 4454 FX_BOOL CFX_FormatString::FormatNull(const CFX_WideString& wsPattern, |
4462 CFX_WideString& wsOutput) { | 4455 CFX_WideString& wsOutput) { |
4463 if (wsPattern.IsEmpty()) { | 4456 if (wsPattern.IsEmpty()) { |
4464 return FALSE; | 4457 return FALSE; |
4465 } | 4458 } |
4466 CFX_WideString wsTextFormat; | 4459 CFX_WideString wsTextFormat; |
4467 IFX_Locale* pLocale = | 4460 GetTextFormat(wsPattern, FX_WSTRC(L"null"), wsTextFormat); |
4468 GetTextFormat(wsPattern, FX_WSTRC(L"null"), wsTextFormat); | |
4469 int32_t iPattern = 0; | 4461 int32_t iPattern = 0; |
4470 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; | 4462 const FX_WCHAR* pStrPattern = (const FX_WCHAR*)wsTextFormat; |
4471 int32_t iLenPattern = wsTextFormat.GetLength(); | 4463 int32_t iLenPattern = wsTextFormat.GetLength(); |
4472 while (iPattern < iLenPattern) { | 4464 while (iPattern < iLenPattern) { |
4473 if (pStrPattern[iPattern] == '\'') { | 4465 if (pStrPattern[iPattern] == '\'') { |
4474 wsOutput += FX_GetLiteralText(pStrPattern, iPattern, iLenPattern); | 4466 wsOutput += FX_GetLiteralText(pStrPattern, iPattern, iLenPattern); |
4475 iPattern++; | 4467 iPattern++; |
4476 continue; | 4468 continue; |
4477 } else { | 4469 } else { |
4478 wsOutput += pStrPattern[iPattern++]; | 4470 wsOutput += pStrPattern[iPattern++]; |
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5125 } | 5117 } |
5126 CFX_Decimal CFX_Decimal::operator*(const CFX_Decimal& val) const { | 5118 CFX_Decimal CFX_Decimal::operator*(const CFX_Decimal& val) const { |
5127 return Multiply(val); | 5119 return Multiply(val); |
5128 } | 5120 } |
5129 CFX_Decimal CFX_Decimal::operator/(const CFX_Decimal& val) const { | 5121 CFX_Decimal CFX_Decimal::operator/(const CFX_Decimal& val) const { |
5130 return Divide(val); | 5122 return Divide(val); |
5131 } | 5123 } |
5132 CFX_Decimal CFX_Decimal::operator%(const CFX_Decimal& val) const { | 5124 CFX_Decimal CFX_Decimal::operator%(const CFX_Decimal& val) const { |
5133 return Modulus(val); | 5125 return Modulus(val); |
5134 } | 5126 } |
OLD | NEW |