~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;
1966.2.1 by Brian Aker
Clean up style for shared_ptr for messages around table/schema.
33
  message::schema::shared_ptr schema;
1643.3.1 by Brian Aker
Move schema listing logic out.
34
1966.2.3 by Brian Aker
Fix another style issue.
35
  SchemaIdentifier::vector schema_names;
36
  SchemaIdentifier::vector::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
1966.2.1 by Brian Aker
Clean up style for shared_ptr for messages around table/schema.
42
  operator const drizzled::message::schema::shared_ptr()
1643.3.1 by Brian Aker
Move schema listing logic out.
43
  {
44
    while (schema_iterator != schema_names.end())
45
    {
46
      SchemaIdentifier schema_identifier(*schema_iterator);
47
      bool is_schema_parsed= plugin::StorageEngine::getSchemaDefinition(schema_identifier, schema);
48
      schema_iterator++;
49
50
      if (is_schema_parsed)
1812.3.8 by Brian Aker
This switches our schema system over to using a shared ptr. Lets see how
51
        return schema;
1643.3.1 by Brian Aker
Move schema listing logic out.
52
    }
53
1966.2.1 by Brian Aker
Clean up style for shared_ptr for messages around table/schema.
54
    return message::schema::shared_ptr();
1643.3.1 by Brian Aker
Move schema listing logic out.
55
  }
56
57
  operator const drizzled::SchemaIdentifier*()
58
  {
59
    while (schema_iterator != schema_names.end())
60
    {
61
      const drizzled::SchemaIdentifier *_ptr= &(*schema_iterator);
62
      schema_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.1 by Brian Aker
Move schema listing logic out.
72
} /* namespace drizzled */
73
1643.3.4 by Brian Aker
Moved generators out of trunk of server.
74
#endif /* DRIZZLED_GENERATOR_SCHEMA_H */