1
2// vim:sw=2:ai
3
4/*
5 * Copyright (C) 2010-2011 DeNA Co.,Ltd.. All rights reserved.
6 * Copyright (C) 2011 Kentoku SHIBA
7 * See COPYRIGHT.txt for details.
8 */
9
10#ifndef DENA_CONFIG_HPP
11#define DENA_CONFIG_HPP
12
13#include "mysql_version.h"
14#if MYSQL_VERSION_ID < 50500
15#include "mysql_priv.h"
16#include <mysql/plugin.h>
17#else
18#include "sql_priv.h"
19#include "probes_mysql.h"
20#include "sql_class.h"
21#endif
22
23#define DENA_VERBOSE(lv, x) if (dena::verbose_level >= (lv)) { (x); }
24
25#ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS
26#define INFO_KIND_HS_RET_FIELDS 1
27#define INFO_KIND_HS_APPEND_STRING_REF 3
28#define INFO_KIND_HS_CLEAR_STRING_REF 4
29#define INFO_KIND_HS_INCREMENT_BEGIN 5
30#define INFO_KIND_HS_INCREMENT_END 6
31#define INFO_KIND_HS_DECREMENT_BEGIN 7
32#define INFO_KIND_HS_DECREMENT_END 8
33#endif
34
35namespace dena {
36
37#ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS
38struct uint32_info {
39 size_t info_size;
40 uint32 *info;
41};
42#endif
43
44struct conf_param {
45 String key;
46 String val;
47};
48
49uchar *conf_get_key(
50 conf_param *share,
51 size_t *length,
52 my_bool not_used __attribute__ ((unused))
53);
54
55struct config {
56 bool init;
57 HASH conf_hash;
58 config();
59 ~config();
60 conf_param *find(const String& key) const;
61 conf_param *find(const char *key) const;
62 String get_str(const String& key, const String& def =
63 String("", &my_charset_bin)) const;
64 String get_str(const char *key, const char *def = "") const;
65 long long get_int(const String& key, long long def = 0) const;
66 long long get_int(const char *key, long long def = 0) const;
67 bool replace(const char *key, const char *val);
68 bool replace(const char *key, long long val);
69 bool compare(const char *key, const char *val);
70 void list_all_params() const;
71 config& operator =(const config& x);
72};
73
74void parse_args(int argc, char **argv, config& conf);
75
76extern unsigned int verbose_level;
77
78};
79
80#endif
81
82