[Libreoffice-commits] core.git: 5 commits - connectivity/source include/tools sal/osl tools/source
Kohei Yoshida
kohei.yoshida at collabora.com
Mon Nov 17 13:39:14 PST 2014
connectivity/source/drivers/ado/Aolevariant.cxx | 1
include/tools/fract.hxx | 129 ++---------
sal/osl/w32/path_helper.h | 1
tools/source/generic/fract.cxx | 270 ++++++++++++++++++------
4 files changed, 230 insertions(+), 171 deletions(-)
New commits:
commit 5fffe5e5ece8ab130c9024bd1f04f1d08a8e01c2
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Mon Nov 17 16:19:28 2014 -0500
Build fix on Windows
Change-Id: I5c24856bfe48646bc0e9cd00f0849a5db12dfef2
diff --git a/connectivity/source/drivers/ado/Aolevariant.cxx b/connectivity/source/drivers/ado/Aolevariant.cxx
index bcb0c62..5a1962b 100644
--- a/connectivity/source/drivers/ado/Aolevariant.cxx
+++ b/connectivity/source/drivers/ado/Aolevariant.cxx
@@ -19,6 +19,7 @@
#include "ado/Aolevariant.hxx"
#include <connectivity/dbconversion.hxx>
+#include <osl/diagnose.h>
#include <com/sun/star/sdbc/SQLException.hpp>
#include <com/sun/star/util/Time.hpp>
#include <com/sun/star/util/Date.hpp>
commit 2cd24526e7e806b279b5d85f89a932393b65bd0a
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Mon Nov 17 10:01:31 2014 -0500
Build fix.
Change-Id: Ifa6775384993900980c93df88162143aa7ac0a08
diff --git a/sal/osl/w32/path_helper.h b/sal/osl/w32/path_helper.h
index 056a1ca..7da985b 100644
--- a/sal/osl/w32/path_helper.h
+++ b/sal/osl/w32/path_helper.h
@@ -23,6 +23,7 @@
#include <sal/types.h>
#include <rtl/ustring.h>
#include <osl/file.h>
+#include <osl/diagnose.h>
#ifdef __cplusplus
extern "C"
commit 2dff8ff29583526920e017fc86b5e2a51b4d6c30
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Mon Nov 17 09:37:03 2014 -0500
Build fix on Linux.
Change-Id: Iea96991a3bef08c17a8a0cbc347408dadc0061af
diff --git a/tools/source/generic/fract.cxx b/tools/source/generic/fract.cxx
index 7f7ab6f..2c48502 100644
--- a/tools/source/generic/fract.cxx
+++ b/tools/source/generic/fract.cxx
@@ -22,6 +22,7 @@
#include <tools/lineend.hxx>
#include <tools/stream.hxx>
#include <rtl/ustring.hxx>
+#include <osl/diagnose.h>
#include <limits.h>
#include <algorithm>
commit 6d7282fa8a2c6075ae838aaababe47a1e6513d74
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Mon Nov 17 08:35:01 2014 -0500
Apply pimpl to Fraction.
Change-Id: I60eb597a6374b807b2264af6d5841a42e9b1c0f3
diff --git a/include/tools/fract.hxx b/include/tools/fract.hxx
index 597876f..93663ac 100644
--- a/include/tools/fract.hxx
+++ b/include/tools/fract.hxx
@@ -19,8 +19,7 @@
#ifndef INCLUDED_TOOLS_FRACT_HXX
#define INCLUDED_TOOLS_FRACT_HXX
-#include <boost/rational.hpp>
-#include <sal/log.hxx>
+#include <sal/types.h>
#include <tools/toolsdllapi.h>
class SvStream;
@@ -29,17 +28,18 @@ class SvStream;
// calculations using sal_Int64 with checks for 'long' overflows.
class TOOLS_DLLPUBLIC SAL_WARN_UNUSED Fraction
{
-private:
- bool valid;
- boost::rational<sal_Int64> value;
+ struct Impl;
+
+ Impl* mpImpl;
bool HasOverflowValue();
public:
- Fraction() { valid = true; }
+ Fraction();
Fraction( const Fraction & rFrac );
Fraction( long nNum, long nDen=1 );
Fraction( double dVal );
+ ~Fraction();
bool IsValid() const;
diff --git a/tools/source/generic/fract.cxx b/tools/source/generic/fract.cxx
index e9e2f5f..7f7ab6f 100644
--- a/tools/source/generic/fract.cxx
+++ b/tools/source/generic/fract.cxx
@@ -17,16 +17,18 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#include <algorithm>
-#include <cmath>
-
-#include <limits.h>
-#include <rtl/ustring.hxx>
-#include <osl/diagnose.h>
-#include <tools/debug.hxx>
#include <tools/fract.hxx>
+#include <tools/debug.hxx>
#include <tools/lineend.hxx>
#include <tools/stream.hxx>
+#include <rtl/ustring.hxx>
+
+#include <limits.h>
+#include <algorithm>
+#include <cmath>
+
+#include <boost/rational.hpp>
+#include <boost/noncopyable.hpp>
template<typename T>
static boost::rational<T> rational_FromDouble(double dVal);
@@ -34,51 +36,79 @@ static boost::rational<T> rational_FromDouble(double dVal);
template<typename T>
static void rational_ReduceInaccurate(boost::rational<T>& rRational, unsigned nSignificantBits);
+struct Fraction::Impl : boost::noncopyable
+{
+ bool valid;
+ boost::rational<sal_Int64> value;
+};
+
+Fraction::Fraction() : mpImpl(new Impl)
+{
+ mpImpl->valid = true;
+}
+
+Fraction::Fraction( const Fraction& rFrac ) : mpImpl(new Impl)
+{
+ mpImpl->valid = rFrac.mpImpl->valid;
+ if (mpImpl->valid)
+ mpImpl->value.assign( rFrac.mpImpl->value.numerator(), rFrac.mpImpl->value.denominator() );
+}
+
// Initialized by setting nNum as nominator and nDen as denominator
// Negative values in the denominator are invalid and cause the
// inversion of both nominator and denominator signs
// in order to return the correct value.
-Fraction::Fraction( long nNum, long nDen )
+Fraction::Fraction( long nNum, long nDen ) : mpImpl(new Impl)
{
- if ( nDen == 0 ) {
- valid = false;
+ if ( nDen == 0 )
+ {
+ mpImpl->valid = false;
SAL_WARN( "tools.fraction", "'Fraction(" << nNum << ",0)' invalid fraction created" );
return;
}
- value.assign( nNum, nDen);
- valid = true;
+ mpImpl->value.assign( nNum, nDen);
+ mpImpl->valid = true;
}
-Fraction::Fraction( double dVal )
+Fraction::Fraction( double dVal ) : mpImpl(new Impl)
{
- try {
- value = rational_FromDouble<sal_Int64>( dVal );
+ try
+ {
+ mpImpl->value = rational_FromDouble<sal_Int64>( dVal );
if ( HasOverflowValue() )
throw boost::bad_rational();
- valid = true;
- } catch(const boost::bad_rational&) {
- valid = false;
+ mpImpl->valid = true;
+ }
+ catch (const boost::bad_rational&)
+ {
+ mpImpl->valid = false;
SAL_WARN( "tools.fraction", "'Fraction(" << dVal << ")' invalid fraction created" );
}
}
+Fraction::~Fraction()
+{
+ delete mpImpl;
+}
+
bool Fraction::HasOverflowValue()
{
//coverity[result_independent_of_operands]
- return value.numerator() < std::numeric_limits<long>::min() ||
- value.numerator() > std::numeric_limits<long>::max() ||
- value.denominator() < std::numeric_limits<long>::min() ||
- value.denominator() > std::numeric_limits<long>::max();
+ return mpImpl->value.numerator() < std::numeric_limits<long>::min() ||
+ mpImpl->value.numerator() > std::numeric_limits<long>::max() ||
+ mpImpl->value.denominator() < std::numeric_limits<long>::min() ||
+ mpImpl->value.denominator() > std::numeric_limits<long>::max();
}
Fraction::operator double() const
{
- if ( !valid ) {
+ if (!mpImpl->valid)
+ {
SAL_WARN( "tools.fraction", "'double()' on invalid fraction" );
return 0.0;
}
- return boost::rational_cast<double>(value);
+ return boost::rational_cast<double>(mpImpl->value);
}
// This methods first validates both values.
@@ -87,17 +117,20 @@ Fraction::operator double() const
// which cause the operation to be marked as invalid
Fraction& Fraction::operator += ( const Fraction& rVal )
{
- if ( !rVal.valid )
- valid = false;
- if ( !valid ) {
+ if ( !rVal.mpImpl->valid )
+ mpImpl->valid = false;
+
+ if ( !mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'operator +=' with invalid fraction" );
return *this;
}
- value += rVal.value;
+ mpImpl->value += rVal.mpImpl->value;
- if ( HasOverflowValue() ) {
- valid = false;
+ if ( HasOverflowValue() )
+ {
+ mpImpl->valid = false;
SAL_WARN( "tools.fraction", "'operator +=' detected overflow" );
}
@@ -106,17 +139,20 @@ Fraction& Fraction::operator += ( const Fraction& rVal )
Fraction& Fraction::operator -= ( const Fraction& rVal )
{
- if ( !rVal.valid )
- valid = false;
- if ( !valid ) {
+ if ( !rVal.mpImpl->valid )
+ mpImpl->valid = false;
+
+ if ( !mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'operator -=' with invalid fraction" );
return *this;
}
- value -= rVal.value;
+ mpImpl->value -= rVal.mpImpl->value;
- if ( HasOverflowValue() ) {
- valid = false;
+ if ( HasOverflowValue() )
+ {
+ mpImpl->valid = false;
SAL_WARN( "tools.fraction", "'operator -=' detected overflow" );
}
@@ -125,17 +161,20 @@ Fraction& Fraction::operator -= ( const Fraction& rVal )
Fraction& Fraction::operator *= ( const Fraction& rVal )
{
- if ( !rVal.valid )
- valid = false;
- if ( !valid ) {
+ if ( !rVal.mpImpl->valid )
+ mpImpl->valid = false;
+
+ if ( !mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'operator *=' with invalid fraction" );
return *this;
}
- value *= rVal.value;
+ mpImpl->value *= rVal.mpImpl->value;
- if ( HasOverflowValue() ) {
- valid = false;
+ if ( HasOverflowValue() )
+ {
+ mpImpl->valid = false;
SAL_WARN( "tools.fraction", "'operator *=' detected overflow" );
}
@@ -144,17 +183,20 @@ Fraction& Fraction::operator *= ( const Fraction& rVal )
Fraction& Fraction::operator /= ( const Fraction& rVal )
{
- if ( !rVal.valid )
- valid = false;
- if ( !valid ) {
+ if ( !rVal.mpImpl->valid )
+ mpImpl->valid = false;
+
+ if ( !mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'operator /=' with invalid fraction" );
return *this;
}
- value /= rVal.value;
+ mpImpl->value /= rVal.mpImpl->value;
- if ( HasOverflowValue() ) {
- valid = false;
+ if ( HasOverflowValue() )
+ {
+ mpImpl->valid = false;
SAL_WARN( "tools.fraction", "'operator /=' detected overflow" );
}
@@ -181,62 +223,61 @@ Fraction& Fraction::operator /= ( const Fraction& rVal )
*/
void Fraction::ReduceInaccurate( unsigned nSignificantBits )
{
- if ( !valid ) {
+ if ( !mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'ReduceInaccurate' on invalid fraction" );
return;
}
- if ( !value.numerator() )
- return;
- rational_ReduceInaccurate(value, nSignificantBits);
-}
+ if ( !mpImpl->value.numerator() )
+ return;
-Fraction::Fraction( const Fraction& rFrac )
-{
- valid = rFrac.valid;
- if ( valid )
- value.assign( rFrac.value.numerator(), rFrac.value.denominator() );
+ rational_ReduceInaccurate(mpImpl->value, nSignificantBits);
}
long Fraction::GetNumerator() const
{
- if ( !valid ) {
+ if ( !mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'GetNumerator()' on invalid fraction" );
return 0;
}
- return value.numerator();
+ return mpImpl->value.numerator();
}
-long Fraction::GetDenominator() const {
- if ( !valid ) {
+long Fraction::GetDenominator() const
+{
+ if ( !mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'GetDenominator()' on invalid fraction" );
return -1;
}
- return value.denominator();
+ return mpImpl->value.denominator();
}
Fraction& Fraction::operator=( const Fraction& rFrac )
{
- if ( this != &rFrac ) {
- valid = rFrac.valid;
- if ( valid )
- value.assign( rFrac.value.numerator(), rFrac.value.denominator() );
- }
+ if (this == &rFrac)
+ return *this;
+
+ Fraction tmp(rFrac);
+ std::swap(mpImpl, tmp.mpImpl);
return *this;
}
bool Fraction::IsValid() const
{
- return valid;
+ return mpImpl->valid;
}
Fraction::operator long() const
{
- if ( !valid ) {
+ if ( !mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'operator long()' on invalid fraction" );
return 0;
}
- return boost::rational_cast<long>(value);
+ return boost::rational_cast<long>(mpImpl->value);
}
Fraction operator+( const Fraction& rVal1, const Fraction& rVal2 )
@@ -284,32 +325,35 @@ bool operator >=( const Fraction& rVal1, const Fraction& rVal2 )
bool operator == ( const Fraction& rVal1, const Fraction& rVal2 )
{
- if ( !rVal1.valid || !rVal2.valid ) {
+ if ( !rVal1.mpImpl->valid || !rVal2.mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'operator ==' with an invalid fraction" );
return false;
}
- return rVal1.value == rVal2.value;
+ return rVal1.mpImpl->value == rVal2.mpImpl->value;
}
bool operator < ( const Fraction& rVal1, const Fraction& rVal2 )
{
- if ( !rVal1.valid || !rVal2.valid ) {
+ if ( !rVal1.mpImpl->valid || !rVal2.mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'operator <' with an invalid fraction" );
return false;
}
- return rVal1.value < rVal2.value;
+ return rVal1.mpImpl->value < rVal2.mpImpl->value;
}
bool operator > ( const Fraction& rVal1, const Fraction& rVal2 )
{
- if ( !rVal1.valid || !rVal2.valid ) {
+ if ( !rVal1.mpImpl->valid || !rVal2.mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'operator >' with an invalid fraction" );
return false;
}
- return rVal1.value > rVal2.value;
+ return rVal1.mpImpl->value > rVal2.mpImpl->value;
}
SvStream& ReadFraction( SvStream& rIStream, Fraction& rFract )
@@ -317,25 +361,29 @@ SvStream& ReadFraction( SvStream& rIStream, Fraction& rFract )
sal_Int32 num(0), den(0);
rIStream.ReadInt32( num );
rIStream.ReadInt32( den );
- if ( den <= 0 ) {
+ if ( den <= 0 )
+ {
SAL_WARN( "tools.fraction", "'ReadFraction()' read an invalid fraction" );
- rFract.valid = false;
- } else {
- rFract.value.assign( num, den );
- rFract.valid = true;
+ rFract.mpImpl->valid = false;
+ }
+ else
+ {
+ rFract.mpImpl->value.assign( num, den );
+ rFract.mpImpl->valid = true;
}
return rIStream;
}
SvStream& WriteFraction( SvStream& rOStream, const Fraction& rFract )
{
- if ( !rFract.valid ) {
+ if ( !rFract.mpImpl->valid )
+ {
SAL_WARN( "tools.fraction", "'WriteFraction()' write an invalid fraction" );
rOStream.WriteInt32( 0 );
rOStream.WriteInt32( -1 );
} else {
- rOStream.WriteInt32( rFract.value.numerator() );
- rOStream.WriteInt32( rFract.value.denominator() );
+ rOStream.WriteInt32( rFract.mpImpl->value.numerator() );
+ rOStream.WriteInt32( rFract.mpImpl->value.denominator() );
}
return rOStream;
}
commit 0348341f5ef8b92ed26451e90e42355bdf83e2f3
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Sat Nov 15 22:34:15 2014 -0500
Make these methods non-inline.
Change-Id: I0b24e34dec6c452659b224b45a6849dafe708c3b
diff --git a/include/tools/fract.hxx b/include/tools/fract.hxx
index 0e81155..597876f 100644
--- a/include/tools/fract.hxx
+++ b/include/tools/fract.hxx
@@ -58,112 +58,29 @@ public:
void ReduceInaccurate( unsigned nSignificantBits );
- friend inline Fraction operator+( const Fraction& rVal1, const Fraction& rVal2 );
- friend inline Fraction operator-( const Fraction& rVal1, const Fraction& rVal2 );
- friend inline Fraction operator*( const Fraction& rVal1, const Fraction& rVal2 );
- friend inline Fraction operator/( const Fraction& rVal1, const Fraction& rVal2 );
-
- TOOLS_DLLPUBLIC friend bool operator==( const Fraction& rVal1, const Fraction& rVal2 );
- friend inline bool operator!=( const Fraction& rVal1, const Fraction& rVal2 );
- TOOLS_DLLPUBLIC friend bool operator< ( const Fraction& rVal1, const Fraction& rVal2 );
- TOOLS_DLLPUBLIC friend bool operator> ( const Fraction& rVal1, const Fraction& rVal2 );
- friend inline bool operator<=( const Fraction& rVal1, const Fraction& rVal2 );
- friend inline bool operator>=( const Fraction& rVal1, const Fraction& rVal2 );
+ TOOLS_DLLPUBLIC friend Fraction operator+( const Fraction& rVal1, const Fraction& rVal2 );
+ TOOLS_DLLPUBLIC friend Fraction operator-( const Fraction& rVal1, const Fraction& rVal2 );
+ TOOLS_DLLPUBLIC friend Fraction operator*( const Fraction& rVal1, const Fraction& rVal2 );
+ TOOLS_DLLPUBLIC friend Fraction operator/( const Fraction& rVal1, const Fraction& rVal2 );
+
+ 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 bool operator< ( const Fraction& rVal1, const Fraction& rVal2 );
+ 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 bool operator>=( const Fraction& rVal1, const Fraction& rVal2 );
TOOLS_DLLPUBLIC friend SvStream& ReadFraction( SvStream& rIStream, Fraction& rFract );
TOOLS_DLLPUBLIC friend SvStream& WriteFraction( SvStream& rOStream, const Fraction& rFract );
};
-inline Fraction::Fraction( const Fraction& rFrac )
-{
- valid = rFrac.valid;
- if ( valid )
- value.assign( rFrac.value.numerator(), rFrac.value.denominator() );
-}
-
-inline long Fraction::GetNumerator() const
-{
- if ( !valid ) {
- SAL_WARN( "tools.fraction", "'GetNumerator()' on invalid fraction" );
- return 0;
- }
- return value.numerator();
-}
-
-inline long Fraction::GetDenominator() const {
- if ( !valid ) {
- SAL_WARN( "tools.fraction", "'GetDenominator()' on invalid fraction" );
- return -1;
- }
- return value.denominator();
-}
-
-inline Fraction& Fraction::operator=( const Fraction& rFrac )
-{
- if ( this != &rFrac ) {
- valid = rFrac.valid;
- if ( valid )
- value.assign( rFrac.value.numerator(), rFrac.value.denominator() );
- }
- return *this;
-}
-
-inline bool Fraction::IsValid() const
-{
- return valid;
-}
-
-inline Fraction::operator long() const
-{
- if ( !valid ) {
- SAL_WARN( "tools.fraction", "'operator long()' on invalid fraction" );
- return 0;
- }
- return boost::rational_cast<long>(value);
-}
-
-inline Fraction operator+( const Fraction& rVal1, const Fraction& rVal2 )
-{
- Fraction aErg( rVal1 );
- aErg += rVal2;
- return aErg;
-}
-
-inline Fraction operator-( const Fraction& rVal1, const Fraction& rVal2 )
-{
- Fraction aErg( rVal1 );
- aErg -= rVal2;
- return aErg;
-}
-
-inline Fraction operator*( const Fraction& rVal1, const Fraction& rVal2 )
-{
- Fraction aErg( rVal1 );
- aErg *= rVal2;
- return aErg;
-}
-
-inline Fraction operator/( const Fraction& rVal1, const Fraction& rVal2 )
-{
- Fraction aErg( rVal1 );
- aErg /= rVal2;
- return aErg;
-}
-
-inline bool operator !=( const Fraction& rVal1, const Fraction& rVal2 )
-{
- return !(rVal1 == rVal2);
-}
-
-inline bool operator <=( const Fraction& rVal1, const Fraction& rVal2 )
-{
- return !(rVal1 > rVal2);
-}
-
-inline bool operator >=( const Fraction& rVal1, const Fraction& rVal2 )
-{
- return !(rVal1 < rVal2);
-}
+TOOLS_DLLPUBLIC Fraction operator+( const Fraction& rVal1, const Fraction& rVal2 );
+TOOLS_DLLPUBLIC Fraction operator-( const Fraction& rVal1, const Fraction& rVal2 );
+TOOLS_DLLPUBLIC Fraction operator*( const Fraction& rVal1, const Fraction& rVal2 );
+TOOLS_DLLPUBLIC Fraction operator/( const Fraction& rVal1, const Fraction& rVal2 );
+TOOLS_DLLPUBLIC bool operator !=( const Fraction& rVal1, const Fraction& rVal2 );
+TOOLS_DLLPUBLIC bool operator <=( const Fraction& rVal1, const Fraction& rVal2 );
+TOOLS_DLLPUBLIC bool operator >=( const Fraction& rVal1, const Fraction& rVal2 );
#endif
diff --git a/tools/source/generic/fract.cxx b/tools/source/generic/fract.cxx
index 020d894..e9e2f5f 100644
--- a/tools/source/generic/fract.cxx
+++ b/tools/source/generic/fract.cxx
@@ -191,6 +191,97 @@ void Fraction::ReduceInaccurate( unsigned nSignificantBits )
rational_ReduceInaccurate(value, nSignificantBits);
}
+Fraction::Fraction( const Fraction& rFrac )
+{
+ valid = rFrac.valid;
+ if ( valid )
+ value.assign( rFrac.value.numerator(), rFrac.value.denominator() );
+}
+
+long Fraction::GetNumerator() const
+{
+ if ( !valid ) {
+ SAL_WARN( "tools.fraction", "'GetNumerator()' on invalid fraction" );
+ return 0;
+ }
+ return value.numerator();
+}
+
+long Fraction::GetDenominator() const {
+ if ( !valid ) {
+ SAL_WARN( "tools.fraction", "'GetDenominator()' on invalid fraction" );
+ return -1;
+ }
+ return value.denominator();
+}
+
+Fraction& Fraction::operator=( const Fraction& rFrac )
+{
+ if ( this != &rFrac ) {
+ valid = rFrac.valid;
+ if ( valid )
+ value.assign( rFrac.value.numerator(), rFrac.value.denominator() );
+ }
+ return *this;
+}
+
+bool Fraction::IsValid() const
+{
+ return valid;
+}
+
+Fraction::operator long() const
+{
+ if ( !valid ) {
+ SAL_WARN( "tools.fraction", "'operator long()' on invalid fraction" );
+ return 0;
+ }
+ return boost::rational_cast<long>(value);
+}
+
+Fraction operator+( const Fraction& rVal1, const Fraction& rVal2 )
+{
+ Fraction aErg( rVal1 );
+ aErg += rVal2;
+ return aErg;
+}
+
+Fraction operator-( const Fraction& rVal1, const Fraction& rVal2 )
+{
+ Fraction aErg( rVal1 );
+ aErg -= rVal2;
+ return aErg;
+}
+
+Fraction operator*( const Fraction& rVal1, const Fraction& rVal2 )
+{
+ Fraction aErg( rVal1 );
+ aErg *= rVal2;
+ return aErg;
+}
+
+Fraction operator/( const Fraction& rVal1, const Fraction& rVal2 )
+{
+ Fraction aErg( rVal1 );
+ aErg /= rVal2;
+ return aErg;
+}
+
+bool operator !=( const Fraction& rVal1, const Fraction& rVal2 )
+{
+ return !(rVal1 == rVal2);
+}
+
+bool operator <=( const Fraction& rVal1, const Fraction& rVal2 )
+{
+ return !(rVal1 > rVal2);
+}
+
+bool operator >=( const Fraction& rVal1, const Fraction& rVal2 )
+{
+ return !(rVal1 < rVal2);
+}
+
bool operator == ( const Fraction& rVal1, const Fraction& rVal2 )
{
if ( !rVal1.valid || !rVal2.valid ) {
More information about the Libreoffice-commits
mailing list