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

📄 xcuria.h

📁 harvest是一个下载html网页得机器人
💻 H
📖 第 1 页 / 共 2 页
字号:
/************************************************************************************************* * C++ API of Curia, the extended API of QDBM *                                                      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 _XCURIA_H                        /* duplication check */#define _XCURIA_H#include <xqdbm.h>#include <xadbm.h>extern "C" {#include <depot.h>#include <curia.h>#include <stdlib.h>}/** * Error container for Curia. */class qdbm::Curia_error : public virtual DBM_error {  //----------------------------------------------------------------  // public member functions  //----------------------------------------------------------------public:  /**   * Create an instance.   */  Curia_error() throw();  /**   * Create an instance.   * @param ecode the error code.   */  Curia_error(int ecode) throw();  /**   * Copy constructor.   * @param ce a source instance.   */  Curia_error(const Curia_error& ce) throw();  /**   * Release resources of the instance.   */  virtual ~Curia_error() throw();  /**   * Assignment operator.   * @param ce a source instance.   * @return reference to itself.   */  Curia_error& operator =(const Curia_error& ce) throw();  /**   * Assignment operator.   * @param ecode the error code.   * @return reference to itself.   */  Curia_error& operator =(int ecode) throw();  /**   * Equality operator.   * @param ce a comparing instance.   * @return true if the both equal, else, false.   */  virtual bool operator ==(const Curia_error& ce) const throw();  /**   * Inequality operator.   * @param ce a comparing instance.   * @return true if the both do not equal, else, false.   */  virtual bool operator !=(const Curia_error& ce) const throw();  /**   * Equality operator.   * @param ecode a comparing error code.   * @return true if the both equal, else, false.   */  virtual bool operator ==(int ecode) const throw();  /**   * Inequality operator.   * @param ecode a comparing error code.   * @return true if the both do not equal, else, false.   */  virtual bool operator !=(int ecode) const throw();  /**   * Cast operator into pointer to char.   * @return the pointer to the string.   */  virtual operator const char*() const throw();  /**   * Get the error code.   * @return the error code.   */  virtual int code() const throw();  /**   * Get the error message.   * @return the pointer to the string.   */  virtual const char* message() const throw();  //----------------------------------------------------------------  // private member variables  //----------------------------------------------------------------private:  /** The error code. */  int ecode;};/** * C++ API of Curia, the extended API of QDBM */class qdbm::Curia : public virtual ADBM {  //----------------------------------------------------------------  // public static member constants  //----------------------------------------------------------------public:  static const int ENOERR;            ///< error code: no error  static const int EFATAL;            ///< error code: with fatal error  static const int EMODE;             ///< error code: invalid mode  static const int EBROKEN;           ///< error code: broken database file  static const int EKEEP;             ///< error code: existing record  static const int ENOITEM;           ///< error code: no item found  static const int EALLOC;            ///< error code: memory allocation error  static const int EMAP;              ///< error code: memory mapping error  static const int EOPEN;             ///< error code: open error  static const int ECLOSE;            ///< error code: close error  static const int ETRUNC;            ///< error code: trunc error  static const int ESYNC;             ///< error code: sync error  static const int ESTAT;             ///< error code: stat error  static const int ESEEK;             ///< error code: seek error  static const int EREAD;             ///< error code: read error  static const int EWRITE;            ///< error code: write error  static const int ELOCK;             ///< error code: lock error  static const int EUNLINK;           ///< error code: unlink error  static const int EMKDIR;            ///< error code: mkdir error  static const int ERMDIR;            ///< error code: rmdir error  static const int EMISC;             ///< error code: miscellaneous error  static const int OREADER;           ///< open mode: open as a reader  static const int OWRITER;           ///< open mode: open as a writer  static const int OCREAT;            ///< open mode: writer creating  static const int OTRUNC;            ///< open mode: writer truncating  static const int ONOLCK;            ///< open mode: open without locking  static const int DOVER;             ///< write mode: overwrite the existing value  static const int DKEEP;             ///< write mode: keep the existing value  static const int DCAT;              ///< write mode: concatenate values  //----------------------------------------------------------------  // public static member functions  //----------------------------------------------------------------public:  /**   * Get the version information.   * @return the string of the version information.   */  static const char* version() throw();  /**   * Remove a database directory.   * @param name the name of a database directory.   * @throw Curia_error if an error occures.   */  static void remove(const char* name) throw(Curia_error);  //----------------------------------------------------------------  // public member functions  //----------------------------------------------------------------public:  /**   * Get the database handle.   * @param name the name of a database directory.   * @param omode the connection mode: `Curia::OWRITER' as a writer, `Curia::OREADER' as   * a reader.  If the mode is `Curia::OWRITER', the following may be added by bitwise or:   * `Curia::OCREAT', which means it creates a new database if not exist, `Curia::OTRUNC',   * which means it creates a new database regardless if one exists.  Both of `Curia::OREADER'   * and `Curia::OWRITER' can be added to by bitwise or: `Curia::ONOLCK', which means it opens a   * database directory without file locking.   * @param bnum the number of elements of each bucket array.  If it is not more than 0,   * the default value is specified.  The size of each bucket array is determined on creating,   * and can not be changed except for by optimization of the database.  Suggested size of each   * bucket array is about from 0.5 to 4 times of the number of all records to store.   * @param dnum the number of division of the database.  If it is not more than 0, the default   * value is specified.  The number of division can not be changed from the initial value.  The   * max number of division is 512.   * @note While connecting as a writer, an exclusive lock is invoked to the database directory.   * While connecting as a reader, a shared lock is invoked to the database directory.   * The thread blocks until the lock is achieved.  If `Curia::ONOLCK' is used, the application   * is responsible for exclusion control.   */  Curia(const char* name, int omode = Curia::OREADER, int bnum = -1, int dnum = -1)    throw(Curia_error);  /**   * Release the resources.   * @note If the database handle is not closed yet, it is closed.   */  virtual ~Curia() throw();  /**   * Close the database handle.   * @throw Curia_error if an error occures.   * @note Updating a database is assured to be written when the handle is closed.  If a writer   * opens a database but does not close it appropriately, the database will be broken.   */  virtual void close() throw(Curia_error);  /**   * Store a record.   * @param kbuf the pointer to the region of a key.   * @param ksiz the size of the region of the key.  If it is negative, the size is assigned   * with `std::strlen(kbuf)'.   * @param vbuf the pointer to the region of a value.   * @param vsiz the size of the region of the value.  If it is negative, the size is assigned   * with `std::strlen(vbuf)'.   * @param dmode behavior when the key overlaps, by the following values: `Curia::DOVER',   * which means the specified value overwrites the existing one, `Curia::DKEEP', which means the   * existing value is kept, `Curia::DCAT', which means the specified value is concatenated at   * the end of the existing value.   * @throw Curia_error if an error occures or replace is cancelled.   */  virtual void put(const char* kbuf, int ksiz, const char* vbuf, int vsiz,                   int dmode = Curia::DOVER) throw(Curia_error);  /**   * Delete a record.   * @param kbuf the pointer to the region of a key.   * @param ksiz the size of the region of the key.  If it is negative, the size is assigned   * with `std::strlen(kbuf)'.   * @throw Curia_error if an error occures or no record corresponds.   */  virtual void out(const char* kbuf, int ksiz) throw(Curia_error);  /**   * Retrieve a record.   * @param kbuf the pointer to the region of a key.   * @param ksiz the size of the region of the key.  If it is negative, the size is assigned   * with `std::strlen(kbuf)'.   * @param start the offset address of the beginning of the region of the value to be read.   * @param max the max size to read with.  If it is negative, the size is unlimited.   * @param sp the pointer to a variable to which the size of the region of the return value   * is assigned.  If it is 0, it is not used.

⌨️ 快捷键说明

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