~drizzle-trunk/drizzle/development

1643.3.3 by Brian Aker
Updated to harmonize the identifier API.
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
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
21
#ifndef DRIZZLED_GENERATOR_TABLE_H
22
#define DRIZZLED_GENERATOR_TABLE_H
1643.3.3 by Brian Aker
Updated to harmonize the identifier API.
23
24
#include "drizzled/session.h"
25
#include "drizzled/plugin/storage_engine.h"
26
27
namespace drizzled {
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
28
namespace generator {
1643.3.3 by Brian Aker
Updated to harmonize the identifier API.
29
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
30
class Table
1643.3.3 by Brian Aker
Updated to harmonize the identifier API.
31
{
32
  Session &session;
33
  message::Table table;
34
35
  TableIdentifiers table_names;
36
  TableIdentifiers::const_iterator table_iterator;
37
38
public:
39
1643.3.6 by Brian Aker
Added unit test for generators.
40
  Table(Session &arg, const SchemaIdentifier &schema_identifier);
1643.3.3 by Brian Aker
Updated to harmonize the identifier API.
41
42
  operator const drizzled::message::Table*()
43
  {
44
    while (table_iterator != table_names.end())
45
    {
46
      table.Clear();
47
      bool is_table_parsed= plugin::StorageEngine::getTableDefinition(session, *table_iterator, table);
48
      table_iterator++;
49
50
      if (is_table_parsed)
51
        return &table;
52
    }
53
54
    return NULL;
55
  }
56
57
  operator const drizzled::TableIdentifier*()
58
  {
59
    while (table_iterator != table_names.end())
60
    {
61
      const drizzled::TableIdentifier *_ptr= &(*table_iterator);
62
      table_iterator++;
63
64
      return _ptr;
65
    }
66
67
    return NULL;
68
  }
69
};
70
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
71
} /* namespace generator */
1643.3.3 by Brian Aker
Updated to harmonize the identifier API.
72
} /* namespace drizzled */
73
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
74
#endif /* DRIZZLED_GENERATOR_TABLE_H */