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

📄 xadbm.h

📁 harvest是一个下载html网页得机器人
💻 H
字号:
/************************************************************************************************* * Abstraction for database managers compatible with DBM *                                                      Copyright (C) 2000-2003 Mikio Hirabayashi * This file is part of QDBM, Quick Database Manager. * QDBM is free software; you can redistribute it and/or modify it under the terms of the GNU * Lesser General Public License as published by the Free Software Foundation; either version * 2.1 of the License or any later version.  QDBM 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 Lesser General Public License for more * details. * You should have received a copy of the GNU Lesser General Public License along with QDBM; if * not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA. *************************************************************************************************/#ifndef _XADBM_H                         /* duplication check */#define _XADBM_H#include <xqdbm.h>/** * Error container for ADBM. */class qdbm::DBM_error {  //----------------------------------------------------------------  // public member functions  //----------------------------------------------------------------public:  /**   * Create an instance.   */  DBM_error() throw();  /**   * Create an instance.   * @param message the string of a error message.   */  DBM_error(const char* message) throw();  /**   * Release resources of the instance.   */  virtual ~DBM_error() throw();  /**   * Cast operator into pointer to char.   * @return the pointer to the string.   */  virtual operator const char*() const throw();  /**   * Get the message.   * @return the pointer to the string.   */  virtual const char* message() const throw();  //----------------------------------------------------------------  // private member variables  //----------------------------------------------------------------private:  /** The pointer to the region of the error message. */  char* errmsg;};/** * Datum of records for ADBM. */class qdbm::Datum {  //----------------------------------------------------------------  // public member functions  //----------------------------------------------------------------public:  /**   * Create an instance.   * @param dptr the pointer to the region of data.   * @param dsize the size of the region.  If it is negative, the size is assigned   * with `std::strlen(dptr)'.   */  Datum(const char* dptr = "", int dsize = -1);  /**   * Create an instance.   * @param num an integer number.   */  Datum(int num);  /**   * Copy constructor.   * @param datum a source instance.   */  Datum(const Datum& datum);  /**   * Release resources of the instance.   */  virtual ~Datum() throw();  /**   * Assignment operator.   * @param datum a source instance.   * @return reference to itself.   */  Datum& operator =(const Datum& datum);  /**   * Assignment operator.   * @param str a source string.   * @return reference to itself.   */  Datum& operator =(const char* str);  /**   * Concatenation operator.   * @param datum a latter instance.   * @return reference to itself.   */  virtual Datum& operator <<(const Datum& datum);  /**   * Concatenation operator.   * @param str a latter string.   * @return reference to itself.   */  virtual Datum& operator <<(const char* str);  /**   * Equality operator.   * @param datum a comparing instance.   * @return true if the both equal, else, false.   */  virtual bool operator ==(const Datum& datum) const;  /**   * Inequality operator.   * @param datum a comparing instance.   * @return true if the both do not equal, else, false.   */  virtual bool operator !=(const Datum& datum) const;  /**   * Equality operator.   * @param str a comparing string.   * @return true if the both equal, else, false.   */  virtual bool operator ==(const char* str) const;  /**   * Inequality operator.   * @param str a comparing string.   * @return true if the both do not equal, else, false.   */  virtual bool operator !=(const char* str) const;  /**   * Subscripting operator.   * @param idx the index of a character.   * @return reference of the character.   */  virtual char& operator [](int idx) const;  /**   * Cast operator into pointer to char.   * @return the pointer of the region of the datum.   * @note Because an additional zero code is appended at the end of the region of the return   * value, the return value can be treated as a character string.   */  virtual operator const char*() const;  /**   * Get the pointer of the region of the datum.   * @return the pointer of the region of the datum.   * @note Because an additional zero code is appended at the end of the region of the return   * value, the return value can be treated as a character string.   */  virtual const char* ptr() const;  /**   * Get the size of the region of the datum.   * @return the size of the region of the datum.   */  virtual int size() const;  //----------------------------------------------------------------  // private member variables  //----------------------------------------------------------------private:  /** The pointer to the region. */  char* dptr;  /** The size of the region. */  int dsize;  //----------------------------------------------------------------  // private member functions  //----------------------------------------------------------------private:  /**   * Create an instance.   * @param dptr the region allocated with `std::malloc' or `std::realloc'.   * @param dsize the size of the region.   * @param dummy ignored.  It is for difference of signature.   * @note the specified region is released with `std::free' at the destruction of the instance.   */  Datum(char* dptr, int dsize, bool dummy);  //----------------------------------------------------------------  // friend classes and functions  //----------------------------------------------------------------  friend class Depot;  friend class Curia;  friend class Villa;  /**   * Temporary concatenation operator.   * @param former the former datum.   * @param latter the latter datum.   * @return reference to a temporary instance.   */  friend Datum operator +(const Datum& former, const Datum& latter);  /**   * Temporary concatenation operator.   * @param datum the former datum.   * @param str the latter string.   * @return reference to a temporary instance.   */  friend Datum operator +(const Datum& datum, const char* str);  /**   * Temporary concatenation operator.   * @param str the former string.   * @param datum the latter datum.   * @return reference to a temporary instance.   */  friend Datum operator +(const char* str, const Datum& datum);};/** * Aabstraction for database managers compatible with DBM. */class qdbm::ADBM {  //----------------------------------------------------------------  // public member functions  //----------------------------------------------------------------public:  /**   * Close the database connection.   * @throw DBM_error if an error occures.   */  virtual void close() throw(DBM_error) = 0;  /**   * Store a record.   * @param key reference to a key object.   * @param val reference to a value object.   * @param replace whether the existing value is to be overwritten or not.   * @throw DBM_error if an error occures or replace is cancelled.   */  virtual void storerec(const Datum& key, const Datum& val, bool replace = true)    throw(DBM_error) = 0;  /**   * Delete a record.   * @param key reference to a key object.   * @throw DBM_error if an error occures or no record corresponds.   */  virtual void deleterec(const Datum& key) throw(DBM_error) = 0;  /**   * Fetch a record.   * @param key reference to a key object.   * @return a temporary instance of the value of the corresponding record.   * @throw DBM_error if an error occures or no record corresponds.   */  virtual Datum fetchrec(const Datum& key) throw(DBM_error) = 0;  /**   * Get the first key.   * @return a temporary instance of the key of the first record.   * @throw DBM_error if an error occures or no record corresponds.   */  virtual Datum firstkey() throw(DBM_error) = 0;  /**   * Get the next key.   * @return a temporary instance of the key of the next record.   * @throw DBM_error if an error occures or no record corresponds.   */  virtual Datum nextkey() throw(DBM_error) = 0;  /**   * Check whether a fatal error occured or not.   * @return true if the database has a fatal error, false if not.   * @throw DBM_error if an error occures.   */  virtual bool error() throw(DBM_error) = 0;};#endif                                   /* duplication check *//* END OF FILE */

⌨️ 快捷键说明

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