Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: xfa/fgas/localization/fgas_locale.cpp

Issue 2094453004: Use some FXSYS methods instead of duplicating (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Review cleanup Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fxcrt/include/fx_ext.h ('k') | xfa/fxfa/parser/cxfa_data.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <algorithm> 7 #include <algorithm>
8 8
9 #include "core/fxcrt/include/fx_ext.h" 9 #include "core/fxcrt/include/fx_ext.h"
10 #include "core/fxcrt/include/fx_xml.h" 10 #include "core/fxcrt/include/fx_xml.h"
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 iEnd = iStart + 2; 79 iEnd = iStart + 2;
80 while (iStart < iLen && iStart < iEnd) { 80 while (iStart < iLen && iStart < iEnd) {
81 tz.tzMinute = tz.tzMinute * 10 + pStr[iStart++] - '0'; 81 tz.tzMinute = tz.tzMinute * 10 + pStr[iStart++] - '0';
82 } 82 }
83 if (pStr[0] == '-') { 83 if (pStr[0] == '-') {
84 tz.tzHour = -tz.tzHour; 84 tz.tzHour = -tz.tzHour;
85 } 85 }
86 return iStart; 86 return iStart;
87 } 87 }
88 88
89 static FX_BOOL FX_IsDigit(FX_WCHAR c) {
90 return c >= '0' && c <= '9';
91 }
92 static FX_BOOL FX_IsAlpha(FX_WCHAR c) {
93 return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
94 }
95 static FX_BOOL FX_IsSpace(FX_WCHAR c) {
96 return (c == 0x20) || (c == 0x0d) || (c == 0x0a) || (c == 0x09);
97 }
98 static const FX_FLOAT gs_fraction_scales[] = {
99 0.1f, 0.01f, 0.001f, 0.0001f,
100 0.00001f, 0.000001f, 0.0000001f, 0.00000001f,
101 0.000000001f, 0.0000000001f, 0.00000000001f};
102 static const int32_t gs_fraction_count =
103 sizeof(gs_fraction_scales) / sizeof(FX_FLOAT);
104
105 class CFX_LCNumeric { 89 class CFX_LCNumeric {
106 public: 90 public:
107 CFX_LCNumeric(); 91 CFX_LCNumeric();
108 CFX_LCNumeric(int64_t integral, 92 CFX_LCNumeric(int64_t integral,
109 uint32_t fractional = 0, 93 uint32_t fractional = 0,
110 int32_t exponent = 0); 94 int32_t exponent = 0);
111 CFX_LCNumeric(FX_FLOAT dbRetValue); 95 CFX_LCNumeric(FX_FLOAT dbRetValue);
112 CFX_LCNumeric(double dbvalue); 96 CFX_LCNumeric(double dbvalue);
113 CFX_LCNumeric(CFX_WideString& wsNumeric); 97 CFX_LCNumeric(CFX_WideString& wsNumeric);
114 98
(...skipping 15 matching lines...) Expand all
130 114
131 if (wsValue.IsEmpty()) 115 if (wsValue.IsEmpty())
132 return FALSE; 116 return FALSE;
133 117
134 const int32_t nIntegralMaxLen = 17; 118 const int32_t nIntegralMaxLen = 17;
135 int32_t cc = 0; 119 int32_t cc = 0;
136 bool bNegative = false; 120 bool bNegative = false;
137 bool bExpSign = false; 121 bool bExpSign = false;
138 const FX_WCHAR* str = wsValue.c_str(); 122 const FX_WCHAR* str = wsValue.c_str();
139 int32_t len = wsValue.GetLength(); 123 int32_t len = wsValue.GetLength();
140 while (cc < len && FX_IsSpace(str[cc])) 124 while (cc < len && FXSYS_iswspace(str[cc]))
141 cc++; 125 cc++;
142 126
143 if (cc >= len) 127 if (cc >= len)
144 return FALSE; 128 return FALSE;
145 129
146 if (str[cc] == '+') { 130 if (str[cc] == '+') {
147 cc++; 131 cc++;
148 } else if (str[cc] == '-') { 132 } else if (str[cc] == '-') {
149 bNegative = true; 133 bNegative = true;
150 cc++; 134 cc++;
151 } 135 }
152 int32_t nIntegralLen = 0; 136 int32_t nIntegralLen = 0;
153 while (cc < len) { 137 while (cc < len) {
154 if (str[cc] == '.') 138 if (str[cc] == '.')
155 break; 139 break;
156 140
157 if (!FX_IsDigit(str[cc])) { 141 if (!FXSYS_isDecimalDigit(str[cc])) {
158 if ((str[cc] == 'E' || str[cc] == 'e')) 142 if ((str[cc] == 'E' || str[cc] == 'e'))
159 break; 143 break;
160 else 144 return FALSE;
161 return FALSE;
162 } 145 }
163 if (nIntegralLen < nIntegralMaxLen) { 146 if (nIntegralLen < nIntegralMaxLen) {
164 lcnum.m_Integral = lcnum.m_Integral * 10 + str[cc] - '0'; 147 lcnum.m_Integral = lcnum.m_Integral * 10 + str[cc] - '0';
165 nIntegralLen++; 148 nIntegralLen++;
166 } 149 }
167 cc++; 150 cc++;
168 } 151 }
169 152
170 lcnum.m_Integral = bNegative ? -lcnum.m_Integral : lcnum.m_Integral; 153 lcnum.m_Integral = bNegative ? -lcnum.m_Integral : lcnum.m_Integral;
171 if (cc < len && str[cc] == '.') { 154 if (cc < len && str[cc] == '.') {
172 int scale = 0; 155 int scale = 0;
173 double fraction = 0.0; 156 double fraction = 0.0;
174 cc++; 157 cc++;
175 while (cc < len) { 158 while (cc < len) {
176 if (scale >= gs_fraction_count) { 159 if (scale >= FXSYS_FractionalScaleCount()) {
177 while (cc < len) { 160 while (cc < len) {
178 if (!FX_IsDigit(str[cc])) 161 if (!FXSYS_isDecimalDigit(str[cc]))
179 break; 162 break;
180 cc++; 163 cc++;
181 } 164 }
182 } 165 }
183 if (!FX_IsDigit(str[cc])) { 166 if (!FXSYS_isDecimalDigit(str[cc])) {
184 if ((str[cc] == 'E' || str[cc] == 'e')) 167 if ((str[cc] == 'E' || str[cc] == 'e'))
185 break; 168 break;
186 else 169 return FALSE;
187 return FALSE;
188 } 170 }
189 fraction += gs_fraction_scales[scale] * (str[cc] - '0'); 171 fraction += FXSYS_FractionalScale(scale, FXSYS_toDecimalDigit(str[cc]));
190 scale++; 172 scale++;
191 cc++; 173 cc++;
192 } 174 }
193 lcnum.m_Fractional = (uint32_t)(fraction * 4294967296.0); 175 lcnum.m_Fractional = (uint32_t)(fraction * 4294967296.0);
194 } 176 }
195 if (cc < len && (str[cc] == 'E' || str[cc] == 'e')) { 177 if (cc < len && (str[cc] == 'E' || str[cc] == 'e')) {
196 cc++; 178 cc++;
197 if (cc < len) { 179 if (cc < len) {
198 if (str[cc] == '+') { 180 if (str[cc] == '+') {
199 cc++; 181 cc++;
200 } else if (str[cc] == '-') { 182 } else if (str[cc] == '-') {
201 bExpSign = true; 183 bExpSign = true;
202 cc++; 184 cc++;
203 } 185 }
204 } 186 }
205 while (cc < len) { 187 while (cc < len) {
206 if (FX_IsDigit(str[cc])) 188 if (FXSYS_isDecimalDigit(str[cc]))
207 return FALSE; 189 return FALSE;
208 lcnum.m_Exponent = lcnum.m_Exponent * 10 + str[cc] - '0'; 190 lcnum.m_Exponent = lcnum.m_Exponent * 10 + str[cc] - '0';
209 cc++; 191 cc++;
210 } 192 }
211 lcnum.m_Exponent = bExpSign ? -lcnum.m_Exponent : lcnum.m_Exponent; 193 lcnum.m_Exponent = bExpSign ? -lcnum.m_Exponent : lcnum.m_Exponent;
212 } 194 }
213 return TRUE; 195 return TRUE;
214 } 196 }
215 197
216 CFX_LCNumeric::CFX_LCNumeric() { 198 CFX_LCNumeric::CFX_LCNumeric() {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 int32_t iStrLen = wsFormatString.GetLength(); 266 int32_t iStrLen = wsFormatString.GetLength();
285 const FX_WCHAR* pStr = wsFormatString.c_str(); 267 const FX_WCHAR* pStr = wsFormatString.c_str();
286 const FX_WCHAR* pToken = pStr; 268 const FX_WCHAR* pToken = pStr;
287 const FX_WCHAR* pEnd = pStr + iStrLen; 269 const FX_WCHAR* pEnd = pStr + iStrLen;
288 FX_BOOL iQuote = FALSE; 270 FX_BOOL iQuote = FALSE;
289 while (TRUE) { 271 while (TRUE) {
290 if (pStr >= pEnd) { 272 if (pStr >= pEnd) {
291 CFX_WideString sub(pToken, pStr - pToken); 273 CFX_WideString sub(pToken, pStr - pToken);
292 wsPatterns.Add(sub); 274 wsPatterns.Add(sub);
293 return; 275 return;
294 } else if (*pStr == '\'') { 276 }
277 if (*pStr == '\'') {
295 iQuote = !iQuote; 278 iQuote = !iQuote;
296 } else if (*pStr == L'|' && !iQuote) { 279 } else if (*pStr == L'|' && !iQuote) {
297 CFX_WideString sub(pToken, pStr - pToken); 280 CFX_WideString sub(pToken, pStr - pToken);
298 wsPatterns.Add(sub); 281 wsPatterns.Add(sub);
299 pToken = pStr + 1; 282 pToken = pStr + 1;
300 } 283 }
301 pStr++; 284 pStr++;
302 } 285 }
303 } 286 }
304 static CFX_WideString FX_GetLiteralText(const FX_WCHAR* pStrPattern, 287 static CFX_WideString FX_GetLiteralText(const FX_WCHAR* pStrPattern,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 return wsOutput; 334 return wsOutput;
352 } 335 }
353 iPattern--; 336 iPattern--;
354 int32_t iQuote = 1; 337 int32_t iQuote = 1;
355 while (iPattern >= 0) { 338 while (iPattern >= 0) {
356 if (pStrPattern[iPattern] == '\'') { 339 if (pStrPattern[iPattern] == '\'') {
357 iQuote++; 340 iQuote++;
358 if (iPattern - 1 >= 0 || 341 if (iPattern - 1 >= 0 ||
359 ((pStrPattern[iPattern - 1] != '\'') && (iQuote % 2 == 0))) { 342 ((pStrPattern[iPattern - 1] != '\'') && (iQuote % 2 == 0))) {
360 break; 343 break;
361 } else {
362 iQuote++;
363 } 344 }
345 iQuote++;
364 iPattern--; 346 iPattern--;
365 } else if (pStrPattern[iPattern] == '\\' && 347 } else if (pStrPattern[iPattern] == '\\' &&
366 pStrPattern[iPattern + 1] == 'u') { 348 pStrPattern[iPattern + 1] == 'u') {
367 iPattern--; 349 iPattern--;
368 int32_t iKeyValue = 0; 350 int32_t iKeyValue = 0;
369 int32_t iLen = wsOutput.GetLength(); 351 int32_t iLen = wsOutput.GetLength();
370 int32_t i = 1; 352 int32_t i = 1;
371 for (; i < iLen && i < 5; i++) { 353 for (; i < iLen && i < 5; i++) {
372 FX_WCHAR ch = wsOutput[i]; 354 FX_WCHAR ch = wsOutput[i];
373 if ((ch >= '0' && ch <= '9')) { 355 if ((ch >= '0' && ch <= '9')) {
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 if (iText + iLiteralLen > iLenText || 665 if (iText + iLiteralLen > iLenText ||
684 FXSYS_wcsncmp(pStrText + iText, wsLiteral.c_str(), iLiteralLen)) { 666 FXSYS_wcsncmp(pStrText + iText, wsLiteral.c_str(), iLiteralLen)) {
685 wsValue = wsSrcText; 667 wsValue = wsSrcText;
686 return FALSE; 668 return FALSE;
687 } 669 }
688 iText += iLiteralLen; 670 iText += iLiteralLen;
689 iPattern++; 671 iPattern++;
690 break; 672 break;
691 } 673 }
692 case 'A': 674 case 'A':
693 if (FX_IsAlpha(pStrText[iText])) { 675 if (FXSYS_iswalpha(pStrText[iText])) {
694 wsValue += pStrText[iText]; 676 wsValue += pStrText[iText];
695 iText++; 677 iText++;
696 } 678 }
697 iPattern++; 679 iPattern++;
698 break; 680 break;
699 case 'X': 681 case 'X':
700 wsValue += pStrText[iText]; 682 wsValue += pStrText[iText];
701 iText++; 683 iText++;
702 iPattern++; 684 iPattern++;
703 break; 685 break;
704 case 'O': 686 case 'O':
705 case '0': 687 case '0':
706 if (FX_IsDigit(pStrText[iText]) || FX_IsAlpha(pStrText[iText])) { 688 if (FXSYS_isDecimalDigit(pStrText[iText]) ||
689 FXSYS_iswalpha(pStrText[iText])) {
707 wsValue += pStrText[iText]; 690 wsValue += pStrText[iText];
708 iText++; 691 iText++;
709 } 692 }
710 iPattern++; 693 iPattern++;
711 break; 694 break;
712 case '9': 695 case '9':
713 if (FX_IsDigit(pStrText[iText])) { 696 if (FXSYS_isDecimalDigit(pStrText[iText])) {
714 wsValue += pStrText[iText]; 697 wsValue += pStrText[iText];
715 iText++; 698 iText++;
716 } 699 }
717 iPattern++; 700 iPattern++;
718 break; 701 break;
719 default: 702 default:
720 if (pStrPattern[iPattern] != pStrText[iText]) { 703 if (pStrPattern[iPattern] != pStrText[iText]) {
721 wsValue = wsSrcText; 704 wsValue = wsSrcText;
722 return FALSE; 705 return FALSE;
723 } 706 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 cc -= iLiteralLen - 1; 762 cc -= iLiteralLen - 1;
780 if (cc < 0 || 763 if (cc < 0 ||
781 FXSYS_wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen)) { 764 FXSYS_wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen)) {
782 return FALSE; 765 return FALSE;
783 } 766 }
784 cc--; 767 cc--;
785 ccf--; 768 ccf--;
786 break; 769 break;
787 } 770 }
788 case '9': 771 case '9':
789 if (!FX_IsDigit(str[cc])) { 772 if (!FXSYS_isDecimalDigit(str[cc])) {
790 return FALSE; 773 return FALSE;
791 } 774 }
792 dbRetValue = dbRetValue * coeff + (str[cc] - '0') * 0.1; 775 dbRetValue = dbRetValue * coeff + (str[cc] - '0') * 0.1;
793 coeff *= 0.1; 776 coeff *= 0.1;
794 cc--; 777 cc--;
795 ccf--; 778 ccf--;
796 break; 779 break;
797 case 'z': 780 case 'z':
798 if (cc >= 0) { 781 if (cc >= 0) {
799 dbRetValue = dbRetValue * coeff + (str[cc] - '0') * 0.1; 782 dbRetValue = dbRetValue * coeff + (str[cc] - '0') * 0.1;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 break; 821 break;
839 case 'E': { 822 case 'E': {
840 if (cc >= dot_index) { 823 if (cc >= dot_index) {
841 return FALSE; 824 return FALSE;
842 } 825 }
843 FX_BOOL bExpSign = FALSE; 826 FX_BOOL bExpSign = FALSE;
844 while (cc >= 0) { 827 while (cc >= 0) {
845 if (str[cc] == 'E' || str[cc] == 'e') { 828 if (str[cc] == 'E' || str[cc] == 'e') {
846 break; 829 break;
847 } 830 }
848 if (FX_IsDigit(str[cc])) { 831 if (FXSYS_isDecimalDigit(str[cc])) {
849 iExponent = iExponent + (str[cc] - '0') * 10; 832 iExponent = iExponent + (str[cc] - '0') * 10;
850 cc--; 833 cc--;
851 continue; 834 continue;
852 } else if (str[cc] == '+') { 835 } else if (str[cc] == '+') {
853 cc--; 836 cc--;
854 continue; 837 continue;
855 } else if (cc - iMinusLen + 1 > 0 && 838 } else if (cc - iMinusLen + 1 > 0 &&
856 !FXSYS_wcsncmp(str + (cc - iMinusLen + 1), 839 !FXSYS_wcsncmp(str + (cc - iMinusLen + 1),
857 wsMinus.c_str(), iMinusLen)) { 840 wsMinus.c_str(), iMinusLen)) {
858 bExpSign = TRUE; 841 bExpSign = TRUE;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
939 return FALSE; 922 return FALSE;
940 } 923 }
941 cc--; 924 cc--;
942 ccf--; 925 ccf--;
943 bHavePercentSymbol = TRUE; 926 bHavePercentSymbol = TRUE;
944 } break; 927 } break;
945 case '8': 928 case '8':
946 while (ccf < lenf && strf[ccf] == '8') { 929 while (ccf < lenf && strf[ccf] == '8') {
947 ccf++; 930 ccf++;
948 } 931 }
949 while (cc < len && FX_IsDigit(str[cc])) { 932 while (cc < len && FXSYS_isDecimalDigit(str[cc])) {
950 dbRetValue = (str[cc] - '0') * coeff + dbRetValue; 933 dbRetValue = (str[cc] - '0') * coeff + dbRetValue;
951 coeff *= 0.1; 934 coeff *= 0.1;
952 cc++; 935 cc++;
953 } 936 }
954 break; 937 break;
955 case ',': { 938 case ',': {
956 if (cc >= 0) { 939 if (cc >= 0) {
957 cc -= iGroupLen - 1; 940 cc -= iGroupLen - 1;
958 if (cc >= 0 && 941 if (cc >= 0 &&
959 FXSYS_wcsncmp(str + cc, wsGroupSymbol.c_str(), iGroupLen) == 942 FXSYS_wcsncmp(str + cc, wsGroupSymbol.c_str(), iGroupLen) ==
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1003 int32_t iLiteralLen = wsLiteral.GetLength(); 986 int32_t iLiteralLen = wsLiteral.GetLength();
1004 cc -= iLiteralLen - 1; 987 cc -= iLiteralLen - 1;
1005 if (cc < 0 || FXSYS_wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen)) { 988 if (cc < 0 || FXSYS_wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen)) {
1006 return FALSE; 989 return FALSE;
1007 } 990 }
1008 cc--; 991 cc--;
1009 ccf--; 992 ccf--;
1010 break; 993 break;
1011 } 994 }
1012 case '9': 995 case '9':
1013 if (!FX_IsDigit(str[cc])) { 996 if (!FXSYS_isDecimalDigit(str[cc])) {
1014 return FALSE; 997 return FALSE;
1015 } 998 }
1016 dbRetValue = dbRetValue + (str[cc] - '0') * coeff; 999 dbRetValue = dbRetValue + (str[cc] - '0') * coeff;
1017 coeff *= 10; 1000 coeff *= 10;
1018 cc--; 1001 cc--;
1019 ccf--; 1002 ccf--;
1020 break; 1003 break;
1021 case 'z': 1004 case 'z':
1022 if (FX_IsDigit(str[cc])) { 1005 if (FXSYS_isDecimalDigit(str[cc])) {
1023 dbRetValue = dbRetValue + (str[cc] - '0') * coeff; 1006 dbRetValue = dbRetValue + (str[cc] - '0') * coeff;
1024 coeff *= 10; 1007 coeff *= 10;
1025 cc--; 1008 cc--;
1026 } 1009 }
1027 ccf--; 1010 ccf--;
1028 break; 1011 break;
1029 case 'Z': 1012 case 'Z':
1030 if (str[cc] != ' ') { 1013 if (str[cc] != ' ') {
1031 if (FX_IsDigit(str[cc])) { 1014 if (FXSYS_isDecimalDigit(str[cc])) {
1032 dbRetValue = dbRetValue + (str[cc] - '0') * coeff; 1015 dbRetValue = dbRetValue + (str[cc] - '0') * coeff;
1033 coeff *= 10; 1016 coeff *= 10;
1034 cc--; 1017 cc--;
1035 } 1018 }
1036 } else { 1019 } else {
1037 cc--; 1020 cc--;
1038 } 1021 }
1039 ccf--; 1022 ccf--;
1040 break; 1023 break;
1041 case 'S': 1024 case 'S':
(...skipping 24 matching lines...) Expand all
1066 break; 1049 break;
1067 case 'E': { 1050 case 'E': {
1068 if (cc >= dot_index) { 1051 if (cc >= dot_index) {
1069 return FALSE; 1052 return FALSE;
1070 } 1053 }
1071 FX_BOOL bExpSign = FALSE; 1054 FX_BOOL bExpSign = FALSE;
1072 while (cc >= 0) { 1055 while (cc >= 0) {
1073 if (str[cc] == 'E' || str[cc] == 'e') { 1056 if (str[cc] == 'E' || str[cc] == 'e') {
1074 break; 1057 break;
1075 } 1058 }
1076 if (FX_IsDigit(str[cc])) { 1059 if (FXSYS_isDecimalDigit(str[cc])) {
1077 iExponent = iExponent + (str[cc] - '0') * 10; 1060 iExponent = iExponent + (str[cc] - '0') * 10;
1078 cc--; 1061 cc--;
1079 continue; 1062 continue;
1080 } else if (str[cc] == '+') { 1063 } else if (str[cc] == '+') {
1081 cc--; 1064 cc--;
1082 continue; 1065 continue;
1083 } else if (cc - iMinusLen + 1 > 0 && 1066 } else if (cc - iMinusLen + 1 > 0 &&
1084 !FXSYS_wcsncmp(str + (cc - iMinusLen + 1), wsMinus.c_str(), 1067 !FXSYS_wcsncmp(str + (cc - iMinusLen + 1), wsMinus.c_str(),
1085 iMinusLen)) { 1068 iMinusLen)) {
1086 bExpSign = TRUE; 1069 bExpSign = TRUE;
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1222 int32_t iLiteralLen = wsLiteral.GetLength(); 1205 int32_t iLiteralLen = wsLiteral.GetLength();
1223 if (cc + iLiteralLen > len || 1206 if (cc + iLiteralLen > len ||
1224 FXSYS_wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen)) { 1207 FXSYS_wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen)) {
1225 return FALSE; 1208 return FALSE;
1226 } 1209 }
1227 cc += iLiteralLen; 1210 cc += iLiteralLen;
1228 ccf++; 1211 ccf++;
1229 break; 1212 break;
1230 } 1213 }
1231 case '9': 1214 case '9':
1232 if (!FX_IsDigit(str[cc])) { 1215 if (!FXSYS_isDecimalDigit(str[cc])) {
1233 return FALSE; 1216 return FALSE;
1234 } 1217 }
1235 { 1218 {
1236 dbRetValue = dbRetValue + (str[cc] - '0') * coeff; 1219 dbRetValue = dbRetValue + (str[cc] - '0') * coeff;
1237 coeff *= 0.1; 1220 coeff *= 0.1;
1238 } 1221 }
1239 cc++; 1222 cc++;
1240 ccf++; 1223 ccf++;
1241 break; 1224 break;
1242 case 'z': 1225 case 'z':
1243 if (FX_IsDigit(str[cc])) { 1226 if (FXSYS_isDecimalDigit(str[cc])) {
1244 dbRetValue = dbRetValue + (str[cc] - '0') * coeff; 1227 dbRetValue = dbRetValue + (str[cc] - '0') * coeff;
1245 coeff *= 0.1; 1228 coeff *= 0.1;
1246 cc++; 1229 cc++;
1247 } 1230 }
1248 ccf++; 1231 ccf++;
1249 break; 1232 break;
1250 case 'Z': 1233 case 'Z':
1251 if (str[cc] != ' ') { 1234 if (str[cc] != ' ') {
1252 if (FX_IsDigit(str[cc])) { 1235 if (FXSYS_isDecimalDigit(str[cc])) {
1253 dbRetValue = dbRetValue + (str[cc] - '0') * coeff; 1236 dbRetValue = dbRetValue + (str[cc] - '0') * coeff;
1254 coeff *= 0.1; 1237 coeff *= 0.1;
1255 cc++; 1238 cc++;
1256 } 1239 }
1257 } else { 1240 } else {
1258 cc++; 1241 cc++;
1259 } 1242 }
1260 ccf++; 1243 ccf++;
1261 break; 1244 break;
1262 case 'S': 1245 case 'S':
(...skipping 30 matching lines...) Expand all
1293 cc++; 1276 cc++;
1294 if (cc < len) { 1277 if (cc < len) {
1295 if (str[cc] == '+') { 1278 if (str[cc] == '+') {
1296 cc++; 1279 cc++;
1297 } else if (str[cc] == '-') { 1280 } else if (str[cc] == '-') {
1298 bExpSign = TRUE; 1281 bExpSign = TRUE;
1299 cc++; 1282 cc++;
1300 } 1283 }
1301 } 1284 }
1302 while (cc < len) { 1285 while (cc < len) {
1303 if (!FX_IsDigit(str[cc])) { 1286 if (!FXSYS_isDecimalDigit(str[cc])) {
1304 break; 1287 break;
1305 } 1288 }
1306 iExponent = iExponent * 10 + str[cc] - '0'; 1289 iExponent = iExponent * 10 + str[cc] - '0';
1307 cc++; 1290 cc++;
1308 } 1291 }
1309 iExponent = bExpSign ? -iExponent : iExponent; 1292 iExponent = bExpSign ? -iExponent : iExponent;
1310 ccf++; 1293 ccf++;
1311 } break; 1294 } break;
1312 case '$': { 1295 case '$': {
1313 CFX_WideString wsSymbol; 1296 CFX_WideString wsSymbol;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1373 !FXSYS_wcsncmp(str + cc, wsSymbol.c_str(), iSysmbolLen)) { 1356 !FXSYS_wcsncmp(str + cc, wsSymbol.c_str(), iSysmbolLen)) {
1374 cc += iSysmbolLen; 1357 cc += iSysmbolLen;
1375 } 1358 }
1376 ccf++; 1359 ccf++;
1377 bHavePercentSymbol = TRUE; 1360 bHavePercentSymbol = TRUE;
1378 } break; 1361 } break;
1379 case '8': { 1362 case '8': {
1380 while (ccf < lenf && strf[ccf] == '8') { 1363 while (ccf < lenf && strf[ccf] == '8') {
1381 ccf++; 1364 ccf++;
1382 } 1365 }
1383 while (cc < len && FX_IsDigit(str[cc])) { 1366 while (cc < len && FXSYS_isDecimalDigit(str[cc])) {
1384 dbRetValue = (str[cc] - '0') * coeff + dbRetValue; 1367 dbRetValue = (str[cc] - '0') * coeff + dbRetValue;
1385 coeff *= 0.1; 1368 coeff *= 0.1;
1386 cc++; 1369 cc++;
1387 } 1370 }
1388 } break; 1371 } break;
1389 case ',': { 1372 case ',': {
1390 if (cc + iGroupLen <= len && 1373 if (cc + iGroupLen <= len &&
1391 FXSYS_wcsncmp(str + cc, wsGroupSymbol.c_str(), iGroupLen) == 0) { 1374 FXSYS_wcsncmp(str + cc, wsGroupSymbol.c_str(), iGroupLen) == 0) {
1392 cc += iGroupLen; 1375 cc += iGroupLen;
1393 } 1376 }
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1483 int32_t iLiteralLen = wsLiteral.GetLength(); 1466 int32_t iLiteralLen = wsLiteral.GetLength();
1484 cc -= iLiteralLen - 1; 1467 cc -= iLiteralLen - 1;
1485 if (cc < 0 || FXSYS_wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen)) { 1468 if (cc < 0 || FXSYS_wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen)) {
1486 return FALSE; 1469 return FALSE;
1487 } 1470 }
1488 cc--; 1471 cc--;
1489 ccf--; 1472 ccf--;
1490 break; 1473 break;
1491 } 1474 }
1492 case '9': 1475 case '9':
1493 if (!FX_IsDigit(str[cc])) { 1476 if (!FXSYS_isDecimalDigit(str[cc])) {
1494 return FALSE; 1477 return FALSE;
1495 } 1478 }
1496 wsValue = str[cc] + wsValue; 1479 wsValue = str[cc] + wsValue;
1497 cc--; 1480 cc--;
1498 ccf--; 1481 ccf--;
1499 break; 1482 break;
1500 case 'z': 1483 case 'z':
1501 if (FX_IsDigit(str[cc])) { 1484 if (FXSYS_isDecimalDigit(str[cc])) {
1502 wsValue = str[cc] + wsValue; 1485 wsValue = str[cc] + wsValue;
1503 cc--; 1486 cc--;
1504 } 1487 }
1505 ccf--; 1488 ccf--;
1506 break; 1489 break;
1507 case 'Z': 1490 case 'Z':
1508 if (str[cc] != ' ') { 1491 if (str[cc] != ' ') {
1509 if (FX_IsDigit(str[cc])) { 1492 if (FXSYS_isDecimalDigit(str[cc])) {
1510 wsValue = str[cc] + wsValue; 1493 wsValue = str[cc] + wsValue;
1511 cc--; 1494 cc--;
1512 } 1495 }
1513 } else { 1496 } else {
1514 cc--; 1497 cc--;
1515 } 1498 }
1516 ccf--; 1499 ccf--;
1517 break; 1500 break;
1518 case 'S': 1501 case 'S':
1519 if (str[cc] == '+' || str[cc] == ' ') { 1502 if (str[cc] == '+' || str[cc] == ' ') {
(...skipping 23 matching lines...) Expand all
1543 break; 1526 break;
1544 case 'E': { 1527 case 'E': {
1545 if (cc >= dot_index) { 1528 if (cc >= dot_index) {
1546 return FALSE; 1529 return FALSE;
1547 } 1530 }
1548 FX_BOOL bExpSign = FALSE; 1531 FX_BOOL bExpSign = FALSE;
1549 while (cc >= 0) { 1532 while (cc >= 0) {
1550 if (str[cc] == 'E' || str[cc] == 'e') { 1533 if (str[cc] == 'E' || str[cc] == 'e') {
1551 break; 1534 break;
1552 } 1535 }
1553 if (FX_IsDigit(str[cc])) { 1536 if (FXSYS_isDecimalDigit(str[cc])) {
1554 iExponent = iExponent + (str[cc] - '0') * 10; 1537 iExponent = iExponent + (str[cc] - '0') * 10;
1555 cc--; 1538 cc--;
1556 continue; 1539 continue;
1557 } else if (str[cc] == '+') { 1540 } else if (str[cc] == '+') {
1558 cc--; 1541 cc--;
1559 continue; 1542 continue;
1560 } else if (cc - iMinusLen + 1 > 0 && 1543 } else if (cc - iMinusLen + 1 > 0 &&
1561 !FXSYS_wcsncmp(str + (cc - iMinusLen + 1), wsMinus.c_str(), 1544 !FXSYS_wcsncmp(str + (cc - iMinusLen + 1), wsMinus.c_str(),
1562 iMinusLen)) { 1545 iMinusLen)) {
1563 bExpSign = TRUE; 1546 bExpSign = TRUE;
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
1707 int32_t iLiteralLen = wsLiteral.GetLength(); 1690 int32_t iLiteralLen = wsLiteral.GetLength();
1708 if (cc + iLiteralLen > len || 1691 if (cc + iLiteralLen > len ||
1709 FXSYS_wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen)) { 1692 FXSYS_wcsncmp(str + cc, wsLiteral.c_str(), iLiteralLen)) {
1710 return FALSE; 1693 return FALSE;
1711 } 1694 }
1712 cc += iLiteralLen; 1695 cc += iLiteralLen;
1713 ccf++; 1696 ccf++;
1714 break; 1697 break;
1715 } 1698 }
1716 case '9': 1699 case '9':
1717 if (!FX_IsDigit(str[cc])) { 1700 if (!FXSYS_isDecimalDigit(str[cc])) {
1718 return FALSE; 1701 return FALSE;
1719 } 1702 }
1720 { wsValue += str[cc]; } 1703 { wsValue += str[cc]; }
1721 cc++; 1704 cc++;
1722 ccf++; 1705 ccf++;
1723 break; 1706 break;
1724 case 'z': 1707 case 'z':
1725 if (FX_IsDigit(str[cc])) { 1708 if (FXSYS_isDecimalDigit(str[cc])) {
1726 wsValue += str[cc]; 1709 wsValue += str[cc];
1727 cc++; 1710 cc++;
1728 } 1711 }
1729 ccf++; 1712 ccf++;
1730 break; 1713 break;
1731 case 'Z': 1714 case 'Z':
1732 if (str[cc] != ' ') { 1715 if (str[cc] != ' ') {
1733 if (FX_IsDigit(str[cc])) { 1716 if (FXSYS_isDecimalDigit(str[cc])) {
1734 wsValue += str[cc]; 1717 wsValue += str[cc];
1735 cc++; 1718 cc++;
1736 } 1719 }
1737 } else { 1720 } else {
1738 cc++; 1721 cc++;
1739 } 1722 }
1740 ccf++; 1723 ccf++;
1741 break; 1724 break;
1742 case 'S': 1725 case 'S':
1743 if (str[cc] == '+' || str[cc] == ' ') { 1726 if (str[cc] == '+' || str[cc] == ' ') {
(...skipping 29 matching lines...) Expand all
1773 cc++; 1756 cc++;
1774 if (cc < len) { 1757 if (cc < len) {
1775 if (str[cc] == '+') { 1758 if (str[cc] == '+') {
1776 cc++; 1759 cc++;
1777 } else if (str[cc] == '-') { 1760 } else if (str[cc] == '-') {
1778 bExpSign = TRUE; 1761 bExpSign = TRUE;
1779 cc++; 1762 cc++;
1780 } 1763 }
1781 } 1764 }
1782 while (cc < len) { 1765 while (cc < len) {
1783 if (!FX_IsDigit(str[cc])) { 1766 if (!FXSYS_isDecimalDigit(str[cc])) {
1784 break; 1767 break;
1785 } 1768 }
1786 iExponent = iExponent * 10 + str[cc] - '0'; 1769 iExponent = iExponent * 10 + str[cc] - '0';
1787 cc++; 1770 cc++;
1788 } 1771 }
1789 iExponent = bExpSign ? -iExponent : iExponent; 1772 iExponent = bExpSign ? -iExponent : iExponent;
1790 ccf++; 1773 ccf++;
1791 } break; 1774 } break;
1792 case '$': { 1775 case '$': {
1793 CFX_WideString wsSymbol; 1776 CFX_WideString wsSymbol;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1853 !FXSYS_wcsncmp(str + cc, wsSymbol.c_str(), iSysmbolLen)) { 1836 !FXSYS_wcsncmp(str + cc, wsSymbol.c_str(), iSysmbolLen)) {
1854 cc += iSysmbolLen; 1837 cc += iSysmbolLen;
1855 } 1838 }
1856 ccf++; 1839 ccf++;
1857 bHavePercentSymbol = TRUE; 1840 bHavePercentSymbol = TRUE;
1858 } break; 1841 } break;
1859 case '8': { 1842 case '8': {
1860 while (ccf < lenf && strf[ccf] == '8') { 1843 while (ccf < lenf && strf[ccf] == '8') {
1861 ccf++; 1844 ccf++;
1862 } 1845 }
1863 while (cc < len && FX_IsDigit(str[cc])) { 1846 while (cc < len && FXSYS_isDecimalDigit(str[cc])) {
1864 wsValue += str[cc]; 1847 wsValue += str[cc];
1865 cc++; 1848 cc++;
1866 } 1849 }
1867 } break; 1850 } break;
1868 case ',': { 1851 case ',': {
1869 if (cc + iGroupLen <= len && 1852 if (cc + iGroupLen <= len &&
1870 FXSYS_wcsncmp(str + cc, wsGroupSymbol.c_str(), iGroupLen) == 0) { 1853 FXSYS_wcsncmp(str + cc, wsGroupSymbol.c_str(), iGroupLen) == 0) {
1871 cc += iGroupLen; 1854 cc += iGroupLen;
1872 } 1855 }
1873 ccf++; 1856 ccf++;
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
2088 continue; 2071 continue;
2089 } 2072 }
2090 uint32_t dwSymbolNum = 1; 2073 uint32_t dwSymbolNum = 1;
2091 FX_WCHAR dwCharSymbol = strf[ccf++]; 2074 FX_WCHAR dwCharSymbol = strf[ccf++];
2092 while (ccf < lenf && strf[ccf] == dwCharSymbol) { 2075 while (ccf < lenf && strf[ccf] == dwCharSymbol) {
2093 ccf++; 2076 ccf++;
2094 dwSymbolNum++; 2077 dwSymbolNum++;
2095 } 2078 }
2096 uint32_t dwSymbol = (dwCharSymbol << 8) | (dwSymbolNum + '0'); 2079 uint32_t dwSymbol = (dwCharSymbol << 8) | (dwSymbolNum + '0');
2097 if (dwSymbol == FXBSTR_ID(0, 0, 'D', '1')) { 2080 if (dwSymbol == FXBSTR_ID(0, 0, 'D', '1')) {
2098 if (!FX_IsDigit(str[cc])) { 2081 if (!FXSYS_isDecimalDigit(str[cc])) {
2099 return FALSE; 2082 return FALSE;
2100 } 2083 }
2101 day = str[cc++] - '0'; 2084 day = str[cc++] - '0';
2102 if (cc < len && FX_IsDigit(str[cc])) { 2085 if (cc < len && FXSYS_isDecimalDigit(str[cc])) {
2103 day = day * 10 + str[cc++] - '0'; 2086 day = day * 10 + str[cc++] - '0';
2104 } 2087 }
2105 } else if (dwSymbol == FXBSTR_ID(0, 0, 'D', '2')) { 2088 } else if (dwSymbol == FXBSTR_ID(0, 0, 'D', '2')) {
2106 if (!FX_IsDigit(str[cc])) { 2089 if (!FXSYS_isDecimalDigit(str[cc])) {
2107 return FALSE; 2090 return FALSE;
2108 } 2091 }
2109 day = str[cc++] - '0'; 2092 day = str[cc++] - '0';
2110 if (cc < len) { 2093 if (cc < len) {
2111 day = day * 10 + str[cc++] - '0'; 2094 day = day * 10 + str[cc++] - '0';
2112 } 2095 }
2113 } else if (dwSymbol == FXBSTR_ID(0, 0, 'J', '1')) { 2096 } else if (dwSymbol == FXBSTR_ID(0, 0, 'J', '1')) {
2114 int i = 0; 2097 int i = 0;
2115 while (cc < len && i < 3 && FX_IsDigit(str[cc])) { 2098 while (cc < len && i < 3 && FXSYS_isDecimalDigit(str[cc])) {
2116 cc++; 2099 cc++;
2117 i++; 2100 i++;
2118 } 2101 }
2119 } else if (dwSymbol == FXBSTR_ID(0, 0, 'J', '3')) { 2102 } else if (dwSymbol == FXBSTR_ID(0, 0, 'J', '3')) {
2120 cc += 3; 2103 cc += 3;
2121 } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '1')) { 2104 } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '1')) {
2122 if (!FX_IsDigit(str[cc])) { 2105 if (!FXSYS_isDecimalDigit(str[cc])) {
2123 return FALSE; 2106 return FALSE;
2124 } 2107 }
2125 month = str[cc++] - '0'; 2108 month = str[cc++] - '0';
2126 if (cc < len && FX_IsDigit(str[cc])) { 2109 if (cc < len && FXSYS_isDecimalDigit(str[cc])) {
2127 month = month * 10 + str[cc++] - '0'; 2110 month = month * 10 + str[cc++] - '0';
2128 } 2111 }
2129 } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '2')) { 2112 } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '2')) {
2130 if (!FX_IsDigit(str[cc])) { 2113 if (!FXSYS_isDecimalDigit(str[cc])) {
2131 return FALSE; 2114 return FALSE;
2132 } 2115 }
2133 month = str[cc++] - '0'; 2116 month = str[cc++] - '0';
2134 if (cc < len) { 2117 if (cc < len) {
2135 month = month * 10 + str[cc++] - '0'; 2118 month = month * 10 + str[cc++] - '0';
2136 } 2119 }
2137 } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '3')) { 2120 } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '3')) {
2138 CFX_WideString wsMonthNameAbbr; 2121 CFX_WideString wsMonthNameAbbr;
2139 uint16_t i = 0; 2122 uint16_t i = 0;
2140 for (; i < 12; i++) { 2123 for (; i < 12; i++) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2203 cc += wsDayName.GetLength(); 2186 cc += wsDayName.GetLength();
2204 } 2187 }
2205 } else if (dwSymbol == FXBSTR_ID(0, 0, 'e', '1')) { 2188 } else if (dwSymbol == FXBSTR_ID(0, 0, 'e', '1')) {
2206 cc += 1; 2189 cc += 1;
2207 } else if (dwSymbol == FXBSTR_ID(0, 0, 'G', '1')) { 2190 } else if (dwSymbol == FXBSTR_ID(0, 0, 'G', '1')) {
2208 cc += 2; 2191 cc += 2;
2209 } else if (dwSymbol == FXBSTR_ID(0, 0, 'Y', '2')) { 2192 } else if (dwSymbol == FXBSTR_ID(0, 0, 'Y', '2')) {
2210 if (cc + 2 > len) { 2193 if (cc + 2 > len) {
2211 return FALSE; 2194 return FALSE;
2212 } 2195 }
2213 if (!FX_IsDigit(str[cc])) { 2196 if (!FXSYS_isDecimalDigit(str[cc])) {
2214 return FALSE; 2197 return FALSE;
2215 } 2198 }
2216 year = str[cc++] - '0'; 2199 year = str[cc++] - '0';
2217 if (cc >= len || !FX_IsDigit(str[cc])) { 2200 if (cc >= len || !FXSYS_isDecimalDigit(str[cc])) {
2218 return FALSE; 2201 return FALSE;
2219 } 2202 }
2220 year = year * 10 + str[cc++] - '0'; 2203 year = year * 10 + str[cc++] - '0';
2221 if (year <= 29) { 2204 if (year <= 29) {
2222 year += 2000; 2205 year += 2000;
2223 } else { 2206 } else {
2224 year += 1900; 2207 year += 1900;
2225 } 2208 }
2226 } else if (dwSymbol == FXBSTR_ID(0, 0, 'Y', '4')) { 2209 } else if (dwSymbol == FXBSTR_ID(0, 0, 'Y', '4')) {
2227 int i = 0; 2210 int i = 0;
2228 year = 0; 2211 year = 0;
2229 if (cc + 4 > len) { 2212 if (cc + 4 > len) {
2230 return FALSE; 2213 return FALSE;
2231 } 2214 }
2232 while (i < 4) { 2215 while (i < 4) {
2233 if (!FX_IsDigit(str[cc])) { 2216 if (!FXSYS_isDecimalDigit(str[cc])) {
2234 return FALSE; 2217 return FALSE;
2235 } 2218 }
2236 year = year * 10 + str[cc] - '0'; 2219 year = year * 10 + str[cc] - '0';
2237 cc++; 2220 cc++;
2238 i++; 2221 i++;
2239 } 2222 }
2240 } else if (dwSymbol == FXBSTR_ID(0, 0, 'w', '1')) { 2223 } else if (dwSymbol == FXBSTR_ID(0, 0, 'w', '1')) {
2241 cc += 1; 2224 cc += 1;
2242 } else if (dwSymbol == FXBSTR_ID(0, 0, 'W', '2')) { 2225 } else if (dwSymbol == FXBSTR_ID(0, 0, 'W', '2')) {
2243 cc += 2; 2226 cc += 2;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
2310 FX_WCHAR dwCharSymbol = strf[ccf++]; 2293 FX_WCHAR dwCharSymbol = strf[ccf++];
2311 while (ccf < lenf && strf[ccf] == dwCharSymbol) { 2294 while (ccf < lenf && strf[ccf] == dwCharSymbol) {
2312 ccf++; 2295 ccf++;
2313 dwSymbolNum++; 2296 dwSymbolNum++;
2314 } 2297 }
2315 uint32_t dwSymbol = (dwCharSymbol << 8) | (dwSymbolNum + '0'); 2298 uint32_t dwSymbol = (dwCharSymbol << 8) | (dwSymbolNum + '0');
2316 if (dwSymbol == FXBSTR_ID(0, 0, 'k', '1') || 2299 if (dwSymbol == FXBSTR_ID(0, 0, 'k', '1') ||
2317 dwSymbol == FXBSTR_ID(0, 0, 'H', '1') || 2300 dwSymbol == FXBSTR_ID(0, 0, 'H', '1') ||
2318 dwSymbol == FXBSTR_ID(0, 0, 'h', '1') || 2301 dwSymbol == FXBSTR_ID(0, 0, 'h', '1') ||
2319 dwSymbol == FXBSTR_ID(0, 0, 'K', '1')) { 2302 dwSymbol == FXBSTR_ID(0, 0, 'K', '1')) {
2320 if (!FX_IsDigit(str[cc])) { 2303 if (!FXSYS_isDecimalDigit(str[cc])) {
2321 return FALSE; 2304 return FALSE;
2322 } 2305 }
2323 hour = str[cc++] - '0'; 2306 hour = str[cc++] - '0';
2324 if (cc < len && FX_IsDigit(str[cc])) { 2307 if (cc < len && FXSYS_isDecimalDigit(str[cc])) {
2325 hour = hour * 10 + str[cc++] - '0'; 2308 hour = hour * 10 + str[cc++] - '0';
2326 } 2309 }
2327 if (dwSymbol == FXBSTR_ID(0, 0, 'K', '1') && hour == 24) { 2310 if (dwSymbol == FXBSTR_ID(0, 0, 'K', '1') && hour == 24) {
2328 hour = 0; 2311 hour = 0;
2329 } 2312 }
2330 } else if (dwSymbol == FXBSTR_ID(0, 0, 'k', '2') || 2313 } else if (dwSymbol == FXBSTR_ID(0, 0, 'k', '2') ||
2331 dwSymbol == FXBSTR_ID(0, 0, 'H', '2') || 2314 dwSymbol == FXBSTR_ID(0, 0, 'H', '2') ||
2332 dwSymbol == FXBSTR_ID(0, 0, 'h', '2') || 2315 dwSymbol == FXBSTR_ID(0, 0, 'h', '2') ||
2333 dwSymbol == FXBSTR_ID(0, 0, 'K', '2')) { 2316 dwSymbol == FXBSTR_ID(0, 0, 'K', '2')) {
2334 if (!FX_IsDigit(str[cc])) { 2317 if (!FXSYS_isDecimalDigit(str[cc])) {
2335 return FALSE; 2318 return FALSE;
2336 } 2319 }
2337 hour = str[cc++] - '0'; 2320 hour = str[cc++] - '0';
2338 if (cc >= len) { 2321 if (cc >= len) {
2339 return FALSE; 2322 return FALSE;
2340 } 2323 }
2341 if (!FX_IsDigit(str[cc])) { 2324 if (!FXSYS_isDecimalDigit(str[cc])) {
2342 return FALSE; 2325 return FALSE;
2343 } 2326 }
2344 hour = hour * 10 + str[cc++] - '0'; 2327 hour = hour * 10 + str[cc++] - '0';
2345 if (dwSymbol == FXBSTR_ID(0, 0, 'K', '2') && hour == 24) { 2328 if (dwSymbol == FXBSTR_ID(0, 0, 'K', '2') && hour == 24) {
2346 hour = 0; 2329 hour = 0;
2347 } 2330 }
2348 } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '1')) { 2331 } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '1')) {
2349 if (!FX_IsDigit(str[cc])) { 2332 if (!FXSYS_isDecimalDigit(str[cc])) {
2350 return FALSE; 2333 return FALSE;
2351 } 2334 }
2352 minute = str[cc++] - '0'; 2335 minute = str[cc++] - '0';
2353 if (cc < len && FX_IsDigit(str[cc])) { 2336 if (cc < len && FXSYS_isDecimalDigit(str[cc])) {
2354 minute = minute * 10 + str[cc++] - '0'; 2337 minute = minute * 10 + str[cc++] - '0';
2355 } 2338 }
2356 } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '2')) { 2339 } else if (dwSymbol == FXBSTR_ID(0, 0, 'M', '2')) {
2357 if (!FX_IsDigit(str[cc])) { 2340 if (!FXSYS_isDecimalDigit(str[cc])) {
2358 return FALSE; 2341 return FALSE;
2359 } 2342 }
2360 minute = str[cc++] - '0'; 2343 minute = str[cc++] - '0';
2361 if (cc >= len) { 2344 if (cc >= len) {
2362 return FALSE; 2345 return FALSE;
2363 } 2346 }
2364 if (!FX_IsDigit(str[cc])) { 2347 if (!FXSYS_isDecimalDigit(str[cc])) {
2365 return FALSE; 2348 return FALSE;
2366 } 2349 }
2367 minute = minute * 10 + str[cc++] - '0'; 2350 minute = minute * 10 + str[cc++] - '0';
2368 } else if (dwSymbol == FXBSTR_ID(0, 0, 'S', '1')) { 2351 } else if (dwSymbol == FXBSTR_ID(0, 0, 'S', '1')) {
2369 if (!FX_IsDigit(str[cc])) { 2352 if (!FXSYS_isDecimalDigit(str[cc])) {
2370 return FALSE; 2353 return FALSE;
2371 } 2354 }
2372 second = str[cc++] - '0'; 2355 second = str[cc++] - '0';
2373 if (cc < len && FX_IsDigit(str[cc])) { 2356 if (cc < len && FXSYS_isDecimalDigit(str[cc])) {
2374 second = second * 10 + str[cc++] - '0'; 2357 second = second * 10 + str[cc++] - '0';
2375 } 2358 }
2376 } else if (dwSymbol == FXBSTR_ID(0, 0, 'S', '2')) { 2359 } else if (dwSymbol == FXBSTR_ID(0, 0, 'S', '2')) {
2377 if (!FX_IsDigit(str[cc])) { 2360 if (!FXSYS_isDecimalDigit(str[cc])) {
2378 return FALSE; 2361 return FALSE;
2379 } 2362 }
2380 second = str[cc++] - '0'; 2363 second = str[cc++] - '0';
2381 if (cc >= len) { 2364 if (cc >= len) {
2382 return FALSE; 2365 return FALSE;
2383 } 2366 }
2384 if (!FX_IsDigit(str[cc])) { 2367 if (!FXSYS_isDecimalDigit(str[cc])) {
2385 return FALSE; 2368 return FALSE;
2386 } 2369 }
2387 second = second * 10 + str[cc++] - '0'; 2370 second = second * 10 + str[cc++] - '0';
2388 } else if (dwSymbol == FXBSTR_ID(0, 0, 'F', '3')) { 2371 } else if (dwSymbol == FXBSTR_ID(0, 0, 'F', '3')) {
2389 if (cc + 3 >= len) { 2372 if (cc + 3 >= len) {
2390 return FALSE; 2373 return FALSE;
2391 } 2374 }
2392 int i = 0; 2375 int i = 0;
2393 while (i < 3) { 2376 while (i < 3) {
2394 if (!FX_IsDigit(str[cc])) { 2377 if (!FXSYS_isDecimalDigit(str[cc])) {
2395 return FALSE; 2378 return FALSE;
2396 } 2379 }
2397 millisecond = millisecond * 10 + str[cc++] - '0'; 2380 millisecond = millisecond * 10 + str[cc++] - '0';
2398 i++; 2381 i++;
2399 } 2382 }
2400 } else if (dwSymbol == FXBSTR_ID(0, 0, 'A', '1')) { 2383 } else if (dwSymbol == FXBSTR_ID(0, 0, 'A', '1')) {
2401 CFX_WideString wsAM; 2384 CFX_WideString wsAM;
2402 pLocale->GetMeridiemName(wsAM, TRUE); 2385 pLocale->GetMeridiemName(wsAM, TRUE);
2403 CFX_WideString wsPM; 2386 CFX_WideString wsPM;
2404 pLocale->GetMeridiemName(wsPM, FALSE); 2387 pLocale->GetMeridiemName(wsPM, FALSE);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
2590 const FX_WCHAR* pStrPattern = wsTextFormat.c_str(); 2573 const FX_WCHAR* pStrPattern = wsTextFormat.c_str();
2591 int32_t iLenPattern = wsTextFormat.GetLength(); 2574 int32_t iLenPattern = wsTextFormat.GetLength();
2592 while (iPattern < iLenPattern) { 2575 while (iPattern < iLenPattern) {
2593 switch (pStrPattern[iPattern]) { 2576 switch (pStrPattern[iPattern]) {
2594 case '\'': { 2577 case '\'': {
2595 wsOutput += FX_GetLiteralText(pStrPattern, iPattern, iLenPattern); 2578 wsOutput += FX_GetLiteralText(pStrPattern, iPattern, iLenPattern);
2596 iPattern++; 2579 iPattern++;
2597 break; 2580 break;
2598 } 2581 }
2599 case 'A': 2582 case 'A':
2600 if (iText >= iLenText || !FX_IsAlpha(pStrText[iText])) { 2583 if (iText >= iLenText || !FXSYS_iswalpha(pStrText[iText])) {
2601 return FALSE; 2584 return FALSE;
2602 } 2585 }
2603 wsOutput += pStrText[iText++]; 2586 wsOutput += pStrText[iText++];
2604 iPattern++; 2587 iPattern++;
2605 break; 2588 break;
2606 case 'X': 2589 case 'X':
2607 if (iText >= iLenText) { 2590 if (iText >= iLenText) {
2608 return FALSE; 2591 return FALSE;
2609 } 2592 }
2610 wsOutput += pStrText[iText++]; 2593 wsOutput += pStrText[iText++];
2611 iPattern++; 2594 iPattern++;
2612 break; 2595 break;
2613 case 'O': 2596 case 'O':
2614 case '0': 2597 case '0':
2615 if (iText >= iLenText || 2598 if (iText >= iLenText || (!FXSYS_isDecimalDigit(pStrText[iText]) &&
2616 (!FX_IsDigit(pStrText[iText]) && !FX_IsAlpha(pStrText[iText]))) { 2599 !FXSYS_iswalpha(pStrText[iText]))) {
2617 return FALSE; 2600 return FALSE;
2618 } 2601 }
2619 wsOutput += pStrText[iText++]; 2602 wsOutput += pStrText[iText++];
2620 iPattern++; 2603 iPattern++;
2621 break; 2604 break;
2622 case '9': 2605 case '9':
2623 if (iText >= iLenText || !FX_IsDigit(pStrText[iText])) { 2606 if (iText >= iLenText || !FXSYS_isDecimalDigit(pStrText[iText])) {
2624 return FALSE; 2607 return FALSE;
2625 } 2608 }
2626 wsOutput += pStrText[iText++]; 2609 wsOutput += pStrText[iText++];
2627 iPattern++; 2610 iPattern++;
2628 break; 2611 break;
2629 default: 2612 default:
2630 wsOutput += pStrPattern[iPattern++]; 2613 wsOutput += pStrPattern[iPattern++];
2631 break; 2614 break;
2632 } 2615 }
2633 } 2616 }
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
2740 int dot_index = wsSrcNum.Find('.'); 2723 int dot_index = wsSrcNum.Find('.');
2741 if (dot_index == -1) { 2724 if (dot_index == -1) {
2742 dot_index = len; 2725 dot_index = len;
2743 } 2726 }
2744 ccf = dot_index_f - 1; 2727 ccf = dot_index_f - 1;
2745 cc = dot_index - 1; 2728 cc = dot_index - 1;
2746 while (ccf >= 0) { 2729 while (ccf >= 0) {
2747 switch (strf[ccf]) { 2730 switch (strf[ccf]) {
2748 case '9': 2731 case '9':
2749 if (cc >= 0) { 2732 if (cc >= 0) {
2750 if (!FX_IsDigit(str[cc])) { 2733 if (!FXSYS_isDecimalDigit(str[cc])) {
2751 return FALSE; 2734 return FALSE;
2752 } 2735 }
2753 wsOutput = str[cc] + wsOutput; 2736 wsOutput = str[cc] + wsOutput;
2754 cc--; 2737 cc--;
2755 } else { 2738 } else {
2756 wsOutput = L'0' + wsOutput; 2739 wsOutput = L'0' + wsOutput;
2757 } 2740 }
2758 ccf--; 2741 ccf--;
2759 break; 2742 break;
2760 case 'z': 2743 case 'z':
2761 if (cc >= 0) { 2744 if (cc >= 0) {
2762 if (!FX_IsDigit(str[cc])) { 2745 if (!FXSYS_isDecimalDigit(str[cc])) {
2763 return FALSE; 2746 return FALSE;
2764 } 2747 }
2765 if (str[0] != '0') { 2748 if (str[0] != '0') {
2766 wsOutput = str[cc] + wsOutput; 2749 wsOutput = str[cc] + wsOutput;
2767 } 2750 }
2768 cc--; 2751 cc--;
2769 } 2752 }
2770 ccf--; 2753 ccf--;
2771 break; 2754 break;
2772 case 'Z': 2755 case 'Z':
2773 if (cc >= 0) { 2756 if (cc >= 0) {
2774 if (!FX_IsDigit(str[cc])) { 2757 if (!FXSYS_isDecimalDigit(str[cc])) {
2775 return FALSE; 2758 return FALSE;
2776 } 2759 }
2777 if (str[0] == '0') { 2760 if (str[0] == '0') {
2778 wsOutput = L' ' + wsOutput; 2761 wsOutput = L' ' + wsOutput;
2779 } else { 2762 } else {
2780 wsOutput = str[cc] + wsOutput; 2763 wsOutput = str[cc] + wsOutput;
2781 } 2764 }
2782 cc--; 2765 cc--;
2783 } else { 2766 } else {
2784 wsOutput = L' ' + wsOutput; 2767 wsOutput = L' ' + wsOutput;
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
2944 ccf = dot_index_f + 1; 2927 ccf = dot_index_f + 1;
2945 cc = dot_index + 1; 2928 cc = dot_index + 1;
2946 while (ccf < lenf) { 2929 while (ccf < lenf) {
2947 switch (strf[ccf]) { 2930 switch (strf[ccf]) {
2948 case '\'': 2931 case '\'':
2949 wsOutput += FX_GetLiteralText(strf, ccf, lenf); 2932 wsOutput += FX_GetLiteralText(strf, ccf, lenf);
2950 ccf++; 2933 ccf++;
2951 break; 2934 break;
2952 case '9': 2935 case '9':
2953 if (cc < len) { 2936 if (cc < len) {
2954 if (!FX_IsDigit(str[cc])) { 2937 if (!FXSYS_isDecimalDigit(str[cc])) {
2955 return FALSE; 2938 return FALSE;
2956 } 2939 }
2957 wsOutput += str[cc]; 2940 wsOutput += str[cc];
2958 cc++; 2941 cc++;
2959 } else { 2942 } else {
2960 wsOutput += L'0'; 2943 wsOutput += L'0';
2961 } 2944 }
2962 ccf++; 2945 ccf++;
2963 break; 2946 break;
2964 case 'z': 2947 case 'z':
2965 if (cc < len) { 2948 if (cc < len) {
2966 if (!FX_IsDigit(str[cc])) { 2949 if (!FXSYS_isDecimalDigit(str[cc])) {
2967 return FALSE; 2950 return FALSE;
2968 } 2951 }
2969 wsOutput += str[cc]; 2952 wsOutput += str[cc];
2970 cc++; 2953 cc++;
2971 } 2954 }
2972 ccf++; 2955 ccf++;
2973 break; 2956 break;
2974 case 'Z': 2957 case 'Z':
2975 if (cc < len) { 2958 if (cc < len) {
2976 if (!FX_IsDigit(str[cc])) { 2959 if (!FXSYS_isDecimalDigit(str[cc])) {
2977 return FALSE; 2960 return FALSE;
2978 } 2961 }
2979 wsOutput += str[cc]; 2962 wsOutput += str[cc];
2980 cc++; 2963 cc++;
2981 } else { 2964 } else {
2982 wsOutput += L'0'; 2965 wsOutput += L'0';
2983 } 2966 }
2984 ccf++; 2967 ccf++;
2985 break; 2968 break;
2986 case 'E': { 2969 case 'E': {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
3041 CFX_WideString wsSymbol; 3024 CFX_WideString wsSymbol;
3042 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Percent, wsSymbol); 3025 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Percent, wsSymbol);
3043 wsOutput += wsSymbol; 3026 wsOutput += wsSymbol;
3044 } 3027 }
3045 ccf++; 3028 ccf++;
3046 break; 3029 break;
3047 case '8': { 3030 case '8': {
3048 while (ccf < lenf && strf[ccf] == '8') { 3031 while (ccf < lenf && strf[ccf] == '8') {
3049 ccf++; 3032 ccf++;
3050 } 3033 }
3051 while (cc < len && FX_IsDigit(str[cc])) { 3034 while (cc < len && FXSYS_isDecimalDigit(str[cc])) {
3052 wsOutput += str[cc]; 3035 wsOutput += str[cc];
3053 cc++; 3036 cc++;
3054 } 3037 }
3055 } break; 3038 } break;
3056 case ',': 3039 case ',':
3057 wsOutput += wsGroupSymbol; 3040 wsOutput += wsGroupSymbol;
3058 ccf++; 3041 ccf++;
3059 break; 3042 break;
3060 case '(': 3043 case '(':
3061 if (bNeg) { 3044 if (bNeg) {
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
3449 CFX_WideString wsSymbol; 3432 CFX_WideString wsSymbol;
3450 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Percent, wsSymbol); 3433 pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Percent, wsSymbol);
3451 wsOutput += wsSymbol; 3434 wsOutput += wsSymbol;
3452 } 3435 }
3453 ccf++; 3436 ccf++;
3454 break; 3437 break;
3455 case '8': { 3438 case '8': {
3456 while (ccf < lenf && strf[ccf] == '8') { 3439 while (ccf < lenf && strf[ccf] == '8') {
3457 ccf++; 3440 ccf++;
3458 } 3441 }
3459 while (cc < len && FX_IsDigit(str[cc])) { 3442 while (cc < len && FXSYS_isDecimalDigit(str[cc])) {
3460 wsOutput += str[cc]; 3443 wsOutput += str[cc];
3461 cc++; 3444 cc++;
3462 } 3445 }
3463 } break; 3446 } break;
3464 case ',': 3447 case ',':
3465 wsOutput += wsGroupSymbol; 3448 wsOutput += wsGroupSymbol;
3466 ccf++; 3449 ccf++;
3467 break; 3450 break;
3468 case '(': 3451 case '(':
3469 if (bNeg) { 3452 if (bNeg) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
3517 int32_t month = 1; 3500 int32_t month = 1;
3518 int32_t day = 1; 3501 int32_t day = 1;
3519 uint16_t wYear = 0; 3502 uint16_t wYear = 0;
3520 int cc_start = 0, cc = 0; 3503 int cc_start = 0, cc = 0;
3521 const FX_WCHAR* str = wsDate.c_str(); 3504 const FX_WCHAR* str = wsDate.c_str();
3522 int len = wsDate.GetLength(); 3505 int len = wsDate.GetLength();
3523 if (len > 10) { 3506 if (len > 10) {
3524 return FALSE; 3507 return FALSE;
3525 } 3508 }
3526 while (cc < len && cc < 4) { 3509 while (cc < len && cc < 4) {
3527 if (!FX_IsDigit(str[cc])) { 3510 if (!FXSYS_isDecimalDigit(str[cc])) {
3528 return FALSE; 3511 return FALSE;
3529 } 3512 }
3530 wYear = wYear * 10 + str[cc++] - '0'; 3513 wYear = wYear * 10 + str[cc++] - '0';
3531 } 3514 }
3532 year = wYear; 3515 year = wYear;
3533 if (cc < 4 || wYear < 1900) { 3516 if (cc < 4 || wYear < 1900) {
3534 return FALSE; 3517 return FALSE;
3535 } 3518 }
3536 if (cc < len) { 3519 if (cc < len) {
3537 if (str[cc] == '-') { 3520 if (str[cc] == '-') {
3538 cc++; 3521 cc++;
3539 } 3522 }
3540 cc_start = cc; 3523 cc_start = cc;
3541 uint8_t tmpM = 0; 3524 uint8_t tmpM = 0;
3542 while (cc < len && cc < cc_start + 2) { 3525 while (cc < len && cc < cc_start + 2) {
3543 if (!FX_IsDigit(str[cc])) { 3526 if (!FXSYS_isDecimalDigit(str[cc])) {
3544 return FALSE; 3527 return FALSE;
3545 } 3528 }
3546 tmpM = tmpM * 10 + str[cc++] - '0'; 3529 tmpM = tmpM * 10 + str[cc++] - '0';
3547 } 3530 }
3548 month = tmpM; 3531 month = tmpM;
3549 if (cc == cc_start + 1 || tmpM > 12 || tmpM < 1) { 3532 if (cc == cc_start + 1 || tmpM > 12 || tmpM < 1) {
3550 return FALSE; 3533 return FALSE;
3551 } 3534 }
3552 if (cc < len) { 3535 if (cc < len) {
3553 if (str[cc] == '-') { 3536 if (str[cc] == '-') {
3554 cc++; 3537 cc++;
3555 } 3538 }
3556 uint8_t tmpD = 0; 3539 uint8_t tmpD = 0;
3557 cc_start = cc; 3540 cc_start = cc;
3558 while (cc < len && cc < cc_start + 2) { 3541 while (cc < len && cc < cc_start + 2) {
3559 if (!FX_IsDigit(str[cc])) { 3542 if (!FXSYS_isDecimalDigit(str[cc])) {
3560 return FALSE; 3543 return FALSE;
3561 } 3544 }
3562 tmpD = tmpD * 10 + str[cc++] - '0'; 3545 tmpD = tmpD * 10 + str[cc++] - '0';
3563 } 3546 }
3564 day = tmpD; 3547 day = tmpD;
3565 if (tmpD < 1) { 3548 if (tmpD < 1) {
3566 return FALSE; 3549 return FALSE;
3567 } 3550 }
3568 if ((tmpM == 1 || tmpM == 3 || tmpM == 5 || tmpM == 7 || tmpM == 8 || 3551 if ((tmpM == 1 || tmpM == 3 || tmpM == 5 || tmpM == 7 || tmpM == 8 ||
3569 tmpM == 10 || tmpM == 12) && 3552 tmpM == 10 || tmpM == 12) &&
(...skipping 27 matching lines...) Expand all
3597 return FALSE; 3580 return FALSE;
3598 } 3581 }
3599 uint8_t hour = 0; 3582 uint8_t hour = 0;
3600 uint8_t minute = 0; 3583 uint8_t minute = 0;
3601 uint8_t second = 0; 3584 uint8_t second = 0;
3602 uint16_t millisecond = 0; 3585 uint16_t millisecond = 0;
3603 int cc_start = 0, cc = cc_start; 3586 int cc_start = 0, cc = cc_start;
3604 const FX_WCHAR* str = wsTime.c_str(); 3587 const FX_WCHAR* str = wsTime.c_str();
3605 int len = wsTime.GetLength(); 3588 int len = wsTime.GetLength();
3606 while (cc < len && cc < 2) { 3589 while (cc < len && cc < 2) {
3607 if (!FX_IsDigit(str[cc])) { 3590 if (!FXSYS_isDecimalDigit(str[cc])) {
3608 return FALSE; 3591 return FALSE;
3609 } 3592 }
3610 hour = hour * 10 + str[cc++] - '0'; 3593 hour = hour * 10 + str[cc++] - '0';
3611 } 3594 }
3612 if (cc < 2 || hour >= 24) { 3595 if (cc < 2 || hour >= 24) {
3613 return FALSE; 3596 return FALSE;
3614 } 3597 }
3615 if (cc < len) { 3598 if (cc < len) {
3616 if (str[cc] == ':') { 3599 if (str[cc] == ':') {
3617 cc++; 3600 cc++;
3618 } 3601 }
3619 cc_start = cc; 3602 cc_start = cc;
3620 while (cc < len && cc < cc_start + 2) { 3603 while (cc < len && cc < cc_start + 2) {
3621 if (!FX_IsDigit(str[cc])) { 3604 if (!FXSYS_isDecimalDigit(str[cc])) {
3622 return FALSE; 3605 return FALSE;
3623 } 3606 }
3624 minute = minute * 10 + str[cc++] - '0'; 3607 minute = minute * 10 + str[cc++] - '0';
3625 } 3608 }
3626 if (cc == cc_start + 1 || minute >= 60) { 3609 if (cc == cc_start + 1 || minute >= 60) {
3627 return FALSE; 3610 return FALSE;
3628 } 3611 }
3629 if (cc < len) { 3612 if (cc < len) {
3630 if (str[cc] == ':') { 3613 if (str[cc] == ':') {
3631 cc++; 3614 cc++;
3632 } 3615 }
3633 cc_start = cc; 3616 cc_start = cc;
3634 while (cc < len && cc < cc_start + 2) { 3617 while (cc < len && cc < cc_start + 2) {
3635 if (!FX_IsDigit(str[cc])) { 3618 if (!FXSYS_isDecimalDigit(str[cc])) {
3636 return FALSE; 3619 return FALSE;
3637 } 3620 }
3638 second = second * 10 + str[cc++] - '0'; 3621 second = second * 10 + str[cc++] - '0';
3639 } 3622 }
3640 if (cc == cc_start + 1 || second >= 60) { 3623 if (cc == cc_start + 1 || second >= 60) {
3641 return FALSE; 3624 return FALSE;
3642 } 3625 }
3643 if (cc < len) { 3626 if (cc < len) {
3644 if (str[cc] == '.') { 3627 if (str[cc] == '.') {
3645 cc++; 3628 cc++;
3646 cc_start = cc; 3629 cc_start = cc;
3647 while (cc < len && cc < cc_start + 3) { 3630 while (cc < len && cc < cc_start + 3) {
3648 if (!FX_IsDigit(str[cc])) { 3631 if (!FXSYS_isDecimalDigit(str[cc])) {
3649 return FALSE; 3632 return FALSE;
3650 } 3633 }
3651 millisecond = millisecond * 10 + str[cc++] - '0'; 3634 millisecond = millisecond * 10 + str[cc++] - '0';
3652 } 3635 }
3653 if (cc < cc_start + 3) 3636 if (cc < cc_start + 3)
3654 return FALSE; 3637 return FALSE;
3655 } 3638 }
3656 if (cc < len) { 3639 if (cc < len) {
3657 FX_TIMEZONE tzDiff; 3640 FX_TIMEZONE tzDiff;
3658 tzDiff.tzHour = 0; 3641 tzDiff.tzHour = 0;
(...skipping 1109 matching lines...) Expand 10 before | Expand all | Expand 10 after
4768 } 4751 }
4769 CFX_Decimal CFX_Decimal::operator*(const CFX_Decimal& val) const { 4752 CFX_Decimal CFX_Decimal::operator*(const CFX_Decimal& val) const {
4770 return Multiply(val); 4753 return Multiply(val);
4771 } 4754 }
4772 CFX_Decimal CFX_Decimal::operator/(const CFX_Decimal& val) const { 4755 CFX_Decimal CFX_Decimal::operator/(const CFX_Decimal& val) const {
4773 return Divide(val); 4756 return Divide(val);
4774 } 4757 }
4775 CFX_Decimal CFX_Decimal::operator%(const CFX_Decimal& val) const { 4758 CFX_Decimal CFX_Decimal::operator%(const CFX_Decimal& val) const {
4776 return Modulus(val); 4759 return Modulus(val);
4777 } 4760 }
OLDNEW
« no previous file with comments | « core/fxcrt/include/fx_ext.h ('k') | xfa/fxfa/parser/cxfa_data.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698