~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to libdrizzle-2.0/libdrizzle.hpp

Fix merge issues with 1.0 CC fix.

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
#include <boost/shared_ptr.hpp>
39
39
#include <cstring>
40
40
#include <fstream>
41
 
#include <libdrizzle/libdrizzle.h>
 
41
#include <libdrizzle-2.0/libdrizzle.h>
42
42
#include <map>
43
43
#include <sstream>
44
44
#include <stdexcept>
69
69
public:
70
70
  drizzle_c()
71
71
  {
72
 
    drizzle_create(*this);
 
72
    b_= drizzle_create();
73
73
  }
74
74
 
75
75
  ~drizzle_c()
76
76
  {
77
 
    drizzle_free(*this);
 
77
    drizzle_free(b_);
78
78
  }
79
79
 
80
80
  operator drizzle_st*()
81
81
  {
82
 
    return &b_;
 
82
    return b_;
83
83
  }
84
84
private:
85
 
  drizzle_st b_;
 
85
  drizzle_st *b_;
86
86
};
87
87
 
88
88
class result_c
148
148
public:
149
149
  explicit connection_c(drizzle_c& drizzle)
150
150
  {
151
 
    drizzle_con_create(drizzle, *this);
 
151
    b_= drizzle_con_create(drizzle);
 
152
 
 
153
    if (b_ == NULL)
 
154
    {
 
155
      throw "drizzle_con_create() failed";
 
156
    }
152
157
    read_conf_files();
153
158
  }
154
159
 
155
160
  ~connection_c()
156
161
  {
157
 
    drizzle_con_free(*this);
 
162
    drizzle_con_free(b_);
158
163
  }
159
164
 
160
165
  operator drizzle_con_st*()
161
166
  {
162
 
    return &b_;
 
167
    return b_;
163
168
  }
164
169
 
165
170
  const char* error()
166
171
  {
167
 
    return drizzle_con_error(*this);
 
172
    return drizzle_con_error(b_);
168
173
  }
169
174
 
170
175
  void set_tcp(const char* host, in_port_t port)
171
176
  {
172
 
    drizzle_con_set_tcp(*this, host, port);
 
177
    drizzle_con_set_tcp(b_, host, port);
173
178
  }
174
179
 
175
180
  void set_auth(const char* user, const char* password)
176
181
  {
177
 
    drizzle_con_set_auth(*this, user, password);
 
182
    drizzle_con_set_auth(b_, user, password);
178
183
  }
179
184
 
180
185
  void set_db(const char* db)
181
186
  {
182
 
    drizzle_con_set_db(*this, db);
 
187
    drizzle_con_set_db(b_, db);
183
188
  }
184
189
 
185
190
  drizzle_return_t query(result_c& result, const char* str, size_t str_size)
186
191
  {
187
192
    drizzle_return_t ret;
 
193
 
188
194
    drizzle_query(*this, result, str, str_size, &ret);
 
195
 
189
196
    if (!ret)
 
197
    {
190
198
      ret = drizzle_result_buffer(result);
 
199
    }
 
200
 
191
201
    return ret;
192
202
  }
193
203
 
205
215
  {
206
216
    result_c result;
207
217
    if (query(result, str, str_size))
 
218
    {
208
219
      throw bad_query(error());
 
220
    }
 
221
 
209
222
    return result;
210
223
  }
211
224
 
221
234
private:
222
235
  void read_conf_files();
223
236
 
224
 
  drizzle_con_st b_;
 
237
  drizzle_con_st *b_;
225
238
};
226
239
 
227
240
class query_c
247
260
  query_c& p_name(const std::string& v)
248
261
  {
249
262
    std::vector<char> r(2 * v.size() + 2);
250
 
    r.resize(drizzle_escape_string(&r.front() + 1, v.data(), v.size()) + 2);    
 
263
    r.resize(drizzle_escape_string(&r.front() + 1, r.size(), v.data(), v.size()) + 2);    
251
264
    r.front() = '`';
252
265
    r.back() = '`';
253
266
    p_raw(&r.front(), r.size());
274
287
  query_c& p(const std::string& v)
275
288
  {
276
289
    std::vector<char> r(2 * v.size() + 2);
277
 
    r.resize(drizzle_escape_string(&r.front() + 1, v.data(), v.size()) + 2);    
 
290
    r.resize(drizzle_escape_string(&r.front() + 1, r.size(), v.data(), v.size()) + 2);    
278
291
    r.front() = '\'';
279
292
    r.back() = '\'';
280
293
    p_raw(&r.front(), r.size());