~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
class Field;
30
31
/**
32
 * A class for quick copying data to fields
33
 */
34
class CopyField :public memory::SqlAlloc
35
{
36
  /**
37
    Convenience definition of a copy function returned by
38
    get_copy_func.
39
  */
40
  typedef void Copy_func(CopyField*);
41
  Copy_func *get_copy_func(Field *to, Field *from);
42
43
public:
44
  unsigned char *from_ptr;
45
  unsigned char *to_ptr;
46
  unsigned char *from_null_ptr;
47
  unsigned char *to_null_ptr;
48
  bool *null_row;
49
  uint32_t from_bit;
50
  uint32_t to_bit;
51
  uint32_t from_length;
52
  uint32_t to_length;
53
  Field *from_field;
54
  Field *to_field;
55
  String tmp;					// For items
56
57
  CopyField() :
58
    from_ptr(0),
59
    to_ptr(0),
60
    from_null_ptr(0),
61
    to_null_ptr(0),
62
    null_row(0),
63
    from_bit(0),
64
    to_bit(0),
65
    from_length(0),
66
    to_length(0),
67
    from_field(0),
68
    to_field(0)
69
  {}
70
71
  ~CopyField()
72
  {}
73
74
  void set(Field *to,Field *from,bool save);	// Field to field
75
  void set(unsigned char *to,Field *from);		// Field to string
76
  void (*do_copy)(CopyField *);
77
  void (*do_copy2)(CopyField *);		// Used to handle null values
78
};
79
80
} /* namespace drizzled */
81