• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

crypt/bdbuffer.h

Go to the documentation of this file.
00001 // -*- c++ -*-
00002 //
00003 // $Id: bdbuffer.h 3342 2010-09-17 18:32:00Z java $
00004 //
00005 // Copyright (C) 2008-2010  Rafael Ostertag
00006 //
00007 // This file is part of YAPET.
00008 //
00009 // YAPET is free software: you can redistribute it and/or modify it under the
00010 // terms of the GNU General Public License as published by the Free Software
00011 // Foundation, either version 3 of the License, or (at your option) any later
00012 // version.
00013 //
00014 // YAPET is distributed in the hope that it will be useful, but WITHOUT ANY
00015 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
00016 // FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
00017 // details.
00018 //
00019 // You should have received a copy of the GNU General Public License along with
00020 // YAPET.  If not, see <http://www.gnu.org/licenses/>.
00021 //
00022 // Additional permission under GNU GPL version 3 section 7
00023 //
00024 // If you modify this program, or any covered work, by linking or combining it
00025 // with the OpenSSL project's OpenSSL library (or a modified version of that
00026 // library), containing parts covered by the terms of the OpenSSL or SSLeay
00027 // licenses, Rafael Ostertag grants you additional permission to convey the
00028 // resulting work.  Corresponding Source for a non-source form of such a
00029 // combination shall include the source code for the parts of OpenSSL used as
00030 // well as that of the covered work.
00031 //
00032 
00033 #ifndef _BDBUFFER_H
00034 #define _BDBUFFER_H
00035 
00036 #ifdef HAVE_CONFIG_H
00037 #include <config.h>
00038 #endif
00039 
00040 #ifdef HAVE_INTTYPES_H
00041 # include <inttypes.h>
00042 #endif
00043 
00044 #ifdef HAVE_STDLIB_h
00045 # include <stdlib.h>
00046 #endif
00047 
00048 #ifdef HAVE_STDEXCEPT
00049 # include <stdexcept>
00050 #endif
00051 
00052 #include "yapetexception.h"
00053 
00054 namespace YAPET {
00071     class BDBuffer {
00072         private:
00078             uint32_t _size;
00079 
00085             uint8_t* data;
00086 
00087         protected:
00089             uint8_t* alloc_mem (uint32_t s) throw (YAPETException);
00091             void free_mem (uint8_t* d, uint32_t s);
00092 
00093         public:
00095             BDBuffer (uint32_t is) throw (YAPETException);
00096             BDBuffer();
00097             BDBuffer (const BDBuffer& ed) throw (YAPETException);
00099             ~BDBuffer();
00100 
00102             void resize (uint32_t ns) throw (YAPETException);
00111             uint32_t size() const {
00112                 return _size;
00113             }
00114 
00116             uint8_t* at (uint32_t pos) throw (std::out_of_range);
00118             const uint8_t* at (uint32_t pos) const throw (std::out_of_range);
00119 
00121             const uint8_t* operator() () const {
00122                 return data;
00123             }
00125             uint8_t* operator() () {
00126                 return data;
00127             }
00128 
00130             operator uint8_t*() {
00131                 return data;
00132             }
00134             operator const uint8_t*() const {
00135                 return data;
00136             }
00137 
00139             operator const void*() {
00140                 return (void*) data;
00141             }
00142 
00143             const BDBuffer& operator= (const BDBuffer& ed);
00144 
00145     };
00146 
00147 }
00148 
00149 #endif // _BDBUFFER_H

Generated on Sun Sep 19 2010 15:37:13 for YAPET by  doxygen 1.7.1