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

List:       kde-commits
Subject:    extragear/sdk/kdevplatform/language/duchain
From:       Milian Wolff <mail () milianw ! de>
Date:       2010-04-06 21:21:15
Message-ID: 20100406212115.52B3CAC857 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1111877 by mwolff:

use binary search like @todo suggested, doesn't bring us that much though

 M  +15 -4     ducontext.cpp  


--- trunk/extragear/sdk/kdevplatform/language/duchain/ducontext.cpp #1111876:1111877
@@ -1458,22 +1458,33 @@
   return d_func()->m_usesSize();
 }
 
+bool usesRangeLessThan(const Use& left, const Use& right)
+{
+  return left.m_range.start < right.m_range.start;
+}
+
 int DUContext::createUse(int declarationIndex, const SimpleRange& range, \
KTextEditor::SmartRange* smartRange, int insertBefore)  {
   DUCHAIN_D_DYNAMIC(DUContext);
   ENSURE_CAN_WRITE
 
+  Use use(range, declarationIndex);
   if(insertBefore == -1) {
     //Find position where to insert
-    unsigned int a = 0;
     const unsigned int size = d->m_usesSize();
     const Use* uses = d->m_uses();
-    for(; a < size && range.start > uses[a].m_range.start; ++a) { ///@todo do binary \
search +    const Use* lowerBound = qLowerBound(uses, uses + size, use, \
usesRangeLessThan); +    insertBefore = lowerBound - uses;
+    // comment out to test this:
+    /*
+    unsigned int a = 0;
+    for(; a < size && range.start > uses[a].m_range.start; ++a) {
     }
-    insertBefore = a;
+    Q_ASSERT(a == insertBefore);
+    */
   }
 
-  insertToArray(d->m_usesList(), Use(range, declarationIndex), insertBefore);
+  insertToArray(d->m_usesList(), use, insertBefore);
   if(smartRange) {
     ///When this assertion triggers, then the updated context probably was not \
                smart-converted before processing. @see SmartConverter
     Q_ASSERT(uint(m_dynamicData->m_rangesForUses.size()) == d->m_usesSize()-1);


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

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