]> git.donarmstrong.com Git - bamtools.git/blob - src/api/internal/io/ByteArray_p.h
89d9e0f81216e6f277712fec8da663a29fea1bc6
[bamtools.git] / src / api / internal / io / ByteArray_p.h
1 #ifndef BYTEARRAY_P_H
2 #define BYTEARRAY_P_H
3
4 #include "api/api_global.h"
5 #include <string>
6 #include <vector>
7
8 namespace BamTools {
9 namespace Internal {
10
11 // provides a wrapper around a byte vector
12 class ByteArray {
13
14     // ctors & dtor
15     public:
16         ByteArray(void);
17         ByteArray(const std::string& value);
18         ByteArray(const std::vector<char>& value);
19         ByteArray(const char* value, size_t n);
20         ByteArray(const ByteArray& other);
21         ~ByteArray(void);
22
23         ByteArray& operator=(const ByteArray& other);
24
25     // ByteArray interface
26     public:
27
28         // data access
29         const char* ConstData(void) const;
30         char* Data(void);
31         const char& operator[](size_t i) const;
32         char& operator[](size_t i);
33
34         // byte array manipulation
35         void Clear(void);
36         size_t IndexOf(const char c, const size_t from = 0, const size_t to = 0) const;
37         ByteArray& Remove(size_t from, size_t n);
38         void Resize(size_t n);
39         size_t Size(void) const;
40         void Squeeze(void);
41
42     // data members
43     private:
44         std::vector<char> m_data;
45 };
46
47 } // namespace Internal
48 } // namespace BamTools
49
50 #endif // BYTEARRAY_P_H