1 #ifndef PROTON_BYTE_ARRAY_HPP 2 #define PROTON_BYTE_ARRAY_HPP 23 #include "./internal/export.hpp" 24 #include "./internal/comparable.hpp" 33 PN_CPP_EXTERN
void print_hex(std::ostream& o,
const uint8_t* p,
size_t n);
40 template <
size_t N>
class byte_array :
private internal::comparable<byte_array<N> > {
44 typedef uint8_t value_type;
45 typedef value_type* pointer;
46 typedef const value_type* const_pointer;
47 typedef value_type& reference;
48 typedef const value_type& const_reference;
49 typedef value_type* iterator;
50 typedef const value_type* const_iterator;
51 typedef std::size_t size_type;
52 typedef std::ptrdiff_t difference_type;
53 typedef std::reverse_iterator<iterator> reverse_iterator;
54 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
61 static size_t size() {
return N; }
65 value_type* begin() {
return bytes_; }
66 value_type* end() {
return bytes_+N; }
67 value_type& operator[](
size_t i) {
return bytes_[i]; }
69 const value_type* begin()
const {
return bytes_; }
70 const value_type* end()
const {
return bytes_+N; }
71 const value_type& operator[](
size_t i)
const {
return bytes_[i]; }
77 return std::equal(x.begin(), x.end(), y.begin());
81 return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end());
87 internal::print_hex(o, b.begin(), b.
size());
97 #endif // PROTON_BYTE_ARRAY_HPP static size_t size()
Size of the array.
Definition: byte_array.hpp:61
byte_array()
Zero-initialized byte array.
Definition: byte_array.hpp:58
Forward declarations for all the C++ types used by Proton to represent AMQP types.
friend std::ostream & operator<<(std::ostream &o, const byte_array &b)
Print byte array in hex.
Definition: byte_array.hpp:86
Type traits for mapping between AMQP and C++ types.
Definition: annotation_key.hpp:28
Arbitrary fixed-size data.
Definition: byte_array.hpp:40