Index: xfa/fxfa/fm2js/xfa_fm2jscontext.cpp |
diff --git a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp |
index cfe5bd61354517a1adea1d17e50e6b22664a7aa7..53ccf0b5da92628015a88d964ec9547e87367db9 100644 |
--- a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp |
+++ b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp |
@@ -4780,23 +4780,23 @@ void CXFA_FM2JSContext::TrillionUS(const CFX_ByteStringC& szData, |
"Sixty", "Seventy", "Eighty", "Ninety"}; |
CFX_ByteStringC pComm[] = {" Hundred ", " Thousand ", " Million ", |
" Billion ", "Trillion"}; |
- int32_t iComm = 0; |
const FX_CHAR* pData = szData.c_str(); |
int32_t iLength = szData.GetLength(); |
- if (iLength > 12) { |
+ int32_t iComm = 0; |
+ if (iLength > 12) |
iComm = 4; |
- } else if (iLength > 9) { |
+ else if (iLength > 9) |
iComm = 3; |
- } else if (iLength > 6) { |
+ else if (iLength > 6) |
iComm = 2; |
- } else if (iLength > 3) { |
+ else if (iLength > 3) |
iComm = 1; |
- } |
- int32_t iIndex = 0; |
+ |
int32_t iFirstCount = iLength % 3; |
- if (iFirstCount == 0) { |
+ if (iFirstCount == 0) |
iFirstCount = 3; |
- } |
+ |
+ int32_t iIndex = 0; |
if (iFirstCount == 3) { |
if (pData[iIndex] != '0') { |
strBuf << pCapUnits[pData[iIndex] - '0']; |
@@ -4871,95 +4871,46 @@ void CXFA_FM2JSContext::WordUS(const CFX_ByteStringC& szData, |
CFX_ByteTextBuf& strBuf) { |
const FX_CHAR* pData = szData.c_str(); |
int32_t iLength = szData.GetLength(); |
- switch (iStyle) { |
- case 0: { |
- int32_t iIndex = 0; |
- while (iIndex < iLength) { |
- if (pData[iIndex] == '.') { |
- break; |
- } |
- ++iIndex; |
- } |
- iLength = iIndex; |
- iIndex = 0; |
- int32_t iCount = 0; |
- while (iIndex < iLength) { |
- iCount = (iLength - iIndex) % 12; |
- if (!iCount && iLength - iIndex > 0) { |
- iCount = 12; |
- } |
- TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf); |
- iIndex += iCount; |
- if (iIndex < iLength) { |
- strBuf << " Trillion "; |
- } |
- } |
- } break; |
- case 1: { |
- int32_t iIndex = 0; |
- while (iIndex < iLength) { |
- if (pData[iIndex] == '.') { |
- break; |
- } |
- ++iIndex; |
- } |
- iLength = iIndex; |
- iIndex = 0; |
- int32_t iCount = 0; |
- while (iIndex < iLength) { |
- iCount = (iLength - iIndex) % 12; |
- if (!iCount && iLength - iIndex > 0) { |
- iCount = 12; |
- } |
- TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf); |
- iIndex += iCount; |
- if (iIndex < iLength) { |
- strBuf << " Trillion "; |
- } |
- } |
- strBuf << " Dollars"; |
- } break; |
- case 2: { |
- int32_t iIndex = 0; |
- while (iIndex < iLength) { |
- if (pData[iIndex] == '.') { |
- break; |
- } |
- ++iIndex; |
- } |
- int32_t iInteger = iIndex; |
- iIndex = 0; |
- int32_t iCount = 0; |
- while (iIndex < iInteger) { |
- iCount = (iInteger - iIndex) % 12; |
- if (!iCount && iLength - iIndex > 0) { |
- iCount = 12; |
- } |
- TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf); |
- iIndex += iCount; |
- if (iIndex < iInteger) { |
- strBuf << " Trillion "; |
- } |
- } |
- strBuf << " Dollars"; |
- if (iInteger < iLength) { |
- strBuf << " And "; |
- iIndex = iInteger + 1; |
- while (iIndex < iLength) { |
- int32_t iSize = (iLength - iIndex) % 12; |
- if (!iSize && iLength - iIndex > 0) |
- iSize = 12; |
- TrillionUS(CFX_ByteStringC(pData + iIndex, iSize), strBuf); |
- iIndex += iSize; |
- if (iIndex < iLength) { |
- strBuf << " Trillion "; |
- } |
- } |
- strBuf << " Cents"; |
- } |
- } break; |
- default: |
+ if (iStyle < 0 || iStyle > 2) { |
+ return; |
+ } |
+ |
+ int32_t iIndex = 0; |
+ while (iIndex < iLength) { |
+ if (pData[iIndex] == '.') |
break; |
+ ++iIndex; |
+ } |
+ int32_t iInteger = iIndex; |
+ iIndex = 0; |
+ while (iIndex < iInteger) { |
+ int32_t iCount = (iInteger - iIndex) % 12; |
+ if (!iCount && iInteger - iIndex > 0) |
+ iCount = 12; |
+ |
+ TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf); |
+ iIndex += iCount; |
+ if (iIndex < iInteger) |
+ strBuf << " Trillion "; |
+ } |
+ |
+ if (iStyle > 0) |
+ strBuf << " Dollars"; |
+ |
+ if (iStyle > 1 && iInteger < iLength) { |
+ strBuf << " And "; |
+ iIndex = iInteger + 1; |
+ while (iIndex < iLength) { |
+ int32_t iCount = (iLength - iIndex) % 12; |
+ if (!iCount && iLength - iIndex > 0) |
+ iCount = 12; |
+ |
+ TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf); |
+ iIndex += iCount; |
+ if (iIndex < iLength) |
+ strBuf << " Trillion "; |
+ } |
+ strBuf << " Cents"; |
} |
} |
@@ -4968,32 +4919,33 @@ void CXFA_FM2JSContext::Get(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); |
- if (args.GetLength() == 1) { |
- CXFA_Document* pDoc = pContext->GetDocument(); |
- if (!pDoc) { |
- return; |
- } |
- IXFA_AppProvider* pAppProvider = |
- pDoc->GetParser()->GetNotify()->GetAppProvider(); |
- if (!pAppProvider) { |
- return; |
- } |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- CFX_ByteString urlString; |
- ValueToUTF8String(argOne.get(), urlString); |
- IFX_FileRead* pFile = pAppProvider->DownloadURL( |
- CFX_WideString::FromUTF8(urlString.AsStringC())); |
- if (pFile) { |
- int32_t size = pFile->GetSize(); |
- uint8_t* pData = FX_Alloc(uint8_t, size); |
- pFile->ReadBlock(pData, size); |
- args.GetReturnValue()->SetString(CFX_ByteStringC(pData, size)); |
- FX_Free(pData); |
- pFile->Release(); |
- } |
- } else { |
+ if (args.GetLength() != 1) { |
pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Get"); |
+ return; |
} |
+ |
+ CXFA_Document* pDoc = pContext->GetDocument(); |
+ if (!pDoc) |
+ return; |
+ |
+ IXFA_AppProvider* pAppProvider = |
+ pDoc->GetParser()->GetNotify()->GetAppProvider(); |
+ if (!pAppProvider) |
+ return; |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ CFX_ByteString urlString; |
+ ValueToUTF8String(argOne.get(), urlString); |
+ IFX_FileRead* pFile = pAppProvider->DownloadURL( |
+ CFX_WideString::FromUTF8(urlString.AsStringC())); |
+ if (!pFile) |
+ return; |
+ |
+ int32_t size = pFile->GetSize(); |
+ std::unique_ptr<uint8_t> pData(FX_Alloc(uint8_t, size)); |
+ pFile->ReadBlock(pData.get(), size); |
+ args.GetReturnValue()->SetString(CFX_ByteStringC(pData.get(), size)); |
+ pFile->Release(); |
} |
// static |
@@ -5002,54 +4954,60 @@ void CXFA_FM2JSContext::Post(CFXJSE_Value* pThis, |
CFXJSE_Arguments& args) { |
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); |
int32_t argc = args.GetLength(); |
- if ((argc >= 2) && (argc <= 5)) { |
- CXFA_Document* pDoc = pContext->GetDocument(); |
- if (!pDoc) { |
- return; |
- } |
- IXFA_AppProvider* pAppProvider = |
- pDoc->GetParser()->GetNotify()->GetAppProvider(); |
- if (!pAppProvider) { |
- return; |
- } |
- CFX_ByteString bsURL; |
- CFX_ByteString bsData; |
- CFX_ByteString bsContentType; |
- CFX_ByteString bsEncode; |
- CFX_ByteString bsHeader; |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- ValueToUTF8String(argOne.get(), bsURL); |
- std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
- ValueToUTF8String(argTwo.get(), bsData); |
- if (argc > 2) { |
- std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); |
- ValueToUTF8String(argThree.get(), bsContentType); |
- } |
- if (argc > 3) { |
- std::unique_ptr<CFXJSE_Value> argFour = GetSimpleValue(pThis, args, 3); |
- ValueToUTF8String(argFour.get(), bsEncode); |
- } |
- if (argc > 4) { |
- std::unique_ptr<CFXJSE_Value> argFive = GetSimpleValue(pThis, args, 4); |
- ValueToUTF8String(argFive.get(), bsHeader); |
- } |
- CFX_WideString decodedResponse; |
- FX_BOOL bFlags = pAppProvider->PostRequestURL( |
- CFX_WideString::FromUTF8(bsURL.AsStringC()), |
- CFX_WideString::FromUTF8(bsData.AsStringC()), |
- CFX_WideString::FromUTF8(bsContentType.AsStringC()), |
- CFX_WideString::FromUTF8(bsEncode.AsStringC()), |
- CFX_WideString::FromUTF8(bsHeader.AsStringC()), decodedResponse); |
- if (bFlags) { |
- args.GetReturnValue()->SetString( |
- FX_UTF8Encode(decodedResponse.c_str(), decodedResponse.GetLength()) |
- .AsStringC()); |
- } else { |
- pContext->ThrowException(XFA_IDS_SERVER_DENY); |
- } |
- } else { |
+ if (argc < 2 || argc > 5) { |
pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Post"); |
+ return; |
+ } |
+ |
+ CXFA_Document* pDoc = pContext->GetDocument(); |
+ if (!pDoc) |
+ return; |
+ |
+ IXFA_AppProvider* pAppProvider = |
+ pDoc->GetParser()->GetNotify()->GetAppProvider(); |
+ if (!pAppProvider) |
+ return; |
+ |
+ CFX_ByteString bsURL; |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ ValueToUTF8String(argOne.get(), bsURL); |
+ |
+ CFX_ByteString bsData; |
+ std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
+ ValueToUTF8String(argTwo.get(), bsData); |
+ |
+ CFX_ByteString bsContentType; |
+ if (argc > 2) { |
+ std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); |
+ ValueToUTF8String(argThree.get(), bsContentType); |
+ } |
+ |
+ CFX_ByteString bsEncode; |
+ if (argc > 3) { |
+ std::unique_ptr<CFXJSE_Value> argFour = GetSimpleValue(pThis, args, 3); |
+ ValueToUTF8String(argFour.get(), bsEncode); |
+ } |
+ |
+ CFX_ByteString bsHeader; |
+ if (argc > 4) { |
+ std::unique_ptr<CFXJSE_Value> argFive = GetSimpleValue(pThis, args, 4); |
+ ValueToUTF8String(argFive.get(), bsHeader); |
+ } |
+ |
+ CFX_WideString decodedResponse; |
+ if (!pAppProvider->PostRequestURL( |
+ CFX_WideString::FromUTF8(bsURL.AsStringC()), |
+ CFX_WideString::FromUTF8(bsData.AsStringC()), |
+ CFX_WideString::FromUTF8(bsContentType.AsStringC()), |
+ CFX_WideString::FromUTF8(bsEncode.AsStringC()), |
+ CFX_WideString::FromUTF8(bsHeader.AsStringC()), decodedResponse)) { |
+ pContext->ThrowException(XFA_IDS_SERVER_DENY); |
+ return; |
} |
+ |
+ args.GetReturnValue()->SetString( |
+ FX_UTF8Encode(decodedResponse.c_str(), decodedResponse.GetLength()) |
+ .AsStringC()); |
} |
// static |
@@ -5058,39 +5016,43 @@ void CXFA_FM2JSContext::Put(CFXJSE_Value* pThis, |
CFXJSE_Arguments& args) { |
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); |
int32_t argc = args.GetLength(); |
- if ((argc == 2) || (argc == 3)) { |
- CXFA_Document* pDoc = pContext->GetDocument(); |
- if (!pDoc) { |
- return; |
- } |
- IXFA_AppProvider* pAppProvider = |
- pDoc->GetParser()->GetNotify()->GetAppProvider(); |
- if (!pAppProvider) { |
- return; |
- } |
- CFX_ByteString bsURL; |
- CFX_ByteString bsData; |
- CFX_ByteString bsEncode; |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- ValueToUTF8String(argOne.get(), bsURL); |
- std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
- ValueToUTF8String(argTwo.get(), bsData); |
- if (argc > 2) { |
- std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); |
- ValueToUTF8String(argThree.get(), bsEncode); |
- } |
- FX_BOOL bFlags = pAppProvider->PutRequestURL( |
- CFX_WideString::FromUTF8(bsURL.AsStringC()), |
- CFX_WideString::FromUTF8(bsData.AsStringC()), |
- CFX_WideString::FromUTF8(bsEncode.AsStringC())); |
- if (bFlags) { |
- args.GetReturnValue()->SetString(""); |
- } else { |
- pContext->ThrowException(XFA_IDS_SERVER_DENY); |
- } |
- } else { |
+ if (argc < 2 || argc > 3) { |
pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Put"); |
+ return; |
+ } |
+ |
+ CXFA_Document* pDoc = pContext->GetDocument(); |
+ if (!pDoc) |
+ return; |
+ |
+ IXFA_AppProvider* pAppProvider = |
+ pDoc->GetParser()->GetNotify()->GetAppProvider(); |
+ if (!pAppProvider) |
+ return; |
+ |
+ CFX_ByteString bsURL; |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ ValueToUTF8String(argOne.get(), bsURL); |
+ |
+ CFX_ByteString bsData; |
+ std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1); |
+ ValueToUTF8String(argTwo.get(), bsData); |
+ |
+ CFX_ByteString bsEncode; |
+ if (argc > 2) { |
+ std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2); |
+ ValueToUTF8String(argThree.get(), bsEncode); |
} |
+ |
+ if (!pAppProvider->PutRequestURL( |
+ CFX_WideString::FromUTF8(bsURL.AsStringC()), |
+ CFX_WideString::FromUTF8(bsData.AsStringC()), |
+ CFX_WideString::FromUTF8(bsEncode.AsStringC()))) { |
+ pContext->ThrowException(XFA_IDS_SERVER_DENY); |
+ return; |
+ } |
+ |
+ args.GetReturnValue()->SetString(""); |
} |
// static |
@@ -5098,334 +5060,375 @@ void CXFA_FM2JSContext::assign_value_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); |
- v8::Isolate* pIsolate = pContext->GetScriptRuntime(); |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> lValue = args.GetValue(0); |
- std::unique_ptr<CFXJSE_Value> rValue = GetSimpleValue(pThis, args, 1); |
- FX_BOOL bSetStatus = TRUE; |
- if (lValue->IsArray()) { |
- std::unique_ptr<CFXJSE_Value> leftLengthValue(new CFXJSE_Value(pIsolate)); |
- lValue->GetObjectProperty("length", leftLengthValue.get()); |
- int32_t iLeftLength = leftLengthValue->ToInteger(); |
- std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); |
- std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); |
- lValue->GetObjectPropertyByIdx(1, propertyValue.get()); |
- if (propertyValue->IsNull()) { |
- for (int32_t i = 2; i < iLeftLength; i++) { |
- lValue->GetObjectPropertyByIdx(i, jsObjectValue.get()); |
- bSetStatus = SetObjectDefaultValue(jsObjectValue.get(), rValue.get()); |
- if (!bSetStatus) { |
- pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE); |
- break; |
- } |
- } |
- } else { |
- CFX_ByteString propertyStr; |
- propertyValue->ToString(propertyStr); |
- for (int32_t i = 2; i < iLeftLength; i++) { |
- lValue->GetObjectPropertyByIdx(i, jsObjectValue.get()); |
- jsObjectValue->SetObjectProperty(propertyStr.AsStringC(), |
- rValue.get()); |
+ if (args.GetLength() != 2) { |
+ pContext->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> lValue = args.GetValue(0); |
+ std::unique_ptr<CFXJSE_Value> rValue = GetSimpleValue(pThis, args, 1); |
+ if (lValue->IsArray()) { |
+ v8::Isolate* pIsolate = pContext->GetScriptRuntime(); |
+ std::unique_ptr<CFXJSE_Value> leftLengthValue(new CFXJSE_Value(pIsolate)); |
+ lValue->GetObjectProperty("length", leftLengthValue.get()); |
+ int32_t iLeftLength = leftLengthValue->ToInteger(); |
+ std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); |
+ std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); |
+ lValue->GetObjectPropertyByIdx(1, propertyValue.get()); |
+ if (propertyValue->IsNull()) { |
+ for (int32_t i = 2; i < iLeftLength; i++) { |
+ lValue->GetObjectPropertyByIdx(i, jsObjectValue.get()); |
+ if (!SetObjectDefaultValue(jsObjectValue.get(), rValue.get())) { |
+ pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE); |
+ return; |
} |
} |
- } else if (lValue->IsObject()) { |
- bSetStatus = SetObjectDefaultValue(lValue.get(), rValue.get()); |
- if (!bSetStatus) { |
- pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE); |
+ } else { |
+ CFX_ByteString propertyStr; |
+ propertyValue->ToString(propertyStr); |
+ for (int32_t i = 2; i < iLeftLength; i++) { |
+ lValue->GetObjectPropertyByIdx(i, jsObjectValue.get()); |
+ jsObjectValue->SetObjectProperty(propertyStr.AsStringC(), rValue.get()); |
} |
} |
- args.GetReturnValue()->Assign(rValue.get()); |
- } else { |
- pContext->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ } else if (lValue->IsObject()) { |
+ if (!SetObjectDefaultValue(lValue.get(), rValue.get())) { |
+ pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE); |
+ return; |
+ } |
} |
+ args.GetReturnValue()->Assign(rValue.get()); |
} |
// static |
void CXFA_FM2JSContext::logical_or_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
- if (argFirst->IsNull() && argSecond->IsNull()) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- FX_FLOAT first = ValueToFloat(pThis, argFirst.get()); |
- FX_FLOAT second = ValueToFloat(pThis, argSecond.get()); |
- args.GetReturnValue()->SetInteger((first || second) ? 1 : 0); |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
+ if (argFirst->IsNull() && argSecond->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
+ |
+ FX_FLOAT first = ValueToFloat(pThis, argFirst.get()); |
+ FX_FLOAT second = ValueToFloat(pThis, argSecond.get()); |
+ args.GetReturnValue()->SetInteger((first || second) ? 1 : 0); |
} |
// static |
void CXFA_FM2JSContext::logical_and_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
- if (argFirst->IsNull() && argSecond->IsNull()) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- FX_FLOAT first = ValueToFloat(pThis, argFirst.get()); |
- FX_FLOAT second = ValueToFloat(pThis, argSecond.get()); |
- args.GetReturnValue()->SetInteger((first && second) ? 1 : 0); |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
} |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
+ if (argFirst->IsNull() && argSecond->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
+ } |
+ |
+ FX_FLOAT first = ValueToFloat(pThis, argFirst.get()); |
+ FX_FLOAT second = ValueToFloat(pThis, argSecond.get()); |
+ args.GetReturnValue()->SetInteger((first && second) ? 1 : 0); |
} |
// static |
void CXFA_FM2JSContext::equality_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- if (fm_ref_equal(pThis, args)) { |
- args.GetReturnValue()->SetInteger(1); |
- } else { |
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
- if (argFirst->IsNull() || argSecond->IsNull()) { |
- args.GetReturnValue()->SetInteger( |
- (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0); |
- } else if (argFirst->IsString() && argSecond->IsString()) { |
- CFX_ByteString firstOutput; |
- CFX_ByteString secondOutput; |
- argFirst->ToString(firstOutput); |
- argSecond->ToString(secondOutput); |
- args.GetReturnValue()->SetInteger(firstOutput == secondOutput); |
- } else { |
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
- args.GetReturnValue()->SetInteger((first == second) ? 1 : 0); |
- } |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ if (fm_ref_equal(pThis, args)) { |
+ args.GetReturnValue()->SetInteger(1); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
+ if (argFirst->IsNull() || argSecond->IsNull()) { |
+ args.GetReturnValue()->SetInteger( |
+ (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0); |
+ return; |
+ } |
+ |
+ if (argFirst->IsString() && argSecond->IsString()) { |
+ CFX_ByteString firstOutput; |
+ CFX_ByteString secondOutput; |
+ argFirst->ToString(firstOutput); |
+ argSecond->ToString(secondOutput); |
+ args.GetReturnValue()->SetInteger(firstOutput == secondOutput); |
+ return; |
} |
+ |
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
+ args.GetReturnValue()->SetInteger((first == second) ? 1 : 0); |
} |
// static |
void CXFA_FM2JSContext::notequality_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- if (fm_ref_equal(pThis, args)) { |
- args.GetReturnValue()->SetInteger(0); |
- } else { |
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
- if (argFirst->IsNull() || argSecond->IsNull()) { |
- args.GetReturnValue()->SetInteger( |
- (argFirst->IsNull() && argSecond->IsNull()) ? 0 : 1); |
- } else if (argFirst->IsString() && argSecond->IsString()) { |
- CFX_ByteString firstOutput; |
- CFX_ByteString secondOutput; |
- argFirst->ToString(firstOutput); |
- argSecond->ToString(secondOutput); |
- args.GetReturnValue()->SetInteger(firstOutput != secondOutput); |
- } else { |
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
- args.GetReturnValue()->SetInteger(first != second); |
- } |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ if (fm_ref_equal(pThis, args)) { |
+ args.GetReturnValue()->SetInteger(0); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
+ if (argFirst->IsNull() || argSecond->IsNull()) { |
+ args.GetReturnValue()->SetInteger( |
+ (argFirst->IsNull() && argSecond->IsNull()) ? 0 : 1); |
+ return; |
+ } |
+ |
+ if (argFirst->IsString() && argSecond->IsString()) { |
+ CFX_ByteString firstOutput; |
+ CFX_ByteString secondOutput; |
+ argFirst->ToString(firstOutput); |
+ argSecond->ToString(secondOutput); |
+ args.GetReturnValue()->SetInteger(firstOutput != secondOutput); |
+ return; |
} |
+ |
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
+ args.GetReturnValue()->SetInteger(first != second); |
} |
// static |
FX_BOOL CXFA_FM2JSContext::fm_ref_equal(CFXJSE_Value* pThis, |
CFXJSE_Arguments& args) { |
- FX_BOOL bRet = FALSE; |
- v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); |
std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0); |
std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1); |
- if (argFirst->IsArray() && argSecond->IsArray()) { |
- std::unique_ptr<CFXJSE_Value> firstFlagValue(new CFXJSE_Value(pIsolate)); |
- std::unique_ptr<CFXJSE_Value> secondFlagValue(new CFXJSE_Value(pIsolate)); |
- argFirst->GetObjectPropertyByIdx(0, firstFlagValue.get()); |
- argSecond->GetObjectPropertyByIdx(0, secondFlagValue.get()); |
- if (firstFlagValue->ToInteger() == 3 && secondFlagValue->ToInteger() == 3) { |
- std::unique_ptr<CFXJSE_Value> firstJSObject(new CFXJSE_Value(pIsolate)); |
- std::unique_ptr<CFXJSE_Value> secondJSObject(new CFXJSE_Value(pIsolate)); |
- argFirst->GetObjectPropertyByIdx(2, firstJSObject.get()); |
- argSecond->GetObjectPropertyByIdx(2, secondJSObject.get()); |
- if (!firstJSObject->IsNull() && !secondJSObject->IsNull()) { |
- bRet = (firstJSObject->ToHostObject(nullptr) == |
- secondJSObject->ToHostObject(nullptr)); |
- } |
- } |
- } |
- return bRet; |
+ if (!argFirst->IsArray() || !argSecond->IsArray()) |
+ return FALSE; |
+ |
+ v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime(); |
+ std::unique_ptr<CFXJSE_Value> firstFlagValue(new CFXJSE_Value(pIsolate)); |
+ std::unique_ptr<CFXJSE_Value> secondFlagValue(new CFXJSE_Value(pIsolate)); |
+ argFirst->GetObjectPropertyByIdx(0, firstFlagValue.get()); |
+ argSecond->GetObjectPropertyByIdx(0, secondFlagValue.get()); |
+ if (firstFlagValue->ToInteger() != 3 || secondFlagValue->ToInteger() != 3) |
+ return FALSE; |
+ |
+ std::unique_ptr<CFXJSE_Value> firstJSObject(new CFXJSE_Value(pIsolate)); |
+ std::unique_ptr<CFXJSE_Value> secondJSObject(new CFXJSE_Value(pIsolate)); |
+ argFirst->GetObjectPropertyByIdx(2, firstJSObject.get()); |
+ argSecond->GetObjectPropertyByIdx(2, secondJSObject.get()); |
+ if (firstJSObject->IsNull() || secondJSObject->IsNull()) |
+ return FALSE; |
+ |
+ return (firstJSObject->ToHostObject(nullptr) == |
+ secondJSObject->ToHostObject(nullptr)); |
} |
// static |
void CXFA_FM2JSContext::less_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
- if (argFirst->IsNull() || argSecond->IsNull()) { |
- args.GetReturnValue()->SetInteger(0); |
- } else if (argFirst->IsString() && argSecond->IsString()) { |
- CFX_ByteString firstOutput; |
- CFX_ByteString secondOutput; |
- argFirst->ToString(firstOutput); |
- argSecond->ToString(secondOutput); |
- args.GetReturnValue()->SetInteger( |
- firstOutput.Compare(secondOutput.AsStringC()) == -1); |
- } else { |
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
- args.GetReturnValue()->SetInteger((first < second) ? 1 : 0); |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
+ if (argFirst->IsNull() || argSecond->IsNull()) { |
+ args.GetReturnValue()->SetInteger(0); |
+ return; |
+ } |
+ |
+ if (argFirst->IsString() && argSecond->IsString()) { |
+ CFX_ByteString firstOutput; |
+ CFX_ByteString secondOutput; |
+ argFirst->ToString(firstOutput); |
+ argSecond->ToString(secondOutput); |
+ args.GetReturnValue()->SetInteger( |
+ firstOutput.Compare(secondOutput.AsStringC()) == -1); |
+ return; |
} |
+ |
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
+ args.GetReturnValue()->SetInteger((first < second) ? 1 : 0); |
} |
// static |
void CXFA_FM2JSContext::lessequal_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
- if (argFirst->IsNull() || argSecond->IsNull()) { |
- args.GetReturnValue()->SetInteger( |
- (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0); |
- } else if (argFirst->IsString() && argSecond->IsString()) { |
- CFX_ByteString firstOutput; |
- CFX_ByteString secondOutput; |
- argFirst->ToString(firstOutput); |
- argSecond->ToString(secondOutput); |
- args.GetReturnValue()->SetInteger( |
- firstOutput.Compare(secondOutput.AsStringC()) != 1); |
- } else { |
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
- args.GetReturnValue()->SetInteger((first <= second) ? 1 : 0); |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
+ if (argFirst->IsNull() || argSecond->IsNull()) { |
+ args.GetReturnValue()->SetInteger( |
+ (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0); |
+ return; |
+ } |
+ |
+ if (argFirst->IsString() && argSecond->IsString()) { |
+ CFX_ByteString firstOutput; |
+ CFX_ByteString secondOutput; |
+ argFirst->ToString(firstOutput); |
+ argSecond->ToString(secondOutput); |
+ args.GetReturnValue()->SetInteger( |
+ firstOutput.Compare(secondOutput.AsStringC()) != 1); |
+ return; |
} |
+ |
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
+ args.GetReturnValue()->SetInteger((first <= second) ? 1 : 0); |
} |
// static |
void CXFA_FM2JSContext::greater_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
- if (argFirst->IsNull() || argSecond->IsNull()) { |
- args.GetReturnValue()->SetInteger(0); |
- } else if (argFirst->IsString() && argSecond->IsString()) { |
- CFX_ByteString firstOutput; |
- CFX_ByteString secondOutput; |
- argFirst->ToString(firstOutput); |
- argSecond->ToString(secondOutput); |
- args.GetReturnValue()->SetInteger( |
- firstOutput.Compare(secondOutput.AsStringC()) == 1); |
- } else { |
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
- args.GetReturnValue()->SetInteger((first > second) ? 1 : 0); |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
+ if (argFirst->IsNull() || argSecond->IsNull()) { |
+ args.GetReturnValue()->SetInteger(0); |
+ return; |
} |
+ |
+ if (argFirst->IsString() && argSecond->IsString()) { |
+ CFX_ByteString firstOutput; |
+ CFX_ByteString secondOutput; |
+ argFirst->ToString(firstOutput); |
+ argSecond->ToString(secondOutput); |
+ args.GetReturnValue()->SetInteger( |
+ firstOutput.Compare(secondOutput.AsStringC()) == 1); |
+ return; |
+ } |
+ |
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
+ args.GetReturnValue()->SetInteger((first > second) ? 1 : 0); |
} |
// static |
void CXFA_FM2JSContext::greaterequal_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
- if (argFirst->IsNull() || argSecond->IsNull()) { |
- args.GetReturnValue()->SetInteger( |
- (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0); |
- } else if (argFirst->IsString() && argSecond->IsString()) { |
- CFX_ByteString firstOutput; |
- CFX_ByteString secondOutput; |
- argFirst->ToString(firstOutput); |
- argSecond->ToString(secondOutput); |
- args.GetReturnValue()->SetInteger( |
- firstOutput.Compare(secondOutput.AsStringC()) != -1); |
- } else { |
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
- args.GetReturnValue()->SetInteger((first >= second) ? 1 : 0); |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
+ if (argFirst->IsNull() || argSecond->IsNull()) { |
+ args.GetReturnValue()->SetInteger( |
+ (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0); |
+ return; |
} |
+ |
+ if (argFirst->IsString() && argSecond->IsString()) { |
+ CFX_ByteString firstOutput; |
+ CFX_ByteString secondOutput; |
+ argFirst->ToString(firstOutput); |
+ argSecond->ToString(secondOutput); |
+ args.GetReturnValue()->SetInteger( |
+ firstOutput.Compare(secondOutput.AsStringC()) != -1); |
+ return; |
+ } |
+ |
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
+ args.GetReturnValue()->SetInteger((first >= second) ? 1 : 0); |
} |
// static |
void CXFA_FM2JSContext::plus_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0); |
- std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1); |
- if (ValueIsNull(pThis, argFirst.get()) && |
- ValueIsNull(pThis, argSecond.get())) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
- args.GetReturnValue()->SetDouble(first + second); |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1); |
+ if (ValueIsNull(pThis, argFirst.get()) && |
+ ValueIsNull(pThis, argSecond.get())) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
+ |
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
+ args.GetReturnValue()->SetDouble(first + second); |
} |
// static |
void CXFA_FM2JSContext::minus_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
- if (argFirst->IsNull() && argSecond->IsNull()) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
- args.GetReturnValue()->SetDouble(first - second); |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
} |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
+ if (argFirst->IsNull() && argSecond->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
+ } |
+ |
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
+ args.GetReturnValue()->SetDouble(first - second); |
} |
// static |
void CXFA_FM2JSContext::multiple_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
- if (argFirst->IsNull() && argSecond->IsNull()) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
- args.GetReturnValue()->SetDouble(first * second); |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
+ if (argFirst->IsNull() && argSecond->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
+ |
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
+ args.GetReturnValue()->SetDouble(first * second); |
} |
// static |
@@ -5433,74 +5436,79 @@ void CXFA_FM2JSContext::divide_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr); |
- if (args.GetLength() == 2) { |
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
- if (argFirst->IsNull() && argSecond->IsNull()) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
- if (second == 0.0) { |
- pContext->ThrowException(XFA_IDS_DIVIDE_ZERO); |
- } else { |
- args.GetReturnValue()->SetDouble(first / second); |
- } |
- } |
- } else { |
+ if (args.GetLength() != 2) { |
pContext->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0); |
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1); |
+ if (argFirst->IsNull() && argSecond->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
+ } |
+ |
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get()); |
+ if (second == 0.0) { |
+ pContext->ThrowException(XFA_IDS_DIVIDE_ZERO); |
+ return; |
} |
+ |
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get()); |
+ args.GetReturnValue()->SetDouble(first / second); |
} |
// static |
void CXFA_FM2JSContext::positive_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 1) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- if (argOne->IsNull()) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- args.GetReturnValue()->SetDouble(0.0 + |
- ValueToDouble(pThis, argOne.get())); |
- } |
- } else { |
+ if (args.GetLength() != 1) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
} |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ if (argOne->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
+ } |
+ args.GetReturnValue()->SetDouble(0.0 + ValueToDouble(pThis, argOne.get())); |
} |
// static |
void CXFA_FM2JSContext::negative_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 1) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- if (argOne->IsNull()) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- args.GetReturnValue()->SetDouble(0.0 - |
- ValueToDouble(pThis, argOne.get())); |
- } |
- } else { |
+ if (args.GetLength() != 1) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
+ } |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ if (argOne->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
} |
+ args.GetReturnValue()->SetDouble(0.0 - ValueToDouble(pThis, argOne.get())); |
} |
// static |
void CXFA_FM2JSContext::logical_not_operator(CFXJSE_Value* pThis, |
const CFX_ByteStringC& szFuncName, |
CFXJSE_Arguments& args) { |
- if (args.GetLength() == 1) { |
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
- if (argOne->IsNull()) { |
- args.GetReturnValue()->SetNull(); |
- } else { |
- FX_DOUBLE first = ValueToDouble(pThis, argOne.get()); |
- args.GetReturnValue()->SetInteger((first == 0.0) ? 1 : 0); |
- } |
- } else { |
+ if (args.GetLength() != 1) { |
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR); |
+ return; |
} |
+ |
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0); |
+ if (argOne->IsNull()) { |
+ args.GetReturnValue()->SetNull(); |
+ return; |
+ } |
+ |
+ FX_DOUBLE first = ValueToDouble(pThis, argOne.get()); |
+ args.GetReturnValue()->SetInteger((first == 0.0) ? 1 : 0); |
} |
// static |