[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim/kleopatra/models
From: Marc Mutz <mutz () kde ! org>
Date: 2008-04-22 7:15:54
Message-ID: 1208848554.875135.29424.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 799739 by mutz:
Use predicates.h
M +25 -45 keylistmodel.cpp
--- trunk/KDE/kdepim/kleopatra/models/keylistmodel.cpp #799738:799739
@@ -33,6 +33,7 @@
#include <config-kleopatra.h>
#include "keylistmodel.h"
+#include "predicates.h"
#ifdef KLEO_MODEL_TEST
# include "modeltest.h"
@@ -73,27 +74,6 @@
using namespace Kleo;
using namespace boost;
-namespace {
- template <template <typename T> class Op>
- struct ByFingerprint {
- typedef bool result_type;
-
- bool operator()( const Key & lhs, const Key & rhs ) const {
- return Op<int>()( qstricmp( lhs.primaryFingerprint(), \
rhs.primaryFingerprint() ), 0 );
- }
- bool operator()( const Key & lhs, const char * rhs ) const {
- return Op<int>()( qstricmp( lhs.primaryFingerprint(), rhs ), 0 );
- }
- bool operator()( const char * lhs, const Key & rhs ) const {
- return Op<int>()( qstricmp( lhs, rhs.primaryFingerprint() ), 0 );
- }
- bool operator()( const char * lhs, const char * rhs ) const {
- return Op<int>()( qstricmp( lhs, rhs ), 0 );
- }
- };
-
-}
-
class AbstractKeyListModel::Private {
public:
Private() : m_toolTipOptions( Formatting::Validity ) {}
@@ -130,7 +110,7 @@
std::transform( indexes.begin(), indexes.end(),
std::back_inserter( result ),
bind( &AbstractKeyListModel::key, this, _1 ) );
- result.erase( std::unique( result.begin(), result.end(), \
ByFingerprint<std::equal_to>() ), result.end() ); + result.erase( std::unique( \
result.begin(), result.end(), _detail::ByFingerprint<std::equal_to>() ), result.end() \
); return result;
}
@@ -174,7 +154,7 @@
std::remove_copy_if( keys.begin(), keys.end(),
std::back_inserter( sorted ),
bind( &Key::isNull, _1 ) );
- std::sort( sorted.begin(), sorted.end(), ByFingerprint<std::less>() );
+ std::sort( sorted.begin(), sorted.end(), _detail::ByFingerprint<std::less>() );
return doAddKeys( sorted );
}
@@ -385,7 +365,7 @@
assert( !key.isNull() );
const std::vector<Key>::const_iterator it
= qBinaryFind( mKeysByFingerprint.begin(), mKeysByFingerprint.end(),
- key, ByFingerprint<std::less>() );
+ key, _detail::ByFingerprint<std::less>() );
if ( it == mKeysByFingerprint.end() )
return QModelIndex();
else
@@ -394,7 +374,7 @@
QList<QModelIndex> FlatKeyListModel::doAddKeys( const std::vector<Key> & keys ) {
#ifdef __GNUC__
- assert( __gnu_cxx::is_sorted( keys.begin(), keys.end(), \
ByFingerprint<std::less>() ) ); + assert( __gnu_cxx::is_sorted( keys.begin(), \
keys.end(), _detail::ByFingerprint<std::less>() ) ); #endif
if ( keys.empty() )
return QList<QModelIndex>();
@@ -402,7 +382,7 @@
for ( std::vector<Key>::const_iterator it = keys.begin(), end = keys.end() ; it \
!= end ; ++it ) {
// find an insertion point:
- const std::vector<Key>::iterator pos = std::upper_bound( \
mKeysByFingerprint.begin(), mKeysByFingerprint.end(), *it, ByFingerprint<std::less>() \
); + const std::vector<Key>::iterator pos = std::upper_bound( \
mKeysByFingerprint.begin(), mKeysByFingerprint.end(), *it, \
_detail::ByFingerprint<std::less>() );
const unsigned int idx = std::distance( mKeysByFingerprint.begin(), pos );
if ( idx > 0 && qstrcmp( mKeysByFingerprint[idx-1].primaryFingerprint(), \
it->primaryFingerprint() ) == 0 ) { @@ -424,7 +404,7 @@
void FlatKeyListModel::doRemoveKey( const Key & key ) {
const std::vector<Key>::iterator it
= qBinaryFind( mKeysByFingerprint.begin(), mKeysByFingerprint.end(),
- key, ByFingerprint<std::less>() );
+ key, _detail::ByFingerprint<std::less>() );
if ( it == mKeysByFingerprint.end() )
return;
@@ -502,7 +482,7 @@
return QModelIndex();
const std::vector<Key>::const_iterator it
= qBinaryFind( mKeysByFingerprint.begin(), mKeysByFingerprint.end(),
- cleanChainID( key ), ByFingerprint<std::less>() );
+ cleanChainID( key ), _detail::ByFingerprint<std::less>() );
return it != mKeysByFingerprint.end() ? index( *it ) : QModelIndex();
}
@@ -547,7 +527,7 @@
}
const std::vector<Key>::const_iterator it
- = qBinaryFind( v->begin(), v->end(), key, ByFingerprint<std::less>() );
+ = qBinaryFind( v->begin(), v->end(), key, _detail::ByFingerprint<std::less>() );
if ( it == v->end() )
return QModelIndex();
@@ -562,7 +542,7 @@
std::vector<Key> & subjects = mKeysByExistingParent[issuer_fpr];
// find insertion point:
- const std::vector<Key>::iterator it = std::lower_bound( subjects.begin(), \
subjects.end(), key, ByFingerprint<std::less>() ); + const \
std::vector<Key>::iterator it = std::lower_bound( subjects.begin(), subjects.end(), \
key, _detail::ByFingerprint<std::less>() ); const int row = std::distance( \
subjects.begin(), it );
if ( it != subjects.end() && qstricmp( it->primaryFingerprint(), \
key.primaryFingerprint() ) == 0 ) { @@ -571,7 +551,7 @@
emit dataChanged( createIndex( row, 0, const_cast<char*>( issuer_fpr ) ), \
createIndex( row, NumColumns-1, const_cast<char*>( issuer_fpr ) ) ); } else {
// doesn't exist -> insert
- const std::vector<Key>::const_iterator pos = qBinaryFind( \
mKeysByFingerprint.begin(), mKeysByFingerprint.end(), issuer_fpr, \
ByFingerprint<std::less>() ); + const std::vector<Key>::const_iterator pos = \
qBinaryFind( mKeysByFingerprint.begin(), mKeysByFingerprint.end(), issuer_fpr, \
_detail::ByFingerprint<std::less>() ); assert( pos != mKeysByFingerprint.end() );
beginInsertRows( index( *pos ), row, row );
subjects.insert( it, key );
@@ -586,7 +566,7 @@
std::vector<Key> & subjects = mKeysByNonExistingParent[issuer_fpr];
// find insertion point:
- const std::vector<Key>::iterator it = std::lower_bound( subjects.begin(), \
subjects.end(), key, ByFingerprint<std::less>() ); + const \
std::vector<Key>::iterator it = std::lower_bound( subjects.begin(), subjects.end(), \
key, _detail::ByFingerprint<std::less>() );
if ( it != subjects.end() && qstricmp( it->primaryFingerprint(), \
key.primaryFingerprint() ) == 0 ) // exists -> replace
@@ -601,7 +581,7 @@
void HierarchicalKeyListModel::addTopLevelKey( const Key & key ) {
// find insertion point:
- const std::vector<Key>::iterator it = std::lower_bound( mTopLevels.begin(), \
mTopLevels.end(), key, ByFingerprint<std::less>() ); + const \
std::vector<Key>::iterator it = std::lower_bound( mTopLevels.begin(), \
mTopLevels.end(), key, _detail::ByFingerprint<std::less>() ); const int row = \
std::distance( mTopLevels.begin(), it );
if ( it != mTopLevels.end() && qstricmp( it->primaryFingerprint(), \
key.primaryFingerprint() ) == 0 ) { @@ -630,7 +610,7 @@
if ( !issuer_fpr || !*issuer_fpr )
continue;
const std::vector<Key>::const_iterator it
- = qBinaryFind( keys.begin(), keys.end(), issuer_fpr, \
ByFingerprint<std::less>() ); + = qBinaryFind( keys.begin(), \
keys.end(), issuer_fpr, _detail::ByFingerprint<std::less>() ); if ( it == keys.end() \
) continue;
add_edge( i, std::distance( keys.begin(), it ), graph );
@@ -653,7 +633,7 @@
QList<QModelIndex> HierarchicalKeyListModel::doAddKeys( const std::vector<Key> & \
keys ) { #ifdef __GNUC__
- assert( __gnu_cxx::is_sorted( keys.begin(), keys.end(), \
ByFingerprint<std::less>() ) ); + assert( __gnu_cxx::is_sorted( keys.begin(), \
keys.end(), _detail::ByFingerprint<std::less>() ) ); #endif
if ( keys.empty() )
return QList<QModelIndex>();
@@ -665,11 +645,11 @@
merged.reserve( keys.size() + mKeysByFingerprint.size() );
std::set_union( keys.begin(), keys.end(),
mKeysByFingerprint.begin(), mKeysByFingerprint.end(),
- std::back_inserter( merged ), ByFingerprint<std::less>() );
+ std::back_inserter( merged ), \
_detail::ByFingerprint<std::less>() );
mKeysByFingerprint = merged;
- std::set<Key, ByFingerprint<std::less> > changedParents;
+ std::set<Key, _detail::ByFingerprint<std::less> > changedParents;
Q_FOREACH( const Key & key, topological_sort( keys ) ) {
@@ -678,7 +658,7 @@
if ( !fpr || !*fpr )
continue;
- const bool keyAlreadyExisted = qBinaryFind( oldKeys.begin(), oldKeys.end(), \
key, ByFingerprint<std::less>() ) != oldKeys.end(); + const bool \
keyAlreadyExisted = qBinaryFind( oldKeys.begin(), oldKeys.end(), key, \
_detail::ByFingerprint<std::less>() ) != oldKeys.end();
const Map::iterator it = mKeysByNonExistingParent.find( fpr );
const std::vector<Key> children = it != mKeysByNonExistingParent.end() ? \
it->second : std::vector<Key>(); @@ -692,11 +672,11 @@
std::vector<Key>::iterator lastFP = mKeysByFingerprint.begin();
Q_FOREACH( const Key & k, children ) {
- last = qBinaryFind( last, mTopLevels.end(), k, \
ByFingerprint<std::less>() ); + last = qBinaryFind( last, \
mTopLevels.end(), k, _detail::ByFingerprint<std::less>() ); assert( last != \
mTopLevels.end() );
const int row = std::distance( mTopLevels.begin(), last );
- lastFP = qBinaryFind( lastFP, mKeysByFingerprint.end(), k, \
ByFingerprint<std::less>() ); + lastFP = qBinaryFind( lastFP, \
mKeysByFingerprint.end(), k, _detail::ByFingerprint<std::less>() ); assert( lastFP \
!= mKeysByFingerprint.end() );
const int fpRow = std::distance( mKeysByFingerprint.begin(), lastFP \
);
@@ -713,7 +693,7 @@
if ( !issuer_fpr || !*issuer_fpr )
// root or something...
addTopLevelKey( key );
- else if ( std::binary_search( mKeysByFingerprint.begin(), \
mKeysByFingerprint.end(), issuer_fpr, ByFingerprint<std::less>() ) ) + else if \
( std::binary_search( mKeysByFingerprint.begin(), mKeysByFingerprint.end(), \
issuer_fpr, _detail::ByFingerprint<std::less>() ) ) // parent exists...
addKeyWithParent( issuer_fpr, key );
else
@@ -759,7 +739,7 @@
return;
const std::vector<Key>::iterator it = qBinaryFind( mKeysByFingerprint.begin(), \
mKeysByFingerprint.end(),
- key, ByFingerprint<std::less>() );
+ key, \
_detail::ByFingerprint<std::less>() );
assert( it != mKeysByFingerprint.end() );
assert( mKeysByNonExistingParent.find( fpr ) == mKeysByNonExistingParent.end() \
); @@ -771,13 +751,13 @@
const char * const issuer_fpr = static_cast<const char*>( idx.internalPointer() \
);
if ( !issuer_fpr || !*issuer_fpr ) {
- const std::vector<Key>::iterator tlIt = qBinaryFind( mTopLevels.begin(), \
mTopLevels.end(), key, ByFingerprint<std::less>() ); + const \
std::vector<Key>::iterator tlIt = qBinaryFind( mTopLevels.begin(), mTopLevels.end(), \
key, _detail::ByFingerprint<std::less>() ); assert( tlIt != mTopLevels.end() );
mTopLevels.erase( tlIt );
} else {
const Map::iterator nexIt = mKeysByNonExistingParent.find( issuer_fpr );
if ( nexIt != mKeysByNonExistingParent.end() ) {
- const std::vector<Key>::iterator eit = qBinaryFind( \
nexIt->second.begin(), nexIt->second.end(), key, ByFingerprint<std::less>() ); + \
const std::vector<Key>::iterator eit = qBinaryFind( nexIt->second.begin(), \
nexIt->second.end(), key, _detail::ByFingerprint<std::less>() ); if ( eit != \
nexIt->second.end() ) nexIt->second.erase( eit );
if ( nexIt->second.empty() )
@@ -786,7 +766,7 @@
const Map::iterator exIt = mKeysByExistingParent.find( issuer_fpr );
if ( exIt != mKeysByExistingParent.end() ) {
- const std::vector<Key>::iterator eit = qBinaryFind( \
exIt->second.begin(), exIt->second.end(), key, ByFingerprint<std::less>() ); + \
const std::vector<Key>::iterator eit = qBinaryFind( exIt->second.begin(), \
exIt->second.end(), key, _detail::ByFingerprint<std::less>() ); if ( eit != \
exIt->second.end() ) exIt->second.erase( eit );
if ( exIt->second.empty() )
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic