Drizzled Public API Documentation

temporal_format.h
Go to the documentation of this file.
1 /* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2  * vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3  *
4  * Copyright (C) 2008 Sun Microsystems, Inc.
5  *
6  * Authors:
7  *
8  * Jay Pipes <jay.pipes@sun.com>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23  */
24 
31 #pragma once
32 
33 #include <drizzled/common_fwd.h>
34 
35 #include PCRE_HEADER
36 
37 /* Output vector size for pcre matching. Should be multiple of 3. */
38 #define OUT_VECTOR_SIZE 30
39 
40 namespace drizzled {
41 
43 {
44 protected:
45  const char *_pattern;
46  pcre *_re;
47  int32_t _error_offset;
48  const char *_error;
49  /* Index of the pattern which is a specific temporal part */
50  uint32_t _year_part_index;
51  uint32_t _month_part_index;
52  uint32_t _day_part_index;
53  uint32_t _hour_part_index;
54  uint32_t _minute_part_index;
55  uint32_t _second_part_index;
56  uint32_t _usecond_part_index;
57  uint32_t _nsecond_part_index;
58 public:
65  TemporalFormat(const char *pattern);
66 
67  ~TemporalFormat();
68 
73  inline bool is_valid() const {return _re && (_error == NULL);}
79  inline void set_year_part_index(int32_t index) {_year_part_index= ((index - 1) * 2) + 2;}
85  inline void set_month_part_index(int32_t index) {_month_part_index= ((index - 1) * 2) + 2;}
91  inline void set_day_part_index(int32_t index) {_day_part_index= ((index - 1) * 2) + 2;}
97  inline void set_hour_part_index(int32_t index) {_hour_part_index= ((index - 1) * 2) + 2;}
103  inline void set_minute_part_index(int32_t index) {_minute_part_index= ((index - 1) * 2) + 2;}
109  inline void set_second_part_index(int32_t index) {_second_part_index= ((index - 1) * 2) + 2;}
115  inline void set_usecond_part_index(int32_t index) {_usecond_part_index= ((index - 1) * 2) + 2;}
121  inline void set_nsecond_part_index(int32_t index) {_nsecond_part_index= ((index - 1) * 2) + 2;}
130  bool matches(const char *data, size_t data_len, Temporal *to);
131 };
132 
133 
145 bool init_temporal_formats();
150 
151 } /* end namespace drizzled */
152 
bool matches(const char *data, size_t data_len, Temporal *to)
void set_second_part_index(int32_t index)
TODO: Rename this file - func.h is stupid.
void set_hour_part_index(int32_t index)
void set_minute_part_index(int32_t index)
void set_nsecond_part_index(int32_t index)
void set_year_part_index(int32_t index)
void set_month_part_index(int32_t index)
bool init_temporal_formats()
void set_day_part_index(int32_t index)
void set_usecond_part_index(int32_t index)
void deinit_temporal_formats()
TemporalFormat(const char *pattern)