~drizzle-trunk/drizzle/development

1643.3.1 by Brian Aker
Move schema listing logic out.
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_SCHEMA_H
22
#define DRIZZLED_GENERATOR_SCHEMA_H
1643.3.1 by Brian Aker
Move schema listing logic out.
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.1 by Brian Aker
Move schema listing logic out.
29
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
30
class Schema
1643.3.1 by Brian Aker
Move schema listing logic out.
31
{
32
  Session &session;
33
  message::Schema schema;
34
1643.3.3 by Brian Aker
Updated to harmonize the identifier API.
35
  SchemaIdentifiers schema_names;
36
  SchemaIdentifiers::const_iterator schema_iterator;
1643.3.1 by Brian Aker
Move schema listing logic out.
37
38
public:
39
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
40
  Schema(Session &arg);
1643.3.1 by Brian Aker
Move schema listing logic out.
41
42
  operator const drizzled::message::Schema*()
43
  {
44
    while (schema_iterator != schema_names.end())
45
    {
46
      schema.Clear();
47
      SchemaIdentifier schema_identifier(*schema_iterator);
48
      bool is_schema_parsed= plugin::StorageEngine::getSchemaDefinition(schema_identifier, schema);
49
      schema_iterator++;
50
51
      if (is_schema_parsed)
52
        return &schema;
53
    }
54
55
    return NULL;
56
  }
57
58
  operator const drizzled::SchemaIdentifier*()
59
  {
60
    while (schema_iterator != schema_names.end())
61
    {
62
      const drizzled::SchemaIdentifier *_ptr= &(*schema_iterator);
63
      schema_iterator++;
64
65
      return _ptr;
66
    }
67
68
    return NULL;
69
  }
70
};
71
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
72
} /* namespace generator */
1643.3.1 by Brian Aker
Move schema listing logic out.
73
} /* namespace drizzled */
74
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
75
#endif /* DRIZZLED_GENERATOR_SCHEMA_H */