summaryrefslogtreecommitdiffstats
path: root/tools/linguist/shared/translator.cpp
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2009-11-06 22:04:57 +0100
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2009-11-06 22:58:01 +0100
commit44cc160733a70f5dc613faed2051005de7e48f04 (patch)
tree214a5d22918c752af5aff3ddf2dde07e6ced2060 /tools/linguist/shared/translator.cpp
parentd4f08b8f15607ac2859c079e94bf8d02a9b8380c (diff)
kill TranslatorMessage::operator==() and qHash(TranslatorMessage)
preparation work ...
Diffstat (limited to 'tools/linguist/shared/translator.cpp')
-rw-r--r--tools/linguist/shared/translator.cpp28
1 files changed, 24 insertions, 4 deletions
diff --git a/tools/linguist/shared/translator.cpp b/tools/linguist/shared/translator.cpp
index 5bdd1331c9..0a59668974 100644
--- a/tools/linguist/shared/translator.cpp
+++ b/tools/linguist/shared/translator.cpp
@@ -82,7 +82,7 @@ QList<Translator::FileFormat> &Translator::registeredFileFormats()
void Translator::replaceSorted(const TranslatorMessage &msg)
{
- int index = m_messages.indexOf(msg);
+ int index = find(msg);
if (index == -1)
appendSorted(msg);
else
@@ -91,7 +91,7 @@ void Translator::replaceSorted(const TranslatorMessage &msg)
void Translator::extend(const TranslatorMessage &msg)
{
- int index = m_messages.indexOf(msg);
+ int index = find(msg);
if (index == -1) {
m_messages.append(msg);
} else {
@@ -302,6 +302,18 @@ bool Translator::release(QFile *iod, ConversionData &cd) const
return false;
}
+int Translator::find(const TranslatorMessage &msg) const
+{
+ for (int i = 0; i < m_messages.count(); ++i) {
+ const TranslatorMessage &tmsg = m_messages.at(i);
+ if (msg.context() == tmsg.context()
+ && msg.sourceText() == tmsg.sourceText()
+ && msg.comment() == tmsg.comment())
+ return i;
+ }
+ return -1;
+}
+
TranslatorMessage Translator::find(const QString &context,
const QString &comment, const TranslatorMessage::References &refs) const
{
@@ -429,12 +441,20 @@ Q_DECLARE_TYPEINFO(TranslatorMessagePtr, Q_MOVABLE_TYPE);
inline int qHash(TranslatorMessagePtr tmp)
{
- return qHash(*tmp.ptr);
+ return
+ qHash(tmp->context()) ^
+ qHash(tmp->sourceText()) ^
+ qHash(tmp->comment()) ^
+ qHash(tmp->id());
}
inline bool operator==(TranslatorMessagePtr tmp1, TranslatorMessagePtr tmp2)
{
- return *tmp1.ptr == *tmp2.ptr;
+ // Special treatment for context comments (empty source).
+ return (tmp1->context() == tmp2->context())
+ && tmp1->sourceText() == tmp2->sourceText()
+ && tmp1->id() == tmp2->id()
+ && (tmp1->sourceText().isEmpty() || tmp1->comment() == tmp2->comment());
}
Translator::Duplicates Translator::resolveDuplicates()