[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    KMacroExpander convience methods for kdelibs4_snapshot?
From:       Sascha Cunz <sascha.cunz () tiscali ! de>
Date:       2005-09-22 17:30:17
Message-ID: 200509221930.17966.sascha.cunz () tiscali ! de
[Download RAW message or body]

Hi,
in trunk, KMacroExpander was changed to use QHash instead of QMap. This change 
is not yet in kdelibs4_snapshot.

I'm about to convert and write lots of new code for kdevelop that will use 
KMacroExpander, and as i expect that QMap<QString,QString> will appear there 
about 75 to 100 times and i actually do not want to change that later, should 
I
- merge the change from 439322 to 457320 in the kmacroexpander.* files to
  kdelibs4_snapshot
- commit convience methods to kdelibs4_snapshot (i.e. like attached patch)
- use a "typedef QMap<QString,QString> KMacroExpanderMap;" in kdevelop
- just accept the fact, that i'll have to take 2 hours and walk over it again
  and change it
- stop using kdelibs4_snapshot totally
- something i've not yet thought of?

Cheers Sascha

["kme.patch" (text/x-diff)]

Index: kmacroexpander.h
===================================================================
--- kmacroexpander.h	(Revision 462022)
+++ kmacroexpander.h	(Arbeitskopie)
@@ -271,6 +271,7 @@
      * \endcode
      */
     KDECORE_EXPORT QString expandMacros( const QString &str, const \
QMap<QChar,QString> &map, QChar c = '%' ); +    KDECORE_EXPORT QString expandMacros( \
const QString &str, const QHash<QChar,QString> &map, QChar c = '%' );  
     /**
      * Perform safe macro expansion (substitution) on a string for use
@@ -296,6 +297,7 @@
      * \endcode
      */
     KDECORE_EXPORT QString expandMacrosShellQuote( const QString &str, const \
QMap<QChar,QString> &map, QChar c = '%' ); +    KDECORE_EXPORT QString \
expandMacrosShellQuote( const QString &str, const QHash<QChar,QString> &map, QChar c \
= '%' );  
     /**
      * Perform safe macro expansion (substitution) on a string.
@@ -321,6 +323,7 @@
      * \endcode
      */
     KDECORE_EXPORT QString expandMacros( const QString &str, const \
QMap<QString,QString> &map, QChar c = '%' ); +    KDECORE_EXPORT QString \
expandMacros( const QString &str, const QHash<QString,QString> &map, QChar c = '%' ); \
  /**
      * Perform safe macro expansion (substitution) on a string for use
@@ -349,13 +352,16 @@
      * \endcode
      */
     KDECORE_EXPORT QString expandMacrosShellQuote( const QString &str, const \
QMap<QString,QString> &map, QChar c = '%' ); +    KDECORE_EXPORT QString \
expandMacrosShellQuote( const QString &str, const QHash<QString,QString> &map, QChar \
c = '%' );  
     /**
      * Same as above, except that the macros expand to string lists that
      * are simply join(" ")ed together.
      */
     KDECORE_EXPORT QString expandMacros( const QString &str, const \
QMap<QChar,QStringList> &map, QChar c = '%' ); +    KDECORE_EXPORT QString \
expandMacros( const QString &str, const QHash<QChar,QStringList> &map, QChar c = '%' \
                );
     KDECORE_EXPORT QString expandMacros( const QString &str, const \
QMap<QString,QStringList> &map, QChar c = '%' ); +    KDECORE_EXPORT QString \
expandMacros( const QString &str, const QHash<QString,QStringList> &map, QChar c = \
'%' );  
     /*
      * Same as above, except that the macros expand to string lists.
@@ -364,7 +370,9 @@
      * quoted string.
      */
     KDECORE_EXPORT QString expandMacrosShellQuote( const QString &str, const \
QMap<QChar,QStringList> &map, QChar c = '%' ); +    KDECORE_EXPORT QString \
expandMacrosShellQuote( const QString &str, const QHash<QChar,QStringList> &map, \
                QChar c = '%' );
     KDECORE_EXPORT QString expandMacrosShellQuote( const QString &str, const \
QMap<QString,QStringList> &map, QChar c = '%' ); +    KDECORE_EXPORT QString \
expandMacrosShellQuote( const QString &str, const QHash<QString,QStringList> &map, \
QChar c = '%' );  }
 
 #endif /* _KMACROEXPANDER_H */
Index: kmacroexpander.cpp
===================================================================
--- kmacroexpander.cpp	(Revision 462022)
+++ kmacroexpander.cpp	(Arbeitskopie)
@@ -27,6 +27,17 @@
 
 #include <kdebug.h>
 
+#include <QHash>
+
+template <class A, class B> QMap<A,B> hashToMap( const QHash<A,B>& h )
+{
+    QMap<A,B> m;
+    QHash<A,B>::const_iterator i = h.constBegin();
+    for( ; i != h.constEnd(); ++i )
+        m[i.key()] = i.value();
+    return m;
+}
+
 KMacroExpanderBase::KMacroExpanderBase( QChar c )
 {
     escapechar = c;
@@ -539,4 +550,12 @@
   QString expandMacros( const QString &ostr, const QMap<QString,QStringList> &map, \
QChar c ) { return TexpandMacros( ostr, map, c ); }  QString expandMacrosShellQuote( \
const QString &ostr, const QMap<QString,QStringList> &map, QChar c ) { return \
TexpandMacrosShellQuote( ostr, map, c ); }  
+  QString expandMacros( const QString &ostr, const QHash<QChar,QString> &map, QChar \
c ) { return TexpandMacros( ostr, hashToMap(map), c ); } +  QString \
expandMacrosShellQuote( const QString &ostr, const QHash<QChar,QString> &map, QChar c \
) { return TexpandMacrosShellQuote( ostr, hashToMap(map), c ); } +  QString \
expandMacros( const QString &ostr, const QHash<QString,QString> &map, QChar c ) { \
return TexpandMacros( ostr, hashToMap(map), c ); } +  QString expandMacrosShellQuote( \
const QString &ostr, const QHash<QString,QString> &map, QChar c ) { return \
TexpandMacrosShellQuote( ostr, hashToMap(map), c ); } +  QString expandMacros( const \
QString &ostr, const QHash<QChar,QStringList> &map, QChar c ) { return TexpandMacros( \
ostr, hashToMap(map), c ); } +  QString expandMacrosShellQuote( const QString &ostr, \
const QHash<QChar,QStringList> &map, QChar c ) { return TexpandMacrosShellQuote( \
ostr, hashToMap(map), c ); } +  QString expandMacros( const QString &ostr, const \
QHash<QString,QStringList> &map, QChar c ) { return TexpandMacros( ostr, \
hashToMap(map), c ); } +  QString expandMacrosShellQuote( const QString &ostr, const \
QHash<QString,QStringList> &map, QChar c ) { return TexpandMacrosShellQuote( ostr, \
hashToMap(map), c ); }  } // namespace



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic