~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/identifier/catalog.h

  • Committer: Lee Bieber
  • Date: 2011-03-18 04:10:25 UTC
  • mfrom: (2241.1.2 build)
  • Revision ID: kalebral@gmail.com-20110318041025-1xoj1azy6zobhnbm
Merge Stewart - refactoring of default values
Merge Olaf - more refactoring

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
 
43
43
class Catalog : public Identifier
44
44
{
45
 
  std::string _name;
46
 
  std::string path;
47
 
 
48
 
  void init();
49
 
 
50
45
public:
51
46
  typedef std::vector<Catalog> vector;
52
47
  typedef const Catalog& const_reference;
54
49
 
55
50
  Catalog(const std::string &name_arg);
56
51
  Catalog(const drizzled::lex_string_t &name_arg);
57
 
 
58
 
  virtual ~Catalog()
59
 
  { }
60
 
 
61
 
  const std::string &getPath() const;
 
52
  bool isValid() const;
 
53
  bool compare(const std::string &arg) const;
 
54
 
 
55
  const std::string &getPath() const
 
56
  {
 
57
    return path;
 
58
  }
62
59
 
63
60
  const std::string &getName() const
64
61
  {
70
67
    return _name;
71
68
  }
72
69
 
73
 
  virtual void getSQLPath(std::string &sql_path) const;
74
 
 
75
 
  bool isValid() const;
76
 
  bool compare(const std::string &arg) const;
 
70
  virtual void getSQLPath(std::string &sql_path) const
 
71
  {
 
72
    sql_path= _name;
 
73
  }
77
74
 
78
75
  size_t getHashValue() const
79
76
  {
82
79
 
83
80
  friend bool operator<(const Catalog &left, const Catalog &right)
84
81
  {
85
 
    return  boost::algorithm::to_upper_copy(left.getName()) < boost::algorithm::to_upper_copy(right.getName());
 
82
    return boost::ilexicographical_compare(left.getName(), right.getName());
86
83
  }
87
84
 
88
85
  friend std::ostream& operator<<(std::ostream& output, const Catalog &identifier)
89
86
  {
90
 
    output << "Catalog:(";
91
 
    output <<  identifier.getName();
92
 
    output << ", ";
93
 
    output << identifier.getPath();
94
 
    output << ")";
95
 
 
96
 
    return output;  // for multiple << operators.
 
87
    return output << "Catalog:(" <<  identifier.getName() << ", " << identifier.getPath() << ")";
97
88
  }
98
89
 
99
 
  friend bool operator==(const Catalog &left,
100
 
                         const Catalog &right)
 
90
  friend bool operator==(const Catalog &left, const Catalog &right)
101
91
  {
102
92
    return boost::iequals(left.getName(), right.getName());
103
93
  }
104
 
 
105
94
private:
 
95
  void init();
 
96
 
 
97
  std::string _name;
 
98
  std::string path;
106
99
  size_t hash_value;
107
 
 
108
100
};
109
101
 
110
 
std::size_t hash_value(Catalog const& b);
 
102
inline std::size_t hash_value(Catalog const& b)
 
103
{
 
104
  return b.getHashValue();
 
105
}
111
106
 
112
107
} /* namespace identifier */
113
108
} /* namespace drizzled */