Drizzled Public API Documentation

boolean.h
1 /* - mode: c++ c-basic-offset: 2; indent-tabs-mode: nil; -*-
2  * vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3  *
4  * Copyright (C) 2010 Brian Aker
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #pragma once
22 
23 #include <drizzled/field.h>
24 #include <string>
25 
26 namespace drizzled {
27 namespace field {
28 
29 class Boolean : public Field
30 {
31  bool ansi_display;
32 
33 public:
34  Boolean(unsigned char *ptr_arg,
35  uint32_t len_arg,
36  unsigned char *null_ptr_arg,
37  unsigned char null_bit_arg,
38  const char *field_name_arg,
39  bool ansi_display= false);
40 
41  enum_field_types type() const { return DRIZZLE_TYPE_BOOLEAN; }
42  enum ha_base_keytype key_type() const { return HA_KEYTYPE_BINARY; }
43  bool zero_pack() const { return 0; }
44  int reset(void) { ptr[0]= 0; return 0; }
45  uint32_t pack_length() const { return sizeof(unsigned char); }
46  uint32_t key_length() const { return sizeof(unsigned char); }
47 
48  int store(const char *to, uint32_t length, const charset_info_st * const charset);
49  int store(double );
50  int store(int64_t nr, bool unsigned_val);
51  int store_decimal(const drizzled::type::Decimal*);
52 
53  String *val_str(String*,String *) const;
54  double val_real() const;
55  int64_t val_int() const;
56  type::Decimal *val_decimal(type::Decimal *) const;
57 
58  Item_result result_type () const { return STRING_RESULT; }
59  int cmp(const unsigned char*, const unsigned char*);
60  void sort_string(unsigned char*, uint32_t);
61  uint32_t max_display_length() { return 5; } // longest string is "false"
62 
64  {
65  return true;
66  }
67 
68  inline String *val_str(String *str) { return val_str(str, str); }
69  uint32_t size_of() const { return sizeof(*this); }
70 
71  static size_t max_string_length()
72  {
73  return sizeof(unsigned char);
74  }
75 
76 private:
77  void set(bool v)
78  {
79  ptr[0]= v;
80  }
81 
82  bool isTrue() const
83  {
84  return ptr[0];
85  }
86 };
87 
88 } /* namespace field */
89 } /* namespace drizzled */
90 
91 
bool can_be_compared_as_int64_t() const
Definition: boolean.h:63
TODO: Rename this file - func.h is stupid.
uint32_t pack_length() const
Definition: boolean.h:45
unsigned char * ptr
Definition: field.h:71