MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TableSpec.h
1 #ifndef NDBMEMCACHE_TABLESPEC_H
2 #define NDBMEMCACHE_TABLESPEC_H
3 
4 #ifndef __cplusplus
5 #error "This file is for C++ only"
6 #endif
7 
8 #include "config.h"
9 
13 class TableSpec {
14 
15  public:
16  /* Public Constructors */
17  TableSpec(int nkeys, int nvals);
18  TableSpec(const char *db, const char *tab, int nkeys, int nvals);
19  TableSpec(const char *sqltabname, const char *keycols, const char *valcols);
20  TableSpec(const TableSpec &);
21 
22  /* Other Public Methods */
23  ~TableSpec();
24  void setTable(const char *db, const char *table);
25  void setKeyColumns(const char *col1, ...);
26  void setValueColumns(const char *col1, ...);
27 
28  /* Public instance variables */
29  const char *schema_name;
30  const char *table_name;
31  const char *math_column;
32  const char *flags_column;
33  const char *cas_column;
34  const char *exp_column;
35  const char ** const key_columns;
36  const char ** const value_columns;
37  int nkeycols;
38  int nvaluecols;
39  uint32_t static_flags;
40 
41  private:
42  /* private instance variables */
43  struct {
44  unsigned none : 1;
45  unsigned schema_name : 1;
46  unsigned table_name : 1;
47  unsigned first_key : 1;
48  unsigned all_key_cols : 1;
49  unsigned first_val : 1;
50  unsigned all_val_cols : 1;
51  unsigned special_cols : 1;
52  } must_free;
53 
54  /* private class methods */
55  static int build_column_list(const char ** const &array, const char *list);
56 };
57 
58 
59 /* Inline functions */
60 
61 inline TableSpec::TableSpec(int nkeys, int nvals) :
62  nkeycols(nkeys),
63  nvaluecols(nvals),
64  schema_name(0), table_name(0),
65  math_column(0), flags_column(0),
66  cas_column(0), exp_column(0), static_flags(0),
67  key_columns(new const char *[nkeys]),
68  value_columns(new const char *[nvals]) {
69  must_free.none = 1;
70 };
71 
72 
73 inline TableSpec::TableSpec(const char *db, const char *tab,
74  int nkeys, int nvals) :
75  schema_name(db),
76  table_name(tab),
77  nkeycols(nkeys),
78  nvaluecols(nvals), static_flags(0),
79  math_column(0), flags_column(0),
80  cas_column(0), exp_column(0),
81  key_columns(new const char *[nkeys]),
82  value_columns(new const char *[nvals]) {
83  must_free.none = 1;
84 };
85 
86 inline void TableSpec::setTable(const char *db, const char *table) {
87  schema_name = db;
88  table_name = table;
89 }
90 
91 
92 #endif
93 
94