From 0bf9aef229ae2c4f2f16ab753d6d2e9e6d718a44 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Thu, 16 Nov 2017 13:44:38 +0000 Subject: Convert TryInteger to return an optional This Cl changes CJX_Node::TryInteger to return a pdfium::Optional instead of a boolean with an out param. Change-Id: I4675e08d3b132041f7d87e4639efa1d555089dc2 Reviewed-on: https://pdfium-review.googlesource.com/18511 Reviewed-by: Tom Sepez Commit-Queue: dsinclair --- fxjs/cjx_node.cpp | 29 ++++++++++------------------- fxjs/cjx_node.h | 2 +- 2 files changed, 11 insertions(+), 20 deletions(-) (limited to 'fxjs') diff --git a/fxjs/cjx_node.cpp b/fxjs/cjx_node.cpp index a1b2f048dc..0e0f2d0274 100644 --- a/fxjs/cjx_node.cpp +++ b/fxjs/cjx_node.cpp @@ -294,11 +294,11 @@ bool CJX_Node::GetAttribute(XFA_Attribute eAttr, return true; } case XFA_AttributeType::Integer: { - int32_t iValue; - if (!TryInteger(pAttr->eName, iValue, bUseDefault)) + pdfium::Optional iValue = TryInteger(pAttr->eName, bUseDefault); + if (!iValue) return false; - wsValue.Format(L"%d", iValue); + wsValue.Format(L"%d", *iValue); return true; } case XFA_AttributeType::Measure: { @@ -3038,28 +3038,19 @@ bool CJX_Node::SetInteger(XFA_Attribute eAttr, int32_t iValue, bool bNotify) { } int32_t CJX_Node::GetInteger(XFA_Attribute eAttr) { - int32_t iValue; - return TryInteger(eAttr, iValue, true) ? iValue : 0; + return TryInteger(eAttr, true).value_or(0); } -bool CJX_Node::TryInteger(XFA_Attribute eAttr, - int32_t& iValue, - bool bUseDefault) { +pdfium::Optional CJX_Node::TryInteger(XFA_Attribute eAttr, + bool bUseDefault) { void* pKey = GetMapKey_Element(GetXFANode()->GetElementType(), eAttr); void* pValue = nullptr; - if (GetMapModuleValue(pKey, pValue)) { - iValue = (int32_t)(uintptr_t)pValue; - return true; - } + if (GetMapModuleValue(pKey, pValue)) + return {static_cast(reinterpret_cast(pValue))}; if (!bUseDefault) - return false; - - pdfium::Optional ret = GetXFANode()->GetDefaultInteger(eAttr); - if (!ret) - return false; + return {}; - iValue = *ret; - return true; + return GetXFANode()->GetDefaultInteger(eAttr); } bool CJX_Node::TryEnum(XFA_Attribute eAttr, diff --git a/fxjs/cjx_node.h b/fxjs/cjx_node.h index 2e9360d451..6c95673d25 100644 --- a/fxjs/cjx_node.h +++ b/fxjs/cjx_node.h @@ -69,7 +69,7 @@ class CJX_Node : public CJX_Object { bool bSyncData); WideString GetContent(bool bScriptModify); - bool TryInteger(XFA_Attribute eAttr, int32_t& iValue, bool bUseDefault); + pdfium::Optional TryInteger(XFA_Attribute eAttr, bool bUseDefault); bool SetInteger(XFA_Attribute eAttr, int32_t iValue, bool bNotify); int32_t GetInteger(XFA_Attribute eAttr); -- cgit v1.2.3