unsigned char array
Dependents: MGC3130 SmartLabXBeeCore
Diff: BufferedArray.h
- Revision:
- 0:b35da77c40ca
- Child:
- 1:77c1ea04eb5a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BufferedArray.h Wed Nov 11 18:33:41 2015 +0000 @@ -0,0 +1,101 @@ +#ifndef UK_AC_HERTS_SMARTLAB_XBEE_BufferedArray +#define UK_AC_HERTS_SMARTLAB_XBEE_BufferedArray + +#include "mbed.h" + +/** +* Represent a generic, dynamic-length raw binary data buffer. +*/ +class BufferedArray +{ +protected : + /// initial size and automatically increase length. + int expandSize; + + /// Raw data + unsigned char * data; + + /// Current index of the data, could also used as data lendth. + int index; + + /// Max data size that the raw data can hold. + int max; + + void expandSpace(int length); + +public: + BufferedArray(int initialLength, int expandSize); + + BufferedArray(BufferedArray * bufferedArray); + + ~BufferedArray(); + + /** Get the raw data. + * @returns unsigned char array. + */ + unsigned char * gets(); + + /** Get the raw data from a specific location. + * + * @param position where to retrieve + * + * @returns unsigned char array. + */ + unsigned char * gets(int position); + + /** Get 1 byte data from a specific location. + * + * @param position where to retrieve + * + * @returns unsigned char. + */ + unsigned char get(int position); + + /** Get the current index. + * @returns unsigned char array. + */ + int getPosition(); + + /** Set the index within the max length of raw data. + * @param position where to begin read and write + */ + void setPosition(int position); + + /** Reset the raw data. + * @param length current max size for the raw data + */ + void allocate(int length); + + /** Reset the position and does not affect the content of the data. + * @param length current max size for the raw data + */ + void rewind(); + + /** Write 8-bit data into current posiston and increase by 1. + * @param value sigle byte + */ + void set(unsigned char value); + + /** Write array of data into current posiston, and increase by the lenght. + * @param value array of byte + * @param offset start point of the data + * @param length length to write + */ + void sets(const void * value, int length); + + /** Write 8-bit data into specific posiston and deos not affect the current position. + * @param position where to write + * @param value sigle byte + */ + void set(int position, unsigned char value); + + /** Write array of data into specific posiston and deos not affect the current position. + * @param position where to write + * @param value array of byte + * @param offset start point of the data + * @param length length to write + */ + void sets(int position, const void * value, int length); +}; + +#endif