mysql-5.0.24源码包

源代码在线查看: file.hpp

软件大小: 19507 K
上传用户: happiness0416
关键词: mysql 24 源码
下载地址: 免注册下载 普通下载 VIP

相关代码

				/* file.hpp                                				 *				 * Copyright (C) 2003 Sawtooth Consulting Ltd.				 *				 * This file is part of yaSSL.				 *				 * yaSSL 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.				 *				 * yaSSL 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				 */								/* file.hpp provies File Sources and Sinks				*/												#ifndef TAO_CRYPT_FILE_HPP				#define TAO_CRYPT_FILE_HPP								#include "misc.hpp"				#include "block.hpp"				#include "error.hpp"				#include 								namespace TaoCrypt {												class Source {				    ByteBlock buffer_;				    word32    current_;				    Error     error_;				public:				    explicit Source(word32 sz = 0) : buffer_(sz), current_(0) {}				    Source(const byte* b, word32 sz) : buffer_(b, sz), current_(0) {}								    word32 size() const        { return buffer_.size(); }				    void   grow(word32 sz)     { buffer_.CleanGrow(sz); }				   				    const byte*  get_buffer()  const { return buffer_.get_buffer(); }				    const byte*  get_current() const { return &buffer_[current_]; }				    word32       get_index()   const { return current_; }				    void         set_index(word32 i) { current_ = i; }								    byte operator[] (word32 i) { current_ = i; return next(); }				    byte next() { return buffer_[current_++]; }				    byte prev() { return buffer_[--current_]; }								    void add(const byte* data, word32 len)				    {				        memcpy(buffer_.get_buffer() + current_, data, len);				        current_ += len;				    }								    void advance(word32 i) { current_ += i; }				    void reset(ByteBlock&);								    Error  GetError()              { return error_; }				    void   SetError(ErrorNumber w) { error_.SetError(w); }								    friend class FileSource;  // for get()				private:				    Source(const Source& that) : buffer_(that.buffer_), current_(that.current_) {}				    Source& operator=(const Source& that)				    {				        Source tmp(that);				        Swap(tmp);				        return *this;				    }								    void Swap(Source& other) 				    {				        buffer_.Swap(other.buffer_);				        mySTL::swap(current_, other.current_);				    }								};												// File Source				class FileSource {				    FILE* file_;				public:				    FileSource(const char* fname, Source& source);				    ~FileSource();				   				    word32   size(bool use_current = false);				private:				    word32   get(Source&);				    word32   size_left();                     								    FileSource(const FileSource&);            // hide				    FileSource& operator=(const FileSource&); // hide				};												// File Sink				class FileSink {				    FILE* file_;				public:				    FileSink(const char* fname, Source& source);				    ~FileSink();								    word32 size(bool use_current = false);				private:				    void put(Source&);								    FileSink(const FileSink&);            // hide				    FileSink& operator=(const FileSink&); // hide				};																} // namespace								#endif // TAO_CRYPT_FILE_HPP							

相关资源