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

Side by Side Diff: xfa/fxfa/parser/xfa_localevalue.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 | « xfa/fxfa/parser/cxfa_widgetdata.cpp ('k') | xfa/fxfa/parser/xfa_utils.h » ('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 "xfa/fxfa/parser/xfa_localevalue.h" 7 #include "xfa/fxfa/parser/xfa_localevalue.h"
8 8
9 #include "core/fxcrt/include/fx_ext.h"
9 #include "xfa/fgas/localization/fgas_localeimp.h" 10 #include "xfa/fgas/localization/fgas_localeimp.h"
10 #include "xfa/fxfa/parser/xfa_doclayout.h" 11 #include "xfa/fxfa/parser/xfa_doclayout.h"
11 #include "xfa/fxfa/parser/xfa_document.h" 12 #include "xfa/fxfa/parser/xfa_document.h"
12 #include "xfa/fxfa/parser/xfa_localemgr.h" 13 #include "xfa/fxfa/parser/xfa_localemgr.h"
13 #include "xfa/fxfa/parser/xfa_object.h" 14 #include "xfa/fxfa/parser/xfa_object.h"
14 #include "xfa/fxfa/parser/xfa_parser.h" 15 #include "xfa/fxfa/parser/xfa_parser.h"
15 #include "xfa/fxfa/parser/xfa_script.h" 16 #include "xfa/fxfa/parser/xfa_script.h"
16 #include "xfa/fxfa/parser/xfa_utils.h" 17 #include "xfa/fxfa/parser/xfa_utils.h"
17 18
18 static const FX_DOUBLE fraction_scales[] = {0.1, 19 static const FX_DOUBLE fraction_scales[] = {0.1,
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 FX_FLOAT CXFA_LocaleValue::GetNum() const { 213 FX_FLOAT CXFA_LocaleValue::GetNum() const {
213 if (m_bValid && (m_dwType == XFA_VT_BOOLEAN || m_dwType == XFA_VT_INTEGER || 214 if (m_bValid && (m_dwType == XFA_VT_BOOLEAN || m_dwType == XFA_VT_INTEGER ||
214 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) { 215 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) {
215 int64_t nIntegral = 0; 216 int64_t nIntegral = 0;
216 uint32_t dwFractional = 0; 217 uint32_t dwFractional = 0;
217 int32_t nExponent = 0; 218 int32_t nExponent = 0;
218 int cc = 0; 219 int cc = 0;
219 FX_BOOL bNegative = FALSE, bExpSign = FALSE; 220 FX_BOOL bNegative = FALSE, bExpSign = FALSE;
220 const FX_WCHAR* str = m_wsValue.c_str(); 221 const FX_WCHAR* str = m_wsValue.c_str();
221 int len = m_wsValue.GetLength(); 222 int len = m_wsValue.GetLength();
222 while (XFA_IsSpace(str[cc]) && cc < len) { 223 while (FXSYS_iswspace(str[cc]) && cc < len) {
223 cc++; 224 cc++;
224 } 225 }
225 if (cc >= len) { 226 if (cc >= len) {
226 return 0; 227 return 0;
227 } 228 }
228 if (str[0] == '+') { 229 if (str[0] == '+') {
229 cc++; 230 cc++;
230 } else if (str[0] == '-') { 231 } else if (str[0] == '-') {
231 bNegative = TRUE; 232 bNegative = TRUE;
232 cc++; 233 cc++;
233 } 234 }
234 int nIntegralLen = 0; 235 int nIntegralLen = 0;
235 while (cc < len) { 236 while (cc < len) {
236 if (str[cc] == '.' || !XFA_IsDigit(str[cc]) || nIntegralLen > 17) { 237 if (str[cc] == '.' || !FXSYS_isDecimalDigit(str[cc]) ||
238 nIntegralLen > 17) {
237 break; 239 break;
238 } 240 }
239 nIntegral = nIntegral * 10 + str[cc] - '0'; 241 nIntegral = nIntegral * 10 + str[cc] - '0';
240 cc++; 242 cc++;
241 nIntegralLen++; 243 nIntegralLen++;
242 } 244 }
243 nIntegral = bNegative ? -nIntegral : nIntegral; 245 nIntegral = bNegative ? -nIntegral : nIntegral;
244 int scale = 0; 246 int scale = 0;
245 double fraction = 0.0; 247 double fraction = 0.0;
246 if (cc < len && str[cc] == '.') { 248 if (cc < len && str[cc] == '.') {
247 cc++; 249 cc++;
248 while (cc < len) { 250 while (cc < len) {
249 fraction += fraction_scales[scale] * (str[cc] - '0'); 251 fraction += fraction_scales[scale] * (str[cc] - '0');
250 scale++; 252 scale++;
251 cc++; 253 cc++;
252 if (scale == sizeof fraction_scales / sizeof(double) || 254 if (scale == sizeof fraction_scales / sizeof(double) ||
253 !XFA_IsDigit(str[cc])) { 255 !FXSYS_isDecimalDigit(str[cc])) {
254 break; 256 break;
255 } 257 }
256 } 258 }
257 dwFractional = (uint32_t)(fraction * 4294967296.0); 259 dwFractional = (uint32_t)(fraction * 4294967296.0);
258 } 260 }
259 if (cc < len && (str[cc] == 'E' || str[cc] == 'e')) { 261 if (cc < len && (str[cc] == 'E' || str[cc] == 'e')) {
260 cc++; 262 cc++;
261 if (cc < len) { 263 if (cc < len) {
262 if (str[cc] == '+') { 264 if (str[cc] == '+') {
263 cc++; 265 cc++;
264 } else if (str[cc] == '-') { 266 } else if (str[cc] == '-') {
265 bExpSign = TRUE; 267 bExpSign = TRUE;
266 cc++; 268 cc++;
267 } 269 }
268 } 270 }
269 while (cc < len) { 271 while (cc < len) {
270 if (str[cc] == '.' || !XFA_IsDigit(str[cc])) { 272 if (str[cc] == '.' || !FXSYS_isDecimalDigit(str[cc])) {
271 break; 273 break;
272 } 274 }
273 nExponent = nExponent * 10 + str[cc] - '0'; 275 nExponent = nExponent * 10 + str[cc] - '0';
274 cc++; 276 cc++;
275 } 277 }
276 nExponent = bExpSign ? -nExponent : nExponent; 278 nExponent = bExpSign ? -nExponent : nExponent;
277 } 279 }
278 FX_FLOAT fValue = (FX_FLOAT)(dwFractional / 4294967296.0); 280 FX_FLOAT fValue = (FX_FLOAT)(dwFractional / 4294967296.0);
279 fValue = nIntegral + (nIntegral >= 0 ? fValue : -fValue); 281 fValue = nIntegral + (nIntegral >= 0 ? fValue : -fValue);
280 if (nExponent != 0) { 282 if (nExponent != 0) {
281 fValue *= FXSYS_pow(10, (FX_FLOAT)nExponent); 283 fValue *= FXSYS_pow(10, (FX_FLOAT)nExponent);
282 } 284 }
283 return fValue; 285 return fValue;
284 } 286 }
285 return 0; 287 return 0;
286 } 288 }
287 FX_DOUBLE CXFA_LocaleValue::GetDoubleNum() const { 289 FX_DOUBLE CXFA_LocaleValue::GetDoubleNum() const {
288 if (m_bValid && (m_dwType == XFA_VT_BOOLEAN || m_dwType == XFA_VT_INTEGER || 290 if (m_bValid && (m_dwType == XFA_VT_BOOLEAN || m_dwType == XFA_VT_INTEGER ||
289 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) { 291 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) {
290 int64_t nIntegral = 0; 292 int64_t nIntegral = 0;
291 uint32_t dwFractional = 0; 293 uint32_t dwFractional = 0;
292 int32_t nExponent = 0; 294 int32_t nExponent = 0;
293 int32_t cc = 0; 295 int32_t cc = 0;
294 FX_BOOL bNegative = FALSE, bExpSign = FALSE; 296 FX_BOOL bNegative = FALSE, bExpSign = FALSE;
295 const FX_WCHAR* str = m_wsValue.c_str(); 297 const FX_WCHAR* str = m_wsValue.c_str();
296 int len = m_wsValue.GetLength(); 298 int len = m_wsValue.GetLength();
297 while (XFA_IsSpace(str[cc]) && cc < len) { 299 while (FXSYS_iswspace(str[cc]) && cc < len) {
298 cc++; 300 cc++;
299 } 301 }
300 if (cc >= len) { 302 if (cc >= len) {
301 return 0; 303 return 0;
302 } 304 }
303 if (str[0] == '+') { 305 if (str[0] == '+') {
304 cc++; 306 cc++;
305 } else if (str[0] == '-') { 307 } else if (str[0] == '-') {
306 bNegative = TRUE; 308 bNegative = TRUE;
307 cc++; 309 cc++;
308 } 310 }
309 int32_t nIntegralLen = 0; 311 int32_t nIntegralLen = 0;
310 while (cc < len) { 312 while (cc < len) {
311 if (str[cc] == '.' || !XFA_IsDigit(str[cc]) || nIntegralLen > 17) { 313 if (str[cc] == '.' || !FXSYS_isDecimalDigit(str[cc]) ||
314 nIntegralLen > 17) {
312 break; 315 break;
313 } 316 }
314 nIntegral = nIntegral * 10 + str[cc] - '0'; 317 nIntegral = nIntegral * 10 + str[cc] - '0';
315 cc++; 318 cc++;
316 nIntegralLen++; 319 nIntegralLen++;
317 } 320 }
318 nIntegral = bNegative ? -nIntegral : nIntegral; 321 nIntegral = bNegative ? -nIntegral : nIntegral;
319 int32_t scale = 0; 322 int32_t scale = 0;
320 FX_DOUBLE fraction = 0.0; 323 FX_DOUBLE fraction = 0.0;
321 if (cc < len && str[cc] == '.') { 324 if (cc < len && str[cc] == '.') {
322 cc++; 325 cc++;
323 while (cc < len) { 326 while (cc < len) {
324 fraction += fraction_scales[scale] * (str[cc] - '0'); 327 fraction += fraction_scales[scale] * (str[cc] - '0');
325 scale++; 328 scale++;
326 cc++; 329 cc++;
327 if (scale == sizeof fraction_scales / sizeof(FX_DOUBLE) || 330 if (scale == sizeof fraction_scales / sizeof(FX_DOUBLE) ||
328 !XFA_IsDigit(str[cc])) { 331 !FXSYS_isDecimalDigit(str[cc])) {
329 break; 332 break;
330 } 333 }
331 } 334 }
332 dwFractional = (uint32_t)(fraction * 4294967296.0); 335 dwFractional = (uint32_t)(fraction * 4294967296.0);
333 } 336 }
334 if (cc < len && (str[cc] == 'E' || str[cc] == 'e')) { 337 if (cc < len && (str[cc] == 'E' || str[cc] == 'e')) {
335 cc++; 338 cc++;
336 if (cc < len) { 339 if (cc < len) {
337 if (str[cc] == '+') { 340 if (str[cc] == '+') {
338 cc++; 341 cc++;
339 } else if (str[cc] == '-') { 342 } else if (str[cc] == '-') {
340 bExpSign = TRUE; 343 bExpSign = TRUE;
341 cc++; 344 cc++;
342 } 345 }
343 } 346 }
344 while (cc < len) { 347 while (cc < len) {
345 if (str[cc] == '.' || !XFA_IsDigit(str[cc])) { 348 if (str[cc] == '.' || !FXSYS_isDecimalDigit(str[cc])) {
346 break; 349 break;
347 } 350 }
348 nExponent = nExponent * 10 + str[cc] - '0'; 351 nExponent = nExponent * 10 + str[cc] - '0';
349 cc++; 352 cc++;
350 } 353 }
351 nExponent = bExpSign ? -nExponent : nExponent; 354 nExponent = bExpSign ? -nExponent : nExponent;
352 } 355 }
353 FX_DOUBLE dValue = (dwFractional / 4294967296.0); 356 FX_DOUBLE dValue = (dwFractional / 4294967296.0);
354 dValue = nIntegral + (nIntegral >= 0 ? dValue : -dValue); 357 dValue = nIntegral + (nIntegral >= 0 ? dValue : -dValue);
355 if (nExponent != 0) { 358 if (nExponent != 0) {
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
609 if (nLen < wCountY || nLen > wCountY + wCountM + wCountD + 2) { 612 if (nLen < wCountY || nLen > wCountY + wCountM + wCountD + 2) {
610 return FALSE; 613 return FALSE;
611 } 614 }
612 const bool bSymbol = wsDate.Find(0x2D) != -1; 615 const bool bSymbol = wsDate.Find(0x2D) != -1;
613 uint16_t wYear = 0; 616 uint16_t wYear = 0;
614 uint16_t wMonth = 0; 617 uint16_t wMonth = 0;
615 uint16_t wDay = 0; 618 uint16_t wDay = 0;
616 const FX_WCHAR* pDate = wsDate.c_str(); 619 const FX_WCHAR* pDate = wsDate.c_str();
617 int nIndex = 0, nStart = 0; 620 int nIndex = 0, nStart = 0;
618 while (pDate[nIndex] != '\0' && nIndex < wCountY) { 621 while (pDate[nIndex] != '\0' && nIndex < wCountY) {
619 if (!XFA_IsDigit(pDate[nIndex])) { 622 if (!FXSYS_isDecimalDigit(pDate[nIndex])) {
620 return FALSE; 623 return FALSE;
621 } 624 }
622 wYear = (pDate[nIndex] - '0') + wYear * 10; 625 wYear = (pDate[nIndex] - '0') + wYear * 10;
623 nIndex++; 626 nIndex++;
624 } 627 }
625 if (bSymbol) { 628 if (bSymbol) {
626 if (pDate[nIndex] != 0x2D) { 629 if (pDate[nIndex] != 0x2D) {
627 return FALSE; 630 return FALSE;
628 } 631 }
629 nIndex++; 632 nIndex++;
630 } 633 }
631 nStart = nIndex; 634 nStart = nIndex;
632 while (pDate[nIndex] != '\0' && nIndex - nStart < wCountM && nIndex < nLen) { 635 while (pDate[nIndex] != '\0' && nIndex - nStart < wCountM && nIndex < nLen) {
633 if (!XFA_IsDigit(pDate[nIndex])) { 636 if (!FXSYS_isDecimalDigit(pDate[nIndex])) {
634 return FALSE; 637 return FALSE;
635 } 638 }
636 wMonth = (pDate[nIndex] - '0') + wMonth * 10; 639 wMonth = (pDate[nIndex] - '0') + wMonth * 10;
637 nIndex++; 640 nIndex++;
638 } 641 }
639 if (bSymbol) { 642 if (bSymbol) {
640 if (pDate[nIndex] != 0x2D) { 643 if (pDate[nIndex] != 0x2D) {
641 return FALSE; 644 return FALSE;
642 } 645 }
643 nIndex++; 646 nIndex++;
644 } 647 }
645 nStart = nIndex; 648 nStart = nIndex;
646 while (pDate[nIndex] != '\0' && nIndex - nStart < wCountD && nIndex < nLen) { 649 while (pDate[nIndex] != '\0' && nIndex - nStart < wCountD && nIndex < nLen) {
647 if (!XFA_IsDigit(pDate[nIndex])) { 650 if (!FXSYS_isDecimalDigit(pDate[nIndex])) {
648 return FALSE; 651 return FALSE;
649 } 652 }
650 wDay = (pDate[nIndex] - '0') + wDay * 10; 653 wDay = (pDate[nIndex] - '0') + wDay * 10;
651 nIndex++; 654 nIndex++;
652 } 655 }
653 if (nIndex != nLen) { 656 if (nIndex != nLen) {
654 return FALSE; 657 return FALSE;
655 } 658 }
656 if (wYear < 1900 || wYear > 2029) { 659 if (wYear < 1900 || wYear > 2029) {
657 return FALSE; 660 return FALSE;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 const uint16_t wCountF = 3; 699 const uint16_t wCountF = 3;
697 const bool bSymbol = wsTime.Find(':') != -1; 700 const bool bSymbol = wsTime.Find(':') != -1;
698 uint16_t wHour = 0; 701 uint16_t wHour = 0;
699 uint16_t wMinute = 0; 702 uint16_t wMinute = 0;
700 uint16_t wSecond = 0; 703 uint16_t wSecond = 0;
701 uint16_t wFraction = 0; 704 uint16_t wFraction = 0;
702 const FX_WCHAR* pTime = wsTime.c_str(); 705 const FX_WCHAR* pTime = wsTime.c_str();
703 int nIndex = 0; 706 int nIndex = 0;
704 int nStart = 0; 707 int nStart = 0;
705 while (nIndex - nStart < wCountH && pTime[nIndex]) { 708 while (nIndex - nStart < wCountH && pTime[nIndex]) {
706 if (!XFA_IsDigit(pTime[nIndex])) 709 if (!FXSYS_isDecimalDigit(pTime[nIndex]))
707 return FALSE; 710 return FALSE;
708 wHour = pTime[nIndex] - '0' + wHour * 10; 711 wHour = pTime[nIndex] - '0' + wHour * 10;
709 nIndex++; 712 nIndex++;
710 } 713 }
711 if (bSymbol) { 714 if (bSymbol) {
712 if (nIndex < nLen && pTime[nIndex] != ':') 715 if (nIndex < nLen && pTime[nIndex] != ':')
713 return FALSE; 716 return FALSE;
714 nIndex++; 717 nIndex++;
715 } 718 }
716 nStart = nIndex; 719 nStart = nIndex;
717 while (nIndex - nStart < wCountM && nIndex < nLen && pTime[nIndex]) { 720 while (nIndex - nStart < wCountM && nIndex < nLen && pTime[nIndex]) {
718 if (!XFA_IsDigit(pTime[nIndex])) 721 if (!FXSYS_isDecimalDigit(pTime[nIndex]))
719 return FALSE; 722 return FALSE;
720 wMinute = pTime[nIndex] - '0' + wMinute * 10; 723 wMinute = pTime[nIndex] - '0' + wMinute * 10;
721 nIndex++; 724 nIndex++;
722 } 725 }
723 if (bSymbol) { 726 if (bSymbol) {
724 if (nIndex < nLen && pTime[nIndex] != ':') 727 if (nIndex < nLen && pTime[nIndex] != ':')
725 return FALSE; 728 return FALSE;
726 nIndex++; 729 nIndex++;
727 } 730 }
728 nStart = nIndex; 731 nStart = nIndex;
729 while (nIndex - nStart < wCountS && nIndex < nLen && pTime[nIndex]) { 732 while (nIndex - nStart < wCountS && nIndex < nLen && pTime[nIndex]) {
730 if (!XFA_IsDigit(pTime[nIndex])) 733 if (!FXSYS_isDecimalDigit(pTime[nIndex]))
731 return FALSE; 734 return FALSE;
732 wSecond = pTime[nIndex] - '0' + wSecond * 10; 735 wSecond = pTime[nIndex] - '0' + wSecond * 10;
733 nIndex++; 736 nIndex++;
734 } 737 }
735 if (wsTime.Find('.') > 0) { 738 if (wsTime.Find('.') > 0) {
736 if (pTime[nIndex] != '.') 739 if (pTime[nIndex] != '.')
737 return FALSE; 740 return FALSE;
738 nIndex++; 741 nIndex++;
739 nStart = nIndex; 742 nStart = nIndex;
740 while (nIndex - nStart < wCountF && nIndex < nLen && pTime[nIndex]) { 743 while (nIndex - nStart < wCountF && nIndex < nLen && pTime[nIndex]) {
741 if (!XFA_IsDigit(pTime[nIndex])) 744 if (!FXSYS_isDecimalDigit(pTime[nIndex]))
742 return FALSE; 745 return FALSE;
743 wFraction = pTime[nIndex] - '0' + wFraction * 10; 746 wFraction = pTime[nIndex] - '0' + wFraction * 10;
744 nIndex++; 747 nIndex++;
745 } 748 }
746 } 749 }
747 if (nIndex < nLen) { 750 if (nIndex < nLen) {
748 if (pTime[nIndex] == 'Z') { 751 if (pTime[nIndex] == 'Z') {
749 nIndex++; 752 nIndex++;
750 } else if (pTime[nIndex] == '-' || pTime[nIndex] == '+') { 753 } else if (pTime[nIndex] == '-' || pTime[nIndex] == '+') {
751 int16_t nOffsetH = 0; 754 int16_t nOffsetH = 0;
752 int16_t nOffsetM = 0; 755 int16_t nOffsetM = 0;
753 nIndex++; 756 nIndex++;
754 nStart = nIndex; 757 nStart = nIndex;
755 while (nIndex - nStart < wCountH && nIndex < nLen && pTime[nIndex]) { 758 while (nIndex - nStart < wCountH && nIndex < nLen && pTime[nIndex]) {
756 if (!XFA_IsDigit(pTime[nIndex])) 759 if (!FXSYS_isDecimalDigit(pTime[nIndex]))
757 return FALSE; 760 return FALSE;
758 nOffsetH = pTime[nIndex] - '0' + nOffsetH * 10; 761 nOffsetH = pTime[nIndex] - '0' + nOffsetH * 10;
759 nIndex++; 762 nIndex++;
760 } 763 }
761 if (bSymbol) { 764 if (bSymbol) {
762 if (nIndex < nLen && pTime[nIndex] != ':') 765 if (nIndex < nLen && pTime[nIndex] != ':')
763 return FALSE; 766 return FALSE;
764 nIndex++; 767 nIndex++;
765 } 768 }
766 nStart = nIndex; 769 nStart = nIndex;
767 while (nIndex - nStart < wCountM && nIndex < nLen && pTime[nIndex]) { 770 while (nIndex - nStart < wCountM && nIndex < nLen && pTime[nIndex]) {
768 if (!XFA_IsDigit(pTime[nIndex])) 771 if (!FXSYS_isDecimalDigit(pTime[nIndex]))
769 return FALSE; 772 return FALSE;
770 nOffsetM = pTime[nIndex] - '0' + nOffsetM * 10; 773 nOffsetM = pTime[nIndex] - '0' + nOffsetM * 10;
771 nIndex++; 774 nIndex++;
772 } 775 }
773 if (nOffsetH > 12 || nOffsetM >= 60) 776 if (nOffsetH > 12 || nOffsetM >= 60)
774 return FALSE; 777 return FALSE;
775 } 778 }
776 } 779 }
777 return nIndex == nLen && wHour < 24 && wMinute < 60 && wSecond < 60 && 780 return nIndex == nLen && wHour < 24 && wMinute < 60 && wSecond < 60 &&
778 wFraction <= 999; 781 wFraction <= 999;
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 if (cf == L's') { 939 if (cf == L's') {
937 if (c == L'-' || c == L'+') { 940 if (c == L'-' || c == L'+') {
938 ++n; 941 ++n;
939 } 942 }
940 ++nf; 943 ++nf;
941 } 944 }
942 FX_BOOL bLimit = TRUE; 945 FX_BOOL bLimit = TRUE;
943 int32_t nCount = wsNumeric.GetLength(); 946 int32_t nCount = wsNumeric.GetLength();
944 int32_t nCountFmt = wsFormat.GetLength(); 947 int32_t nCountFmt = wsFormat.GetLength();
945 while (n < nCount && (bLimit ? nf < nCountFmt : TRUE) && 948 while (n < nCount && (bLimit ? nf < nCountFmt : TRUE) &&
946 XFA_IsDigit(c = pNum[n])) { 949 FXSYS_isDecimalDigit(c = pNum[n])) {
947 if (bLimit == TRUE) { 950 if (bLimit == TRUE) {
948 if ((cf = pFmt[nf]) == L'*') { 951 if ((cf = pFmt[nf]) == L'*') {
949 bLimit = FALSE; 952 bLimit = FALSE;
950 } else if (cf == L'z') { 953 } else if (cf == L'z') {
951 nf++; 954 nf++;
952 } else { 955 } else {
953 return FALSE; 956 return FALSE;
954 } 957 }
955 } 958 }
956 n++; 959 n++;
(...skipping 17 matching lines...) Expand all
974 if (pFmt[nf] != L'.') { 977 if (pFmt[nf] != L'.') {
975 return FALSE; 978 return FALSE;
976 } 979 }
977 if (wsDecimalSymbol != CFX_WideStringC(c) && c != L'.') { 980 if (wsDecimalSymbol != CFX_WideStringC(c) && c != L'.') {
978 return FALSE; 981 return FALSE;
979 } 982 }
980 ++nf; 983 ++nf;
981 ++n; 984 ++n;
982 bLimit = TRUE; 985 bLimit = TRUE;
983 while (n < nCount && (bLimit ? nf < nCountFmt : TRUE) && 986 while (n < nCount && (bLimit ? nf < nCountFmt : TRUE) &&
984 XFA_IsDigit(c = pNum[n])) { 987 FXSYS_isDecimalDigit(c = pNum[n])) {
985 if (bLimit == TRUE) { 988 if (bLimit == TRUE) {
986 if ((cf = pFmt[nf]) == L'*') { 989 if ((cf = pFmt[nf]) == L'*') {
987 bLimit = FALSE; 990 bLimit = FALSE;
988 } else if (cf == L'z') { 991 } else if (cf == L'z') {
989 nf++; 992 nf++;
990 } else { 993 } else {
991 return FALSE; 994 return FALSE;
992 } 995 }
993 } 996 }
994 n++; 997 n++;
995 } 998 }
996 return n == nCount; 999 return n == nCount;
997 } 1000 }
OLDNEW
« no previous file with comments | « xfa/fxfa/parser/cxfa_widgetdata.cpp ('k') | xfa/fxfa/parser/xfa_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698