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

Side by Side Diff: xfa/src/fxfa/src/parser/xfa_localevalue.cpp

Issue 1172793002: Merge to XFA: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 6 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/src/fxfa/src/parser/xfa_localemgr.cpp ('k') | xfa/src/fxfa/src/parser/xfa_object_imp.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 "../../../foxitlib.h" 7 #include "../../../foxitlib.h"
8 #include "../common/xfa_utils.h" 8 #include "../common/xfa_utils.h"
9 #include "../common/xfa_object.h" 9 #include "../common/xfa_object.h"
10 #include "../common/xfa_document.h" 10 #include "../common/xfa_document.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 { 93 {
94 CFX_WideString wsOutput; 94 CFX_WideString wsOutput;
95 IFX_Locale* locale = m_pLocaleMgr->GetDefLocale(); 95 IFX_Locale* locale = m_pLocaleMgr->GetDefLocale();
96 if (pLocale) { 96 if (pLocale) {
97 m_pLocaleMgr->SetDefLocale(pLocale); 97 m_pLocaleMgr->SetDefLocale(pLocale);
98 } 98 }
99 IFX_FormatString* pFormat = IFX_FormatString::Create(m_pLocaleMgr, FALSE); 99 IFX_FormatString* pFormat = IFX_FormatString::Create(m_pLocaleMgr, FALSE);
100 CFX_WideStringArray wsPatterns; 100 CFX_WideStringArray wsPatterns;
101 pFormat->SplitFormatString(wsPattern, wsPatterns); 101 pFormat->SplitFormatString(wsPattern, wsPatterns);
102 FX_BOOL bRet = FALSE; 102 FX_BOOL bRet = FALSE;
103 FX_INT32 iCount = wsPatterns.GetSize(); 103 int32_t iCount = wsPatterns.GetSize();
104 FX_INT32 i = 0; 104 int32_t i = 0;
105 for (; i < iCount && !bRet; i++) { 105 for (; i < iCount && !bRet; i++) {
106 CFX_WideString wsFormat = wsPatterns[i]; 106 CFX_WideString wsFormat = wsPatterns[i];
107 FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat); 107 FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat);
108 eCategory = XFA_ValugeCategory(eCategory, m_dwType); 108 eCategory = XFA_ValugeCategory(eCategory, m_dwType);
109 switch (eCategory) { 109 switch (eCategory) {
110 case FX_LOCALECATEGORY_Null: 110 case FX_LOCALECATEGORY_Null:
111 bRet = pFormat->ParseNull(wsValue, wsFormat); 111 bRet = pFormat->ParseNull(wsValue, wsFormat);
112 if (!bRet) { 112 if (!bRet) {
113 bRet = wsValue.IsEmpty(); 113 bRet = wsValue.IsEmpty();
114 } 114 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 { 192 {
193 if (m_bValid && m_dwType == XFA_VT_TEXT) { 193 if (m_bValid && m_dwType == XFA_VT_TEXT) {
194 return m_wsValue; 194 return m_wsValue;
195 } 195 }
196 return CFX_WideString(); 196 return CFX_WideString();
197 } 197 }
198 FX_FLOAT CXFA_LocaleValue::GetNum() const 198 FX_FLOAT CXFA_LocaleValue::GetNum() const
199 { 199 {
200 if (m_bValid && (m_dwType == XFA_VT_BOOLEAN || m_dwType == XFA_VT_INTEGER || 200 if (m_bValid && (m_dwType == XFA_VT_BOOLEAN || m_dwType == XFA_VT_INTEGER ||
201 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) { 201 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) {
202 FX_INT64 nIntegral = 0; 202 int64_t nIntegral = 0;
203 FX_DWORD dwFractional = 0; 203 FX_DWORD dwFractional = 0;
204 FX_INT32 nExponent = 0; 204 int32_t nExponent = 0;
205 int cc = 0; 205 int cc = 0;
206 FX_BOOL bNegative = FALSE, bExpSign = FALSE; 206 FX_BOOL bNegative = FALSE, bExpSign = FALSE;
207 FX_LPCWSTR str = (FX_LPCWSTR)m_wsValue; 207 FX_LPCWSTR str = (FX_LPCWSTR)m_wsValue;
208 int len = m_wsValue.GetLength(); 208 int len = m_wsValue.GetLength();
209 while (XFA_IsSpace(str[cc]) && cc < len) { 209 while (XFA_IsSpace(str[cc]) && cc < len) {
210 cc++; 210 cc++;
211 } 211 }
212 if (cc >= len) { 212 if (cc >= len) {
213 return 0; 213 return 0;
214 } 214 }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 fValue *= FXSYS_pow(10, (FX_FLOAT)nExponent); 268 fValue *= FXSYS_pow(10, (FX_FLOAT)nExponent);
269 } 269 }
270 return fValue; 270 return fValue;
271 } 271 }
272 return 0; 272 return 0;
273 } 273 }
274 FX_DOUBLE CXFA_LocaleValue::GetDoubleNum() const 274 FX_DOUBLE CXFA_LocaleValue::GetDoubleNum() const
275 { 275 {
276 if (m_bValid && (m_dwType == XFA_VT_BOOLEAN || m_dwType == XFA_VT_INTEGER || 276 if (m_bValid && (m_dwType == XFA_VT_BOOLEAN || m_dwType == XFA_VT_INTEGER ||
277 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) { 277 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) {
278 FX_INT64 nIntegral = 0; 278 int64_t nIntegral = 0;
279 FX_DWORD dwFractional = 0; 279 FX_DWORD dwFractional = 0;
280 FX_INT32 nExponent = 0; 280 int32_t nExponent = 0;
281 FX_INT32 cc = 0; 281 int32_t cc = 0;
282 FX_BOOL bNegative = FALSE, bExpSign = FALSE; 282 FX_BOOL bNegative = FALSE, bExpSign = FALSE;
283 FX_LPCWSTR str = (FX_LPCWSTR)m_wsValue; 283 FX_LPCWSTR str = (FX_LPCWSTR)m_wsValue;
284 int len = m_wsValue.GetLength(); 284 int len = m_wsValue.GetLength();
285 while (XFA_IsSpace(str[cc]) && cc < len) { 285 while (XFA_IsSpace(str[cc]) && cc < len) {
286 cc++; 286 cc++;
287 } 287 }
288 if (cc >= len) { 288 if (cc >= len) {
289 return 0; 289 return 0;
290 } 290 }
291 if (str[0] == '+') { 291 if (str[0] == '+') {
292 cc++; 292 cc++;
293 } else if (str[0] == '-') { 293 } else if (str[0] == '-') {
294 bNegative = TRUE; 294 bNegative = TRUE;
295 cc++; 295 cc++;
296 } 296 }
297 FX_INT32 nIntegralLen = 0; 297 int32_t nIntegralLen = 0;
298 while (cc < len) { 298 while (cc < len) {
299 if (str[cc] == '.' || !XFA_IsDigit(str[cc]) || nIntegralLen > 17) { 299 if (str[cc] == '.' || !XFA_IsDigit(str[cc]) || nIntegralLen > 17) {
300 break; 300 break;
301 } 301 }
302 nIntegral = nIntegral * 10 + str[cc] - '0'; 302 nIntegral = nIntegral * 10 + str[cc] - '0';
303 cc ++; 303 cc ++;
304 nIntegralLen++; 304 nIntegralLen++;
305 } 305 }
306 nIntegral = bNegative ? -nIntegral : nIntegral; 306 nIntegral = bNegative ? -nIntegral : nIntegral;
307 FX_INT32 scale = 0; 307 int32_t scale = 0;
308 FX_DOUBLE fraction = 0.0; 308 FX_DOUBLE fraction = 0.0;
309 if (cc < len && str[cc] == '.') { 309 if (cc < len && str[cc] == '.') {
310 cc ++; 310 cc ++;
311 while (cc < len) { 311 while (cc < len) {
312 fraction += fraction_scales[scale] * (str[cc] - '0'); 312 fraction += fraction_scales[scale] * (str[cc] - '0');
313 scale ++; 313 scale ++;
314 cc ++; 314 cc ++;
315 if (scale == sizeof fraction_scales / sizeof(FX_DOUBLE) 315 if (scale == sizeof fraction_scales / sizeof(FX_DOUBLE)
316 || !XFA_IsDigit(str[cc])) { 316 || !XFA_IsDigit(str[cc])) {
317 break; 317 break;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 CFX_Unitime dt(0); 362 CFX_Unitime dt(0);
363 FXSYS_assert(m_pLocaleMgr); 363 FXSYS_assert(m_pLocaleMgr);
364 FX_TimeFromCanonical(m_wsValue, dt, m_pLocaleMgr->GetDefLocale()); 364 FX_TimeFromCanonical(m_wsValue, dt, m_pLocaleMgr->GetDefLocale());
365 return dt; 365 return dt;
366 } 366 }
367 return CFX_Unitime(); 367 return CFX_Unitime();
368 } 368 }
369 CFX_Unitime CXFA_LocaleValue::GetDateTime() const 369 CFX_Unitime CXFA_LocaleValue::GetDateTime() const
370 { 370 {
371 if (m_bValid && m_dwType == XFA_VT_DATETIME) { 371 if (m_bValid && m_dwType == XFA_VT_DATETIME) {
372 FX_INT32 index = m_wsValue.Find('T'); 372 int32_t index = m_wsValue.Find('T');
373 CFX_Unitime dt; 373 CFX_Unitime dt;
374 FX_DateFromCanonical(m_wsValue.Left(index), dt); 374 FX_DateFromCanonical(m_wsValue.Left(index), dt);
375 FXSYS_assert(m_pLocaleMgr); 375 FXSYS_assert(m_pLocaleMgr);
376 FX_TimeFromCanonical(m_wsValue.Right(m_wsValue.GetLength() - index - 1), dt, m_pLocaleMgr->GetDefLocale()); 376 FX_TimeFromCanonical(m_wsValue.Right(m_wsValue.GetLength() - index - 1), dt, m_pLocaleMgr->GetDefLocale());
377 return dt; 377 return dt;
378 } 378 }
379 return CFX_Unitime(); 379 return CFX_Unitime();
380 } 380 }
381 FX_BOOL CXFA_LocaleValue::SetText(const CFX_WideString& wsText) 381 FX_BOOL CXFA_LocaleValue::SetText(const CFX_WideString& wsText)
382 { 382 {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 return m_bValid = ParsePatternValue(wsDateTime, wsFormat, pLocale); 447 return m_bValid = ParsePatternValue(wsDateTime, wsFormat, pLocale);
448 } 448 }
449 FX_BOOL CXFA_LocaleValue::FormatPatterns(CFX_WideString& wsResult, const CFX_Wid eString& wsFormat, IFX_Locale* pLocale, 449 FX_BOOL CXFA_LocaleValue::FormatPatterns(CFX_WideString& wsResult, const CFX_Wid eString& wsFormat, IFX_Locale* pLocale,
450 XFA_VALUEPICTURE eValueType) const 450 XFA_VALUEPICTURE eValueType) const
451 { 451 {
452 wsResult.Empty(); 452 wsResult.Empty();
453 FX_BOOL bRet = FALSE; 453 FX_BOOL bRet = FALSE;
454 IFX_FormatString* pFormat = IFX_FormatString::Create(m_pLocaleMgr, FALSE); 454 IFX_FormatString* pFormat = IFX_FormatString::Create(m_pLocaleMgr, FALSE);
455 CFX_WideStringArray wsPatterns; 455 CFX_WideStringArray wsPatterns;
456 pFormat->SplitFormatString(wsFormat, wsPatterns); 456 pFormat->SplitFormatString(wsFormat, wsPatterns);
457 FX_INT32 iCount = wsPatterns.GetSize(); 457 int32_t iCount = wsPatterns.GetSize();
458 for (FX_INT32 i = 0; i < iCount; i++) { 458 for (int32_t i = 0; i < iCount; i++) {
459 bRet = FormatSinglePattern(wsResult, wsPatterns[i], pLocale, eValueType) ; 459 bRet = FormatSinglePattern(wsResult, wsPatterns[i], pLocale, eValueType) ;
460 if (bRet) { 460 if (bRet) {
461 break; 461 break;
462 } 462 }
463 } 463 }
464 pFormat->Release(); 464 pFormat->Release();
465 return bRet; 465 return bRet;
466 } 466 }
467 FX_BOOL CXFA_LocaleValue::FormatSinglePattern(CFX_WideString& wsResult, const CF X_WideString& wsFormat, IFX_Locale* pLocale, 467 FX_BOOL CXFA_LocaleValue::FormatSinglePattern(CFX_WideString& wsResult, const CF X_WideString& wsFormat, IFX_Locale* pLocale,
468 XFA_VALUEPICTURE eValueType) const 468 XFA_VALUEPICTURE eValueType) const
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 } 643 }
644 } else { 644 } else {
645 if (wDay > 28) { 645 if (wDay > 28) {
646 return FALSE; 646 return FALSE;
647 } 647 }
648 } 648 }
649 } else if (wDay > LastDay[wMonth - 1]) { 649 } else if (wDay > LastDay[wMonth - 1]) {
650 return FALSE; 650 return FALSE;
651 } 651 }
652 CFX_Unitime ut; 652 CFX_Unitime ut;
653 ut.Set(wYear, static_cast<FX_BYTE>(wMonth), static_cast<FX_BYTE>(wDay)); 653 ut.Set(wYear, static_cast<uint8_t>(wMonth), static_cast<uint8_t>(wDay));
654 unDate = unDate + ut; 654 unDate = unDate + ut;
655 return TRUE; 655 return TRUE;
656 } 656 }
657 FX_BOOL CXFA_LocaleValue::ValidateCanonicalTime(const CFX_WideString& wsTime) 657 FX_BOOL CXFA_LocaleValue::ValidateCanonicalTime(const CFX_WideString& wsTime)
658 { 658 {
659 int nLen = wsTime.GetLength(); 659 int nLen = wsTime.GetLength();
660 if (nLen < 2) { 660 if (nLen < 2) {
661 return FALSE; 661 return FALSE;
662 } 662 }
663 const FX_WORD wCountH = 2, wCountM = 2, wCountS = 2, wCountF = 3; 663 const FX_WORD wCountH = 2, wCountM = 2, wCountS = 2, wCountF = 3;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 return FALSE; 711 return FALSE;
712 } 712 }
713 wFraction = (pTime[nIndex] - '0') + wFraction * 10; 713 wFraction = (pTime[nIndex] - '0') + wFraction * 10;
714 nIndex++; 714 nIndex++;
715 } 715 }
716 } 716 }
717 if (nIndex < nLen) { 717 if (nIndex < nLen) {
718 if (pTime[nIndex] == 'Z') { 718 if (pTime[nIndex] == 'Z') {
719 nIndex++; 719 nIndex++;
720 } else if (pTime[nIndex] == '-' || pTime[nIndex] == '+') { 720 } else if (pTime[nIndex] == '-' || pTime[nIndex] == '+') {
721 FX_SHORT nOffsetH = 0, nOffsetM = 0; 721 int16_t nOffsetH = 0, nOffsetM = 0;
722 nIndex++; 722 nIndex++;
723 nStart = nIndex; 723 nStart = nIndex;
724 while (pTime[nIndex] != '\0' && nIndex - nStart < wCountH && nIndex < nLen) { 724 while (pTime[nIndex] != '\0' && nIndex - nStart < wCountH && nIndex < nLen) {
725 if (!XFA_IsDigit(pTime[nIndex])) { 725 if (!XFA_IsDigit(pTime[nIndex])) {
726 return FALSE; 726 return FALSE;
727 } 727 }
728 nOffsetH = (pTime[nIndex] - '0') + nOffsetH * 10; 728 nOffsetH = (pTime[nIndex] - '0') + nOffsetH * 10;
729 nIndex++; 729 nIndex++;
730 } 730 }
731 if (bSymbol) { 731 if (bSymbol) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 FX_BOOL CXFA_LocaleValue::ParsePatternValue(const CFX_WideString& wsValue, const CFX_WideString& wsPattern, IFX_Locale* pLocale) 789 FX_BOOL CXFA_LocaleValue::ParsePatternValue(const CFX_WideString& wsValue, const CFX_WideString& wsPattern, IFX_Locale* pLocale)
790 { 790 {
791 IFX_Locale* locale = m_pLocaleMgr->GetDefLocale(); 791 IFX_Locale* locale = m_pLocaleMgr->GetDefLocale();
792 if (pLocale) { 792 if (pLocale) {
793 m_pLocaleMgr->SetDefLocale(pLocale); 793 m_pLocaleMgr->SetDefLocale(pLocale);
794 } 794 }
795 IFX_FormatString* pFormat = IFX_FormatString::Create(m_pLocaleMgr, FALSE); 795 IFX_FormatString* pFormat = IFX_FormatString::Create(m_pLocaleMgr, FALSE);
796 CFX_WideStringArray wsPatterns; 796 CFX_WideStringArray wsPatterns;
797 pFormat->SplitFormatString(wsPattern, wsPatterns); 797 pFormat->SplitFormatString(wsPattern, wsPatterns);
798 FX_BOOL bRet = FALSE; 798 FX_BOOL bRet = FALSE;
799 FX_INT32 iCount = wsPatterns.GetSize(); 799 int32_t iCount = wsPatterns.GetSize();
800 for (FX_INT32 i = 0; i < iCount && !bRet; i++) { 800 for (int32_t i = 0; i < iCount && !bRet; i++) {
801 CFX_WideString wsFormat = wsPatterns[i]; 801 CFX_WideString wsFormat = wsPatterns[i];
802 FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat); 802 FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat);
803 eCategory = XFA_ValugeCategory(eCategory, m_dwType); 803 eCategory = XFA_ValugeCategory(eCategory, m_dwType);
804 switch (eCategory) { 804 switch (eCategory) {
805 case FX_LOCALECATEGORY_Null: 805 case FX_LOCALECATEGORY_Null:
806 bRet = pFormat->ParseNull(wsValue, wsFormat); 806 bRet = pFormat->ParseNull(wsValue, wsFormat);
807 if (bRet) { 807 if (bRet) {
808 m_wsValue.Empty(); 808 m_wsValue.Empty();
809 } 809 }
810 break; 810 break;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 } 860 }
861 if (!bRet) { 861 if (!bRet) {
862 m_wsValue = wsValue; 862 m_wsValue = wsValue;
863 } 863 }
864 pFormat->Release(); 864 pFormat->Release();
865 if (pLocale) { 865 if (pLocale) {
866 m_pLocaleMgr->SetDefLocale(locale); 866 m_pLocaleMgr->SetDefLocale(locale);
867 } 867 }
868 return bRet; 868 return bRet;
869 } 869 }
870 void CXFA_LocaleValue::GetNumbericFormat(CFX_WideString &wsFormat, FX_INT32 nInt Len, FX_INT32 nDecLen, FX_BOOL bSign ) 870 void CXFA_LocaleValue::GetNumbericFormat(CFX_WideString &wsFormat, int32_t nIntL en, int32_t nDecLen, FX_BOOL bSign )
871 { 871 {
872 FXSYS_assert(wsFormat.IsEmpty()); 872 FXSYS_assert(wsFormat.IsEmpty());
873 FXSYS_assert(nIntLen >= -1 && nDecLen >= -1); 873 FXSYS_assert(nIntLen >= -1 && nDecLen >= -1);
874 FX_INT32 nTotalLen \ 874 int32_t nTotalLen \
875 = (nIntLen >= 0 ? nIntLen : 2) \ 875 = (nIntLen >= 0 ? nIntLen : 2) \
876 + (bSign ? 1 : 0) \ 876 + (bSign ? 1 : 0) \
877 + (nDecLen >= 0 ? nDecLen : 2) \ 877 + (nDecLen >= 0 ? nDecLen : 2) \
878 + (nDecLen == 0 ? 0 : 1); 878 + (nDecLen == 0 ? 0 : 1);
879 FX_LPWSTR lpBuf = wsFormat.GetBuffer(nTotalLen); 879 FX_LPWSTR lpBuf = wsFormat.GetBuffer(nTotalLen);
880 FX_INT32 nPos = 0; 880 int32_t nPos = 0;
881 if (bSign) { 881 if (bSign) {
882 lpBuf[nPos++] = L's'; 882 lpBuf[nPos++] = L's';
883 } 883 }
884 if (nIntLen == -1) { 884 if (nIntLen == -1) {
885 lpBuf[nPos++] = L'z'; 885 lpBuf[nPos++] = L'z';
886 lpBuf[nPos++] = L'*'; 886 lpBuf[nPos++] = L'*';
887 } else { 887 } else {
888 while (nIntLen) { 888 while (nIntLen) {
889 lpBuf[nPos++] = L'z'; 889 lpBuf[nPos++] = L'z';
890 nIntLen --; 890 nIntLen --;
891 } 891 }
892 } 892 }
893 if (nDecLen != 0) { 893 if (nDecLen != 0) {
894 lpBuf[nPos++] = L'.'; 894 lpBuf[nPos++] = L'.';
895 } 895 }
896 if (nDecLen == -1) { 896 if (nDecLen == -1) {
897 lpBuf[nPos++] = L'z'; 897 lpBuf[nPos++] = L'z';
898 lpBuf[nPos++] = L'*'; 898 lpBuf[nPos++] = L'*';
899 } else { 899 } else {
900 while (nDecLen) { 900 while (nDecLen) {
901 lpBuf[nPos++] = L'z'; 901 lpBuf[nPos++] = L'z';
902 nDecLen --; 902 nDecLen --;
903 } 903 }
904 } 904 }
905 wsFormat.ReleaseBuffer(nTotalLen); 905 wsFormat.ReleaseBuffer(nTotalLen);
906 } 906 }
907 FX_BOOL CXFA_LocaleValue::ValidateNumericTemp(CFX_WideString& wsNumeric, CFX_Wid eString& wsFormat, IFX_Locale* pLocale , FX_INT32* pos ) 907 FX_BOOL CXFA_LocaleValue::ValidateNumericTemp(CFX_WideString& wsNumeric, CFX_Wid eString& wsFormat, IFX_Locale* pLocale , int32_t* pos )
908 { 908 {
909 if (wsFormat.IsEmpty() || wsNumeric.IsEmpty()) { 909 if (wsFormat.IsEmpty() || wsNumeric.IsEmpty()) {
910 return TRUE; 910 return TRUE;
911 } 911 }
912 FX_LPCWSTR pNum = FX_LPCWSTR(wsNumeric); 912 FX_LPCWSTR pNum = FX_LPCWSTR(wsNumeric);
913 FX_LPCWSTR pFmt = FX_LPCWSTR(wsFormat); 913 FX_LPCWSTR pFmt = FX_LPCWSTR(wsFormat);
914 FX_INT32 n = 0, nf = 0; 914 int32_t n = 0, nf = 0;
915 FX_WCHAR c = pNum[n]; 915 FX_WCHAR c = pNum[n];
916 FX_WCHAR cf = pFmt[nf]; 916 FX_WCHAR cf = pFmt[nf];
917 if (cf == L's') { 917 if (cf == L's') {
918 if (c == L'-' || c == L'+') { 918 if (c == L'-' || c == L'+') {
919 ++n; 919 ++n;
920 } 920 }
921 ++nf; 921 ++nf;
922 } 922 }
923 FX_BOOL bLimit = TRUE; 923 FX_BOOL bLimit = TRUE;
924 FX_INT32 nCount» » = wsNumeric.GetLength(); 924 int32_t nCount» » = wsNumeric.GetLength();
925 FX_INT32 nCountFmt» = wsFormat.GetLength(); 925 int32_t nCountFmt» = wsFormat.GetLength();
926 while (n < nCount && (bLimit ? nf < nCountFmt : TRUE) && XFA_IsDigit(c = pNu m[n])) { 926 while (n < nCount && (bLimit ? nf < nCountFmt : TRUE) && XFA_IsDigit(c = pNu m[n])) {
927 if (bLimit == TRUE) { 927 if (bLimit == TRUE) {
928 if ((cf = pFmt[nf]) == L'*') { 928 if ((cf = pFmt[nf]) == L'*') {
929 bLimit = FALSE; 929 bLimit = FALSE;
930 } else if (cf == L'z') { 930 } else if (cf == L'z') {
931 nf ++; 931 nf ++;
932 } else { 932 } else {
933 return FALSE; 933 return FALSE;
934 } 934 }
935 } 935 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
967 } else if (cf == L'z') { 967 } else if (cf == L'z') {
968 nf ++; 968 nf ++;
969 } else { 969 } else {
970 return FALSE; 970 return FALSE;
971 } 971 }
972 } 972 }
973 n ++; 973 n ++;
974 } 974 }
975 return n == nCount; 975 return n == nCount;
976 } 976 }
OLDNEW
« no previous file with comments | « xfa/src/fxfa/src/parser/xfa_localemgr.cpp ('k') | xfa/src/fxfa/src/parser/xfa_object_imp.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698