paho-mqtt-cpp
MQTT C++ Client for POSIX and Windows
Loading...
Searching...
No Matches
string_collection.h
Go to the documentation of this file.
1
7
8/*******************************************************************************
9 * Copyright (c) 2017 Frank Pagliughi <fpagliughi@mindspring.com>
10 *
11 * All rights reserved. This program and the accompanying materials
12 * are made available under the terms of the Eclipse Public License v2.0
13 * and Eclipse Distribution License v1.0 which accompany this distribution.
14 *
15 * The Eclipse Public License is available at
16 * http://www.eclipse.org/legal/epl-v20.html
17 * and the Eclipse Distribution License is available at
18 * http://www.eclipse.org/org/documents/edl-v10.php.
19 *
20 * Contributors:
21 * Frank Pagliughi - initial implementation and documentation
22 *******************************************************************************/
23
24#ifndef __mqtt_string_collection_h
25#define __mqtt_string_collection_h
26
27#include "MQTTAsync.h"
28#include "mqtt/types.h"
29#include <vector>
30#include <map>
31#include <memory>
32
33namespace mqtt {
34
36
43{
45 using collection_type = std::vector<string>;
47 using c_arr_type = std::vector<const char*>;
48
52 collection_type coll_;
60 c_arr_type cArr_;
66 void update_c_arr();
67
68public:
70 using ptr_t = std::shared_ptr<string_collection>;
72 using const_ptr_t = std::shared_ptr<const string_collection>;
73
82 string_collection(const string& str);
87 string_collection(string&& str);
92 string_collection(const collection_type& vec);
97 string_collection(collection_type&& vec);
112 string_collection(std::initializer_list<string> sl);
118 string_collection(std::initializer_list<const char*> sl);
123 static ptr_t create(const string& str) {
124 return std::make_shared<string_collection>(str);
125 }
132 static ptr_t create(string&& str) {
133 return std::make_shared<string_collection>(str);
134 }
140 static ptr_t create(const collection_type& vec) {
141 return std::make_shared<string_collection>(vec);
142 }
149 static ptr_t create(collection_type&& vec) {
150 return std::make_shared<string_collection>(vec);
151 }
158 static ptr_t create(std::initializer_list<string> sl) {
159 return std::make_shared<string_collection>(sl);
160 }
167 static ptr_t create(std::initializer_list<const char*> sl) {
168 return std::make_shared<string_collection>(sl);
169 }
188 bool empty() const { return coll_.empty(); }
193 size_t size() const { return coll_.size(); }
198 void push_back(const string& str);
203 void push_back(string&& str);
207 void clear();
213 const string& operator[](size_t i) const { return coll_[i]; }
225 char* const* c_arr() const { return (char* const *) cArr_.data(); }
226};
227
229
232
235
237
242{
244 using collection_type = std::map<string, string>;
246 using c_arr_type = std::vector<MQTTAsync_nameValue>;
247
251 collection_type map_;
255 c_arr_type cArr_;
261 void update_c_arr();
262
263public:
265 using ptr_t = std::shared_ptr<name_value_collection>;
267 using const_ptr_t = std::shared_ptr<const name_value_collection>;
269 using value_type = collection_type::value_type;
278 name_value_collection(const collection_type& map) : map_(map) {
279 update_c_arr();
280 }
285 name_value_collection(collection_type&& map) : map_(std::move(map)) {
286 update_c_arr();
287 }
293 : map_(other.map_) {
294 update_c_arr();
295 }
310 name_value_collection(std::initializer_list<value_type> init)
311 : map_{ init } {
312 update_c_arr();
313 }
319 map_ = other.map_;
320 update_c_arr();
321 return *this;
322 }
333 bool empty() const { return map_.empty(); }
338 size_t size() const { return map_.size(); }
342 void clear() {
343 map_.clear();
344 update_c_arr();
345 }
351 bool insert(const value_type& nvpair) {
352 if (map_.insert(nvpair).second) {
353 update_c_arr();
354 return true;
355 }
356 return false;
357 }
368 const MQTTAsync_nameValue* c_arr() const { return cArr_.data(); }
369};
370
371
373// end namespace mqtt
374}
375
376#endif // __mqtt_string_collection_h
377
Definition string_collection.h:242
name_value_collection & operator=(const name_value_collection &other)
Definition string_collection.h:318
std::shared_ptr< const name_value_collection > const_ptr_t
Definition string_collection.h:267
name_value_collection(const collection_type &map)
Definition string_collection.h:278
name_value_collection(const name_value_collection &other)
Definition string_collection.h:292
name_value_collection & operator=(name_value_collection &&other)=default
std::shared_ptr< name_value_collection > ptr_t
Definition string_collection.h:265
name_value_collection(collection_type &&map)
Definition string_collection.h:285
void clear()
Definition string_collection.h:342
name_value_collection(name_value_collection &&other)=default
bool insert(const value_type &nvpair)
Definition string_collection.h:351
bool empty() const
Definition string_collection.h:333
const MQTTAsync_nameValue * c_arr() const
Definition string_collection.h:368
name_value_collection(std::initializer_list< value_type > init)
Definition string_collection.h:310
collection_type::value_type value_type
Definition string_collection.h:269
size_t size() const
Definition string_collection.h:338
Definition string_collection.h:43
string_collection & operator=(const string_collection &coll)
string_collection(std::initializer_list< const char * > sl)
size_t size() const
Definition string_collection.h:193
string_collection(const string_collection &coll)
string_collection(std::initializer_list< string > sl)
static ptr_t create(std::initializer_list< string > sl)
Definition string_collection.h:158
std::shared_ptr< const string_collection > const_ptr_t
Definition string_collection.h:72
string_collection(string_collection &&coll)=default
string_collection(const collection_type &vec)
std::shared_ptr< string_collection > ptr_t
Definition string_collection.h:70
void push_back(const string &str)
const string & operator[](size_t i) const
Definition string_collection.h:213
string_collection(const string &str)
static ptr_t create(const collection_type &vec)
Definition string_collection.h:140
static ptr_t create(std::initializer_list< const char * > sl)
Definition string_collection.h:167
void push_back(string &&str)
static ptr_t create(const string &str)
Definition string_collection.h:123
static ptr_t create(collection_type &&vec)
Definition string_collection.h:149
string_collection(string &&str)
string_collection(collection_type &&vec)
string_collection & operator=(string_collection &&coll)=default
bool empty() const
Definition string_collection.h:188
static ptr_t create(string &&str)
Definition string_collection.h:132
char *const * c_arr() const
Definition string_collection.h:225
Definition async_client.h:49
string_collection::const_ptr_t const_string_collection_ptr
Definition string_collection.h:234
string_collection::ptr_t string_collection_ptr
Definition string_collection.h:231