A Buffer class.
This module is designed to work with the datcxx build tool. To add this module to your project us the following command...
build add datcxx/bufferbuild testBuffer<uint8_t> a(128); Buffer<uint8_t> b ={0x00, 0xFF }; auto c = a.concat(b);The Buffer constructor overloads operator<< so that it can be easily piped to std streams ie std::cout.
Buffer<T> b;Buffer<T> b(size_t size);Buffer<T> b ={0x00, 0x00 };Buffer<T> b({0x00, 0x00 });Buffer<T> b(anotherBuffer);Returns an integer, the amount of memory allocated for buf in bytes. Note that this does not necessarily reflect the amount of "usable" data within buf.
Buffer<uint8_t> b ={0x00, 0x00 }; b.length(); // 2Returns a std::string version of the buffer's value.
Returns an encoded std::String (at optionally specified start and end).
| Type | Parameter | Default Value | Optional | Description |
|---|---|---|---|---|
| std::string | encoding | No | Encoding, currently supports either "base64" or "hex". | |
| size_t | start | 0 | Yes | The offset within buf from which to begin the slice. |
| size_t | end | buf.length() | Yes | The offset within buf at which to stop the slice. |
Buffer<uint8_t> b("Hello, world!"); b.toString("base64"); // "SGVsbG8sIHdvcmxkIQ=="Returns an integer, the number of bytes copied.
| Type | Parameter | Default Value | Optional | Description |
|---|---|---|---|---|
| Buffer | target | No | A Buffer to copy into. | |
| size_t | targetStart | 0 | Yes | The offset within target at which to begin writing. |
| size_t | sourceStart | 0 | Yes | The offset within buf from which to begin copying. |
| size_t | sourceEnd | buf.length() | Yes | The offset within buf at which to stop. copying (not inclusive). |
Buffer<uint8_t> a({01, 02, 03, 04, 05, 06, 07, 0xFF }); Buffer<uint8_t> b({00, 00, 00, 00, 00, 00 }); a.copy(b, 3, 2); // a == <Buffer 01 02 03 04 05 06 07 ff>// b == <Buffer 00 00 00 03 04 05>Returns a new Buffer, the result of concatenating a list of Buffer instances.
Buffer<uint8_t> a({0x01, 0x02 }); Buffer<uint8_t> b({0x03, 0x04 }); Buffer<uint8_t> c({0x05, 0x06 }); auto d = a.concat({b, c }); // d == <Buffer 01 02 03 04 05 06>To compare two buffers you can use the == and != operators. Each element in the buffer will be compared, if all are equal the result is true.
Buffer<uint8_t> b({0x03, 0x04 }); Buffer<uint8_t> c({0x05, 0x06 }); b != c; // trueReturns a new instance of Buffer that references the same memory as the original, but offset and cropped by the start and end indices.
| Type | Parameter | Default Value | Optional | Description |
|---|---|---|---|---|
| size_t | start | 0 | No | Where the new Buffer will start. |
| size_t | end | buf.length() | Yes | Where the new Buffer will end (not inclusive). |
Buffer<uint8_t> b({0x01, 0x02, 0x03, 0x04 }); auto slice = b.slice(2, 4); // <Buffer 03 04>