1 #ifndef PROTON_BYTE_ARRAY_HPP 2 #define PROTON_BYTE_ARRAY_HPP 23 #include "./internal/export.hpp" 24 #include "./internal/comparable.hpp" 27 #include <proton/type_compat.h> 35 PN_CPP_EXTERN
void print_hex(std::ostream& o,
const uint8_t* p,
size_t n);
42 template <
size_t N>
class byte_array :
private internal::comparable<byte_array<N> > {
46 typedef uint8_t value_type;
47 typedef value_type* pointer;
48 typedef const value_type* const_pointer;
49 typedef value_type& reference;
50 typedef const value_type& const_reference;
51 typedef value_type* iterator;
52 typedef const value_type* const_iterator;
53 typedef std::size_t size_type;
54 typedef std::ptrdiff_t difference_type;
55 typedef std::reverse_iterator<iterator> reverse_iterator;
56 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
63 static size_t size() {
return N; }
67 value_type* begin() {
return bytes_; }
68 value_type* end() {
return bytes_+N; }
69 value_type& operator[](
size_t i) {
return bytes_[i]; }
71 const value_type* begin()
const {
return bytes_; }
72 const value_type* end()
const {
return bytes_+N; }
73 const value_type& operator[](
size_t i)
const {
return bytes_[i]; }
79 return std::equal(x.begin(), x.end(), y.begin());
83 return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end());
89 internal::print_hex(o, b.begin(), b.
size());
99 #endif // PROTON_BYTE_ARRAY_HPP static size_t size()
Size of the array.
Definition: byte_array.hpp:63
byte_array()
Zero-initialized byte array.
Definition: byte_array.hpp:60
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:88
The main Proton namespace.
Definition: annotation_key.hpp:30
Arbitrary fixed-size data.
Definition: byte_array.hpp:42