• 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 
8 using namespace Evolution;
9 
10 struct DBIterator::Data {
11  DBWrapper *wrapper;
12  TQString key;
13  TQString data;
14  DBC* cursor;
15  bool atEnd;
16 };
17 
18 DBIterator::DBIterator( DBWrapper* wra) {
19  data = new Data;
20  data->wrapper = wra;
21  data->atEnd = false;
22  data->cursor = 0l;
23 }
24 DBIterator::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 }
35 DBIterator::~DBIterator() {
36  if (data->cursor)
37  data->cursor->c_close(data->cursor);
38  delete data;
39 }
40 DBIterator& 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 }
58 TQString DBIterator::key()const{
59  return data->key;
60 }
61 TQString DBIterator::value()const {
62  return data->data;
63 }
64 TQString DBIterator::operator*() {
65  return data->data;
66 }
67 DBIterator& 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 }
78 DBIterator& 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 }
89 bool DBIterator::operator==( const DBIterator& rhs ) {
90  if ( data->atEnd && data->atEnd == rhs.data->atEnd ) return true;
91 
92  return false;
93 }
94 bool DBIterator::operator!=( const DBIterator& rhs ) {
95  return !this->operator==(rhs );
96 }
97 struct DBWrapper::Data {
98  DB* db;
99  bool only;
100 };
101 DBWrapper::DBWrapper() {
102  data = new Data;
103  (void)db_create(&data->db, NULL, 0 );
104  data->only = false;
105 }
106 DBWrapper::~DBWrapper() {
107  data->db->close(data->db, 0 );
108  delete data;
109 }
110 bool 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 }
114 bool DBWrapper::save() {
115  return true;
116 }
117 DBIterator 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 }
142 DBIterator DBWrapper::end() {
143  DBIterator it(this);
144  it.data->atEnd = true;
145 
146  return it;
147 }
148 bool 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 }
165 bool 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 }
179 bool 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.1
This website is maintained by Timothy Pearson.