diff options
-rw-r--r-- | xfa/fgas/crt/cfgas_formatstring.h | 3 | ||||
-rw-r--r-- | xfa/fgas/crt/cfgas_formatstring_unittest.cpp | 1 | ||||
-rw-r--r-- | xfa/fgas/layout/cfx_break.cpp | 22 | ||||
-rw-r--r-- | xfa/fgas/layout/cfx_break.h | 41 | ||||
-rw-r--r-- | xfa/fgas/layout/cfx_rtfbreak.cpp | 2 | ||||
-rw-r--r-- | xfa/fgas/layout/cfx_txtbreak.cpp | 2 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_localevalue.cpp | 30 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_localevalue.h | 15 |
8 files changed, 47 insertions, 69 deletions
diff --git a/xfa/fgas/crt/cfgas_formatstring.h b/xfa/fgas/crt/cfgas_formatstring.h index 2cc5d569cd..3cbe6ff65a 100644 --- a/xfa/fgas/crt/cfgas_formatstring.h +++ b/xfa/fgas/crt/cfgas_formatstring.h @@ -10,6 +10,7 @@ #include <vector> #include "core/fxcrt/locale_iface.h" +#include "core/fxcrt/unowned_ptr.h" #include "xfa/fxfa/parser/cxfa_localemgr.h" bool FX_DateFromCanonical(const WideString& wsDate, CFX_DateTime* datetime); @@ -67,7 +68,7 @@ class CFGAS_FormatString { WideString* wsDatePattern, WideString* wsTimePattern); - CXFA_LocaleMgr* m_pLocaleMgr; + UnownedPtr<CXFA_LocaleMgr> m_pLocaleMgr; }; #endif // XFA_FGAS_CRT_CFGAS_FORMATSTRING_H_ diff --git a/xfa/fgas/crt/cfgas_formatstring_unittest.cpp b/xfa/fgas/crt/cfgas_formatstring_unittest.cpp index 51c001090c..afbd00f068 100644 --- a/xfa/fgas/crt/cfgas_formatstring_unittest.cpp +++ b/xfa/fgas/crt/cfgas_formatstring_unittest.cpp @@ -44,6 +44,7 @@ class CFGAS_FormatStringTest : public testing::Test { // Note, this re-creates the fmt on each call. If you need to multiple // times store it locally. CFGAS_FormatString* fmt(const WideString& locale) { + fmt_.reset(); // Can't outlive |mgr_|. mgr_ = pdfium::MakeUnique<CXFA_LocaleMgr>(nullptr, locale); fmt_ = pdfium::MakeUnique<CFGAS_FormatString>(mgr_.get()); return fmt_.get(); diff --git a/xfa/fgas/layout/cfx_break.cpp b/xfa/fgas/layout/cfx_break.cpp index 889c043ec2..43ef9a3833 100644 --- a/xfa/fgas/layout/cfx_break.cpp +++ b/xfa/fgas/layout/cfx_break.cpp @@ -19,29 +19,11 @@ const int kMinimumTabWidth = 160000; } // namespace CFX_Break::CFX_Break(uint32_t dwLayoutStyles) - : m_eCharType(FX_CHARTYPE_Unknown), - m_bSingleLine(false), - m_bCombText(false), - m_dwIdentity(0), - m_dwLayoutStyles(dwLayoutStyles), - m_iLineStart(0), - m_iLineWidth(2000000), - m_wParagraphBreakChar(L'\n'), - m_iFontSize(240), - m_iTabWidth(720000), - m_iHorizontalScale(100), - m_iVerticalScale(100), - m_iTolerance(0), - m_iCharSpace(0), - m_iDefChar(0), - m_wDefChar(0xFEFF), - m_pFont(nullptr), - m_pCurLine(nullptr), - m_iReadyLineIndex(-1) { + : m_dwLayoutStyles(dwLayoutStyles) { m_pCurLine = &m_Line[0]; } -CFX_Break::~CFX_Break() {} +CFX_Break::~CFX_Break() = default; void CFX_Break::Reset() { m_eCharType = FX_CHARTYPE_Unknown; diff --git a/xfa/fgas/layout/cfx_break.h b/xfa/fgas/layout/cfx_break.h index cc985b7c59..88cef53df1 100644 --- a/xfa/fgas/layout/cfx_break.h +++ b/xfa/fgas/layout/cfx_break.h @@ -10,6 +10,7 @@ #include <stdint.h> #include "core/fxcrt/retain_ptr.h" +#include "core/fxcrt/unowned_ptr.h" #include "xfa/fgas/layout/cfx_breakline.h" class CFGAS_GEFont; @@ -57,7 +58,9 @@ class CFX_Break { void ClearBreakPieces(); CFX_Char* GetLastChar(int32_t index, bool bOmitChar, bool bRichText) const; - const CFX_BreakLine* GetCurrentLineForTesting() const { return m_pCurLine; } + const CFX_BreakLine* GetCurrentLineForTesting() const { + return m_pCurLine.Get(); + } protected: explicit CFX_Break(uint32_t dwLayoutStyles); @@ -66,25 +69,25 @@ class CFX_Break { bool HasLine() const { return m_iReadyLineIndex >= 0; } FX_CHARTYPE GetUnifiedCharType(FX_CHARTYPE dwType) const; - FX_CHARTYPE m_eCharType; - bool m_bSingleLine; - bool m_bCombText; - uint32_t m_dwIdentity; - uint32_t m_dwLayoutStyles; - int32_t m_iLineStart; - int32_t m_iLineWidth; - wchar_t m_wParagraphBreakChar; - int32_t m_iFontSize; - int32_t m_iTabWidth; - int32_t m_iHorizontalScale; - int32_t m_iVerticalScale; - int32_t m_iTolerance; - int32_t m_iCharSpace; - int32_t m_iDefChar; - wchar_t m_wDefChar; + FX_CHARTYPE m_eCharType = FX_CHARTYPE_Unknown; + bool m_bSingleLine = false; + bool m_bCombText = false; + uint32_t m_dwIdentity = 0; + uint32_t m_dwLayoutStyles = 0; + int32_t m_iLineStart = 0; + int32_t m_iLineWidth = 2000000; + wchar_t m_wParagraphBreakChar = L'\n'; + int32_t m_iFontSize = 240; + int32_t m_iTabWidth = 720000; + int32_t m_iHorizontalScale = 100; + int32_t m_iVerticalScale = 100; + int32_t m_iTolerance = 0; + int32_t m_iCharSpace = 0; + int32_t m_iDefChar = 0; + wchar_t m_wDefChar = 0xFEFF; RetainPtr<CFGAS_GEFont> m_pFont; - CFX_BreakLine* m_pCurLine; - int8_t m_iReadyLineIndex; + UnownedPtr<CFX_BreakLine> m_pCurLine; + int8_t m_iReadyLineIndex = -1; CFX_BreakLine m_Line[2]; private: diff --git a/xfa/fgas/layout/cfx_rtfbreak.cpp b/xfa/fgas/layout/cfx_rtfbreak.cpp index de8703fb2d..4dfe8989d1 100644 --- a/xfa/fgas/layout/cfx_rtfbreak.cpp +++ b/xfa/fgas/layout/cfx_rtfbreak.cpp @@ -355,7 +355,7 @@ bool CFX_RTFBreak::EndBreak_SplitLine(CFX_BreakLine* pNextLine, case FX_CHARTYPE_Space: break; default: - SplitTextLine(m_pCurLine, pNextLine, !m_bPagination && bAllChars); + SplitTextLine(m_pCurLine.Get(), pNextLine, !m_bPagination && bAllChars); bDone = true; break; } diff --git a/xfa/fgas/layout/cfx_txtbreak.cpp b/xfa/fgas/layout/cfx_txtbreak.cpp index 7633c4c91e..490426a221 100644 --- a/xfa/fgas/layout/cfx_txtbreak.cpp +++ b/xfa/fgas/layout/cfx_txtbreak.cpp @@ -293,7 +293,7 @@ bool CFX_TxtBreak::EndBreak_SplitLine(CFX_BreakLine* pNextLine, case FX_CHARTYPE_Space: break; default: - SplitTextLine(m_pCurLine, pNextLine, bAllChars); + SplitTextLine(m_pCurLine.Get(), pNextLine, bAllChars); bDone = true; break; } diff --git a/xfa/fxfa/parser/cxfa_localevalue.cpp b/xfa/fxfa/parser/cxfa_localevalue.cpp index 3a55045905..15082ae5e3 100644 --- a/xfa/fxfa/parser/cxfa_localevalue.cpp +++ b/xfa/fxfa/parser/cxfa_localevalue.cpp @@ -64,14 +64,7 @@ bool ValueSplitDateTime(const WideString& wsDateTime, } // namespace -CXFA_LocaleValue::CXFA_LocaleValue() - : m_pLocaleMgr(nullptr), m_dwType(XFA_VT_NULL), m_bValid(true) {} - -CXFA_LocaleValue::CXFA_LocaleValue(const CXFA_LocaleValue& value) - : m_pLocaleMgr(value.m_pLocaleMgr), - m_wsValue(value.m_wsValue), - m_dwType(value.m_dwType), - m_bValid(value.m_bValid) {} +CXFA_LocaleValue::CXFA_LocaleValue() = default; CXFA_LocaleValue::CXFA_LocaleValue(uint32_t dwType, CXFA_LocaleMgr* pLocaleMgr) : m_pLocaleMgr(pLocaleMgr), @@ -95,15 +88,12 @@ CXFA_LocaleValue::CXFA_LocaleValue(uint32_t dwType, m_dwType(dwType), m_bValid(ParsePatternValue(wsValue, wsFormat, pLocale)) {} -CXFA_LocaleValue& CXFA_LocaleValue::operator=(const CXFA_LocaleValue& value) { - m_wsValue = value.m_wsValue; - m_dwType = value.m_dwType; - m_bValid = value.m_bValid; - m_pLocaleMgr = value.m_pLocaleMgr; - return *this; -} +CXFA_LocaleValue::CXFA_LocaleValue(const CXFA_LocaleValue& that) = default; + +CXFA_LocaleValue& CXFA_LocaleValue::operator=(const CXFA_LocaleValue& that) = + default; -CXFA_LocaleValue::~CXFA_LocaleValue() {} +CXFA_LocaleValue::~CXFA_LocaleValue() = default; bool CXFA_LocaleValue::ValidateValue(const WideString& wsValue, const WideString& wsPattern, @@ -114,7 +104,7 @@ bool CXFA_LocaleValue::ValidateValue(const WideString& wsValue, if (pLocale) m_pLocaleMgr->SetDefLocale(pLocale); - auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr); + auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr.Get()); std::vector<WideString> wsPatterns; pFormat->SplitFormatString(wsPattern, &wsPatterns); @@ -310,7 +300,7 @@ bool CXFA_LocaleValue::FormatPatterns(WideString& wsResult, const WideString& wsFormat, LocaleIface* pLocale, XFA_VALUEPICTURE eValueType) const { - auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr); + auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr.Get()); std::vector<WideString> wsPatterns; pFormat->SplitFormatString(wsFormat, &wsPatterns); wsResult.clear(); @@ -332,7 +322,7 @@ bool CXFA_LocaleValue::FormatSinglePattern(WideString& wsResult, wsResult.clear(); bool bRet = false; - auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr); + auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr.Get()); FX_LOCALECATEGORY eCategory = ValueCategory(pFormat->GetCategory(wsFormat), m_dwType); switch (eCategory) { @@ -597,7 +587,7 @@ bool CXFA_LocaleValue::ParsePatternValue(const WideString& wsValue, if (pLocale) m_pLocaleMgr->SetDefLocale(pLocale); - auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr); + auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr.Get()); std::vector<WideString> wsPatterns; pFormat->SplitFormatString(wsPattern, &wsPatterns); bool bRet = false; diff --git a/xfa/fxfa/parser/cxfa_localevalue.h b/xfa/fxfa/parser/cxfa_localevalue.h index cedea10b10..c6f9c1ee98 100644 --- a/xfa/fxfa/parser/cxfa_localevalue.h +++ b/xfa/fxfa/parser/cxfa_localevalue.h @@ -9,6 +9,7 @@ #include "core/fxcrt/fx_string.h" #include "core/fxcrt/fx_system.h" +#include "core/fxcrt/unowned_ptr.h" #include "xfa/fxfa/parser/cxfa_node.h" class LocaleIface; @@ -28,7 +29,6 @@ class CXFA_LocaleMgr; class CXFA_LocaleValue { public: CXFA_LocaleValue(); - CXFA_LocaleValue(const CXFA_LocaleValue& value); CXFA_LocaleValue(uint32_t dwType, CXFA_LocaleMgr* pLocaleMgr); CXFA_LocaleValue(uint32_t dwType, const WideString& wsValue, @@ -38,8 +38,10 @@ class CXFA_LocaleValue { const WideString& wsFormat, LocaleIface* pLocale, CXFA_LocaleMgr* pLocaleMgr); + CXFA_LocaleValue(const CXFA_LocaleValue& that); ~CXFA_LocaleValue(); - CXFA_LocaleValue& operator=(const CXFA_LocaleValue& value); + + CXFA_LocaleValue& operator=(const CXFA_LocaleValue& that); bool ValidateValue(const WideString& wsValue, const WideString& wsPattern, @@ -56,6 +58,7 @@ class CXFA_LocaleValue { const WideString& wsFormat, LocaleIface* pLocale); + bool IsValid() const { return m_bValid; } WideString GetValue() const { return m_wsValue; } uint32_t GetType() const { return m_dwType; } double GetDoubleNum() const; @@ -63,8 +66,6 @@ class CXFA_LocaleValue { CFX_DateTime GetDate() const; CFX_DateTime GetTime() const; - bool IsValid() const { return m_bValid; } - private: bool FormatSinglePattern(WideString& wsResult, const WideString& wsFormat, @@ -81,10 +82,10 @@ class CXFA_LocaleValue { const WideString& wsPattern, LocaleIface* pLocale); - CXFA_LocaleMgr* m_pLocaleMgr; + UnownedPtr<CXFA_LocaleMgr> m_pLocaleMgr; WideString m_wsValue; - uint32_t m_dwType; - bool m_bValid; + uint32_t m_dwType = XFA_VT_NULL; + bool m_bValid = true; }; #endif // XFA_FXFA_PARSER_CXFA_LOCALEVALUE_H_ |