~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
2234 by Brian Aker
Mass removal of ifdef/endif in favor of pragma once.
21
#pragma once
2154.2.11 by Brian Aker
Further strip out includes.
22
23
#include <drizzled/memory/sql_alloc.h>
24
#include <drizzled/sql_string.h>
25
26
27
namespace drizzled {
28
29
/**
30
 * A class for quick copying data to fields
31
 */
32
class CopyField :public memory::SqlAlloc
33
{
34
  /**
35
    Convenience definition of a copy function returned by
36
    get_copy_func.
37
  */
38
  typedef void Copy_func(CopyField*);
39
  Copy_func *get_copy_func(Field *to, Field *from);
40
41
public:
42
  unsigned char *from_ptr;
43
  unsigned char *to_ptr;
44
  unsigned char *from_null_ptr;
45
  unsigned char *to_null_ptr;
46
  bool *null_row;
47
  uint32_t from_bit;
48
  uint32_t to_bit;
49
  uint32_t from_length;
50
  uint32_t to_length;
51
  Field *from_field;
52
  Field *to_field;
53
  String tmp;					// For items
54
55
  CopyField() :
56
    from_ptr(0),
57
    to_ptr(0),
58
    from_null_ptr(0),
59
    to_null_ptr(0),
60
    null_row(0),
61
    from_bit(0),
62
    to_bit(0),
63
    from_length(0),
64
    to_length(0),
65
    from_field(0),
66
    to_field(0)
67
  {}
68
69
  ~CopyField()
70
  {}
71
72
  void set(Field *to,Field *from,bool save);	// Field to field
73
  void set(unsigned char *to,Field *from);		// Field to string
74
  void (*do_copy)(CopyField *);
75
  void (*do_copy2)(CopyField *);		// Used to handle null values
76
};
77
78
} /* namespace drizzled */
79