~drizzle-trunk/drizzle/development

1843.8.4 by Brian Aker
Committing refactor of table out (this is part of the concurrency work).
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
4
 *  Copyright (C) 2010 Brian Aker
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
2234 by Brian Aker
Mass removal of ifdef/endif in favor of pragma once.
21
#pragma once
1843.8.4 by Brian Aker
Committing refactor of table out (this is part of the concurrency work).
22
2318.9.2 by Olaf van der Spek
Add const
23
namespace drizzled {
24
namespace table {
1843.8.4 by Brian Aker
Committing refactor of table out (this is part of the concurrency work).
25
26
class Temporary : public Table
27
{
2134.1.9 by Brian Aker
Merge in singular (to be be used with temp tables).
28
  instance::Singular *_share; /**< Pointer to the shared metadata about the table */
1859.2.10 by Brian Aker
Move all of the table bits out so that Table is an abstract class.
29
1843.8.4 by Brian Aker
Committing refactor of table out (this is part of the concurrency work).
30
public:
2087.4.2 by Brian Aker
Modify TableIdentifier to fit with the rest of the identifiers.
31
  Temporary(const identifier::Table::Type type_arg,
32
            const identifier::Table &identifier,
2318.9.2 by Olaf van der Spek
Add const
33
            const char *path_arg, uint32_t path_length_arg)
1843.8.4 by Brian Aker
Committing refactor of table out (this is part of the concurrency work).
34
  {
2134.1.9 by Brian Aker
Merge in singular (to be be used with temp tables).
35
    _share= new instance::Singular(type_arg, identifier, path_arg, path_length_arg);
1843.8.4 by Brian Aker
Committing refactor of table out (this is part of the concurrency work).
36
  }
37
1859.2.10 by Brian Aker
Move all of the table bits out so that Table is an abstract class.
38
  virtual const TableShare *getShare() const { assert(_share); return _share; } /* Get rid of this long term */
39
  virtual TableShare *getMutableShare() { assert(_share); return _share; } /* Get rid of this long term */
40
  virtual bool hasShare() const { return _share ? true : false ; } /* Get rid of this long term */
2134.1.9 by Brian Aker
Merge in singular (to be be used with temp tables).
41
  virtual void setShare(TableShare *new_share)
42
  {
43
    _share= static_cast<instance::Singular *>(new_share);
44
  }
1903.1.1 by Brian Aker
Merge of partial set of patches for locks.
45
2318.9.2 by Olaf van der Spek
Add const
46
  void release()
1903.1.1 by Brian Aker
Merge of partial set of patches for locks.
47
  {
48
    delete _share;
49
    _share= NULL;
50
  }
1843.8.4 by Brian Aker
Committing refactor of table out (this is part of the concurrency work).
51
};
52
1903.1.1 by Brian Aker
Merge of partial set of patches for locks.
53
1843.8.4 by Brian Aker
Committing refactor of table out (this is part of the concurrency work).
54
} /* namespace table */
55
} /* namespace drizzled */
56