diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-06-24 15:02:55 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-06-25 13:20:51 +0200 |
commit | 31589bf0239679d73417902655045c48c4868016 (patch) | |
tree | 8f0c48fccaf90d64b79cdd7e49a7d320c61a9ff3 /include/tools | |
parent | 1c1f5ab3cb8f75ed386abd0b1a9a723555785766 (diff) |
tdf#94677 Calc is slow opening large CSV, improve tools::Fraction
Flatten the tools::Fraction class.
Shaves 1s off a load time of 49s
Change-Id: I7cbee9892831a1e47704a283351fa97eda262343
Reviewed-on: https://gerrit.libreoffice.org/74639
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'include/tools')
-rw-r--r-- | include/tools/fract.hxx | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/include/tools/fract.hxx b/include/tools/fract.hxx index bba143b0530d..ed1f5f0be649 100644 --- a/include/tools/fract.hxx +++ b/include/tools/fract.hxx @@ -29,14 +29,15 @@ class SvStream; class SAL_WARN_UNUSED TOOLS_DLLPUBLIC Fraction final { - struct Impl; - - std::unique_ptr<Impl> mpImpl; + /// these two fields form a boost::rational, but I didn't want to put more boost headers into the global space + sal_Int32 mnNumerator = 0; + sal_Int32 mnDenominator = 1; + bool mbValid = true; public: - Fraction(); - Fraction( const Fraction & rFrac ); - Fraction( Fraction && rFrac ); + Fraction() = default; + Fraction( const Fraction & rFrac ) = default; + Fraction( Fraction && rFrac ) = default; explicit Fraction( double dVal ); Fraction( double nNum, double nDen ); Fraction( sal_Int64 nNum, sal_Int64 nDen ); @@ -45,9 +46,8 @@ public: T1 nNum, T2 nDen, typename std::enable_if<std::is_integral<T1>::value && std::is_integral<T2>::value, int>::type = 0) : Fraction( sal_Int64(nNum), sal_Int64(nDen) ) {} - ~Fraction(); - bool IsValid() const; + bool IsValid() const { return mbValid; } sal_Int32 GetNumerator() const; sal_Int32 GetDenominator() const; @@ -58,8 +58,8 @@ public: #endif explicit operator double() const; - Fraction& operator=( const Fraction& rfrFrac ); - Fraction& operator=( Fraction&& rfrFrac ); + Fraction& operator=( const Fraction& rfrFrac ) = default; + Fraction& operator=( Fraction&& rfrFrac ) = default; Fraction& operator=( double v ) { return operator=(Fraction(v)); } Fraction& operator+=( const Fraction& rfrFrac ); @@ -85,7 +85,7 @@ public: TOOLS_DLLPUBLIC friend bool operator<=( const Fraction& rVal1, const Fraction& rVal2 ); TOOLS_DLLPUBLIC friend bool operator>=( const Fraction& rVal1, const Fraction& rVal2 ); - TOOLS_DLLPUBLIC friend SvStream& ReadFraction( SvStream& rIStream, Fraction const & rFract ); + TOOLS_DLLPUBLIC friend SvStream& ReadFraction( SvStream& rIStream, Fraction & rFract ); TOOLS_DLLPUBLIC friend SvStream& WriteFraction( SvStream& rOStream, const Fraction& rFract ); }; |