• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeabc
 

tdeabc

  • tdeabc
  • plugins
  • evolution
dbwrapper.cpp
1#include <db.h>
2
3#include <tqfile.h>
4
5#include "dbwrapper.h"
6
7
8using namespace Evolution;
9
10struct DBIterator::Data {
11 DBWrapper *wrapper;
12 TQString key;
13 TQString data;
14 DBC* cursor;
15 bool atEnd;
16};
17
18DBIterator::DBIterator( DBWrapper* wra) {
19 data = new Data;
20 data->wrapper = wra;
21 data->atEnd = false;
22 data->cursor = 0l;
23}
24DBIterator::DBIterator( const DBIterator& copy ) {
25 data = new Data;
26 data->wrapper = copy.data->wrapper;
27 data->key = copy.data->key;
28 data->data = copy.data->data;
29 data->atEnd = copy.data->atEnd;
30 if (copy.data->cursor )
31 copy.data->cursor->c_dup(copy.data->cursor, &data->cursor, 0 );
32 else
33 data->cursor = 0l;
34}
35DBIterator::~DBIterator() {
36 if (data->cursor)
37 data->cursor->c_close(data->cursor);
38 delete data;
39}
40DBIterator& DBIterator::operator=( const DBIterator& rhs ) {
41 if ( *this == rhs )
42 return *this;
43 if (data->cursor)
44 data->cursor->c_close(data->cursor);
45 delete data;
46 data = new Data;
47 data->wrapper = rhs.data->wrapper;
48 data->key = rhs.data->key;
49 data->data = rhs.data->data;
50 data->atEnd = rhs.data->atEnd;
51 if ( rhs.data->cursor )
52 rhs.data->cursor->c_dup(rhs.data->cursor, &data->cursor, 0 );
53 else
54 data->cursor = 0l;
55
56 return *this;
57}
58TQString DBIterator::key()const{
59 return data->key;
60}
61TQString DBIterator::value()const {
62 return data->data;
63}
64TQString DBIterator::operator*() {
65 return data->data;
66}
67DBIterator& DBIterator::operator++() {
68 DBT key, val;
69 ::memset(&key, 0, sizeof(key) );
70 ::memset(&val, 0, sizeof(val) );
71 if ( data->cursor )
72 if ( data->cursor->c_get(data->cursor, &key, &val,DB_NEXT ) != 0 )
73 data->atEnd = true;
74 data->key = TQString::fromUtf8( (char*)key.data, key.size );
75 data->data = TQString::fromUtf8( (char*)val.data, val.size );
76 return *this;
77}
78DBIterator& DBIterator::operator--() {
79 DBT key, val;
80 ::memset(&key, 0, sizeof(key) );
81 ::memset(&val, 0, sizeof(val) );
82 if ( data->cursor )
83 if ( data->cursor->c_get(data->cursor, &key, &val,DB_PREV ) != 0 )
84 data->atEnd = true;
85 data->key = TQString::fromUtf8( (char*)key.data, key.size );
86 data->data = TQString::fromUtf8( (char*)val.data, val.size );
87 return *this;
88}
89bool DBIterator::operator==( const DBIterator& rhs ) {
90 if ( data->atEnd && data->atEnd == rhs.data->atEnd ) return true;
91
92 return false;
93}
94bool DBIterator::operator!=( const DBIterator& rhs ) {
95 return !this->operator==(rhs );
96}
97struct DBWrapper::Data {
98 DB* db;
99 bool only;
100};
101DBWrapper::DBWrapper() {
102 data = new Data;
103 (void)db_create(&data->db, NULL, 0 );
104 data->only = false;
105}
106DBWrapper::~DBWrapper() {
107 data->db->close(data->db, 0 );
108 delete data;
109}
110bool DBWrapper::open( const TQString& file, bool on) {
111 data->only = on;
112 return !data->db->open(data->db, TQFile::encodeName( file ), NULL, DB_HASH, 0, 0666 );
113}
114bool DBWrapper::save() {
115 return true;
116}
117DBIterator DBWrapper::begin() {
118 DBIterator it(this);
119 DBC* cursor;
120 DBT key, val;
121 int ret;
122 ret = data->db->cursor(data->db, NULL, &cursor, 0 );
123 if (ret ) {
124 it.data->atEnd = true;
125 return it;
126 }
127
128 ::memset(&key, 0, sizeof(key) );
129 ::memset(&val, 0, sizeof(val) );
130 ret = cursor->c_get(cursor, &key, &val, DB_FIRST );
131 if (ret ) {
132 it.data->atEnd = true;
133 return it;
134 }
135
136 it.data->cursor = cursor;
137 it.data->key = TQString::fromUtf8((char*)key.data, key.size );
138 it.data->data = TQString::fromUtf8((char*)val.data, val.size );
139
140 return it;
141}
142DBIterator DBWrapper::end() {
143 DBIterator it(this);
144 it.data->atEnd = true;
145
146 return it;
147}
148bool DBWrapper::find( const TQString& _key, TQString& _val ) {
149 DBT key, val;
150 ::memset(&key, 0, sizeof(key) );
151 ::memset(&val, 0, sizeof(val) );
152
153 TQCString db_key = _key.local8Bit();
154 key.data = db_key.data();
155 key.size = db_key.size();
156
157 int ret = data->db->get(data->db, NULL, &key, &val, 0 );
158 if (!ret) {
159 _val = TQString::fromUtf8( (char*)val.data, val.size );
160 tqWarning("key: %s val: %sXXX", (char*)key.data, (char*)val.data );
161 return true;
162 }
163 return false;
164}
165bool DBWrapper::add( const TQString& _key, const TQString& _val ) {
166 TQCString db_key = _key.local8Bit();
167 TQCString db_val = _val.local8Bit();
168 DBT key, val;
169 ::memset(&key, 0, sizeof(key) );
170 ::memset(&val, 0, sizeof(val) );
171
172 key.data = db_key.data();
173 key.size = db_key.size();
174 val.data = db_val.data();
175 val.size = db_val.size();
176
177 return !data->db->put(data->db, NULL, &key, &val, 0 );
178}
179bool DBWrapper::remove( const TQString& _key ) {
180 TQCString db_key = _key.local8Bit();
181 DBT key;
182 memset(&key, 0, sizeof(key) );
183 key.data = db_key.data();
184 key.size = db_key.size();
185
186 return !data->db->del(data->db, NULL, &key, 0 );
187}
TDEStdAccel::copy
const TDEShortcut & copy()
TDEStdAccel::key
int key(StdAccel id)

tdeabc

Skip menu "tdeabc"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdeabc

Skip menu "tdeabc"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeabc by doxygen 1.9.4
This website is maintained by Timothy Pearson.