| 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 "xfa/fxfa/parser/xfa_localevalue.h" | 7 #include "xfa/fxfa/parser/xfa_localevalue.h" |
| 8 | 8 |
| 9 #include "xfa/fgas/localization/fgas_localeimp.h" | 9 #include "xfa/fgas/localization/fgas_localeimp.h" |
| 10 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" | 10 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 return CFX_WideString(); | 212 return CFX_WideString(); |
| 213 } | 213 } |
| 214 FX_FLOAT CXFA_LocaleValue::GetNum() const { | 214 FX_FLOAT CXFA_LocaleValue::GetNum() const { |
| 215 if (m_bValid && (m_dwType == XFA_VT_BOOLEAN || m_dwType == XFA_VT_INTEGER || | 215 if (m_bValid && (m_dwType == XFA_VT_BOOLEAN || m_dwType == XFA_VT_INTEGER || |
| 216 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) { | 216 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) { |
| 217 int64_t nIntegral = 0; | 217 int64_t nIntegral = 0; |
| 218 uint32_t dwFractional = 0; | 218 uint32_t dwFractional = 0; |
| 219 int32_t nExponent = 0; | 219 int32_t nExponent = 0; |
| 220 int cc = 0; | 220 int cc = 0; |
| 221 FX_BOOL bNegative = FALSE, bExpSign = FALSE; | 221 FX_BOOL bNegative = FALSE, bExpSign = FALSE; |
| 222 const FX_WCHAR* str = (const FX_WCHAR*)m_wsValue; | 222 const FX_WCHAR* str = m_wsValue.c_str(); |
| 223 int len = m_wsValue.GetLength(); | 223 int len = m_wsValue.GetLength(); |
| 224 while (XFA_IsSpace(str[cc]) && cc < len) { | 224 while (XFA_IsSpace(str[cc]) && cc < len) { |
| 225 cc++; | 225 cc++; |
| 226 } | 226 } |
| 227 if (cc >= len) { | 227 if (cc >= len) { |
| 228 return 0; | 228 return 0; |
| 229 } | 229 } |
| 230 if (str[0] == '+') { | 230 if (str[0] == '+') { |
| 231 cc++; | 231 cc++; |
| 232 } else if (str[0] == '-') { | 232 } else if (str[0] == '-') { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 return 0; | 287 return 0; |
| 288 } | 288 } |
| 289 FX_DOUBLE CXFA_LocaleValue::GetDoubleNum() const { | 289 FX_DOUBLE CXFA_LocaleValue::GetDoubleNum() const { |
| 290 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 || |
| 291 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) { | 291 m_dwType == XFA_VT_DECIMAL || m_dwType == XFA_VT_FLOAT)) { |
| 292 int64_t nIntegral = 0; | 292 int64_t nIntegral = 0; |
| 293 uint32_t dwFractional = 0; | 293 uint32_t dwFractional = 0; |
| 294 int32_t nExponent = 0; | 294 int32_t nExponent = 0; |
| 295 int32_t cc = 0; | 295 int32_t cc = 0; |
| 296 FX_BOOL bNegative = FALSE, bExpSign = FALSE; | 296 FX_BOOL bNegative = FALSE, bExpSign = FALSE; |
| 297 const FX_WCHAR* str = (const FX_WCHAR*)m_wsValue; | 297 const FX_WCHAR* str = m_wsValue.c_str(); |
| 298 int len = m_wsValue.GetLength(); | 298 int len = m_wsValue.GetLength(); |
| 299 while (XFA_IsSpace(str[cc]) && cc < len) { | 299 while (XFA_IsSpace(str[cc]) && cc < len) { |
| 300 cc++; | 300 cc++; |
| 301 } | 301 } |
| 302 if (cc >= len) { | 302 if (cc >= len) { |
| 303 return 0; | 303 return 0; |
| 304 } | 304 } |
| 305 if (str[0] == '+') { | 305 if (str[0] == '+') { |
| 306 cc++; | 306 cc++; |
| 307 } else if (str[0] == '-') { | 307 } else if (str[0] == '-') { |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 608 const uint16_t LastDay[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; | 608 const uint16_t LastDay[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; |
| 609 const uint16_t wCountY = 4, wCountM = 2, wCountD = 2; | 609 const uint16_t wCountY = 4, wCountM = 2, wCountD = 2; |
| 610 int nLen = wsDate.GetLength(); | 610 int nLen = wsDate.GetLength(); |
| 611 if (nLen < wCountY || nLen > wCountY + wCountM + wCountD + 2) { | 611 if (nLen < wCountY || nLen > wCountY + wCountM + wCountD + 2) { |
| 612 return FALSE; | 612 return FALSE; |
| 613 } | 613 } |
| 614 const bool bSymbol = wsDate.Find(0x2D) != -1; | 614 const bool bSymbol = wsDate.Find(0x2D) != -1; |
| 615 uint16_t wYear = 0; | 615 uint16_t wYear = 0; |
| 616 uint16_t wMonth = 0; | 616 uint16_t wMonth = 0; |
| 617 uint16_t wDay = 0; | 617 uint16_t wDay = 0; |
| 618 const FX_WCHAR* pDate = (const FX_WCHAR*)wsDate; | 618 const FX_WCHAR* pDate = wsDate.c_str(); |
| 619 int nIndex = 0, nStart = 0; | 619 int nIndex = 0, nStart = 0; |
| 620 while (pDate[nIndex] != '\0' && nIndex < wCountY) { | 620 while (pDate[nIndex] != '\0' && nIndex < wCountY) { |
| 621 if (!XFA_IsDigit(pDate[nIndex])) { | 621 if (!XFA_IsDigit(pDate[nIndex])) { |
| 622 return FALSE; | 622 return FALSE; |
| 623 } | 623 } |
| 624 wYear = (pDate[nIndex] - '0') + wYear * 10; | 624 wYear = (pDate[nIndex] - '0') + wYear * 10; |
| 625 nIndex++; | 625 nIndex++; |
| 626 } | 626 } |
| 627 if (bSymbol) { | 627 if (bSymbol) { |
| 628 if (pDate[nIndex] != 0x2D) { | 628 if (pDate[nIndex] != 0x2D) { |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 return FALSE; | 694 return FALSE; |
| 695 const uint16_t wCountH = 2; | 695 const uint16_t wCountH = 2; |
| 696 const uint16_t wCountM = 2; | 696 const uint16_t wCountM = 2; |
| 697 const uint16_t wCountS = 2; | 697 const uint16_t wCountS = 2; |
| 698 const uint16_t wCountF = 3; | 698 const uint16_t wCountF = 3; |
| 699 const bool bSymbol = wsTime.Find(':') != -1; | 699 const bool bSymbol = wsTime.Find(':') != -1; |
| 700 uint16_t wHour = 0; | 700 uint16_t wHour = 0; |
| 701 uint16_t wMinute = 0; | 701 uint16_t wMinute = 0; |
| 702 uint16_t wSecond = 0; | 702 uint16_t wSecond = 0; |
| 703 uint16_t wFraction = 0; | 703 uint16_t wFraction = 0; |
| 704 const FX_WCHAR* pTime = (const FX_WCHAR*)wsTime; | 704 const FX_WCHAR* pTime = wsTime.c_str(); |
| 705 int nIndex = 0; | 705 int nIndex = 0; |
| 706 int nStart = 0; | 706 int nStart = 0; |
| 707 while (nIndex - nStart < wCountH && pTime[nIndex]) { | 707 while (nIndex - nStart < wCountH && pTime[nIndex]) { |
| 708 if (!XFA_IsDigit(pTime[nIndex])) | 708 if (!XFA_IsDigit(pTime[nIndex])) |
| 709 return FALSE; | 709 return FALSE; |
| 710 wHour = pTime[nIndex] - '0' + wHour * 10; | 710 wHour = pTime[nIndex] - '0' + wHour * 10; |
| 711 nIndex++; | 711 nIndex++; |
| 712 } | 712 } |
| 713 if (bSymbol) { | 713 if (bSymbol) { |
| 714 if (nIndex < nLen && pTime[nIndex] != ':') | 714 if (nIndex < nLen && pTime[nIndex] != ':') |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 990 } else if (cf == L'z') { | 990 } else if (cf == L'z') { |
| 991 nf++; | 991 nf++; |
| 992 } else { | 992 } else { |
| 993 return FALSE; | 993 return FALSE; |
| 994 } | 994 } |
| 995 } | 995 } |
| 996 n++; | 996 n++; |
| 997 } | 997 } |
| 998 return n == nCount; | 998 return n == nCount; |
| 999 } | 999 } |
| OLD | NEW |