/* * OutputBuffer.h - Part of the PeLib library. * * Copyright (c) 2004 - 2005 Sebastian Porst (webmaster@the-interweb.com) * All rights reserved. * * This software is licensed under the zlib/libpng License. * For more details see http://www.opensource.org/licenses/zlib-license.php * or the license information file (license.htm) in the root directory * of PeLib. */ #ifndef OUTPUTBUFFER_H #define OUTPUTBUFFER_H #include #include namespace PeLib { class OutputBuffer { private: std::vector& m_vBuffer; public: OutputBuffer(std::vector& vBuffer); const unsigned char* data() const; unsigned long size(); template OutputBuffer& operator<<(const T& value) { const unsigned char* p = reinterpret_cast(&value); std::copy(p, p + sizeof(value), std::back_inserter(m_vBuffer)); return *this; } void add(const char* lpBuffer, unsigned long ulSize); void reset(); void resize(unsigned int uiSize); void set(unsigned int uiPosition); template void update(unsigned long ulIndex, const T& value) { *(T*)(&m_vBuffer[ulIndex]) = value; } }; } #endif