~ubuntu-branches/ubuntu/wily/dovecot/wily-proposed

« back to all changes in this revision

Viewing changes to src/lib-sql/sql-api-private.h

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2008-08-02 14:00:15 UTC
  • mto: (1.11.1 upstream) (4.2.1 sid)
  • mto: This revision was merged to the branch mainline in revision 39.
  • Revision ID: james.westby@ubuntu.com-20080802140015-zbmjsgoodeyc9z4s
Tags: upstream-1.1.2
ImportĀ upstreamĀ versionĀ 1.1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef __SQL_API_PRIVATE_H
2
 
#define __SQL_API_PRIVATE_H
 
1
#ifndef SQL_API_PRIVATE_H
 
2
#define SQL_API_PRIVATE_H
3
3
 
4
4
#include "sql-api.h"
5
 
 
6
 
struct sql_db {
7
 
        const char *name;
8
 
 
 
5
#include "module-context.h"
 
6
 
 
7
struct sql_db_module_register {
 
8
        unsigned int id;
 
9
};
 
10
 
 
11
union sql_db_module_context {
 
12
        struct sql_db_module_register *reg;
 
13
};
 
14
 
 
15
extern struct sql_db_module_register sql_db_module_register;
 
16
 
 
17
struct sql_db_vfuncs {
9
18
        struct sql_db *(*init)(const char *connect_string);
10
19
        void (*deinit)(struct sql_db *db);
11
20
 
29
38
        void (*update)(struct sql_transaction_context *ctx, const char *query);
30
39
};
31
40
 
32
 
struct sql_result {
33
 
        struct sql_db *db;
 
41
struct sql_db {
 
42
        const char *name;
 
43
        struct sql_db_vfuncs v;
 
44
        ARRAY_DEFINE(module_contexts, union sql_db_module_context *);
 
45
};
34
46
 
 
47
struct sql_result_vfuncs {
35
48
        void (*free)(struct sql_result *result);
36
49
        int (*next_row)(struct sql_result *result);
37
50
 
42
55
 
43
56
        const char *(*get_field_value)(struct sql_result *result,
44
57
                                       unsigned int idx);
 
58
        const unsigned char *
 
59
                (*get_field_value_binary)(struct sql_result *result,
 
60
                                          unsigned int idx,
 
61
                                          size_t *size_r);
45
62
        const char *(*find_field_value)(struct sql_result *result,
46
63
                                        const char *field_name);
47
64
        const char *const *(*get_values)(struct sql_result *result);
48
65
 
49
66
        const char *(*get_error)(struct sql_result *result);
 
67
};
 
68
 
 
69
struct sql_field_map {
 
70
        enum sql_field_type type;
 
71
        size_t offset;
 
72
};
 
73
 
 
74
struct sql_result {
 
75
        struct sql_result_vfuncs v;
 
76
 
 
77
        struct sql_db *db;
 
78
        const struct sql_field_def *fields;
 
79
 
 
80
        unsigned int map_size;
 
81
        struct sql_field_map *map;
 
82
        void *fetch_dest;
 
83
        size_t fetch_dest_size;
50
84
 
51
85
        unsigned int callback:1;
52
86
};
55
89
        struct sql_db *db;
56
90
};
57
91
 
58
 
extern array_t ARRAY_DEFINE(sql_drivers, const struct sql_db *);
 
92
ARRAY_DEFINE_TYPE(sql_drivers, const struct sql_db *);
 
93
 
 
94
extern ARRAY_TYPE(sql_drivers) sql_drivers;
59
95
extern struct sql_result sql_not_connected_result;
60
96
 
61
97
#endif