1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2009 Sun Microsystems, Inc.
4
* Copyright (C) 2009 Sun Microsystems
6
6
* This program is free software; you can redistribute it and/or modify
7
7
* it under the terms of the GNU General Public License as published by
29
29
This will replace Table_ident.
34
32
#ifndef DRIZZLED_IDENTIFIER_SCHEMA_H
35
33
#define DRIZZLED_IDENTIFIER_SCHEMA_H
37
35
#include <drizzled/enum.h>
38
36
#include "drizzled/definitions.h"
39
37
#include "drizzled/message/table.pb.h"
40
#include "drizzled/catalog/local.h"
41
38
#include <string.h>
43
40
#include <assert.h>
51
48
#include <boost/algorithm/string.hpp>
53
#include "drizzled/visibility.h"
55
50
namespace drizzled {
56
namespace identifier {
58
class DRIZZLED_API Schema : public Identifier
52
static std::string catalog("");
54
class SchemaIdentifier
61
57
std::string db_path;
64
typedef std::vector <Schema> vector;
65
typedef const Schema& const_reference;
67
Schema(const std::string &db_arg);
60
// @note this should be changed to protected once Session contains an
61
// identifier for current db.
65
SchemaIdentifier(const std::string &db_arg);
67
virtual ~SchemaIdentifier()
72
virtual void getSQLPath(std::string &arg) const;
70
virtual const std::string &getSQLPath();
74
71
const std::string &getPath() const;
76
73
const std::string &getSchemaName() const
81
const std::string &getCatalogName() const;
83
virtual bool isValid() const;
85
inline virtual bool isSystem() const
78
const std::string &getCatalogName() const
90
84
bool compare(const std::string &arg) const;
91
bool compare(Schema::const_reference) const;
93
friend bool operator<(Schema::const_reference left, Schema::const_reference right)
86
friend bool operator<(const SchemaIdentifier &left, const SchemaIdentifier &right)
95
88
return boost::algorithm::to_upper_copy(left.getSchemaName()) < boost::algorithm::to_upper_copy(right.getSchemaName());
98
friend bool operator==(Schema::const_reference left,
99
Schema::const_reference right)
91
friend std::ostream& operator<<(std::ostream& output,
92
SchemaIdentifier &identifier)
94
output << "SchemaIdentifier:(";
95
output << identifier.db;
97
output << identifier.getPath();
100
return output; // for multiple << operators.
103
friend bool operator==(const SchemaIdentifier &left,
104
const SchemaIdentifier &right)
101
106
return boost::iequals(left.getSchemaName(), right.getSchemaName());
105
std::ostream& operator<<(std::ostream& output, const Schema&identifier);
108
} /* namespace identifier */
111
typedef std::vector <SchemaIdentifier> SchemaIdentifiers;
109
113
} /* namespace drizzled */
111
115
#endif /* DRIZZLED_IDENTIFIER_SCHEMA_H */