~drizzle-trunk/drizzle/development

2154.2.11 by Brian Aker
Further strip out includes.
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
 *  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; version 2 of the License.
9
 *
10
 *  This program is distributed in the hope that it will be useful,
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 *  GNU General Public License for more details.
14
 *
15
 *  You should have received a copy of the GNU General Public License
16
 *  along with this program; if not, write to the Free Software
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
 */
19
20
21
#ifndef DRIZZLED_COPY_FIELD_H
22
#define DRIZZLED_COPY_FIELD_H
23
24
#include <drizzled/memory/sql_alloc.h>
25
#include <drizzled/sql_string.h>
26
27
28
namespace drizzled {
29
30
class Field;
31
32
/**
33
 * A class for quick copying data to fields
34
 */
35
class CopyField :public memory::SqlAlloc
36
{
37
  /**
38
    Convenience definition of a copy function returned by
39
    get_copy_func.
40
  */
41
  typedef void Copy_func(CopyField*);
42
  Copy_func *get_copy_func(Field *to, Field *from);
43
44
public:
45
  unsigned char *from_ptr;
46
  unsigned char *to_ptr;
47
  unsigned char *from_null_ptr;
48
  unsigned char *to_null_ptr;
49
  bool *null_row;
50
  uint32_t from_bit;
51
  uint32_t to_bit;
52
  uint32_t from_length;
53
  uint32_t to_length;
54
  Field *from_field;
55
  Field *to_field;
56
  String tmp;					// For items
57
58
  CopyField() :
59
    from_ptr(0),
60
    to_ptr(0),
61
    from_null_ptr(0),
62
    to_null_ptr(0),
63
    null_row(0),
64
    from_bit(0),
65
    to_bit(0),
66
    from_length(0),
67
    to_length(0),
68
    from_field(0),
69
    to_field(0)
70
  {}
71
72
  ~CopyField()
73
  {}
74
75
  void set(Field *to,Field *from,bool save);	// Field to field
76
  void set(unsigned char *to,Field *from);		// Field to string
77
  void (*do_copy)(CopyField *);
78
  void (*do_copy2)(CopyField *);		// Used to handle null values
79
};
80
81
} /* namespace drizzled */
82
83
#endif /* DRIZZLED_COPY_FIELD_H */