/* * Copyright (C) 2015 by Multi-Tech Systems * * This file is part of libmts. * * libmts 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 of the License, or * (at your option) any later version. * * libmts 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 libmts. If not, see . * */ /*! \file MTS_Buffer.h \brief A buffer \date 15JUN11 \author Sean Godinez A buffer. */ #ifndef MTS_BUFFER_H #define MTS_BUFFER_H #include #include #include namespace MTS { class Buffer { public: static const uint32_t DEFAULT_CAPACITY; explicit Buffer(uint32_t capacity = DEFAULT_CAPACITY); Buffer(const uint8_t* bytes, uint32_t count); Buffer(const Buffer& other); virtual ~Buffer(); Buffer& operator=(const Buffer& other); const uint8_t* getBuffer() const; std::string str() const; uint32_t getSize() const; void setSize(uint32_t newSize); uint32_t getCapacity() const; void setCapacity(uint32_t newCapacity); void clear(); void compact(); uint8_t operator[](uint32_t index) const; uint8_t operator[](uint32_t index); const uint8_t& at(uint32_t index) const; uint8_t& at(uint32_t index); Buffer& append(uint8_t byte); Buffer& append(const uint8_t* bytes, uint32_t count); Buffer& insert(uint32_t index, uint8_t byte); Buffer& insert(uint32_t index, const uint8_t* bytes, uint32_t count); Buffer& remove(uint32_t index); Buffer& remove(uint32_t start, uint32_t end); Buffer& replace(uint32_t start, uint32_t end, const uint8_t* bytes, uint32_t count); Buffer* clone() const; private: std::vector m_vBuffer; }; } #endif