DictColumn.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #ifndef ODBC_DICTIONARY_DictColumn_hpp
  14. #define ODBC_DICTIONARY_DictColumn_hpp
  15. #include <common/common.hpp>
  16. #include <common/DataType.hpp>
  17. class Ctx;
  18. class SqlType;
  19. class ConnArea;
  20. class DictTable;
  21. /**
  22.  * @class DictColumn
  23.  * @brief Table column
  24.  */
  25. class DictColumn {
  26. public:
  27.     DictColumn(const ConnArea& connArea, const BaseString& name, const SqlType& sqlType);
  28.     ~DictColumn();
  29.     const BaseString& getName() const;
  30.     const SqlType& sqlType() const;
  31.     void setPosition(unsigned position);
  32.     unsigned getPosition() const;
  33.     void setParent(DictTable* parent);
  34.     DictTable* getParent() const;
  35.     NdbAttrId getAttrId() const;
  36.     bool isKey() const;
  37.     bool isTupleId() const;
  38.     bool isAutoIncrement() const;
  39.     const char* getDefaultValue() const;
  40. protected:
  41.     friend class DictSys;
  42.     friend class DictTable;
  43.     const ConnArea& m_connArea;
  44.     const BaseString m_name;
  45.     SqlType m_sqlType;
  46.     unsigned m_position;
  47.     DictTable* m_parent;
  48.     bool m_key; // part of key
  49.     bool m_tupleId; // the tuple id
  50.     bool m_autoIncrement;
  51.     const char* m_defaultValue;
  52. };
  53. inline
  54. DictColumn::DictColumn(const ConnArea& connArea, const BaseString& name, const SqlType& sqlType) :
  55.     m_connArea(connArea),
  56.     m_name(name),
  57.     m_sqlType(sqlType),
  58.     m_position(0),
  59.     m_parent(0),
  60.     m_key(false),
  61.     m_tupleId(false),
  62.     m_autoIncrement(false),
  63.     m_defaultValue(0)
  64. {
  65. }
  66. inline const SqlType&
  67. DictColumn::sqlType() const
  68. {
  69.     return m_sqlType;
  70. }
  71. inline void
  72. DictColumn::setPosition(unsigned position)
  73. {
  74.     ctx_assert(position != 0);
  75.     m_position = position;
  76. }
  77. inline unsigned
  78. DictColumn::getPosition() const
  79. {
  80.     return m_position;
  81. }
  82. inline void
  83. DictColumn::setParent(DictTable* parent)
  84. {
  85.     m_parent = parent;
  86. }
  87. inline DictTable*
  88. DictColumn::getParent() const
  89. {
  90.     return m_parent;
  91. }
  92. inline const BaseString&
  93. DictColumn::getName() const
  94. {
  95.     return m_name;
  96. }
  97. inline NdbAttrId
  98. DictColumn::getAttrId() const
  99. {
  100.     ctx_assert(m_position != 0);
  101.     return static_cast<NdbAttrId>(m_position - 1);
  102. }
  103. inline bool
  104. DictColumn::isKey() const
  105. {
  106.     return m_key;
  107. }
  108. inline bool
  109. DictColumn::isTupleId() const
  110. {
  111.     return m_tupleId;
  112. }
  113. inline bool
  114. DictColumn::isAutoIncrement() const
  115. {
  116.     return m_autoIncrement;
  117. }
  118. inline const char*
  119. DictColumn::getDefaultValue() const
  120. {
  121.     return m_defaultValue;
  122. }
  123. #endif