24 #ifndef __mqtt_buffer_ref_h
25 #define __mqtt_buffer_ref_h
71 using blob = std::basic_string<value_type>;
137 static_assert(
sizeof(
char) ==
sizeof(T),
"can only use C arr with char or byte buffers");
182 static_assert(
sizeof(
char) ==
sizeof(T),
"can only use C arr with char or byte buffers");
183 data_.reset(
new blob(
reinterpret_cast<const value_type*
>(cstr), strlen(cstr)));
195 template <
typename OT>
197 static_assert(
sizeof(OT) ==
sizeof(T),
"Can only assign buffers if values the same size");
212 explicit operator bool()
const {
return bool(data_); }
226 bool empty()
const {
return !data_ || data_->empty(); }
236 size_t size()
const {
return data_->size(); }
241 size_t length()
const {
return data_->length(); }
257 const char*
c_str()
const {
return data_->c_str(); }
278 template <
typename T>
Definition: buffer_ref.h:60
const pointer_type & ptr() const
Definition: buffer_ref.h:262
buffer_ref(const char *buf)
Definition: buffer_ref.h:135
const value_type & operator[](size_t i) const
Definition: buffer_ref.h:268
buffer_ref(pointer_type &&p)
Definition: buffer_ref.h:123
T value_type
Definition: buffer_ref.h:66
const char * c_str() const
Definition: buffer_ref.h:257
buffer_ref(const buffer_ref &buf)=default
buffer_ref & operator=(const blob &b)
Definition: buffer_ref.h:160
size_t size() const
Definition: buffer_ref.h:236
bool is_null() const
Definition: buffer_ref.h:220
buffer_ref & operator=(buffer_ref &&rhs)=default
std::basic_string< value_type > blob
Definition: buffer_ref.h:71
const blob & to_string() const
Definition: buffer_ref.h:251
buffer_ref & operator=(const buffer_ref &rhs)=default
buffer_ref & operator=(blob &&b)
Definition: buffer_ref.h:172
const blob & str() const
Definition: buffer_ref.h:246
std::shared_ptr< const blob > pointer_type
Definition: buffer_ref.h:76
size_t length() const
Definition: buffer_ref.h:241
buffer_ref(const blob &b)
Definition: buffer_ref.h:101
buffer_ref & operator=(const char *cstr)
Definition: buffer_ref.h:181
buffer_ref(const value_type *buf, size_t n)
Definition: buffer_ref.h:129
buffer_ref(buffer_ref &&buf)=default
buffer_ref & operator=(const buffer_ref< OT > &rhs)
Definition: buffer_ref.h:196
void reset()
Definition: buffer_ref.h:204
buffer_ref(const pointer_type &p)
Definition: buffer_ref.h:115
bool empty() const
Definition: buffer_ref.h:226
const value_type * data() const
Definition: buffer_ref.h:231
buffer_ref(blob &&b)
Definition: buffer_ref.h:107
Definition: async_client.h:49
std::ostream & operator<<(std::ostream &os, const buffer_ref< T > &buf)
Definition: buffer_ref.h:279