~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/field.h

  • Committer: Lee
  • Date: 2008-10-07 19:26:28 UTC
  • mto: (489.1.3 codestyle)
  • mto: This revision was merged to the branch mainline in revision 491.
  • Revision ID: lbieber@lbieber-desktop-20081007192628-jb8gcqxgjg3x9kwb
code clean up for Field_num

Show diffs side-by-side

added added

removed removed

Lines of Context:
543
543
  { return 0; }
544
544
};
545
545
 
546
 
 
547
 
class Field_num :public Field {
548
 
public:
549
 
  const uint8_t dec;
550
 
  bool decimal_precision;       // Purify cannot handle bit fields & only for decimal type
551
 
  bool unsigned_flag;   // Purify cannot handle bit fields
552
 
  Field_num(unsigned char *ptr_arg,uint32_t len_arg, unsigned char *null_ptr_arg,
553
 
            unsigned char null_bit_arg, utype unireg_check_arg,
554
 
            const char *field_name_arg,
555
 
            uint8_t dec_arg, bool zero_arg, bool unsigned_arg);
556
 
  Item_result result_type () const { return REAL_RESULT; }
557
 
  void add_unsigned(String &res) const;
558
 
  friend class Create_field;
559
 
  void make_field(Send_field *);
560
 
  uint32_t decimals() const { return (uint32_t) dec; }
561
 
  uint32_t size_of() const { return sizeof(*this); }
562
 
  bool eq_def(Field *field);
563
 
  int store_decimal(const my_decimal *);
564
 
  my_decimal *val_decimal(my_decimal *);
565
 
  uint32_t is_equal(Create_field *new_field);
566
 
  int check_int(const CHARSET_INFO * const cs, const char *str, int length,
567
 
                const char *int_end, int error);
568
 
  bool get_int(const CHARSET_INFO * const cs, const char *from, uint32_t len, 
569
 
               int64_t *rnd, uint64_t unsigned_max, 
570
 
               int64_t signed_min, int64_t signed_max);
571
 
};
572
 
 
573
 
class Field_tiny :public Field_num {
574
 
public:
575
 
  Field_tiny(unsigned char *ptr_arg, uint32_t len_arg, unsigned char *null_ptr_arg,
576
 
             unsigned char null_bit_arg,
577
 
             enum utype unireg_check_arg, const char *field_name_arg,
578
 
             bool zero_arg, bool unsigned_arg)
579
 
    :Field_num(ptr_arg, len_arg, null_ptr_arg, null_bit_arg,
580
 
               unireg_check_arg, field_name_arg,
581
 
               0, zero_arg,unsigned_arg)
582
 
    {}
583
 
  enum Item_result result_type () const { return INT_RESULT; }
584
 
  enum_field_types type() const { return DRIZZLE_TYPE_TINY;}
585
 
  enum ha_base_keytype key_type() const
586
 
    { return unsigned_flag ? HA_KEYTYPE_BINARY : HA_KEYTYPE_INT8; }
587
 
  int store(const char *to,uint32_t length, const CHARSET_INFO * const charset);
588
 
  int store(double nr);
589
 
  int store(int64_t nr, bool unsigned_val);
590
 
  int reset(void) { ptr[0]=0; return 0; }
591
 
  double val_real(void);
592
 
  int64_t val_int(void);
593
 
  String *val_str(String*,String *);
594
 
  bool send_binary(Protocol *protocol);
595
 
  int cmp(const unsigned char *,const unsigned char *);
596
 
  void sort_string(unsigned char *buff,uint32_t length);
597
 
  uint32_t pack_length() const { return 1; }
598
 
  void sql_type(String &str) const;
599
 
  uint32_t max_display_length() { return 4; }
600
 
 
601
 
  virtual unsigned char *pack(unsigned char* to, const unsigned char *from,
602
 
                      uint32_t max_length __attribute__((unused)),
603
 
                      bool low_byte_first __attribute__((unused)))
604
 
  {
605
 
    *to= *from;
606
 
    return to + 1;
607
 
  }
608
 
 
609
 
  virtual const unsigned char *unpack(unsigned char* to, const unsigned char *from,
610
 
                              uint32_t param_data __attribute__((unused)),
611
 
                              bool low_byte_first __attribute__((unused)))
612
 
  {
613
 
    *to= *from;
614
 
    return from + 1;
615
 
  }
616
 
};
617
 
 
618
546
/*
619
547
  Create field class for CREATE TABLE
620
548
*/
744
672
 */
745
673
#include <drizzled/field/str.h>
746
674
#include <drizzled/field/longstr.h>
 
675
#include <drizzled/field/num.h>
747
676
#include <drizzled/field/blob.h>
748
677
#include <drizzled/field/enum.h>
749
678
#include <drizzled/field/null.h>
753
682
#include <drizzled/field/double.h>
754
683
#include <drizzled/field/long.h>
755
684
#include <drizzled/field/int64_t.h>
 
685
#include <drizzled/field/num.h>
756
686
#include <drizzled/field/timetype.h>
757
687
#include <drizzled/field/timestamp.h>
758
688
#include <drizzled/field/datetime.h>
814
744
                        const char *cannot_convert_error_pos,
815
745
                        const char *end,
816
746
                        const CHARSET_INFO * const cs);
 
747
 
 
748
 
 
749
class Field_tiny :public Field_num {
 
750
public:
 
751
  Field_tiny(unsigned char *ptr_arg, uint32_t len_arg, unsigned char *null_ptr_arg,
 
752
             unsigned char null_bit_arg,
 
753
             enum utype unireg_check_arg, const char *field_name_arg,
 
754
             bool zero_arg, bool unsigned_arg)
 
755
    :Field_num(ptr_arg, len_arg, null_ptr_arg, null_bit_arg,
 
756
               unireg_check_arg, field_name_arg,
 
757
               0, zero_arg,unsigned_arg)
 
758
    {}
 
759
  enum Item_result result_type () const { return INT_RESULT; }
 
760
  enum_field_types type() const { return DRIZZLE_TYPE_TINY;}
 
761
  enum ha_base_keytype key_type() const
 
762
    { return unsigned_flag ? HA_KEYTYPE_BINARY : HA_KEYTYPE_INT8; }
 
763
  int store(const char *to,uint32_t length, const CHARSET_INFO * const charset);
 
764
  int store(double nr);
 
765
  int store(int64_t nr, bool unsigned_val);
 
766
  int reset(void) { ptr[0]=0; return 0; }
 
767
  double val_real(void);
 
768
  int64_t val_int(void);
 
769
  String *val_str(String*,String *);
 
770
  bool send_binary(Protocol *protocol);
 
771
  int cmp(const unsigned char *,const unsigned char *);
 
772
  void sort_string(unsigned char *buff,uint32_t length);
 
773
  uint32_t pack_length() const { return 1; }
 
774
  void sql_type(String &str) const;
 
775
  uint32_t max_display_length() { return 4; }
 
776
 
 
777
  virtual unsigned char *pack(unsigned char* to, const unsigned char *from,
 
778
                      uint32_t max_length __attribute__((unused)),
 
779
                      bool low_byte_first __attribute__((unused)))
 
780
  {
 
781
    *to= *from;
 
782
    return to + 1;
 
783
  }
 
784
 
 
785
  virtual const unsigned char *unpack(unsigned char* to, const unsigned char *from,
 
786
                              uint32_t param_data __attribute__((unused)),
 
787
                              bool low_byte_first __attribute__((unused)))
 
788
  {
 
789
    *to= *from;
 
790
    return from + 1;
 
791
  }
 
792
};