summaryrefslogtreecommitdiffabout
path: root/kabc/vcard/VCardEntity.cpp
authorzautrix <zautrix>2004-10-22 02:21:29 (UTC)
committer zautrix <zautrix>2004-10-22 02:21:29 (UTC)
commitc17118a0b2da49ec633e21cdcd51798c0c38644a (patch) (unidiff)
tree581fbcaa64a5566991ffe0bd3b1b2d428589d87f /kabc/vcard/VCardEntity.cpp
parentd6f9bd535e8cabe653bdff329500f9153e5e11fb (diff)
downloadkdepimpi-c17118a0b2da49ec633e21cdcd51798c0c38644a.zip
kdepimpi-c17118a0b2da49ec633e21cdcd51798c0c38644a.tar.gz
kdepimpi-c17118a0b2da49ec633e21cdcd51798c0c38644a.tar.bz2
made addressbook much faster
Diffstat (limited to 'kabc/vcard/VCardEntity.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/vcard/VCardEntity.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/kabc/vcard/VCardEntity.cpp b/kabc/vcard/VCardEntity.cpp
index 5fca3bc..b676cc7 100644
--- a/kabc/vcard/VCardEntity.cpp
+++ b/kabc/vcard/VCardEntity.cpp
@@ -73,9 +73,15 @@ VCardEntity::~VCardEntity()
73{ 73{
74} 74}
75 75
76#include <qdatetime.h>;
76 void 77 void
77VCardEntity::_parse() 78VCardEntity::_parse()
78{ 79{
80#if 0
81 QTime tim;
82 tim.start();
83 int num = 0;
84 // old code
79 vDebug("parse"); 85 vDebug("parse");
80 QCString s(strRep_); 86 QCString s(strRep_);
81 87
@@ -95,6 +101,45 @@ VCardEntity::_parse()
95 101
96 s.remove(0, i); 102 s.remove(0, i);
97 } 103 }
104
105#else
106 // this code is up to 17 (!) times faster
107 int start = 0;
108 QTime tim;
109 tim.start();
110 int i = 11;
111 int len = strRep_.length();
112 int num = 0;
113 while (i < len ) {
114 while( i < len ) {
115 int add = 1;
116 if ( strRep_.at(i) == 'B' ) {
117 if ( i+add < len && strRep_.at(i+add++) == 'E')
118 if ( i+add < len && strRep_.at(i+add++) == 'G')
119 if ( i+add < len && strRep_.at(i+add++) == 'I')
120 if ( i+add < len && strRep_.at(i+add++) == 'N')
121 if ( i+add < len && strRep_.at(i+add++) == ':')
122 if ( i+add < len && strRep_.at(i+add++) == 'V')
123 if ( i+add < len && strRep_.at(i+add++) == 'C')
124 if ( i+add < len && strRep_.at(i+add++) == 'A')
125 if ( i+add < len && strRep_.at(i+add++) == 'R')
126 if ( i+add < len && strRep_.at(i+add++) == 'D')
127 break;
128 }
129 ++i;
130 }
131 if ( i <= len ) {
132 ++num;
133 char* dat = strRep_.data()+start;
134 VCard * v = new VCard( QCString ( dat,i-start ) );
135 start = i;
136 cardList_.append(v);
137 v->parse();
138 }
139 i+= 11;
140 }
141#endif
142 //qDebug("***time %d found %d", tim.elapsed(), num);
98} 143}
99 144
100 void 145 void