diff options
-rw-r--r-- | xfa/fxfa/fm2js/xfa_fm2jsapi.cpp | 16 | ||||
-rw-r--r-- | xfa/fxfa/fm2js/xfa_fm2jsapi.h | 8 | ||||
-rw-r--r-- | xfa/fxfa/fm2js/xfa_fm2jscontext.cpp | 618 | ||||
-rw-r--r-- | xfa/fxfa/fm2js/xfa_fm2jscontext.h | 12 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_script_imp.cpp | 5 |
5 files changed, 441 insertions, 218 deletions
diff --git a/xfa/fxfa/fm2js/xfa_fm2jsapi.cpp b/xfa/fxfa/fm2js/xfa_fm2jsapi.cpp index 00c4edf447..826739a9e7 100644 --- a/xfa/fxfa/fm2js/xfa_fm2jsapi.cpp +++ b/xfa/fxfa/fm2js/xfa_fm2jsapi.cpp @@ -39,17 +39,11 @@ int32_t XFA_FM2JS_Translate(const CFX_WideStringC& wsFormcalc, return 0; } -XFA_HFM2JSCONTEXT XFA_FM2JS_ContextCreate() { - return reinterpret_cast<XFA_HFM2JSCONTEXT>(new CXFA_FM2JSContext); -} - -void XFA_FM2JS_ContextInitialize(XFA_HFM2JSCONTEXT hFM2JSContext, - v8::Isolate* pScriptIsolate, - CFXJSE_Context* pScriptContext, - CXFA_Document* pDocument) { - CXFA_FM2JSContext* pContext = - reinterpret_cast<CXFA_FM2JSContext*>(hFM2JSContext); - pContext->Initialize(pScriptIsolate, pScriptContext, pDocument); +XFA_HFM2JSCONTEXT XFA_FM2JS_ContextCreate(v8::Isolate* pScriptIsolate, + CFXJSE_Context* pScriptContext, + CXFA_Document* pDocument) { + return reinterpret_cast<XFA_HFM2JSCONTEXT>( + new CXFA_FM2JSContext(pScriptIsolate, pScriptContext, pDocument)); } void XFA_FM2JS_GlobalPropertyGetter(XFA_HFM2JSCONTEXT hFM2JSContext, diff --git a/xfa/fxfa/fm2js/xfa_fm2jsapi.h b/xfa/fxfa/fm2js/xfa_fm2jsapi.h index 49fda993d4..e48591dbc0 100644 --- a/xfa/fxfa/fm2js/xfa_fm2jsapi.h +++ b/xfa/fxfa/fm2js/xfa_fm2jsapi.h @@ -21,11 +21,9 @@ typedef struct XFA_HFM2JSCONTEXT_ { void** pData; } * XFA_HFM2JSCONTEXT; int32_t XFA_FM2JS_Translate(const CFX_WideStringC& wsFormcalc, CFX_WideTextBuf& wsJavascript, CFX_WideString& wsError); -XFA_HFM2JSCONTEXT XFA_FM2JS_ContextCreate(); -void XFA_FM2JS_ContextInitialize(XFA_HFM2JSCONTEXT hFM2JSContext, - v8::Isolate* pScriptIsolate, - CFXJSE_Context* pScriptContext, - CXFA_Document* pDocument); +XFA_HFM2JSCONTEXT XFA_FM2JS_ContextCreate(v8::Isolate* pScriptIsolate, + CFXJSE_Context* pScriptContext, + CXFA_Document* pDocument); void XFA_FM2JS_GlobalPropertyGetter(XFA_HFM2JSCONTEXT hFM2JSContext, CFXJSE_Value* pValue); void XFA_FM2JS_ContextRelease(XFA_HFM2JSCONTEXT hFM2JSContext); diff --git a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp index e15d9fd2be..529140d0de 100644 --- a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp +++ b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp @@ -20,14 +20,15 @@ #include "xfa/fxjse/cfxjse_arguments.h" #include "xfa/fxjse/value.h" -#define FINANCIAL_PRECISION 0.00000001 - namespace { +const double kFinancialPrecision = 0.00000001; + struct XFA_FMHtmlReserveCode { uint32_t m_uCode; const FX_WCHAR* m_htmlReserve; }; + struct XFA_FMHtmlHashedReserveCode { uint32_t m_uHash; const FX_WCHAR* m_htmlReserve; @@ -396,17 +397,107 @@ void AlternateDateTimeSymbols(CFX_WideString& wsPattern, } if (!bInConstRange && (n = wc - L'A') >= 0 && n <= (L'a' - L'A')) { int32_t nAlt = (int32_t)pAltTable[n]; - if (nAlt != 255) { + if (nAlt != 255) wsPattern.SetAt(i, wsAltSymbols[nAlt]); - } } i++; bEscape = FALSE; } } +bool PatternStringType(const CFX_ByteStringC& szPattern, + uint32_t& patternType) { + CFX_WideString wsPattern = CFX_WideString::FromUTF8(szPattern); + if (FX_WSTRC(L"datetime") == wsPattern.Left(8)) { + patternType = XFA_VT_DATETIME; + return true; + } + if (FX_WSTRC(L"date") == wsPattern.Left(4)) { + patternType = wsPattern.Find(L"time") > 0 ? XFA_VT_DATETIME : XFA_VT_DATE; + return true; + } + if (FX_WSTRC(L"time") == wsPattern.Left(4)) { + patternType = XFA_VT_TIME; + return true; + } + if (FX_WSTRC(L"text") == wsPattern.Left(4)) { + patternType = XFA_VT_TEXT; + return true; + } + if (FX_WSTRC(L"num") == wsPattern.Left(3)) { + if (FX_WSTRC(L"integer") == wsPattern.Mid(4, 7)) { + patternType = XFA_VT_INTEGER; + } else if (FX_WSTRC(L"decimal") == wsPattern.Mid(4, 7)) { + patternType = XFA_VT_DECIMAL; + } else if (FX_WSTRC(L"currency") == wsPattern.Mid(4, 8)) { + patternType = XFA_VT_FLOAT; + } else if (FX_WSTRC(L"percent") == wsPattern.Mid(4, 7)) { + patternType = XFA_VT_FLOAT; + } else { + patternType = XFA_VT_FLOAT; + } + return true; + } + + patternType = XFA_VT_NULL; + wsPattern.MakeLower(); + const FX_WCHAR* pData = wsPattern.c_str(); + int32_t iLength = wsPattern.GetLength(); + int32_t iIndex = 0; + FX_BOOL bSingleQuotation = FALSE; + FX_WCHAR patternChar; + while (iIndex < iLength) { + patternChar = *(pData + iIndex); + if (patternChar == 0x27) { + bSingleQuotation = !bSingleQuotation; + } else if (!bSingleQuotation && + (patternChar == 'y' || patternChar == 'j')) { + patternType = XFA_VT_DATE; + iIndex++; + FX_WCHAR timePatternChar; + while (iIndex < iLength) { + timePatternChar = *(pData + iIndex); + if (timePatternChar == 0x27) { + bSingleQuotation = !bSingleQuotation; + } else if (!bSingleQuotation && timePatternChar == 't') { + patternType = XFA_VT_DATETIME; + break; + } + iIndex++; + } + break; + } else if (!bSingleQuotation && + (patternChar == 'h' || patternChar == 'k')) { + patternType = XFA_VT_TIME; + break; + } else if (!bSingleQuotation && + (patternChar == 'a' || patternChar == 'x' || + patternChar == 'o' || patternChar == '0')) { + patternType = XFA_VT_TEXT; + if (patternChar == 'x' || patternChar == 'o' || patternChar == '0') { + break; + } + } else if (!bSingleQuotation && + (patternChar == 'z' || patternChar == 's' || + patternChar == 'e' || patternChar == 'v' || + patternChar == '8' || patternChar == ',' || + patternChar == '.' || patternChar == '$')) { + patternType = XFA_VT_FLOAT; + if (patternChar == 'v' || patternChar == '8' || patternChar == '$') { + break; + } + } + iIndex++; + } + if (patternType == XFA_VT_NULL) { + patternType = XFA_VT_TEXT | XFA_VT_FLOAT; + } + return false; +} + } // namespace +// static void CXFA_FM2JSContext::Abs(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -428,6 +519,8 @@ void CXFA_FM2JSContext::Abs(CFXJSE_Value* pThis, L"Abs"); } } + +// static void CXFA_FM2JSContext::Avg(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -497,11 +590,11 @@ void CXFA_FM2JSContext::Avg(CFXJSE_Value* pThis, FXJSE_Value_SetDouble(args.GetReturnValue(), dSum / uCount); } } + +// static void CXFA_FM2JSContext::Ceil(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argValue = GetSimpleValue(pThis, args, 0); if (ValueIsNull(pThis, argValue.get())) { @@ -511,19 +604,22 @@ void CXFA_FM2JSContext::Ceil(CFXJSE_Value* pThis, FXSYS_ceil(ValueToFloat(pThis, argValue.get()))); } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Ceil"); } } + +// static void CXFA_FM2JSContext::Count(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { CXFA_FM2JSContext* pContext = (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); v8::Isolate* pIsolate = pContext->GetScriptRuntime(); - int32_t argc = args.GetLength(); uint32_t uCount = 0; - for (int32_t i = 0; i < argc; i++) { + for (int32_t i = 0; i < args.GetLength(); i++) { std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); if (FXJSE_Value_IsNull(argValue.get())) { continue; @@ -576,11 +672,11 @@ void CXFA_FM2JSContext::Count(CFXJSE_Value* pThis, } FXJSE_Value_SetInteger(args.GetReturnValue(), (int32_t)uCount); } + +// static void CXFA_FM2JSContext::Floor(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argValue = GetSimpleValue(pThis, args, 0); if (ValueIsNull(pThis, argValue.get())) { @@ -590,20 +686,23 @@ void CXFA_FM2JSContext::Floor(CFXJSE_Value* pThis, FXSYS_floor(ValueToFloat(pThis, argValue.get()))); } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Floor"); } } + +// static void CXFA_FM2JSContext::Max(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { CXFA_FM2JSContext* pContext = (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); v8::Isolate* pIsolate = pContext->GetScriptRuntime(); - int32_t argc = args.GetLength(); uint32_t uCount = 0; FX_DOUBLE dMaxValue = 0.0; - for (int32_t i = 0; i < argc; i++) { + for (int32_t i = 0; i < args.GetLength(); i++) { std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); if (FXJSE_Value_IsNull(argValue.get())) { continue; @@ -695,16 +794,17 @@ void CXFA_FM2JSContext::Max(CFXJSE_Value* pThis, FXJSE_Value_SetNull(args.GetReturnValue()); } } + +// static void CXFA_FM2JSContext::Min(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { CXFA_FM2JSContext* pContext = (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); v8::Isolate* pIsolate = pContext->GetScriptRuntime(); - int32_t argc = args.GetLength(); uint32_t uCount = 0; FX_DOUBLE dMinValue = 0.0; - for (int32_t i = 0; i < argc; i++) { + for (int32_t i = 0; i < args.GetLength(); i++) { std::unique_ptr<CFXJSE_Value> argValue = args.GetValue(i); if (FXJSE_Value_IsNull(argValue.get())) { continue; @@ -795,6 +895,8 @@ void CXFA_FM2JSContext::Min(CFXJSE_Value* pThis, FXJSE_Value_SetNull(args.GetReturnValue()); } } + +// static void CXFA_FM2JSContext::Mod(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -880,6 +982,8 @@ void CXFA_FM2JSContext::Mod(CFXJSE_Value* pThis, L"Mod"); } } + +// static void CXFA_FM2JSContext::Round(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -984,6 +1088,8 @@ void CXFA_FM2JSContext::Round(CFXJSE_Value* pThis, L"Round"); } } + +// static void CXFA_FM2JSContext::Sum(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1060,6 +1166,8 @@ void CXFA_FM2JSContext::Sum(CFXJSE_Value* pThis, FXJSE_Value_SetDouble(args.GetReturnValue(), dSum); } } + +// static void CXFA_FM2JSContext::Date(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1084,6 +1192,8 @@ void CXFA_FM2JSContext::Date(CFXJSE_Value* pThis, L"Date"); } } + +// static void CXFA_FM2JSContext::Date2Num(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1137,6 +1247,8 @@ void CXFA_FM2JSContext::Date2Num(CFXJSE_Value* pThis, L"Date2Num"); } } + +// static void CXFA_FM2JSContext::DateFmt(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1180,6 +1292,8 @@ void CXFA_FM2JSContext::DateFmt(CFXJSE_Value* pThis, L"Date2Num"); } } + +// static void CXFA_FM2JSContext::IsoDate2Num(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1200,6 +1314,8 @@ void CXFA_FM2JSContext::IsoDate2Num(CFXJSE_Value* pThis, L"IsoDate2Num"); } } + +// static void CXFA_FM2JSContext::IsoTime2Num(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1255,6 +1371,8 @@ void CXFA_FM2JSContext::IsoTime2Num(CFXJSE_Value* pThis, L"IsoTime2Num"); } } + +// static void CXFA_FM2JSContext::LocalDateFmt(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1298,6 +1416,8 @@ void CXFA_FM2JSContext::LocalDateFmt(CFXJSE_Value* pThis, L"LocalDateFmt"); } } + +// static void CXFA_FM2JSContext::LocalTimeFmt(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1341,6 +1461,8 @@ void CXFA_FM2JSContext::LocalTimeFmt(CFXJSE_Value* pThis, L"LocalTimeFmt"); } } + +// static void CXFA_FM2JSContext::Num2Date(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1488,6 +1610,8 @@ void CXFA_FM2JSContext::Num2Date(CFXJSE_Value* pThis, L"Num2Date"); } } + +// static void CXFA_FM2JSContext::Num2GMTime(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1542,6 +1666,8 @@ void CXFA_FM2JSContext::Num2GMTime(CFXJSE_Value* pThis, L"Num2GMTime"); } } + +// static void CXFA_FM2JSContext::Num2Time(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1596,6 +1722,8 @@ void CXFA_FM2JSContext::Num2Time(CFXJSE_Value* pThis, L"Num2Time"); } } + +// static void CXFA_FM2JSContext::Time(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1615,6 +1743,8 @@ void CXFA_FM2JSContext::Time(CFXJSE_Value* pThis, L"Time"); } } + +// static void CXFA_FM2JSContext::Time2Num(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1652,7 +1782,7 @@ void CXFA_FM2JSContext::Time2Num(CFXJSE_Value* pThis, (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); CXFA_Document* pDoc = pContext->GetDocument(); IFX_LocaleMgr* pMgr = (IFX_LocaleMgr*)pDoc->GetLocalMgr(); - IFX_Locale* pLocale = NULL; + IFX_Locale* pLocale = nullptr; if (localString.IsEmpty()) { CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); @@ -1711,6 +1841,8 @@ void CXFA_FM2JSContext::Time2Num(CFXJSE_Value* pThis, L"Time2Num"); } } + +// static void CXFA_FM2JSContext::TimeFmt(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -1754,6 +1886,8 @@ void CXFA_FM2JSContext::TimeFmt(CFXJSE_Value* pThis, L"TimeFmt"); } } + +// static FX_BOOL CXFA_FM2JSContext::IsIsoDateFormat(const FX_CHAR* pData, int32_t iLength, int32_t& iStyle, @@ -1873,6 +2007,8 @@ FX_BOOL CXFA_FM2JSContext::IsIsoDateFormat(const FX_CHAR* pData, iRet = TRUE; return iRet; } + +// static FX_BOOL CXFA_FM2JSContext::IsIsoTimeFormat(const FX_CHAR* pData, int32_t iLength, int32_t& iHour, @@ -2021,6 +2157,8 @@ FX_BOOL CXFA_FM2JSContext::IsIsoTimeFormat(const FX_CHAR* pData, iRet = TRUE; return iRet; } + +// static FX_BOOL CXFA_FM2JSContext::IsIsoDateTimeFormat(const FX_CHAR* pData, int32_t iLength, int32_t& iYear, @@ -2073,6 +2211,8 @@ FX_BOOL CXFA_FM2JSContext::IsIsoDateTimeFormat(const FX_CHAR* pData, iRet = TRUE; return iRet; } + +// static FX_BOOL CXFA_FM2JSContext::Local2IsoDate(CFXJSE_Value* pThis, const CFX_ByteStringC& szDate, const CFX_ByteStringC& szFormat, @@ -2085,7 +2225,7 @@ FX_BOOL CXFA_FM2JSContext::Local2IsoDate(CFXJSE_Value* pThis, return FALSE; } IFX_LocaleMgr* pMgr = (IFX_LocaleMgr*)pDoc->GetLocalMgr(); - IFX_Locale* pLocale = NULL; + IFX_Locale* pLocale = nullptr; if (szLocale.IsEmpty()) { CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); ASSERT(pThisNode); @@ -2109,6 +2249,8 @@ FX_BOOL CXFA_FM2JSContext::Local2IsoDate(CFXJSE_Value* pThis, strIsoDate.Format("%4d-%02d-%02d", dt.GetYear(), dt.GetMonth(), dt.GetDay()); return TRUE; } + +// static FX_BOOL CXFA_FM2JSContext::Local2IsoTime(CFXJSE_Value* pThis, const CFX_ByteStringC& szTime, const CFX_ByteStringC& szFormat, @@ -2121,7 +2263,7 @@ FX_BOOL CXFA_FM2JSContext::Local2IsoTime(CFXJSE_Value* pThis, return FALSE; } IFX_LocaleMgr* pMgr = (IFX_LocaleMgr*)pDoc->GetLocalMgr(); - IFX_Locale* pLocale = NULL; + IFX_Locale* pLocale = nullptr; if (szLocale.IsEmpty()) { CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); ASSERT(pThisNode); @@ -2148,6 +2290,8 @@ FX_BOOL CXFA_FM2JSContext::Local2IsoTime(CFXJSE_Value* pThis, utime.GetSecond(), utime.GetMillisecond()); return TRUE; } + +// static FX_BOOL CXFA_FM2JSContext::IsoDate2Local(CFXJSE_Value* pThis, const CFX_ByteStringC& szDate, const CFX_ByteStringC& szFormat, @@ -2160,7 +2304,7 @@ FX_BOOL CXFA_FM2JSContext::IsoDate2Local(CFXJSE_Value* pThis, return FALSE; } IFX_LocaleMgr* pMgr = (IFX_LocaleMgr*)pDoc->GetLocalMgr(); - IFX_Locale* pLocale = NULL; + IFX_Locale* pLocale = nullptr; if (szLocale.IsEmpty()) { CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); ASSERT(pThisNode); @@ -2186,6 +2330,8 @@ FX_BOOL CXFA_FM2JSContext::IsoDate2Local(CFXJSE_Value* pThis, strLocalDate = FX_UTF8Encode(wsRet.c_str(), wsRet.GetLength()); return TRUE; } + +// static FX_BOOL CXFA_FM2JSContext::IsoTime2Local(CFXJSE_Value* pThis, const CFX_ByteStringC& szTime, const CFX_ByteStringC& szFormat, @@ -2198,7 +2344,7 @@ FX_BOOL CXFA_FM2JSContext::IsoTime2Local(CFXJSE_Value* pThis, return FALSE; } IFX_LocaleMgr* pMgr = (IFX_LocaleMgr*)pDoc->GetLocalMgr(); - IFX_Locale* pLocale = NULL; + IFX_Locale* pLocale = nullptr; if (szLocale.IsEmpty()) { CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); ASSERT(pThisNode); @@ -2226,6 +2372,8 @@ FX_BOOL CXFA_FM2JSContext::IsoTime2Local(CFXJSE_Value* pThis, strLocalTime = FX_UTF8Encode(wsRet.c_str(), wsRet.GetLength()); return TRUE; } + +// static FX_BOOL CXFA_FM2JSContext::GetGMTTime(CFXJSE_Value* pThis, const CFX_ByteStringC& szTime, const CFX_ByteStringC& szFormat, @@ -2238,7 +2386,7 @@ FX_BOOL CXFA_FM2JSContext::GetGMTTime(CFXJSE_Value* pThis, return FALSE; } IFX_LocaleMgr* pMgr = (IFX_LocaleMgr*)pDoc->GetLocalMgr(); - IFX_Locale* pLocale = NULL; + IFX_Locale* pLocale = nullptr; if (szLocale.IsEmpty()) { CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); ASSERT(pThisNode); @@ -2266,6 +2414,8 @@ FX_BOOL CXFA_FM2JSContext::GetGMTTime(CFXJSE_Value* pThis, strGMTTime = FX_UTF8Encode(wsRet.c_str(), wsRet.GetLength()); return TRUE; } + +// static int32_t CXFA_FM2JSContext::DateString2Num(const CFX_ByteStringC& szDateString) { FX_BOOL bFlags = FALSE; int32_t iLength = szDateString.GetLength(); @@ -2339,6 +2489,7 @@ int32_t CXFA_FM2JSContext::DateString2Num(const CFX_ByteStringC& szDateString) { return (int32_t)dDays; } +// static void CXFA_FM2JSContext::GetLocalDateFormat(CFXJSE_Value* pThis, int32_t iStyle, const CFX_ByteStringC& szLocalStr, @@ -2372,7 +2523,7 @@ void CXFA_FM2JSContext::GetLocalDateFormat(CFXJSE_Value* pThis, return; } IFX_LocaleMgr* pMgr = (IFX_LocaleMgr*)pDoc->GetLocalMgr(); - IFX_Locale* pLocale = NULL; + IFX_Locale* pLocale = nullptr; if (szLocalStr.IsEmpty()) { CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); ASSERT(pThisNode); @@ -2393,6 +2544,8 @@ void CXFA_FM2JSContext::GetLocalDateFormat(CFXJSE_Value* pThis, } strFormat = FX_UTF8Encode(strRet.c_str(), strRet.GetLength()); } + +// static void CXFA_FM2JSContext::GetLocalTimeFormat(CFXJSE_Value* pThis, int32_t iStyle, const CFX_ByteStringC& szLocalStr, @@ -2426,7 +2579,7 @@ void CXFA_FM2JSContext::GetLocalTimeFormat(CFXJSE_Value* pThis, return; } IFX_LocaleMgr* pMgr = (IFX_LocaleMgr*)pDoc->GetLocalMgr(); - IFX_Locale* pLocale = NULL; + IFX_Locale* pLocale = nullptr; if (szLocalStr.IsEmpty()) { CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject()); ASSERT(pThisNode); @@ -2447,18 +2600,24 @@ void CXFA_FM2JSContext::GetLocalTimeFormat(CFXJSE_Value* pThis, } strFormat = FX_UTF8Encode(strRet.c_str(), strRet.GetLength()); } + +// static void CXFA_FM2JSContext::GetStandardDateFormat(CFXJSE_Value* pThis, int32_t iStyle, const CFX_ByteStringC& szLocalStr, CFX_ByteString& strFormat) { GetLocalDateFormat(pThis, iStyle, szLocalStr, strFormat, TRUE); } + +// static void CXFA_FM2JSContext::GetStandardTimeFormat(CFXJSE_Value* pThis, int32_t iStyle, const CFX_ByteStringC& szLocalStr, CFX_ByteString& strFormat) { GetLocalTimeFormat(pThis, iStyle, szLocalStr, strFormat, TRUE); } + +// static void CXFA_FM2JSContext::Num2AllTime(CFXJSE_Value* pThis, int32_t iTime, const CFX_ByteStringC& szFormat, @@ -2495,6 +2654,7 @@ void CXFA_FM2JSContext::Num2AllTime(CFXJSE_Value* pThis, } } +// static void CXFA_FM2JSContext::GetLocalTimeZone(int32_t& iHour, int32_t& iMin, int32_t& iSec) { @@ -2512,6 +2672,8 @@ void CXFA_FM2JSContext::GetLocalTimeZone(int32_t& iHour, iMin = iLocalMin - iGMMin; iSec = iLocalSec - iGMSec; } + +// static void CXFA_FM2JSContext::Apr(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -2545,8 +2707,7 @@ void CXFA_FM2JSContext::Apr(CFXJSE_Value* pThis, nTemp *= (1 + r); } FX_DOUBLE nRet = r * nTemp / (nTemp - 1) - nPayment / nPrincipal; - while ((nRet > FINANCIAL_PRECISION || nRet < -FINANCIAL_PRECISION) && - (!bFlags)) { + while (fabs(nRet) > kFinancialPrecision && !bFlags) { FX_DOUBLE nDerivative = 0; nDerivative = ((nTemp + r * nPeriods * (nTemp / (1 + r))) * (nTemp - 1) - @@ -2576,6 +2737,8 @@ void CXFA_FM2JSContext::Apr(CFXJSE_Value* pThis, L"Apr"); } } + +// static void CXFA_FM2JSContext::CTerm(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -2612,6 +2775,8 @@ void CXFA_FM2JSContext::CTerm(CFXJSE_Value* pThis, L"CTerm"); } } + +// static void CXFA_FM2JSContext::FV(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -2656,6 +2821,8 @@ void CXFA_FM2JSContext::FV(CFXJSE_Value* pThis, L"FV"); } } + +// static void CXFA_FM2JSContext::IPmt(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -2726,6 +2893,8 @@ void CXFA_FM2JSContext::IPmt(CFXJSE_Value* pThis, L"IPmt"); } } + +// static void CXFA_FM2JSContext::NPV(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -2773,6 +2942,8 @@ void CXFA_FM2JSContext::NPV(CFXJSE_Value* pThis, L"NPV"); } } + +// static void CXFA_FM2JSContext::Pmt(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -2814,6 +2985,8 @@ void CXFA_FM2JSContext::Pmt(CFXJSE_Value* pThis, L"Pmt"); } } + +// static void CXFA_FM2JSContext::PPmt(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -2885,6 +3058,8 @@ void CXFA_FM2JSContext::PPmt(CFXJSE_Value* pThis, L"PPmt"); } } + +// static void CXFA_FM2JSContext::PV(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -2925,6 +3100,8 @@ void CXFA_FM2JSContext::PV(CFXJSE_Value* pThis, L"PV"); } } + +// static void CXFA_FM2JSContext::Rate(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -2962,6 +3139,8 @@ void CXFA_FM2JSContext::Rate(CFXJSE_Value* pThis, L"Rate"); } } + +// static void CXFA_FM2JSContext::Term(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -2999,6 +3178,8 @@ void CXFA_FM2JSContext::Term(CFXJSE_Value* pThis, L"Term"); } } + +// static void CXFA_FM2JSContext::Choose(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -3085,6 +3266,8 @@ void CXFA_FM2JSContext::Choose(CFXJSE_Value* pThis, L"Choose"); } } + +// static void CXFA_FM2JSContext::Exists(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -3099,6 +3282,8 @@ void CXFA_FM2JSContext::Exists(CFXJSE_Value* pThis, L"Exists"); } } + +// static void CXFA_FM2JSContext::HasValue(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -3122,11 +3307,12 @@ void CXFA_FM2JSContext::HasValue(CFXJSE_Value* pThis, L"HasValue"); } } + +// static void CXFA_FM2JSContext::Oneof(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - int32_t argc = args.GetLength(); - if (argc > 1) { + if (args.GetLength() > 1) { FX_BOOL bFlags = FALSE; std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); CFXJSE_Value** parametersValue = nullptr; @@ -3150,11 +3336,12 @@ void CXFA_FM2JSContext::Oneof(CFXJSE_Value* pThis, L"Oneof"); } } + +// static void CXFA_FM2JSContext::Within(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - int32_t argc = args.GetLength(); - if (argc == 3) { + if (args.GetLength() == 3) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); if (FXJSE_Value_IsNull(argOne.get())) { FXJSE_Value_SetUndefined(args.GetReturnValue()); @@ -3188,6 +3375,8 @@ void CXFA_FM2JSContext::Within(CFXJSE_Value* pThis, L"Within"); } } + +// static void CXFA_FM2JSContext::If(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -3207,6 +3396,8 @@ void CXFA_FM2JSContext::If(CFXJSE_Value* pThis, L"If"); } } + +// static void CXFA_FM2JSContext::Eval(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -3242,6 +3433,8 @@ void CXFA_FM2JSContext::Eval(CFXJSE_Value* pThis, L"Eval"); } } + +// static void CXFA_FM2JSContext::Ref(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -3314,6 +3507,8 @@ void CXFA_FM2JSContext::Ref(CFXJSE_Value* pThis, L"Ref"); } } + +// static void CXFA_FM2JSContext::UnitType(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -3430,6 +3625,8 @@ void CXFA_FM2JSContext::UnitType(CFXJSE_Value* pThis, L"UnitType"); } } + +// static void CXFA_FM2JSContext::UnitValue(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -3460,7 +3657,7 @@ void CXFA_FM2JSContext::UnitValue(CFXJSE_Value* pThis, } ++u; } - FX_CHAR* pTemp = NULL; + FX_CHAR* pTemp = nullptr; dFirstNumber = strtod(pData, &pTemp); while (*(pData + u) == ' ' || *(pData + u) == 0x09 || *(pData + u) == 0x0B || *(pData + u) == 0x0C || @@ -3586,11 +3783,11 @@ void CXFA_FM2JSContext::UnitValue(CFXJSE_Value* pThis, L"UnitValue"); } } + +// static void CXFA_FM2JSContext::At(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); if (args.GetLength() == 2) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); @@ -3609,15 +3806,17 @@ void CXFA_FM2JSContext::At(CFXJSE_Value* pThis, } } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"At"); } } + +// static void CXFA_FM2JSContext::Concat(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); int32_t argc = args.GetLength(); if (argc >= 1) { CFX_ByteString resultString; @@ -3640,15 +3839,17 @@ void CXFA_FM2JSContext::Concat(CFXJSE_Value* pThis, resultString.AsStringC()); } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Concat"); } } + +// static void CXFA_FM2JSContext::Decode(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); int32_t argc = args.GetLength(); if (argc == 1) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); @@ -3682,10 +3883,14 @@ void CXFA_FM2JSContext::Decode(CFXJSE_Value* pThis, FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultBuf.AsStringC()); } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Decode"); } } + +// static void CXFA_FM2JSContext::DecodeURL(const CFX_ByteStringC& szURLString, CFX_ByteTextBuf& szResultString) { CFX_WideString wsURLString = CFX_WideString::FromUTF8(szURLString); @@ -3741,6 +3946,8 @@ void CXFA_FM2JSContext::DecodeURL(const CFX_ByteStringC& szURLString, wsResultBuf.GetLength()) .AsStringC(); } + +// static void CXFA_FM2JSContext::DecodeHTML(const CFX_ByteStringC& szHTMLString, CFX_ByteTextBuf& szResultString) { CFX_WideString wsHTMLString = CFX_WideString::FromUTF8(szHTMLString); @@ -3815,6 +4022,8 @@ void CXFA_FM2JSContext::DecodeHTML(const CFX_ByteStringC& szHTMLString, wsResultBuf.GetLength()) .AsStringC(); } + +// static void CXFA_FM2JSContext::DecodeXML(const CFX_ByteStringC& szXMLString, CFX_ByteTextBuf& szResultString) { CFX_WideString wsXMLString = CFX_WideString::FromUTF8(szXMLString); @@ -3912,11 +4121,11 @@ void CXFA_FM2JSContext::DecodeXML(const CFX_ByteStringC& szXMLString, szResultString << FX_UTF8Encode(wsXMLBuf.GetBuffer(), wsXMLBuf.GetLength()) .AsStringC(); } + +// static void CXFA_FM2JSContext::Encode(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); int32_t argc = args.GetLength(); if (argc == 1) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); @@ -3950,10 +4159,14 @@ void CXFA_FM2JSContext::Encode(CFXJSE_Value* pThis, FXJSE_Value_SetUTF8String(args.GetReturnValue(), resultBuf.AsStringC()); } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Encode"); } } + +// static void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString, CFX_ByteTextBuf& szResultBuf) { CFX_WideString wsURLString = CFX_WideString::FromUTF8(szURLString); @@ -4061,6 +4274,8 @@ void CXFA_FM2JSContext::EncodeURL(const CFX_ByteStringC& szURLString, szResultBuf << FX_UTF8Encode(wsResultBuf.GetBuffer(), wsResultBuf.GetLength()) .AsStringC(); } + +// static void CXFA_FM2JSContext::EncodeHTML(const CFX_ByteStringC& szHTMLString, CFX_ByteTextBuf& szResultBuf) { CFX_ByteString str = szHTMLString.c_str(); @@ -4115,6 +4330,8 @@ void CXFA_FM2JSContext::EncodeHTML(const CFX_ByteStringC& szHTMLString, szResultBuf << FX_UTF8Encode(wsResultBuf.GetBuffer(), wsResultBuf.GetLength()) .AsStringC(); } + +// static void CXFA_FM2JSContext::EncodeXML(const CFX_ByteStringC& szXMLString, CFX_ByteTextBuf& szResultBuf) { CFX_WideString wsXMLString = CFX_WideString::FromUTF8(szXMLString); @@ -4196,6 +4413,8 @@ void CXFA_FM2JSContext::EncodeXML(const CFX_ByteStringC& szXMLString, szResultBuf << FX_UTF8Encode(wsResultBuf.GetBuffer(), wsResultBuf.GetLength()) .AsStringC(); } + +// static FX_BOOL CXFA_FM2JSContext::HTMLSTR2Code(const CFX_WideStringC& pData, uint32_t& iCode) { uint32_t uHash = FX_HashCode_GetW(pData, false); @@ -4216,6 +4435,8 @@ FX_BOOL CXFA_FM2JSContext::HTMLSTR2Code(const CFX_WideStringC& pData, } while (iStart <= iEnd); return FALSE; } + +// static FX_BOOL CXFA_FM2JSContext::HTMLCode2STR(uint32_t iCode, CFX_WideString& wsHTMLReserve) { XFA_FMHtmlReserveCode htmlreservecode; @@ -4236,97 +4457,14 @@ FX_BOOL CXFA_FM2JSContext::HTMLCode2STR(uint32_t iCode, } while (iStart <= iEnd); return FALSE; } -static FX_BOOL XFA_PATTERN_STRING_Type(const CFX_ByteStringC& szPattern, - uint32_t& patternType) { - CFX_WideString wsPattern = CFX_WideString::FromUTF8(szPattern); - if (FX_WSTRC(L"datetime") == wsPattern.Left(8)) { - patternType = XFA_VT_DATETIME; - return TRUE; - } else if (FX_WSTRC(L"date") == wsPattern.Left(4)) { - patternType = wsPattern.Find(L"time") > 0 ? XFA_VT_DATETIME : XFA_VT_DATE; - return TRUE; - } else if (FX_WSTRC(L"time") == wsPattern.Left(4)) { - patternType = XFA_VT_TIME; - return TRUE; - } else if (FX_WSTRC(L"text") == wsPattern.Left(4)) { - patternType = XFA_VT_TEXT; - return TRUE; - } else if (FX_WSTRC(L"num") == wsPattern.Left(3)) { - if (FX_WSTRC(L"integer") == wsPattern.Mid(4, 7)) { - patternType = XFA_VT_INTEGER; - } else if (FX_WSTRC(L"decimal") == wsPattern.Mid(4, 7)) { - patternType = XFA_VT_DECIMAL; - } else if (FX_WSTRC(L"currency") == wsPattern.Mid(4, 8)) { - patternType = XFA_VT_FLOAT; - } else if (FX_WSTRC(L"percent") == wsPattern.Mid(4, 7)) { - patternType = XFA_VT_FLOAT; - } else { - patternType = XFA_VT_FLOAT; - } - return TRUE; - } - patternType = XFA_VT_NULL; - wsPattern.MakeLower(); - const FX_WCHAR* pData = wsPattern.c_str(); - int32_t iLength = wsPattern.GetLength(); - int32_t iIndex = 0; - FX_BOOL bSingleQuotation = FALSE; - FX_WCHAR patternChar; - while (iIndex < iLength) { - patternChar = *(pData + iIndex); - if (patternChar == 0x27) { - bSingleQuotation = !bSingleQuotation; - } else if (!bSingleQuotation && - (patternChar == 'y' || patternChar == 'j')) { - patternType = XFA_VT_DATE; - iIndex++; - FX_WCHAR timePatternChar; - while (iIndex < iLength) { - timePatternChar = *(pData + iIndex); - if (timePatternChar == 0x27) { - bSingleQuotation = !bSingleQuotation; - } else if (!bSingleQuotation && timePatternChar == 't') { - patternType = XFA_VT_DATETIME; - break; - } - iIndex++; - } - break; - } else if (!bSingleQuotation && - (patternChar == 'h' || patternChar == 'k')) { - patternType = XFA_VT_TIME; - break; - } else if (!bSingleQuotation && - (patternChar == 'a' || patternChar == 'x' || - patternChar == 'o' || patternChar == '0')) { - patternType = XFA_VT_TEXT; - if (patternChar == 'x' || patternChar == 'o' || patternChar == '0') { - break; - } - } else if (!bSingleQuotation && - (patternChar == 'z' || patternChar == 's' || - patternChar == 'e' || patternChar == 'v' || - patternChar == '8' || patternChar == ',' || - patternChar == '.' || patternChar == '$')) { - patternType = XFA_VT_FLOAT; - if (patternChar == 'v' || patternChar == '8' || patternChar == '$') { - break; - } - } - iIndex++; - } - if (patternType == XFA_VT_NULL) { - patternType = XFA_VT_TEXT | XFA_VT_FLOAT; - } - return FALSE; -} + +// static void CXFA_FM2JSContext::Format(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { CXFA_FM2JSContext* pContext = (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); - int32_t argc = args.GetLength(); - if (argc >= 2) { + if (args.GetLength() >= 2) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); CFX_ByteString szPattern; @@ -4340,11 +4478,9 @@ void CXFA_FM2JSContext::Format(CFXJSE_Value* pThis, CXFA_WidgetData widgetData(pThisNode); IFX_Locale* pLocale = widgetData.GetLocal(); uint32_t patternType; - FX_BOOL bCompelte = - XFA_PATTERN_STRING_Type(szPattern.AsStringC(), patternType); CFX_WideString wsPattern = CFX_WideString::FromUTF8(szPattern.AsStringC()); CFX_WideString wsValue = CFX_WideString::FromUTF8(szValue.AsStringC()); - if (!bCompelte) { + if (!PatternStringType(szPattern.AsStringC(), patternType)) { switch (patternType) { case XFA_VT_DATETIME: { FX_STRSIZE iTChar = wsPattern.Find(L'T'); @@ -4406,11 +4542,11 @@ void CXFA_FM2JSContext::Format(CFXJSE_Value* pThis, L"Format"); } } + +// static void CXFA_FM2JSContext::Left(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); if (args.GetLength() == 2) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); @@ -4432,15 +4568,17 @@ void CXFA_FM2JSContext::Left(CFXJSE_Value* pThis, sourceString.Left(count).AsStringC()); } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Left"); } } + +// static void CXFA_FM2JSContext::Len(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); if (ValueIsNull(pThis, argOne.get())) { @@ -4451,10 +4589,14 @@ void CXFA_FM2JSContext::Len(CFXJSE_Value* pThis, FXJSE_Value_SetInteger(args.GetReturnValue(), sourceString.GetLength()); } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Len"); } } + +// static void CXFA_FM2JSContext::Lower(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -4498,11 +4640,11 @@ void CXFA_FM2JSContext::Lower(CFXJSE_Value* pThis, L"Lower"); } } + +// static void CXFA_FM2JSContext::Ltrim(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); if (ValueIsNull(pThis, argOne.get())) { @@ -4515,10 +4657,14 @@ void CXFA_FM2JSContext::Ltrim(CFXJSE_Value* pThis, sourceString.AsStringC()); } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Ltrim"); } } + +// static void CXFA_FM2JSContext::Parse(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -4541,13 +4687,11 @@ void CXFA_FM2JSContext::Parse(CFXJSE_Value* pThis, CXFA_WidgetData widgetData(pThisNode); IFX_Locale* pLocale = widgetData.GetLocal(); uint32_t patternType; - FX_BOOL bCompletePattern = - XFA_PATTERN_STRING_Type(szPattern.AsStringC(), patternType); CFX_WideString wsPattern = CFX_WideString::FromUTF8(szPattern.AsStringC()); CFX_WideString wsValue = CFX_WideString::FromUTF8(szValue.AsStringC()); CFX_ByteString szParsedValue; - if (bCompletePattern) { + if (PatternStringType(szPattern.AsStringC(), patternType)) { CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, pLocale, (CXFA_LocaleMgr*)pMgr); if (localeValue.IsValid()) { @@ -4660,6 +4804,8 @@ void CXFA_FM2JSContext::Parse(CFXJSE_Value* pThis, L"Parse"); } } + +// static void CXFA_FM2JSContext::Replace(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -4720,11 +4866,11 @@ void CXFA_FM2JSContext::Replace(CFXJSE_Value* pThis, L"Replace"); } } + +// static void CXFA_FM2JSContext::Right(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); if (args.GetLength() == 2) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); @@ -4746,15 +4892,17 @@ void CXFA_FM2JSContext::Right(CFXJSE_Value* pThis, sourceString.Right(count).AsStringC()); } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Right"); } } + +// static void CXFA_FM2JSContext::Rtrim(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); if (ValueIsNull(pThis, argOne.get())) { @@ -4767,15 +4915,17 @@ void CXFA_FM2JSContext::Rtrim(CFXJSE_Value* pThis, sourceString.AsStringC()); } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Rtrim"); } } + +// static void CXFA_FM2JSContext::Space(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); if (FXJSE_Value_IsNull(argOne.get())) { @@ -4794,10 +4944,14 @@ void CXFA_FM2JSContext::Space(CFXJSE_Value* pThis, FXJSE_Value_SetUTF8String(args.GetReturnValue(), spaceString.AsStringC()); } } else { + CXFA_FM2JSContext* pContext = + (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); pContext->ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Space"); } } + +// static void CXFA_FM2JSContext::Str(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -4916,6 +5070,8 @@ void CXFA_FM2JSContext::Str(CFXJSE_Value* pThis, L"Str"); } } + +// static void CXFA_FM2JSContext::Stuff(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -4973,11 +5129,12 @@ void CXFA_FM2JSContext::Stuff(CFXJSE_Value* pThis, L"Stuff"); } } + +// static void CXFA_FM2JSContext::Substr(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - int32_t argc = args.GetLength(); - if (argc == 3) { + if (args.GetLength() == 3) { std::unique_ptr<CFXJSE_Value> stringValue = GetSimpleValue(pThis, args, 0); std::unique_ptr<CFXJSE_Value> startValue = GetSimpleValue(pThis, args, 1); std::unique_ptr<CFXJSE_Value> endValue = GetSimpleValue(pThis, args, 2); @@ -5017,6 +5174,8 @@ void CXFA_FM2JSContext::Substr(CFXJSE_Value* pThis, L"Substr"); } } + +// static void CXFA_FM2JSContext::Uuid(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5039,6 +5198,8 @@ void CXFA_FM2JSContext::Uuid(CFXJSE_Value* pThis, L"Uuid"); } } + +// static void CXFA_FM2JSContext::Upper(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5082,6 +5243,8 @@ void CXFA_FM2JSContext::Upper(CFXJSE_Value* pThis, L"Upper"); } } + +// static void CXFA_FM2JSContext::WordNum(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5135,6 +5298,8 @@ void CXFA_FM2JSContext::WordNum(CFXJSE_Value* pThis, L"WordNum"); } } + +// static void CXFA_FM2JSContext::TrillionUS(const CFX_ByteStringC& szData, CFX_ByteTextBuf& strBuf) { CFX_ByteStringC pUnits[] = {"zero", "one", "two", "three", "four", @@ -5232,6 +5397,8 @@ void CXFA_FM2JSContext::TrillionUS(const CFX_ByteStringC& szData, iIndex += 3; } } + +// static void CXFA_FM2JSContext::WordUS(const CFX_ByteStringC& szData, int32_t iStyle, CFX_ByteTextBuf& strBuf) { @@ -5330,13 +5497,14 @@ void CXFA_FM2JSContext::WordUS(const CFX_ByteStringC& szData, break; } } + +// static void CXFA_FM2JSContext::Get(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { CXFA_FM2JSContext* pContext = (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); - int32_t argc = args.GetLength(); - if (argc == 1) { + if (args.GetLength() == 1) { CXFA_Document* pDoc = pContext->GetDocument(); if (!pDoc) { return; @@ -5365,6 +5533,8 @@ void CXFA_FM2JSContext::Get(CFXJSE_Value* pThis, L"Get"); } } + +// static void CXFA_FM2JSContext::Post(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5422,6 +5592,8 @@ void CXFA_FM2JSContext::Post(CFXJSE_Value* pThis, L"Post"); } } + +// static void CXFA_FM2JSContext::Put(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5463,6 +5635,8 @@ void CXFA_FM2JSContext::Put(CFXJSE_Value* pThis, L"Put"); } } + +// static void CXFA_FM2JSContext::assign_value_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5509,6 +5683,8 @@ void CXFA_FM2JSContext::assign_value_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::logical_or_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5529,6 +5705,8 @@ void CXFA_FM2JSContext::logical_or_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::logical_and_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5549,6 +5727,8 @@ void CXFA_FM2JSContext::logical_and_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::equality_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5586,6 +5766,8 @@ void CXFA_FM2JSContext::equality_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::notequality_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5622,6 +5804,8 @@ void CXFA_FM2JSContext::notequality_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static FX_BOOL CXFA_FM2JSContext::fm_ref_equal(CFXJSE_Value* pThis, CFXJSE_Arguments& args) { FX_BOOL bRet = FALSE; @@ -5644,13 +5828,15 @@ FX_BOOL CXFA_FM2JSContext::fm_ref_equal(CFXJSE_Value* pThis, FXJSE_Value_GetObjectPropByIdx(argSecond.get(), 2, secondJSObject.get()); if (!FXJSE_Value_IsNull(firstJSObject.get()) && !FXJSE_Value_IsNull(secondJSObject.get())) { - bRet = (FXJSE_Value_ToObject(firstJSObject.get(), NULL) == - FXJSE_Value_ToObject(secondJSObject.get(), NULL)); + bRet = (FXJSE_Value_ToObject(firstJSObject.get(), nullptr) == + FXJSE_Value_ToObject(secondJSObject.get(), nullptr)); } } } return bRet; } + +// static void CXFA_FM2JSContext::less_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5680,6 +5866,8 @@ void CXFA_FM2JSContext::less_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::lessequal_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5713,6 +5901,8 @@ void CXFA_FM2JSContext::lessequal_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::greater_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5742,6 +5932,8 @@ void CXFA_FM2JSContext::greater_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::greaterequal_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5775,6 +5967,8 @@ void CXFA_FM2JSContext::greaterequal_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::plus_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5795,6 +5989,8 @@ void CXFA_FM2JSContext::plus_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::minus_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5815,6 +6011,8 @@ void CXFA_FM2JSContext::minus_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::multiple_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5835,6 +6033,8 @@ void CXFA_FM2JSContext::multiple_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::divide_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -5859,11 +6059,12 @@ void CXFA_FM2JSContext::divide_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::positive_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - int32_t iLength = args.GetLength(); - if (iLength == 1) { + if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); if (FXJSE_Value_IsNull(argOne.get())) { FXJSE_Value_SetNull(args.GetReturnValue()); @@ -5877,11 +6078,12 @@ void CXFA_FM2JSContext::positive_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::negative_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - int32_t iLength = args.GetLength(); - if (iLength == 1) { + if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); if (FXJSE_Value_IsNull(argOne.get())) { FXJSE_Value_SetNull(args.GetReturnValue()); @@ -5895,11 +6097,12 @@ void CXFA_FM2JSContext::negative_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::logical_not_operator(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - int32_t iLength = args.GetLength(); - if (iLength == 1) { + if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); if (FXJSE_Value_IsNull(argOne.get())) { FXJSE_Value_SetNull(args.GetReturnValue()); @@ -5913,6 +6116,8 @@ void CXFA_FM2JSContext::logical_not_operator(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::dot_accessor(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -6060,6 +6265,8 @@ void CXFA_FM2JSContext::dot_accessor(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::dotdot_accessor(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -6202,13 +6409,14 @@ void CXFA_FM2JSContext::dotdot_accessor(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::eval_translation(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { CXFA_FM2JSContext* pContext = (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); - int32_t argc = args.GetLength(); - if (argc == 1) { + if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); CFX_ByteString argString; ValueToUTF8String(argOne.get(), argString); @@ -6235,11 +6443,12 @@ void CXFA_FM2JSContext::eval_translation(CFXJSE_Value* pThis, L"Eval"); } } + +// static void CXFA_FM2JSContext::is_fm_object(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - int32_t iLength = args.GetLength(); - if (iLength == 1) { + if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); FXJSE_Value_SetBoolean(args.GetReturnValue(), FXJSE_Value_IsObject(argOne.get())); @@ -6247,11 +6456,12 @@ void CXFA_FM2JSContext::is_fm_object(CFXJSE_Value* pThis, FXJSE_Value_SetBoolean(args.GetReturnValue(), FALSE); } } + +// static void CXFA_FM2JSContext::is_fm_array(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - int32_t iLength = args.GetLength(); - if (iLength == 1) { + if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); FX_BOOL bIsArray = FXJSE_Value_IsArray(argOne.get()); FXJSE_Value_SetBoolean(args.GetReturnValue(), bIsArray); @@ -6259,14 +6469,15 @@ void CXFA_FM2JSContext::is_fm_array(CFXJSE_Value* pThis, FXJSE_Value_SetBoolean(args.GetReturnValue(), FALSE); } } + +// static void CXFA_FM2JSContext::get_fm_value(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { CXFA_FM2JSContext* pContext = (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); v8::Isolate* pIsolate = pContext->GetScriptRuntime(); - int32_t iLength = args.GetLength(); - if (iLength == 1) { + if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); if (FXJSE_Value_IsArray(argOne.get())) { std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); @@ -6290,16 +6501,17 @@ void CXFA_FM2JSContext::get_fm_value(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::get_fm_jsobj(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_FM2JSContext* pContext = - static_cast<CXFA_FM2JSContext*>(FXJSE_Value_ToObject(pThis, nullptr)); - int32_t argc = args.GetLength(); - if (argc == 1) { + if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); if (FXJSE_Value_IsArray(argOne.get())) { #ifndef NDEBUG + CXFA_FM2JSContext* pContext = + static_cast<CXFA_FM2JSContext*>(FXJSE_Value_ToObject(pThis, nullptr)); v8::Isolate* pIsolate = pContext->GetScriptRuntime(); std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); FXJSE_Value_GetObjectProp(argOne.get(), "length", lengthValue.get()); @@ -6310,17 +6522,20 @@ void CXFA_FM2JSContext::get_fm_jsobj(CFXJSE_Value* pThis, FXJSE_Value_Set(args.GetReturnValue(), argOne.get()); } } else { + CXFA_FM2JSContext* pContext = + static_cast<CXFA_FM2JSContext*>(FXJSE_Value_ToObject(pThis, nullptr)); pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::fm_var_filter(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { CXFA_FM2JSContext* pContext = (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); v8::Isolate* pIsolate = pContext->GetScriptRuntime(); - int32_t argc = args.GetLength(); - if (argc == 1) { + if (args.GetLength() == 1) { std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); if (FXJSE_Value_IsArray(argOne.get())) { #ifndef NDEBUG @@ -6364,6 +6579,8 @@ void CXFA_FM2JSContext::fm_var_filter(CFXJSE_Value* pThis, pContext->ThrowScriptErrorMessage(XFA_IDS_COMPILER_ERROR); } } + +// static void CXFA_FM2JSContext::concat_fm_object(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { @@ -6371,9 +6588,9 @@ void CXFA_FM2JSContext::concat_fm_object(CFXJSE_Value* pThis, (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); v8::Isolate* pIsolate = pContext->GetScriptRuntime(); uint32_t iLength = 0; - int32_t argCount = args.GetLength(); + int32_t argc = args.GetLength(); std::vector<std::unique_ptr<CFXJSE_Value>> argValues; - for (int32_t i = 0; i < argCount; i++) { + for (int32_t i = 0; i < argc; i++) { argValues.push_back(args.GetValue(i)); if (FXJSE_Value_IsArray(argValues[i].get())) { std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); @@ -6389,7 +6606,7 @@ void CXFA_FM2JSContext::concat_fm_object(CFXJSE_Value* pThis, returnValues[i] = new CFXJSE_Value(pIsolate); int32_t index = 0; - for (int32_t i = 0; i < argCount; i++) { + for (int32_t i = 0; i < argc; i++) { if (FXJSE_Value_IsArray(argValues[i].get())) { std::unique_ptr<CFXJSE_Value> lengthValue(new CFXJSE_Value(pIsolate)); FXJSE_Value_GetObjectProp(argValues[i].get(), "length", @@ -6410,6 +6627,8 @@ void CXFA_FM2JSContext::concat_fm_object(CFXJSE_Value* pThis, FX_Free(returnValues); } + +// static std::unique_ptr<CFXJSE_Value> CXFA_FM2JSContext::GetSimpleValue( CFXJSE_Value* pThis, CFXJSE_Arguments& args, @@ -6450,6 +6669,7 @@ std::unique_ptr<CFXJSE_Value> CXFA_FM2JSContext::GetSimpleValue( } } +// static FX_BOOL CXFA_FM2JSContext::ValueIsNull(CFXJSE_Value* pThis, CFXJSE_Value* arg) { CXFA_FM2JSContext* pContext = (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); @@ -6494,6 +6714,7 @@ FX_BOOL CXFA_FM2JSContext::ValueIsNull(CFXJSE_Value* pThis, CFXJSE_Value* arg) { return isNull; } +// static int32_t CXFA_FM2JSContext::hvalue_get_array_length(CFXJSE_Value* pThis, CFXJSE_Value* arg) { CXFA_FM2JSContext* pContext = @@ -6507,6 +6728,8 @@ int32_t CXFA_FM2JSContext::hvalue_get_array_length(CFXJSE_Value* pThis, } return iLength; } + +// static FX_BOOL CXFA_FM2JSContext::simpleValueCompare(CFXJSE_Value* pThis, CFXJSE_Value* firstValue, CFXJSE_Value* secondValue) { @@ -6529,6 +6752,8 @@ FX_BOOL CXFA_FM2JSContext::simpleValueCompare(CFXJSE_Value* pThis, } return bReturn; } + +// static void CXFA_FM2JSContext::unfoldArgs(CFXJSE_Value* pThis, CFXJSE_Arguments& args, CFXJSE_Value**& resultValues, @@ -6539,7 +6764,6 @@ void CXFA_FM2JSContext::unfoldArgs(CFXJSE_Value* pThis, v8::Isolate* pIsolate = pContext->GetScriptRuntime(); iCount = 0; int32_t argc = args.GetLength(); - std::vector<std::unique_ptr<CFXJSE_Value>> argsValue; for (int32_t i = 0; i < argc - iStart; i++) { argsValue.push_back(args.GetValue(i + iStart)); @@ -6599,6 +6823,7 @@ void CXFA_FM2JSContext::unfoldArgs(CFXJSE_Value* pThis, } } +// static void CXFA_FM2JSContext::GetObjectDefaultValue(CFXJSE_Value* pObjectValue, CFXJSE_Value* pDefaultValue) { CXFA_Node* pNode = @@ -6609,6 +6834,8 @@ void CXFA_FM2JSContext::GetObjectDefaultValue(CFXJSE_Value* pObjectValue, FXJSE_Value_SetNull(pDefaultValue); } } + +// static FX_BOOL CXFA_FM2JSContext::SetObjectDefaultValue(CFXJSE_Value* pObjectValue, CFXJSE_Value* hNewValue) { CXFA_Node* pNode = @@ -6619,6 +6846,8 @@ FX_BOOL CXFA_FM2JSContext::SetObjectDefaultValue(CFXJSE_Value* pObjectValue, } return FALSE; } + +// static void CXFA_FM2JSContext::GenerateSomExpression(const CFX_ByteStringC& szName, int32_t iIndexFlags, int32_t iIndexValue, @@ -6648,6 +6877,8 @@ void CXFA_FM2JSContext::GenerateSomExpression(const CFX_ByteStringC& szName, szSomExp += "]"; } } + +// static FX_BOOL CXFA_FM2JSContext::GetObjectByName( CFXJSE_Value* pThis, CFXJSE_Value* accessorValue, @@ -6674,6 +6905,8 @@ FX_BOOL CXFA_FM2JSContext::GetObjectByName( } return bFlags; } + +// static int32_t CXFA_FM2JSContext::ResolveObjects(CFXJSE_Value* pThis, CFXJSE_Value* pRefValue, const CFX_ByteStringC& bsSomExp, @@ -6689,7 +6922,7 @@ int32_t CXFA_FM2JSContext::ResolveObjects(CFXJSE_Value* pThis, return iRet; } CXFA_ScriptContext* pScriptContext = pDoc->GetScriptContext(); - CXFA_Object* pNode = NULL; + CXFA_Object* pNode = nullptr; uint32_t dFlags = 0UL; if (bdotAccessor) { if (FXJSE_Value_IsNull(pRefValue)) { @@ -6725,6 +6958,8 @@ int32_t CXFA_FM2JSContext::ResolveObjects(CFXJSE_Value* pThis, resoveNodeRS, dFlags); return iRet; } + +// static void CXFA_FM2JSContext::ParseResolveResult( CFXJSE_Value* pThis, const XFA_RESOLVENODE_RS& resoveNodeRS, @@ -6736,7 +6971,7 @@ void CXFA_FM2JSContext::ParseResolveResult( (CXFA_FM2JSContext*)FXJSE_Value_ToObject(pThis, nullptr); v8::Isolate* pIsolate = pContext->GetScriptRuntime(); iSize = 0; - resultValues = NULL; + resultValues = nullptr; if (resoveNodeRS.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { bAttribute = FALSE; iSize = resoveNodeRS.nodes.GetSize(); @@ -6769,6 +7004,8 @@ void CXFA_FM2JSContext::ParseResolveResult( } } } + +// static int32_t CXFA_FM2JSContext::ValueToInteger(CFXJSE_Value* pThis, CFXJSE_Value* pValue) { CXFA_FM2JSContext* pContext = @@ -6805,10 +7042,8 @@ int32_t CXFA_FM2JSContext::ValueToInteger(CFXJSE_Value* pThis, } return iValue; } -FX_DOUBLE CXFA_FM2JSContext::StringToDouble( - const CFX_ByteStringC& szStringVal) { - return XFA_ByteStringToDouble(szStringVal); -} + +// static FX_FLOAT CXFA_FM2JSContext::ValueToFloat(CFXJSE_Value* pThis, CFXJSE_Value* arg) { CXFA_FM2JSContext* pContext = @@ -6837,7 +7072,7 @@ FX_FLOAT CXFA_FM2JSContext::ValueToFloat(CFXJSE_Value* pThis, } else if (FXJSE_Value_IsUTF8String(arg)) { CFX_ByteString bsOutput; FXJSE_Value_ToUTF8String(arg, bsOutput); - fRet = (FX_FLOAT)StringToDouble(bsOutput.AsStringC()); + fRet = (FX_FLOAT)XFA_ByteStringToDouble(bsOutput.AsStringC()); } else if (FXJSE_Value_IsUndefined(arg)) { fRet = 0; } else { @@ -6845,6 +7080,8 @@ FX_FLOAT CXFA_FM2JSContext::ValueToFloat(CFXJSE_Value* pThis, } return fRet; } + +// static FX_DOUBLE CXFA_FM2JSContext::ValueToDouble(CFXJSE_Value* pThis, CFXJSE_Value* arg) { CXFA_FM2JSContext* pContext = @@ -6873,7 +7110,7 @@ FX_DOUBLE CXFA_FM2JSContext::ValueToDouble(CFXJSE_Value* pThis, } else if (FXJSE_Value_IsUTF8String(arg)) { CFX_ByteString bsOutput; FXJSE_Value_ToUTF8String(arg, bsOutput); - dRet = StringToDouble(bsOutput.AsStringC()); + dRet = XFA_ByteStringToDouble(bsOutput.AsStringC()); } else if (FXJSE_Value_IsUndefined(arg)) { dRet = 0; } else { @@ -6882,6 +7119,7 @@ FX_DOUBLE CXFA_FM2JSContext::ValueToDouble(CFXJSE_Value* pThis, return dRet; } +// static void CXFA_FM2JSContext::ValueToUTF8String(CFXJSE_Value* arg, CFX_ByteString& szOutputString) { if (FXJSE_Value_IsNull(arg) || FXJSE_Value_IsUndefined(arg)) { @@ -6894,23 +7132,19 @@ void CXFA_FM2JSContext::ValueToUTF8String(CFXJSE_Value* arg, } } -CXFA_FM2JSContext::CXFA_FM2JSContext() - : m_pFMClass(nullptr), m_pDocument(nullptr) {} - -CXFA_FM2JSContext::~CXFA_FM2JSContext() { -} - -void CXFA_FM2JSContext::Initialize(v8::Isolate* pScriptIsolate, - CFXJSE_Context* pScriptContext, - CXFA_Document* pDoc) { - m_pDocument = pDoc; - m_pIsolate = pScriptIsolate; - m_pFMClass = FXJSE_DefineClass(pScriptContext, &formcalc_fm2js_descriptor); - m_pValue = std::unique_ptr<CFXJSE_Value>(new CFXJSE_Value(pScriptIsolate)); +CXFA_FM2JSContext::CXFA_FM2JSContext(v8::Isolate* pScriptIsolate, + CFXJSE_Context* pScriptContext, + CXFA_Document* pDoc) + : m_pIsolate(pScriptIsolate), + m_pFMClass(FXJSE_DefineClass(pScriptContext, &formcalc_fm2js_descriptor)), + m_pValue(new CFXJSE_Value(pScriptIsolate)), + m_pDocument(pDoc) { FXJSE_Value_SetNull(m_pValue.get()); FXJSE_Value_SetObject(m_pValue.get(), this, m_pFMClass); } +CXFA_FM2JSContext::~CXFA_FM2JSContext() {} + void CXFA_FM2JSContext::GlobalPropertyGetter(CFXJSE_Value* pValue) { FXJSE_Value_Set(pValue, m_pValue.get()); } diff --git a/xfa/fxfa/fm2js/xfa_fm2jscontext.h b/xfa/fxfa/fm2js/xfa_fm2jscontext.h index 68db0b19da..3a53533991 100644 --- a/xfa/fxfa/fm2js/xfa_fm2jscontext.h +++ b/xfa/fxfa/fm2js/xfa_fm2jscontext.h @@ -427,29 +427,27 @@ class CXFA_FM2JSContext { uint32_t index); static FX_BOOL ValueIsNull(CFXJSE_Value* pThis, CFXJSE_Value* pValue); static int32_t ValueToInteger(CFXJSE_Value* pThis, CFXJSE_Value* pValue); - static FX_DOUBLE StringToDouble(const CFX_ByteStringC& szStringVal); static FX_FLOAT ValueToFloat(CFXJSE_Value* pThis, CFXJSE_Value* pValue); static FX_DOUBLE ValueToDouble(CFXJSE_Value* pThis, CFXJSE_Value* pValue); static void ValueToUTF8String(CFXJSE_Value* pValue, CFX_ByteString& outputValue); - CXFA_FM2JSContext(); + CXFA_FM2JSContext(v8::Isolate* pScriptIsolate, + CFXJSE_Context* pScriptContext, + CXFA_Document* pDoc); ~CXFA_FM2JSContext(); - void Initialize(v8::Isolate* pScriptIsolate, - CFXJSE_Context* pScriptContext, - CXFA_Document* pDoc); void GlobalPropertyGetter(CFXJSE_Value* pValue); + private: v8::Isolate* GetScriptRuntime() const { return m_pIsolate; } CXFA_Document* GetDocument() const { return m_pDocument; } void ThrowScriptErrorMessage(int32_t iStringID, ...); - private: v8::Isolate* m_pIsolate; CFXJSE_Class* m_pFMClass; std::unique_ptr<CFXJSE_Value> m_pValue; - CXFA_Document* m_pDocument; + CXFA_Document* const m_pDocument; }; #endif // XFA_FXFA_FM2JS_XFA_FM2JSCONTEXT_H_ diff --git a/xfa/fxfa/parser/xfa_script_imp.cpp b/xfa/fxfa/parser/xfa_script_imp.cpp index 159a9eced3..fb42e802be 100644 --- a/xfa/fxfa/parser/xfa_script_imp.cpp +++ b/xfa/fxfa/parser/xfa_script_imp.cpp @@ -118,9 +118,8 @@ FX_BOOL CXFA_ScriptContext::RunScript(XFA_SCRIPTLANGTYPE eScriptType, m_eScriptType = eScriptType; if (eScriptType == XFA_SCRIPTLANGTYPE_Formcalc) { if (!m_hFM2JSContext) { - m_hFM2JSContext = XFA_FM2JS_ContextCreate(); - XFA_FM2JS_ContextInitialize(m_hFM2JSContext, m_pIsolate, m_pJsContext, - m_pDocument); + m_hFM2JSContext = + XFA_FM2JS_ContextCreate(m_pIsolate, m_pJsContext, m_pDocument); } CFX_WideTextBuf wsJavaScript; CFX_WideString wsErrorInfo; |