~drizzle-trunk/drizzle/development

466 by Monty Taylor
Fixed modelines... these files are c++.
1
/* - mode: c++ c-basic-offset: 2; indent-tabs-mode: nil; -*-
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
4
 *  Copyright (C) 2008 MySQL
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
#ifndef DRIZZLE_SERVER_FIELD_NEW_DECIMAL
22
#define DRIZZLE_SERVER_FIELD_NEW_DECIMAL
23
584.5.1 by Monty Taylor
Removed field includes from field.h.
24
#include <drizzled/field/num.h>
25
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
26
/* New decimal/numeric field which use fixed point arithmetic */
27
class Field_new_decimal :public Field_num {
28
private:
481 by Brian Aker
Remove all of uchar.
29
  int do_save_field_metadata(unsigned char *first_byte);
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
30
public:
892.1.2 by Monty Taylor
Fixed solaris warnings.
31
32
  using Field::store;
33
  using Field::val_int;
34
  using Field::val_str;
35
  using Field::cmp;
36
  using Field::unpack;
37
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
38
  /* The maximum number of decimal digits can be stored */
482 by Brian Aker
Remove uint.
39
  uint32_t precision;
40
  uint32_t bin_size;
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
41
  /*
42
    Constructors take max_length of the field as a parameter - not the
43
    precision as the number of decimal digits allowed.
44
    So for example we need to count length from precision handling
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
45
    CREATE TABLE ( DECIMAL(x,y))
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
46
  */
481 by Brian Aker
Remove all of uchar.
47
  Field_new_decimal(unsigned char *ptr_arg, uint32_t len_arg, unsigned char *null_ptr_arg,
48
                    unsigned char null_bit_arg,
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
49
                    enum utype unireg_check_arg, const char *field_name_arg,
206 by Brian Aker
Removed final uint dead types.
50
                    uint8_t dec_arg, bool zero_arg, bool unsigned_arg);
205 by Brian Aker
uint32 -> uin32_t
51
  Field_new_decimal(uint32_t len_arg, bool maybe_null_arg,
206 by Brian Aker
Removed final uint dead types.
52
                    const char *field_name_arg, uint8_t dec_arg,
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
53
                    bool unsigned_arg);
212.2.2 by Patrick Galbraith
Renamed FIELD_TYPE to DRIZZLE_TYPE
54
  enum_field_types type() const { return DRIZZLE_TYPE_NEWDECIMAL;}
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
55
  enum ha_base_keytype key_type() const { return HA_KEYTYPE_BINARY; }
56
  Item_result result_type () const { return DECIMAL_RESULT; }
57
  int  reset(void);
58
  bool store_value(const my_decimal *decimal_value);
59
  void set_value_on_overflow(my_decimal *decimal_value, bool sign);
482 by Brian Aker
Remove uint.
60
  int  store(const char *to, uint32_t length, const CHARSET_INFO * const charset);
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
61
  int  store(double nr);
62
  int  store(int64_t nr, bool unsigned_val);
398.1.1 by Monty Taylor
Remove typedef enum enum_drizzle_timestamp_type timestamp_type;
63
  int store_time(DRIZZLE_TIME *ltime, enum enum_drizzle_timestamp_type t_type);
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
64
  int  store_decimal(const my_decimal *);
65
  double val_real(void);
66
  int64_t val_int(void);
67
  my_decimal *val_decimal(my_decimal *);
68
  String *val_str(String*, String *);
481 by Brian Aker
Remove all of uchar.
69
  int cmp(const unsigned char *, const unsigned char *);
482 by Brian Aker
Remove uint.
70
  void sort_string(unsigned char *buff, uint32_t length);
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
71
  bool zero_pack() const { return 0; }
72
  void sql_type(String &str) const;
205 by Brian Aker
uint32 -> uin32_t
73
  uint32_t max_display_length() { return field_length; }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
74
  uint32_t size_of() const { return sizeof(*this); }
205 by Brian Aker
uint32 -> uin32_t
75
  uint32_t pack_length() const { return (uint32_t) bin_size; }
482 by Brian Aker
Remove uint.
76
  uint32_t pack_length_from_metadata(uint32_t field_metadata);
77
  uint32_t row_pack_length() { return pack_length(); }
78
  int compatible_field_size(uint32_t field_metadata);
1052.2.3 by Nathan Williams
No actual code changes. Changed Create_field to CreateField to be consistent with coding standards.
79
  uint32_t is_equal(CreateField *new_field);
481 by Brian Aker
Remove all of uchar.
80
  virtual const unsigned char *unpack(unsigned char* to, const unsigned char *from,
482 by Brian Aker
Remove uint.
81
                              uint32_t param_data, bool low_byte_first);
173.1.8 by Toru Maesaka
ripped out STRING and renamed new_decimal and new_date
82
};
83
84
#endif
85