1 // --------------------------------------------------------------------- 2 // Copyright (C) 2015 Chris Garry 3 // 4 // This program is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with this program. If not, see <http://www.gnu.org/licenses/> 16 // --------------------------------------------------------------------- 17 18 19 #ifndef PIPP_BUFFER_H 20 #define PIPP_BUFFER_H 21 22 #include <cstdint> 23 #include <cstdint> 24 #include <cstddef> 25 26 27 //#define DEBUG 28 29 30 class c_pipp_buffer { 31 // ------------------------------------------ 32 // Private definitions 33 // ------------------------------------------ 34 private: 35 uint32_t m_buffer_size; 36 uint8_t *mp_buffer; 37 38 // ------------------------------------------ 39 // Public definitions 40 // ------------------------------------------ 41 42 public: 43 // ------------------------------------------ 44 // Constructor 45 // ------------------------------------------ c_pipp_buffer()46 c_pipp_buffer() : 47 m_buffer_size(0), 48 mp_buffer(nullptr) {}; 49 50 51 // ------------------------------------------ 52 // Destructor 53 // ------------------------------------------ ~c_pipp_buffer()54 ~c_pipp_buffer() { 55 delete [] mp_buffer; 56 }; 57 58 59 // ------------------------------------------ 60 // Get buffer ptr 61 // ------------------------------------------ get_buffer_ptr()62 inline uint8_t *get_buffer_ptr() { 63 return mp_buffer; 64 }; 65 66 67 // ------------------------------------------ 68 // Member function to set a new buffer 69 // ------------------------------------------ 70 // Caller has the responsibility to esure the old buffer is freed 71 // and the new buffer is large enough set_buffer_ptr(uint8_t * new_ptr)72 uint8_t *set_buffer_ptr(uint8_t *new_ptr) { 73 uint8_t *ret = mp_buffer; 74 mp_buffer = new_ptr; 75 return ret; 76 } 77 78 79 // ------------------------------------------ 80 // Member function to get a new buffer 81 // ------------------------------------------ 82 uint8_t *get_buffer( 83 uint32_t size); 84 85 86 // ------------------------------------------ 87 // Member function to get a new zeroed buffer 88 // ------------------------------------------ 89 uint8_t *get_zero_buffer( 90 uint32_t size); 91 92 93 // ------------------------------------------ 94 // Member function to delete buffer 95 // ------------------------------------------ 96 void delete_buffer(); 97 98 }; 99 100 101 #endif // PIPP_BUFFER_H 102