⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 properties.hpp

📁 mysql-5.0.22.tar.gz源码包
💻 HPP
字号:
/* Copyright (C) 2003 MySQL AB   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#ifndef PROPERTIES_HPP#define PROPERTIES_HPP#include <ndb_global.h>#include <BaseString.hpp>#include <UtilBuffer.hpp>enum PropertiesType {  PropertiesType_Uint32 = 0,  PropertiesType_char = 1,  PropertiesType_Properties = 2,  PropertiesType_Uint64 = 3};/** * @struct  Property * @brief   Stores one (name, value)-pair *  * Value can be of type Properties, i.e. a Property may contain  * a Properties object. */struct Property {  Property(const char* name, Uint32 val);  Property(const char* name, Uint64 val);  Property(const char* name, const char * value);  Property(const char* name, const class Properties * value);  ~Property();private:  friend class Properties;  struct PropertyImpl * impl;};/** * @class  Properties * @brief  Stores information in (name, value)-pairs */class Properties {public:  static const char delimiter;  static const char version[];  Properties(bool case_insensitive= false);  Properties(const Properties &);  Properties(const Property *, int len);  virtual ~Properties();  /**   * Set/Get wheather names in the Properties should be compared    * w/o case.   * NOTE: The property is automatically applied to all propoerties put   *       into this after a called to setCaseInsensitiveNames has been made   *       But properties already in when calling setCaseInsensitiveNames will   *       not be affected   */  void setCaseInsensitiveNames(bool value);  bool getCaseInsensitiveNames() const;  /**   * Insert an array of value(s)   */  void put(const Property *, int len);  bool put(const char * name, Uint32 value, bool replace = false);  bool put64(const char * name, Uint64 value, bool replace = false);  bool put(const char * name, const char * value, bool replace = false);  bool put(const char * name, const Properties * value, bool replace = false);  /**   * Same as put above,   *   except that _%d (where %d is a number) is added to the name   * Compare get(name, no)   */  bool put(const char *, Uint32 no, Uint32, bool replace = false);  bool put64(const char *, Uint32 no, Uint64, bool replace = false);  bool put(const char *, Uint32 no, const char *, bool replace = false);  bool put(const char *, Uint32 no, const Properties *, bool replace = false);  bool getTypeOf(const char * name, PropertiesType * type) const;  /** @return true if Properties object contains name */  bool contains(const char * name) const;  bool get(const char * name, Uint32 * value) const;  bool get(const char * name, Uint64 * value) const;  bool get(const char * name, const char ** value) const;  bool get(const char * name, BaseString & value) const;  bool get(const char * name, const Properties ** value) const;    bool getCopy(const char * name, char ** value) const;  bool getCopy(const char * name, Properties ** value) const;  /**   * Same as get above   *   except that _%d (where %d = no) is added to the name   */  bool getTypeOf(const char * name, Uint32 no, PropertiesType * type) const;  bool contains(const char * name, Uint32 no) const;  bool get(const char * name, Uint32 no, Uint32 * value) const;  bool get(const char * name, Uint32 no, Uint64 * value) const;  bool get(const char * name, Uint32 no, const char ** value) const;  bool get(const char * name, Uint32 no, const Properties ** value) const;    bool getCopy(const char * name, Uint32 no, char ** value) const;  bool getCopy(const char * name, Uint32 no, Properties ** value) const;  void clear();  void remove(const char * name);    void print(FILE * file = stdout, const char * prefix = 0) const;  /**   *  Iterator over names    */  class Iterator {   public:    Iterator(const Properties* prop);    const char* first();    const char* next();  private:    const Properties*  m_prop;    Uint32 m_iterator;  };  friend class Properties::Iterator;  Uint32 getPackedSize() const;  bool pack(Uint32 * buf) const;  bool pack(UtilBuffer &buf) const;  bool unpack(const Uint32 * buf, Uint32 bufLen);  bool unpack(UtilBuffer &buf);    Uint32 getPropertiesErrno() const { return propErrno; }  Uint32 getOSErrno() const { return osErrno; }private:  Uint32 propErrno;  Uint32 osErrno;  friend class PropertiesImpl;  class PropertiesImpl * impl;  class Properties * parent;  void setErrno(Uint32 pErr, Uint32 osErr = 0) const ;};/** * Error code for properties *//** * No error */extern const Uint32 E_PROPERTIES_OK;/** * Invalid name in put, names can not contain Properties::delimiter */extern const Uint32 E_PROPERTIES_INVALID_NAME;/** * Element did not exist when using get */extern const Uint32 E_PROPERTIES_NO_SUCH_ELEMENT;/** * Element had wrong type when using get */extern const Uint32 E_PROPERTIES_INVALID_TYPE;/** * Element already existed when using put, and replace was not specified */extern const Uint32 E_PROPERTIES_ELEMENT_ALREADY_EXISTS;/** * Invalid version on properties file you are trying to read */extern const Uint32 E_PROPERTIES_INVALID_VERSION_WHILE_UNPACKING;/** * When unpacking an buffer *  found that buffer is to short * * Probably an invlaid buffer */extern const Uint32 E_PROPERTIES_INVALID_BUFFER_TO_SHORT;/** * Error when packing, can not allocate working buffer *    * Note: OS error is set */extern const Uint32 E_PROPERTIES_ERROR_MALLOC_WHILE_PACKING;/** * Error when unpacking, can not allocate working buffer *    * Note: OS error is set */extern const Uint32 E_PROPERTIES_ERROR_MALLOC_WHILE_UNPACKING;/** * Error when unpacking, invalid checksum *    */extern const Uint32 E_PROPERTIES_INVALID_CHECKSUM;/** * Error when unpacking *   No of items > 0 while size of buffer (left) <= 0 */extern const Uint32 E_PROPERTIES_BUFFER_TO_SMALL_WHILE_UNPACKING;inline boolProperties::unpack(UtilBuffer &buf) {  return unpack((const Uint32 *)buf.get_data(), buf.length());}inline boolProperties::pack(UtilBuffer &buf) const {  Uint32 size = getPackedSize();  void *tmp_buf = buf.append(size);  if(tmp_buf == 0)    return false;  bool ret = pack((Uint32 *)tmp_buf);  if(ret == false)    return false;  return true;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -