[Libreoffice-commits] .: 5 commits - chart2/source i18npool/inc i18npool/source icu/makefile.mk sal/inc
Caolán McNamara
caolan at kemper.freedesktop.org
Wed May 2 03:21:04 PDT 2012
chart2/source/tools/ObjectIdentifier.cxx | 20 +++++----
chart2/source/view/charttypes/VSeriesPlotter.cxx | 2
chart2/source/view/main/VTitle.cxx | 6 +-
i18npool/inc/breakiterator_unicode.hxx | 17 ++++++--
i18npool/source/breakiterator/breakiterator_unicode.cxx | 34 ++++++----------
icu/makefile.mk | 3 +
sal/inc/rtl/string.hxx | 2
sal/inc/rtl/ustring.hxx | 2
8 files changed, 48 insertions(+), 38 deletions(-)
New commits:
commit 022f7f0c256dd9c1ce6b9f099813a79cc28acd6c
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed May 2 11:20:12 2012 +0100
can use -O2 without -fstrict-aliasing for icu
Change-Id: I9841adb2e17e11c32823ac9e438bae824d30599e
diff --git a/icu/makefile.mk b/icu/makefile.mk
index eb32cc8..ddc6fe0 100644
--- a/icu/makefile.mk
+++ b/icu/makefile.mk
@@ -87,6 +87,9 @@ CC:=gcc $(EXTRA_CFLAGS)
.IF "$(debug)" != ""
icu_CFLAGS+=-g $(ARCH_FLAGS)
icu_CXXFLAGS+=-g $(ARCH_FLAGS)
+.ELIF "$(COM)"=="GCC"
+icu_CFLAGS+=-O2 -fnostrict-aliasing $(ARCH_FLAGS)
+icu_CXXFLAGS+=-O2 -fno-fstrict-aliasing $(ARCH_FLAGS)
.ELSE
icu_CFLAGS+=-O $(ARCH_FLAGS)
icu_CXXFLAGS+=-O $(ARCH_FLAGS)
commit 27d8c527012e2759b1d2b282feff433b26fdc4ce
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed May 2 10:23:02 2012 +0100
WaE: simple-minded msvc2008 considers code unreachable
Change-Id: I97da4392bb3ca814e8d9037346c83fde4d460f97
diff --git a/chart2/source/tools/ObjectIdentifier.cxx b/chart2/source/tools/ObjectIdentifier.cxx
index b386b79..39a0135 100644
--- a/chart2/source/tools/ObjectIdentifier.cxx
+++ b/chart2/source/tools/ObjectIdentifier.cxx
@@ -717,6 +717,7 @@ OUString ObjectIdentifier::getDragParameterString( const OUString& rCID )
bool ObjectIdentifier::isDragableObject( const OUString& rClassifiedIdentifier )
{
+ bool bReturn = false;
ObjectType eObjectType = ObjectIdentifier::getObjectType( rClassifiedIdentifier );
switch( eObjectType )
{
@@ -725,14 +726,14 @@ bool ObjectIdentifier::isDragableObject( const OUString& rClassifiedIdentifier )
case OBJECTTYPE_DIAGRAM:
case OBJECTTYPE_DATA_CURVE_EQUATION:
//case OBJECTTYPE_DIAGRAM_WALL:
- return true;
+ bReturn = true;
+ break;
default:
OUString aDragMethodServiceName( ObjectIdentifier::getDragMethodServiceName( rClassifiedIdentifier ) );
- if( !aDragMethodServiceName.isEmpty() )
- return true;
- return false;
+ bReturn = !aDragMethodServiceName.isEmpty();
+ break;
}
- return false;
+ return bReturn;
}
bool ObjectIdentifier::isDragableObject()
@@ -751,16 +752,19 @@ bool ObjectIdentifier::isDragableObject()
bool ObjectIdentifier::isRotateableObject( const OUString& rClassifiedIdentifier )
{
+ bool bReturn = false;
ObjectType eObjectType = ObjectIdentifier::getObjectType( rClassifiedIdentifier );
switch( eObjectType )
{
case OBJECTTYPE_DIAGRAM:
//case OBJECTTYPE_DIAGRAM_WALL:
- return true;
+ bReturn = true;
+ break;
default:
- return false;
+ bReturn = false;
+ break;
}
- return false;
+ return bReturn;
}
bool ObjectIdentifier::isMultiClickObject( const OUString& rClassifiedIdentifier )
commit 4cd9b2fbd39cca3553588ae9f61e674f1416a582
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed May 2 10:22:19 2012 +0100
WaE: doubles truncated to floats
Change-Id: I42b67cc0670f3d0990708fb299243098c1aa972b
diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index c693a0b..f1194f0 100644
--- a/chart2/source/view/charttypes/VSeriesPlotter.cxx
+++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx
@@ -466,7 +466,7 @@ uno::Reference< drawing::XShape > VSeriesPlotter::createDataLabel( const uno::Re
if( xProps.is() )
xProps->getPropertyValue( C2U( "CharHeight" )) >>= fViewFontSize;
// pt -> 1/100th mm
- fViewFontSize *= (2540.0 / 72.0);
+ fViewFontSize *= (2540.0f / 72.0f);
}
Reference< drawing::XShape > xSymbol;
if(pLabel->ShowLegendSymbol)
diff --git a/chart2/source/view/main/VTitle.cxx b/chart2/source/view/main/VTitle.cxx
index c6d7754..bfbecdf 100644
--- a/chart2/source/view/main/VTitle.cxx
+++ b/chart2/source/view/main/VTitle.cxx
@@ -248,10 +248,10 @@ void VTitle::createShapes(
float fFontHeight = 0.0;
if ( xShapeProp.is() && ( xShapeProp->getPropertyValue( C2U( "CharHeight" ) ) >>= fFontHeight ) )
{
- fFontHeight *= ( 2540. / 72. ); // pt -> 1/100 mm
- float fXFraction = 0.18;
+ fFontHeight *= ( 2540.0f / 72.0f ); // pt -> 1/100 mm
+ float fXFraction = 0.18f;
sal_Int32 nXDistance = static_cast< sal_Int32 >( ::rtl::math::round( fFontHeight * fXFraction ) );
- float fYFraction = 0.30;
+ float fYFraction = 0.30f;
sal_Int32 nYDistance = static_cast< sal_Int32 >( ::rtl::math::round( fFontHeight * fYFraction ) );
xShapeProp->setPropertyValue( C2U( "TextLeftDistance" ), uno::makeAny( nXDistance ) );
xShapeProp->setPropertyValue( C2U( "TextRightDistance" ), uno::makeAny( nXDistance ) );
commit 2b168feccee9c367152e106386101be903e4f1db
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed May 2 10:20:26 2012 +0100
Related: fdo#49208 implement operator== with faster equals
we have an optimized equals which checks that the strings being
compared for equality share the same underlying pImpl, but out
operator== implementations don't use it!
Change-Id: Ie5c464494ff875315a5ca369a2da80c22c29f431
diff --git a/sal/inc/rtl/string.hxx b/sal/inc/rtl/string.hxx
index 1701b28..0d90b53 100644
--- a/sal/inc/rtl/string.hxx
+++ b/sal/inc/rtl/string.hxx
@@ -712,7 +712,7 @@ public:
}
friend sal_Bool operator == ( const OString& rStr1, const OString& rStr2 ) SAL_THROW(())
- { return rStr1.getLength() == rStr2.getLength() && rStr1.compareTo( rStr2 ) == 0; }
+ { return rStr1.equals(rStr2); }
friend sal_Bool operator != ( const OString& rStr1, const OString& rStr2 ) SAL_THROW(())
{ return !(operator == ( rStr1, rStr2 )); }
friend sal_Bool operator < ( const OString& rStr1, const OString& rStr2 ) SAL_THROW(())
diff --git a/sal/inc/rtl/ustring.hxx b/sal/inc/rtl/ustring.hxx
index 883fb93..f3d224e 100644
--- a/sal/inc/rtl/ustring.hxx
+++ b/sal/inc/rtl/ustring.hxx
@@ -988,7 +988,7 @@ public:
}
friend sal_Bool operator == ( const OUString& rStr1, const OUString& rStr2 ) SAL_THROW(())
- { return rStr1.getLength() == rStr2.getLength() && rStr1.compareTo( rStr2 ) == 0; }
+ { return rStr1.equals(rStr2); }
friend sal_Bool operator == ( const OUString& rStr1, const sal_Unicode * pStr2 ) SAL_THROW(())
{ return rStr1.compareTo( pStr2 ) == 0; }
friend sal_Bool operator == ( const sal_Unicode * pStr1, const OUString& rStr2 ) SAL_THROW(())
commit 6f0503c82c0a019678458ded9e339a71f96d837d
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed May 2 09:18:26 2012 +0100
Related: fdo#49208 use UText adaptor to underlying rtl::OUString
Don't convert to icu UnicodeString, retain text as shallow-copy of
original via rtl::OUString and use UText adaptor. Allows use of
equals to do super fast compare that new string is the same as the
old string
Change-Id: Ie9a3dc981b22a6866f3712c786331a1d6fcf153a
diff --git a/i18npool/inc/breakiterator_unicode.hxx b/i18npool/inc/breakiterator_unicode.hxx
index 57e0aad..a9273f1 100644
--- a/i18npool/inc/breakiterator_unicode.hxx
+++ b/i18npool/inc/breakiterator_unicode.hxx
@@ -84,11 +84,22 @@ protected:
const sal_Char *cBreakIterator, *wordRule, *lineRule;
Boundary result; // for word break iterator
- struct BI_Data {
- UnicodeString aICUText;
+ struct BI_Data
+ {
+ rtl::OUString aICUText;
+ UText *ut;
icu::BreakIterator *aBreakIterator;
- BI_Data() : aICUText(), aBreakIterator(NULL) {}
+ BI_Data()
+ : ut(NULL)
+ , aBreakIterator(NULL)
+ {
+ }
+ ~BI_Data()
+ {
+ utext_close(ut);
+ }
+
} character, word, sentence, line, *icuBI;
com::sun::star::lang::Locale aLocale;
diff --git a/i18npool/source/breakiterator/breakiterator_unicode.cxx b/i18npool/source/breakiterator/breakiterator_unicode.cxx
index 4005780..34e6918 100644
--- a/i18npool/source/breakiterator/breakiterator_unicode.cxx
+++ b/i18npool/source/breakiterator/breakiterator_unicode.cxx
@@ -95,24 +95,6 @@ class OOoRuleBasedBreakIterator : public RuleBasedBreakIterator {
};
-namespace
-{
- bool isEqual(const UnicodeString &rOne, const rtl::OUString &rOther)
- {
- sal_Int32 nLength = rOne.length();
- if (nLength != rOther.getLength())
- return false;
-
- //fdo#49208 operator== is implemented by compareTo etc in icu which is
- //horrifically slow when all you want to know is that they're the same
- //or not
- const UChar *pOne = rOne.getBuffer();
- // UChar != sal_Unicode in MinGW
- const UChar *pOther = reinterpret_cast<const UChar *>(rOther.getStr());
- return memcmp(pOne, pOther, nLength * sizeof(UChar)) == 0;
- }
-}
-
// loading ICU breakiterator on demand.
void SAL_CALL BreakIterator_Unicode::loadICUBreakIterator(const com::sun::star::lang::Locale& rLocale,
sal_Int16 rBreakType, sal_Int16 rWordType, const sal_Char *rule, const OUString& rText) throw(uno::RuntimeException)
@@ -218,12 +200,22 @@ void SAL_CALL BreakIterator_Unicode::loadICUBreakIterator(const com::sun::star::
}
}
- if (newBreak || !isEqual(icuBI->aICUText, rText))
+ if (newBreak || !icuBI->aICUText.equals(rText))
{
// UChar != sal_Unicode in MinGW
const UChar *pText = reinterpret_cast<const UChar *>(rText.getStr());
- icuBI->aICUText=UnicodeString(pText, rText.getLength());
- icuBI->aBreakIterator->setText(icuBI->aICUText);
+
+ icuBI->ut = utext_openUChars(icuBI->ut, pText, rText.getLength(), &status);
+
+ if (!U_SUCCESS(status))
+ throw ERROR;
+
+ icuBI->aBreakIterator->setText(icuBI->ut, status);
+
+ if (!U_SUCCESS(status))
+ throw ERROR;
+
+ icuBI->aICUText = rText;
}
}
More information about the Libreoffice-commits
mailing list