summaryrefslogtreecommitdiff
path: root/include/tools
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2019-06-24 15:02:55 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2019-06-25 13:20:51 +0200
commit31589bf0239679d73417902655045c48c4868016 (patch)
tree8f0c48fccaf90d64b79cdd7e49a7d320c61a9ff3 /include/tools
parent1c1f5ab3cb8f75ed386abd0b1a9a723555785766 (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.hxx22
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 );
};