Kaydet (Commit) e9430571 authored tarafından Luboš Luňák's avatar Luboš Luňák

remove the useOffset thread-unsafe hack from transliteration

And instead pass it as an argument to an implementation function.
Otherwise this is thread-unsafe for Calc's threaded calculation,
and transliteration is used in various places in Calc code.

Change-Id: Ibdf95e4b6867ec251618f6ff91e605acb69667c0
Reviewed-on: https://gerrit.libreoffice.org/56290
Tested-by: Jenkins
Reviewed-by: 's avatarLuboš Luňák <l.lunak@collabora.com>
üst 364af18d
...@@ -41,8 +41,8 @@ public: ...@@ -41,8 +41,8 @@ public:
#endif #endif
virtual ~TextToPronounce_zh() override; virtual ~TextToPronounce_zh() override;
OUString SAL_CALL OUString
folding(const OUString & inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 > & offset) override; foldingImpl(const OUString & inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 > & offset, bool useOffset) override;
sal_Int16 SAL_CALL getType() override; sal_Int16 SAL_CALL getType() override;
......
...@@ -30,8 +30,8 @@ namespace i18npool { ...@@ -30,8 +30,8 @@ namespace i18npool {
class transliteration_Ignore : public transliteration_commonclass class transliteration_Ignore : public transliteration_commonclass
{ {
public: public:
virtual OUString SAL_CALL virtual OUString
folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset) override; foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) override;
// This method is shared. // This method is shared.
sal_Bool SAL_CALL sal_Bool SAL_CALL
...@@ -46,8 +46,8 @@ public: ...@@ -46,8 +46,8 @@ public:
// Methods which are shared. // Methods which are shared.
sal_Int16 SAL_CALL getType( ) override; sal_Int16 SAL_CALL getType( ) override;
OUString SAL_CALL OUString
transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) override; transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) override;
virtual sal_Unicode SAL_CALL virtual sal_Unicode SAL_CALL
transliterateChar2Char( sal_Unicode inChar) override; transliterateChar2Char( sal_Unicode inChar) override;
...@@ -95,8 +95,8 @@ class ignoreDiacritics_CTL : public transliteration_Ignore ...@@ -95,8 +95,8 @@ class ignoreDiacritics_CTL : public transliteration_Ignore
public: public:
ignoreDiacritics_CTL(); ignoreDiacritics_CTL();
OUString SAL_CALL OUString
folding(const OUString& rInStr, sal_Int32 nStartPos, sal_Int32 nCount, css::uno::Sequence<sal_Int32>& rOffset) override; foldingImpl(const OUString& rInStr, sal_Int32 nStartPos, sal_Int32 nCount, css::uno::Sequence<sal_Int32>& rOffset, bool useOffset) override;
sal_Unicode SAL_CALL sal_Unicode SAL_CALL
transliterateChar2Char(sal_Unicode nInChar) override; transliterateChar2Char(sal_Unicode nInChar) override;
...@@ -114,8 +114,8 @@ public:\ ...@@ -114,8 +114,8 @@ public:\
transliterationName = "ignore"#name;\ transliterationName = "ignore"#name;\
implementationName = "com.sun.star.i18n.Transliteration.ignore"#name;\ implementationName = "com.sun.star.i18n.Transliteration.ignore"#name;\
};\ };\
OUString SAL_CALL folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, \ OUString foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, \
css::uno::Sequence< sal_Int32 >& offset) override; \ css::uno::Sequence< sal_Int32 >& offset, bool useOffset) override; \
}; };
TRANSLITERATION_IGNORE(KiKuFollowedBySa_ja_JP) TRANSLITERATION_IGNORE(KiKuFollowedBySa_ja_JP)
...@@ -135,8 +135,8 @@ public:\ ...@@ -135,8 +135,8 @@ public:\
transliterationName = "ignore"#name;\ transliterationName = "ignore"#name;\
implementationName = "com.sun.star.i18n.Transliteration.ignore"#name;\ implementationName = "com.sun.star.i18n.Transliteration.ignore"#name;\
};\ };\
OUString SAL_CALL folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, \ OUString foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, \
css::uno::Sequence< sal_Int32 >& offset) override; \ css::uno::Sequence< sal_Int32 >& offset, bool useOffset) override; \
using transliteration_Ignore::transliterateRange;\ using transliteration_Ignore::transliterateRange;\
css::uno::Sequence< OUString > SAL_CALL transliterateRange( const OUString& str1, \ css::uno::Sequence< OUString > SAL_CALL transliterateRange( const OUString& str1, \
const OUString& str2 ) override; \ const OUString& str2 ) override; \
......
...@@ -25,8 +25,8 @@ namespace i18npool { ...@@ -25,8 +25,8 @@ namespace i18npool {
class transliteration_Numeric : public transliteration_commonclass { class transliteration_Numeric : public transliteration_commonclass {
public: public:
virtual OUString SAL_CALL virtual OUString
transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) override; transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) override;
virtual sal_Unicode SAL_CALL virtual sal_Unicode SAL_CALL
transliterateChar2Char( sal_Unicode inChar) override; transliterateChar2Char( sal_Unicode inChar) override;
...@@ -34,8 +34,8 @@ public: ...@@ -34,8 +34,8 @@ public:
// Methods which are shared. // Methods which are shared.
virtual sal_Int16 SAL_CALL getType( ) override; virtual sal_Int16 SAL_CALL getType( ) override;
virtual OUString SAL_CALL virtual OUString
folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) override; foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) override;
virtual sal_Bool SAL_CALL virtual sal_Bool SAL_CALL
equals( const OUString& str1, sal_Int32 pos1, sal_Int32 nCount1, sal_Int32& nMatch1, const OUString& str2, sal_Int32 pos2, sal_Int32 nCount2, sal_Int32& nMatch2 ) override; equals( const OUString& str1, sal_Int32 pos1, sal_Int32 nCount1, sal_Int32& nMatch1, const OUString& str2, sal_Int32 pos2, sal_Int32 nCount2, sal_Int32& nMatch2 ) override;
...@@ -51,7 +51,7 @@ private: ...@@ -51,7 +51,7 @@ private:
/// @throws css::uno::RuntimeException /// @throws css::uno::RuntimeException
OUString OUString
transliterateBullet( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, transliterateBullet( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
css::uno::Sequence< sal_Int32 >& offset ); css::uno::Sequence< sal_Int32 >& offset, bool useOffset );
}; };
} }
......
...@@ -29,8 +29,8 @@ typedef sal_Unicode (*TransFunc)(const sal_Unicode); ...@@ -29,8 +29,8 @@ typedef sal_Unicode (*TransFunc)(const sal_Unicode);
class transliteration_OneToOne : public transliteration_commonclass class transliteration_OneToOne : public transliteration_commonclass
{ {
public: public:
OUString SAL_CALL OUString
transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) override; transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) override;
sal_Unicode SAL_CALL sal_Unicode SAL_CALL
transliterateChar2Char( sal_Unicode inChar) override; transliterateChar2Char( sal_Unicode inChar) override;
...@@ -38,8 +38,8 @@ public: ...@@ -38,8 +38,8 @@ public:
// Methods which are shared. // Methods which are shared.
sal_Int16 SAL_CALL getType() override; sal_Int16 SAL_CALL getType() override;
OUString SAL_CALL OUString
folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset) override; foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) override;
sal_Bool SAL_CALL sal_Bool SAL_CALL
equals( const OUString& str1, sal_Int32 pos1, sal_Int32 nCount1, sal_Int32& nMatch1, equals( const OUString& str1, sal_Int32 pos1, sal_Int32 nCount1, sal_Int32& nMatch1,
...@@ -58,8 +58,8 @@ class name : public transliteration_OneToOne \ ...@@ -58,8 +58,8 @@ class name : public transliteration_OneToOne \
{ \ { \
public: \ public: \
name (); \ name (); \
OUString SAL_CALL \ OUString \
transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) \ transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) \
override; \ override; \
sal_Unicode SAL_CALL \ sal_Unicode SAL_CALL \
transliterateChar2Char( sal_Unicode inChar) \ transliterateChar2Char( sal_Unicode inChar) \
...@@ -74,22 +74,22 @@ class halfwidthToFullwidth : public transliteration_OneToOne ...@@ -74,22 +74,22 @@ class halfwidthToFullwidth : public transliteration_OneToOne
{ {
public: public:
halfwidthToFullwidth(); halfwidthToFullwidth();
OUString SAL_CALL OUString
transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) override; transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) override;
}; };
class halfwidthKatakanaToFullwidthKatakana : public transliteration_OneToOne class halfwidthKatakanaToFullwidthKatakana : public transliteration_OneToOne
{ {
public: public:
halfwidthKatakanaToFullwidthKatakana(); halfwidthKatakanaToFullwidthKatakana();
OUString SAL_CALL OUString
transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) override; transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) override;
}; };
class halfwidthToFullwidthLikeJIS : public transliteration_OneToOne class halfwidthToFullwidthLikeJIS : public transliteration_OneToOne
{ {
public: public:
halfwidthToFullwidthLikeJIS(); halfwidthToFullwidthLikeJIS();
OUString SAL_CALL OUString
transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) override; transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) override;
}; };
#undef TRANSLITERATION_ONETOONE #undef TRANSLITERATION_ONETOONE
......
...@@ -32,8 +32,8 @@ public: ...@@ -32,8 +32,8 @@ public:
// Methods which are shared. // Methods which are shared.
sal_Int16 SAL_CALL getType() override; sal_Int16 SAL_CALL getType() override;
OUString SAL_CALL transliterate(const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, OUString transliterateImpl(const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
css::uno::Sequence< sal_Int32 >& offset) override; css::uno::Sequence< sal_Int32 >& offset, bool useOffset) override;
OUString SAL_CALL OUString SAL_CALL
transliterateChar2String( sal_Unicode inChar) override; transliterateChar2String( sal_Unicode inChar) override;
...@@ -41,8 +41,8 @@ public: ...@@ -41,8 +41,8 @@ public:
virtual sal_Unicode SAL_CALL virtual sal_Unicode SAL_CALL
transliterateChar2Char( sal_Unicode inChar) override; transliterateChar2Char( sal_Unicode inChar) override;
OUString SAL_CALL folding(const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, OUString foldingImpl(const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
css::uno::Sequence< sal_Int32 >& offset) override; css::uno::Sequence< sal_Int32 >& offset, bool useOffset) override;
sal_Bool SAL_CALL equals( sal_Bool SAL_CALL equals(
const OUString& str1, sal_Int32 pos1, sal_Int32 nCount1, sal_Int32& nMatch1, const OUString& str1, sal_Int32 pos1, sal_Int32 nCount1, sal_Int32& nMatch1,
...@@ -85,7 +85,8 @@ class Transliteration_titlecase : public Transliteration_body ...@@ -85,7 +85,8 @@ class Transliteration_titlecase : public Transliteration_body
public: public:
Transliteration_titlecase(); Transliteration_titlecase();
virtual OUString SAL_CALL transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) override; virtual OUString transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) override;
}; };
class Transliteration_sentencecase : public Transliteration_body class Transliteration_sentencecase : public Transliteration_body
...@@ -93,7 +94,8 @@ class Transliteration_sentencecase : public Transliteration_body ...@@ -93,7 +94,8 @@ class Transliteration_sentencecase : public Transliteration_body
public: public:
Transliteration_sentencecase(); Transliteration_sentencecase();
virtual OUString SAL_CALL transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) override; virtual OUString transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) override;
}; };
} }
......
...@@ -58,10 +58,12 @@ public: ...@@ -58,10 +58,12 @@ public:
virtual sal_Int16 SAL_CALL getType( ) override = 0; virtual sal_Int16 SAL_CALL getType( ) override = 0;
virtual OUString SAL_CALL virtual OUString SAL_CALL
transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) override = 0; transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset ) override final
{ return transliterateImpl( inStr, startPos, nCount, offset, true ); }
virtual OUString SAL_CALL virtual OUString SAL_CALL
folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset) override = 0; folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset) override final
{ return foldingImpl( inStr, startPos, nCount, offset, true ); }
// Methods in XExtendedTransliteration // Methods in XExtendedTransliteration
virtual OUString SAL_CALL virtual OUString SAL_CALL
...@@ -88,10 +90,15 @@ public: ...@@ -88,10 +90,15 @@ public:
virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
protected: protected:
virtual OUString
transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) = 0;
virtual OUString
foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, css::uno::Sequence< sal_Int32 >& offset, bool useOffset ) = 0;
css::lang::Locale aLocale; css::lang::Locale aLocale;
const sal_Char* transliterationName; const sal_Char* transliterationName;
const sal_Char* implementationName; const sal_Char* implementationName;
bool useOffset;
}; };
} }
......
...@@ -43,17 +43,14 @@ fullwidthToHalfwidth::fullwidthToHalfwidth() ...@@ -43,17 +43,14 @@ fullwidthToHalfwidth::fullwidthToHalfwidth()
* The output is a reference of OUString. You MUST delete this object when you do not need to use it any more * The output is a reference of OUString. You MUST delete this object when you do not need to use it any more
* The output string contains a transliterated string only, not whole string. * The output string contains a transliterated string only, not whole string.
*/ */
OUString SAL_CALL OUString
fullwidthToHalfwidth::transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) fullwidthToHalfwidth::transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
// Decomposition: GA --> KA + voice-mark // Decomposition: GA --> KA + voice-mark
const OUString& newStr = i18nutil::widthfolding::decompose_ja_voiced_sound_marks (inStr, startPos, nCount, offset, useOffset); const OUString& newStr = i18nutil::widthfolding::decompose_ja_voiced_sound_marks (inStr, startPos, nCount, offset, useOffset);
// One to One mapping // One to One mapping
useOffset = false; return transliteration_OneToOne::transliterateImpl( newStr, 0, newStr.getLength(), offset, false);
const OUString &tmp = transliteration_OneToOne::transliterate( newStr, 0, newStr.getLength(), offset);
useOffset = true;
return tmp;
} }
sal_Unicode SAL_CALL sal_Unicode SAL_CALL
...@@ -76,17 +73,14 @@ fullwidthKatakanaToHalfwidthKatakana::fullwidthKatakanaToHalfwidthKatakana() ...@@ -76,17 +73,14 @@ fullwidthKatakanaToHalfwidthKatakana::fullwidthKatakanaToHalfwidthKatakana()
/** /**
* Transliterate fullwidth katakana to halfwidth katakana. * Transliterate fullwidth katakana to halfwidth katakana.
*/ */
OUString SAL_CALL OUString
fullwidthKatakanaToHalfwidthKatakana::transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) fullwidthKatakanaToHalfwidthKatakana::transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
// Decomposition: GA --> KA + voice-mark // Decomposition: GA --> KA + voice-mark
const OUString& newStr = i18nutil::widthfolding::decompose_ja_voiced_sound_marks (inStr, startPos, nCount, offset, useOffset); const OUString& newStr = i18nutil::widthfolding::decompose_ja_voiced_sound_marks (inStr, startPos, nCount, offset, useOffset);
// One to One mapping // One to One mapping
useOffset = false; return transliteration_OneToOne::transliterateImpl( newStr, 0, newStr.getLength(), offset, false);
const OUString &tmp = transliteration_OneToOne::transliterate( newStr, 0, newStr.getLength(), offset);
useOffset = true;
return tmp;
} }
sal_Unicode SAL_CALL sal_Unicode SAL_CALL
...@@ -109,18 +103,14 @@ fullwidthToHalfwidthLikeASC::fullwidthToHalfwidthLikeASC() ...@@ -109,18 +103,14 @@ fullwidthToHalfwidthLikeASC::fullwidthToHalfwidthLikeASC()
/** /**
* Transliterate fullwidth to halfwidth like Excel's ASC function. * Transliterate fullwidth to halfwidth like Excel's ASC function.
*/ */
OUString SAL_CALL OUString
fullwidthToHalfwidthLikeASC::transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) fullwidthToHalfwidthLikeASC::transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
// Decomposition: GA --> KA + voice-mark // Decomposition: GA --> KA + voice-mark
const OUString& newStr = i18nutil::widthfolding::decompose_ja_voiced_sound_marks (inStr, startPos, nCount, offset, useOffset); const OUString& newStr = i18nutil::widthfolding::decompose_ja_voiced_sound_marks (inStr, startPos, nCount, offset, useOffset);
// One to One mapping // One to One mapping
useOffset = false; return transliteration_OneToOne::transliterateImpl( newStr, 0, newStr.getLength(), offset, false);
const OUString &tmp = transliteration_OneToOne::transliterate( newStr, 0, newStr.getLength(), offset);
useOffset = true;
return tmp;
} }
sal_Unicode SAL_CALL sal_Unicode SAL_CALL
......
...@@ -35,17 +35,14 @@ halfwidthToFullwidth::halfwidthToFullwidth() ...@@ -35,17 +35,14 @@ halfwidthToFullwidth::halfwidthToFullwidth()
implementationName = "com.sun.star.i18n.Transliteration.HALFWIDTH_FULLWIDTH"; implementationName = "com.sun.star.i18n.Transliteration.HALFWIDTH_FULLWIDTH";
} }
OUString SAL_CALL OUString
halfwidthToFullwidth::transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) halfwidthToFullwidth::transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
bool _useOffset = useOffset;
// One to One mapping // One to One mapping
useOffset = false; const OUString& newStr = transliteration_OneToOne::transliterateImpl( inStr, startPos, nCount, offset, false);
const OUString& newStr = transliteration_OneToOne::transliterate( inStr, startPos, nCount, offset);
useOffset = _useOffset;
// Composition: KA + voice-mark --> GA // Composition: KA + voice-mark --> GA
return i18nutil::widthfolding::compose_ja_voiced_sound_marks ( newStr, 0, newStr.getLength(), offset, _useOffset ); return i18nutil::widthfolding::compose_ja_voiced_sound_marks ( newStr, 0, newStr.getLength(), offset, useOffset );
} }
halfwidthKatakanaToFullwidthKatakana::halfwidthKatakanaToFullwidthKatakana() halfwidthKatakanaToFullwidthKatakana::halfwidthKatakanaToFullwidthKatakana()
...@@ -56,17 +53,14 @@ halfwidthKatakanaToFullwidthKatakana::halfwidthKatakanaToFullwidthKatakana() ...@@ -56,17 +53,14 @@ halfwidthKatakanaToFullwidthKatakana::halfwidthKatakanaToFullwidthKatakana()
implementationName = "com.sun.star.i18n.Transliteration.HALFWIDTHKATAKANA_FULLWIDTHKATAKANA"; implementationName = "com.sun.star.i18n.Transliteration.HALFWIDTHKATAKANA_FULLWIDTHKATAKANA";
} }
OUString SAL_CALL OUString
halfwidthKatakanaToFullwidthKatakana::transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) halfwidthKatakanaToFullwidthKatakana::transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
bool _useOffset = useOffset;
// One to One mapping // One to One mapping
useOffset = false; const OUString& newStr = transliteration_OneToOne::transliterateImpl( inStr, startPos, nCount, offset, false);
const OUString& newStr = transliteration_OneToOne::transliterate( inStr, startPos, nCount, offset);
useOffset = _useOffset;
// Composition: KA + voice-mark --> GA // Composition: KA + voice-mark --> GA
return i18nutil::widthfolding::compose_ja_voiced_sound_marks ( newStr, 0, newStr.getLength(), offset, _useOffset ); return i18nutil::widthfolding::compose_ja_voiced_sound_marks ( newStr, 0, newStr.getLength(), offset, useOffset );
} }
halfwidthToFullwidthLikeJIS::halfwidthToFullwidthLikeJIS() halfwidthToFullwidthLikeJIS::halfwidthToFullwidthLikeJIS()
...@@ -77,17 +71,14 @@ halfwidthToFullwidthLikeJIS::halfwidthToFullwidthLikeJIS() ...@@ -77,17 +71,14 @@ halfwidthToFullwidthLikeJIS::halfwidthToFullwidthLikeJIS()
implementationName = "com.sun.star.i18n.Transliteration.HALFWIDTH_FULLWIDTH_LIKE_JIS"; implementationName = "com.sun.star.i18n.Transliteration.HALFWIDTH_FULLWIDTH_LIKE_JIS";
} }
OUString SAL_CALL OUString
halfwidthToFullwidthLikeJIS::transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) halfwidthToFullwidthLikeJIS::transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
bool _useOffset = useOffset;
// One to One mapping // One to One mapping
useOffset = false; const OUString& newStr = transliteration_OneToOne::transliterateImpl( inStr, startPos, nCount, offset, false);
const OUString& newStr = transliteration_OneToOne::transliterate( inStr, startPos, nCount, offset);
useOffset = _useOffset;
// Composition: KA + voice-mark --> GA // Composition: KA + voice-mark --> GA
return i18nutil::widthfolding::compose_ja_voiced_sound_marks ( newStr, 0, newStr.getLength(), offset, _useOffset, WIDTHFOLDNIG_DONT_USE_COMBINED_VU ); return i18nutil::widthfolding::compose_ja_voiced_sound_marks ( newStr, 0, newStr.getLength(), offset, useOffset, WIDTHFOLDNIG_DONT_USE_COMBINED_VU );
} }
......
...@@ -47,9 +47,9 @@ ignoreDiacritics_CTL::transliterateChar2Char(sal_Unicode nInChar) ...@@ -47,9 +47,9 @@ ignoreDiacritics_CTL::transliterateChar2Char(sal_Unicode nInChar)
return aChar[0]; return aChar[0];
} }
OUString SAL_CALL OUString
ignoreDiacritics_CTL::folding(const OUString& rInStr, sal_Int32 nStartPos, ignoreDiacritics_CTL::foldingImpl(const OUString& rInStr, sal_Int32 nStartPos,
sal_Int32 nCount, css::uno::Sequence<sal_Int32>& rOffset) sal_Int32 nCount, css::uno::Sequence<sal_Int32>& rOffset, bool useOffset)
{ {
if (!m_transliterator) if (!m_transliterator)
throw css::uno::RuntimeException(); throw css::uno::RuntimeException();
......
...@@ -63,8 +63,8 @@ i18nutil::OneToOneMappingTable_t const IandE[] = { ...@@ -63,8 +63,8 @@ i18nutil::OneToOneMappingTable_t const IandE[] = {
}; };
OUString SAL_CALL OUString
ignoreIandEfollowedByYa_ja_JP::folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) ignoreIandEfollowedByYa_ja_JP::foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
// Create a string buffer which can hold nCount + 1 characters. // Create a string buffer which can hold nCount + 1 characters.
// The reference count is 1 now. // The reference count is 1 now.
......
...@@ -79,8 +79,8 @@ i18nutil::OneToOneMappingTable_t const ignoreIterationMark_ja_JP_mappingTable[] ...@@ -79,8 +79,8 @@ i18nutil::OneToOneMappingTable_t const ignoreIterationMark_ja_JP_mappingTable[]
}; };
OUString SAL_CALL OUString
ignoreIterationMark_ja_JP::folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) ignoreIterationMark_ja_JP::foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
i18nutil::oneToOneMapping aTable(ignoreIterationMark_ja_JP_mappingTable, sizeof(ignoreIterationMark_ja_JP_mappingTable)); i18nutil::oneToOneMapping aTable(ignoreIterationMark_ja_JP_mappingTable, sizeof(ignoreIterationMark_ja_JP_mappingTable));
......
...@@ -28,11 +28,11 @@ using namespace com::sun::star::lang; ...@@ -28,11 +28,11 @@ using namespace com::sun::star::lang;
namespace i18npool { namespace i18npool {
OUString SAL_CALL OUString
ignoreKana::folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) ignoreKana::foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
rtl::Reference< hiraganaToKatakana > t1(new hiraganaToKatakana); rtl::Reference< hiraganaToKatakana > t1(new hiraganaToKatakana);
return t1->transliterate(inStr, startPos, nCount, offset); return t1->transliterateImpl(inStr, startPos, nCount, offset, useOffset);
} }
Sequence< OUString > SAL_CALL Sequence< OUString > SAL_CALL
......
...@@ -24,8 +24,8 @@ using namespace com::sun::star::lang; ...@@ -24,8 +24,8 @@ using namespace com::sun::star::lang;
namespace i18npool { namespace i18npool {
OUString SAL_CALL OUString
ignoreKiKuFollowedBySa_ja_JP::folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) ignoreKiKuFollowedBySa_ja_JP::foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
// Create a string buffer which can hold nCount + 1 characters. // Create a string buffer which can hold nCount + 1 characters.
// The reference count is 1 now. // The reference count is 1 now.
......
...@@ -286,8 +286,8 @@ static const sal_Unicode table_halfwidth[] = { ...@@ -286,8 +286,8 @@ static const sal_Unicode table_halfwidth[] = {
}; };
OUString SAL_CALL OUString
ignoreProlongedSoundMark_ja_JP::folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) ignoreProlongedSoundMark_ja_JP::foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
// Create a string buffer which can hold nCount + 1 characters. // Create a string buffer which can hold nCount + 1 characters.
// The reference count is 1 now. // The reference count is 1 now.
......
...@@ -26,11 +26,11 @@ using namespace com::sun::star::lang; ...@@ -26,11 +26,11 @@ using namespace com::sun::star::lang;
namespace i18npool { namespace i18npool {
OUString SAL_CALL OUString
ignoreSize_ja_JP::folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) ignoreSize_ja_JP::foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
rtl::Reference< smallToLarge_ja_JP > t1(new smallToLarge_ja_JP); rtl::Reference< smallToLarge_ja_JP > t1(new smallToLarge_ja_JP);
return t1->transliterate(inStr, startPos, nCount, offset); return t1->transliterateImpl(inStr, startPos, nCount, offset, useOffset);
} }
......
...@@ -28,11 +28,11 @@ using namespace com::sun::star::lang; ...@@ -28,11 +28,11 @@ using namespace com::sun::star::lang;
namespace i18npool { namespace i18npool {
OUString SAL_CALL OUString
ignoreWidth::folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset ) ignoreWidth::foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset )
{ {
rtl::Reference< fullwidthToHalfwidth > t1(new fullwidthToHalfwidth); rtl::Reference< fullwidthToHalfwidth > t1(new fullwidthToHalfwidth);
return t1->transliterate(inStr, startPos, nCount, offset); return t1->transliterateImpl(inStr, startPos, nCount, offset, useOffset);
} }
Sequence< OUString > SAL_CALL Sequence< OUString > SAL_CALL
......
...@@ -48,9 +48,9 @@ TextToPronounce_zh::getPronounce(const sal_Unicode ch) ...@@ -48,9 +48,9 @@ TextToPronounce_zh::getPronounce(const sal_Unicode ch)
return emptyString; return emptyString;
} }
OUString SAL_CALL OUString
TextToPronounce_zh::folding(const OUString & inStr, sal_Int32 startPos, TextToPronounce_zh::foldingImpl(const OUString & inStr, sal_Int32 startPos,
sal_Int32 nCount, Sequence< sal_Int32 > & offset) sal_Int32 nCount, Sequence< sal_Int32 > & offset, bool useOffset)
{ {
OUStringBuffer sb; OUStringBuffer sb;
const sal_Unicode * chArr = inStr.getStr() + startPos; const sal_Unicode * chArr = inStr.getStr() + startPos;
......
...@@ -78,12 +78,12 @@ transliteration_Ignore::getType() ...@@ -78,12 +78,12 @@ transliteration_Ignore::getType()
} }
OUString SAL_CALL OUString
transliteration_Ignore::transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, transliteration_Ignore::transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
Sequence< sal_Int32 >& offset ) Sequence< sal_Int32 >& offset, bool useOffset)
{ {
// The method folding is defined in a sub class. // The method folding is defined in a sub class.
return folding( inStr, startPos, nCount, offset); return foldingImpl( inStr, startPos, nCount, offset, useOffset);
} }
Sequence< OUString > Sequence< OUString >
...@@ -114,9 +114,9 @@ transliteration_Ignore::transliterateRange( const OUString& str1, const OUString ...@@ -114,9 +114,9 @@ transliteration_Ignore::transliterateRange( const OUString& str1, const OUString
return r; return r;
} }
OUString SAL_CALL OUString
transliteration_Ignore::folding( const OUString& inStr, sal_Int32 startPos, transliteration_Ignore::foldingImpl( const OUString& inStr, sal_Int32 startPos,
sal_Int32 nCount, Sequence< sal_Int32 >& offset) sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset)
{ {
// Create a string buffer which can hold nCount + 1 characters. // Create a string buffer which can hold nCount + 1 characters.
// The reference count is 1 now. // The reference count is 1 now.
......
...@@ -34,8 +34,8 @@ sal_Int16 SAL_CALL transliteration_Numeric::getType() ...@@ -34,8 +34,8 @@ sal_Int16 SAL_CALL transliteration_Numeric::getType()
return TransliterationType::NUMERIC; return TransliterationType::NUMERIC;
} }
OUString SAL_CALL OUString
transliteration_Numeric::folding( const OUString& /*inStr*/, sal_Int32 /*startPos*/, sal_Int32 /*nCount*/, Sequence< sal_Int32 >& /*offset*/ ) transliteration_Numeric::foldingImpl( const OUString& /*inStr*/, sal_Int32 /*startPos*/, sal_Int32 /*nCount*/, Sequence< sal_Int32 >& /*offset*/, bool )
{ {
throw RuntimeException(); throw RuntimeException();
} }
...@@ -58,7 +58,7 @@ Sequence< OUString > SAL_CALL ...@@ -58,7 +58,7 @@ Sequence< OUString > SAL_CALL
OUString OUString
transliteration_Numeric::transliterateBullet( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, transliteration_Numeric::transliterateBullet( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
Sequence< sal_Int32 >& offset ) Sequence< sal_Int32 >& offset, bool useOffset )
{ {
sal_Int32 number = -1, j = 0, endPos = startPos + nCount; sal_Int32 number = -1, j = 0, endPos = startPos + nCount;
...@@ -110,12 +110,12 @@ transliteration_Numeric::transliterateBullet( const OUString& inStr, sal_Int32 s ...@@ -110,12 +110,12 @@ transliteration_Numeric::transliterateBullet( const OUString& inStr, sal_Int32 s
return OUString( pStr, SAL_NO_ACQUIRE ); return OUString( pStr, SAL_NO_ACQUIRE );
} }
OUString SAL_CALL OUString
transliteration_Numeric::transliterate( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, transliteration_Numeric::transliterateImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
Sequence< sal_Int32 >& offset ) Sequence< sal_Int32 >& offset, bool useOffset )
{ {
if (tableSize) if (tableSize)
return transliterateBullet( inStr, startPos, nCount, offset); return transliterateBullet( inStr, startPos, nCount, offset, useOffset);
else else
return rtl::Reference<NativeNumberSupplierService>(new NativeNumberSupplierService(useOffset))->getNativeNumberString( inStr.copy(startPos, nCount), aLocale, nNativeNumberMode, offset ); return rtl::Reference<NativeNumberSupplierService>(new NativeNumberSupplierService(useOffset))->getNativeNumberString( inStr.copy(startPos, nCount), aLocale, nNativeNumberMode, offset );
} }
......
...@@ -30,9 +30,9 @@ sal_Int16 SAL_CALL transliteration_OneToOne::getType() ...@@ -30,9 +30,9 @@ sal_Int16 SAL_CALL transliteration_OneToOne::getType()
return TransliterationType::ONE_TO_ONE; return TransliterationType::ONE_TO_ONE;
} }
OUString SAL_CALL OUString
transliteration_OneToOne::folding( const OUString& /*inStr*/, sal_Int32 /*startPos*/, transliteration_OneToOne::foldingImpl( const OUString& /*inStr*/, sal_Int32 /*startPos*/,
sal_Int32 /*nCount*/, Sequence< sal_Int32 >& /*offset*/) sal_Int32 /*nCount*/, Sequence< sal_Int32 >& /*offset*/, bool)
{ {
throw RuntimeException(); throw RuntimeException();
} }
...@@ -50,9 +50,9 @@ transliteration_OneToOne::transliterateRange( const OUString& /*str1*/, const OU ...@@ -50,9 +50,9 @@ transliteration_OneToOne::transliterateRange( const OUString& /*str1*/, const OU
throw RuntimeException(); throw RuntimeException();
} }
OUString SAL_CALL OUString
transliteration_OneToOne::transliterate( const OUString& inStr, sal_Int32 startPos, transliteration_OneToOne::transliterateImpl( const OUString& inStr, sal_Int32 startPos,
sal_Int32 nCount, Sequence< sal_Int32 >& offset) sal_Int32 nCount, Sequence< sal_Int32 >& offset, bool useOffset)
{ {
// Create a string buffer which can hold nCount + 1 characters. // Create a string buffer which can hold nCount + 1 characters.
// The reference count is 1 now. // The reference count is 1 now.
......
...@@ -88,10 +88,10 @@ static MappingType lcl_getMappingTypeForToggleCase( MappingType nMappingType, sa ...@@ -88,10 +88,10 @@ static MappingType lcl_getMappingTypeForToggleCase( MappingType nMappingType, sa
return nRes; return nRes;
} }
OUString SAL_CALL OUString
Transliteration_body::transliterate( Transliteration_body::transliterateImpl(
const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
Sequence< sal_Int32 >& offset) Sequence< sal_Int32 >& offset, bool useOffset)
{ {
const sal_Unicode *in = inStr.getStr() + startPos; const sal_Unicode *in = inStr.getStr() + startPos;
...@@ -201,11 +201,11 @@ Transliteration_body::transliterateChar2Char( sal_Unicode inChar ) ...@@ -201,11 +201,11 @@ Transliteration_body::transliterateChar2Char( sal_Unicode inChar )
return map.map[0]; return map.map[0];
} }
OUString SAL_CALL OUString
Transliteration_body::folding( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, Transliteration_body::foldingImpl( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
Sequence< sal_Int32 >& offset) Sequence< sal_Int32 >& offset, bool useOffset)
{ {
return transliterate(inStr, startPos, nCount, offset); return transliterateImpl(inStr, startPos, nCount, offset, useOffset);
} }
Transliteration_casemapping::Transliteration_casemapping() Transliteration_casemapping::Transliteration_casemapping()
...@@ -303,9 +303,9 @@ static OUString transliterate_titlecase_Impl( ...@@ -303,9 +303,9 @@ static OUString transliterate_titlecase_Impl(
// this function expects to be called on a word-by-word basis, // this function expects to be called on a word-by-word basis,
// namely that startPos points to the first char of the word // namely that startPos points to the first char of the word
OUString SAL_CALL Transliteration_titlecase::transliterate( OUString Transliteration_titlecase::transliterateImpl(
const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
Sequence< sal_Int32 >& offset ) Sequence< sal_Int32 >& offset, bool )
{ {
return transliterate_titlecase_Impl( inStr, startPos, nCount, aLocale, offset ); return transliterate_titlecase_Impl( inStr, startPos, nCount, aLocale, offset );
} }
...@@ -319,9 +319,9 @@ Transliteration_sentencecase::Transliteration_sentencecase() ...@@ -319,9 +319,9 @@ Transliteration_sentencecase::Transliteration_sentencecase()
// this function expects to be called on a sentence-by-sentence basis, // this function expects to be called on a sentence-by-sentence basis,
// namely that startPos points to the first word (NOT first char!) in the sentence // namely that startPos points to the first word (NOT first char!) in the sentence
OUString SAL_CALL Transliteration_sentencecase::transliterate( OUString Transliteration_sentencecase::transliterateImpl(
const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount,
Sequence< sal_Int32 >& offset ) Sequence< sal_Int32 >& offset, bool )
{ {
return transliterate_titlecase_Impl( inStr, startPos, nCount, aLocale, offset ); return transliterate_titlecase_Impl( inStr, startPos, nCount, aLocale, offset );
} }
......
...@@ -31,7 +31,6 @@ transliteration_commonclass::transliteration_commonclass() ...@@ -31,7 +31,6 @@ transliteration_commonclass::transliteration_commonclass()
{ {
transliterationName = ""; transliterationName = "";
implementationName = ""; implementationName = "";
useOffset = true;
} }
OUString SAL_CALL transliteration_commonclass::getName() OUString SAL_CALL transliteration_commonclass::getName()
...@@ -109,10 +108,7 @@ OUString SAL_CALL ...@@ -109,10 +108,7 @@ OUString SAL_CALL
transliteration_commonclass::transliterateString2String( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount ) transliteration_commonclass::transliterateString2String( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount )
{ {
Sequence < sal_Int32 > dummy_offset; Sequence < sal_Int32 > dummy_offset;
useOffset = false; return transliterateImpl(inStr, startPos, nCount, dummy_offset, false);
OUString tmpStr = transliterate(inStr, startPos, nCount, dummy_offset);
useOffset = true;
return tmpStr;
} }
OUString SAL_CALL OUString SAL_CALL
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment