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

📄 reader_writer.hpp

📁 ncbi源码
💻 HPP
字号:
/* * =========================================================================== * PRODUCTION $Log: reader_writer.hpp,v $ * PRODUCTION Revision 1000.2  2004/06/01 19:38:37  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.12 * PRODUCTION * =========================================================================== */#ifndef UTIL___READER_WRITER__HPP#define UTIL___READER_WRITER__HPP/*  $Id: reader_writer.hpp,v 1000.2 2004/06/01 19:38:37 gouriano Exp $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Authors:  Anton Lavrentiev * * File Description: *   Abstract reader-writer interface classes * *//// @file reader_writer.hpp/// Abstract reader-writer interface classes/// Slightly adapted, however, to build std::streambuf on top of it.#include <corelib/ncbistl.hpp>#include <stddef.h>BEGIN_NCBI_SCOPE/// Result codes for I/O operations/// @sa IReader, IWriter, IReaderWriterenum ERW_Result {    eRW_NotImplemented = -1,    eRW_Success = 0,    eRW_Timeout,    eRW_Error,    eRW_Eof};/// A very basic data-read interface.class IReader{public:    /// Read as many as count bytes into a buffer pointed    /// to by buf argument.  Store the number of bytes actually read,    /// or 0 on EOF or error, via the pointer "bytes_read", if provided.    /// Special case:  if count passed as 0, then the value of    /// buf is ignored, and the return value is always eRW_Success, but    /// no change is actually done to the state of input device.    virtual ERW_Result Read(void*   buf,                            size_t  count,                            size_t* bytes_read = 0) = 0;    /// Via parameter "count" (which is guaranteed to be supplied non-NULL)    /// return the number of bytes that are ready to be read from input    /// device without blocking.  Return eRW_Success if the number    /// of pending bytes was stored at the location pointed to by "count".    /// Return eRW_NotImplemented if the number cannot be determined.    /// Otherwise, return other eRW_... condition to reflect the problem.    /// Note that if reporting 0 bytes ready, the method can either return    /// eRW_Success and zero *count, or return eRW_NotImplemented alone.    virtual ERW_Result PendingCount(size_t* count) = 0;    virtual ~IReader() {}};/// A very basic data-write interface.class IWriter{public:    /// Write up to count bytes from the buffer pointed to by    /// buf argument onto output device.  Store the number    /// of bytes actually written, or 0 if either count was    /// passed as 0 (buf is ignored in this case) or an error occurred,    /// via the "bytes_written" pointer, if provided.    virtual ERW_Result Write(const void* buf,                             size_t      count,                             size_t*     bytes_written = 0) = 0;    /// Flush pending data (if any) down to output device.    virtual ERW_Result Flush(void) = 0;    virtual ~IWriter() {}};/// A very basic data-read/write interface.class IReaderWriter : public IReader, public IWriter{public:    virtual ~IReaderWriter() {}};END_NCBI_SCOPE/* * =========================================================================== * $Log: reader_writer.hpp,v $ * Revision 1000.2  2004/06/01 19:38:37  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.12 * * Revision 1.12  2004/05/17 15:48:24  lavr * Comments slightly rearranged * * Revision 1.11  2004/04/01 14:14:01  lavr * Spell "occurred", "occurrence", and "occurring" * * Revision 1.10  2004/03/23 19:49:46  lavr * Fix IReader::PendingCount() description * * Revision 1.9  2003/11/03 20:01:52  lavr * Add ERW_Result::eRW_Timeout * * Revision 1.8  2003/10/22 18:14:47  lavr * IWriter::Flush() added * * Revision 1.7  2003/09/29 16:06:59  lavr * Change ERW_Result enumeration and members names * * Revision 1.6  2003/09/25 13:35:50  kuznets * Minor syntax issue corrected. * * Revision 1.5  2003/09/24 21:12:39  lavr * Doxygenification * * Revision 1.4  2003/09/24 15:56:24  kuznets * Minor syntax error fixed in ERW_Result declaration * * Revision 1.3  2003/09/24 15:45:36  lavr * Changed to use ERW_Result in return codes; pointers to store I/O counts * * Revision 1.2  2003/09/22 22:38:21  vakatov * Minor (mostly style) fixes;  renaming * * Revision 1.1  2003/09/22 20:26:23  lavr * Initial revision * =========================================================================== */#endif  /* UTIL___READER_WRITER__HPP */

⌨️ 快捷键说明

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