~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to libdrizzle-2.0/libdrizzle.hpp

  • Committer: Olaf van der Spek
  • Date: 2011-11-09 19:27:44 UTC
  • mto: This revision was merged to the branch mainline in revision 2457.
  • Revision ID: olafvdspek@gmail.com-20111109192744-xgu8uyi2f89ebwd1
Refactor

Show diffs side-by-side

added added

removed removed

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