nx_metadata_sdk  1.0
Metadata SDK
string_map.h
1 // Copyright 2018-present Network Optix, Inc. Licensed under MPL 2.0: www.mozilla.org/MPL/2.0/
2 
3 #pragma once
4 
5 #include <map>
6 
7 #include <nx/sdk/helpers/ref_countable.h>
8 
9 #include <nx/sdk/i_string_map.h>
10 
11 namespace nx::sdk {
12 
13 // TODO: Do something with O(N^2) complexity of lookup by index.
14 class StringMap: public RefCountable<IStringMap>
15 {
16 public:
17  using Map = std::map<std::string, std::string>;
18 
19  StringMap() = default;
20 
21  StringMap(Map map): m_map(std::move(map)) {}
22 
23  void setItem(const std::string& key, const std::string& value);
24 
25  void clear();
26 
27  virtual int count() const override;
28 
30  virtual const char* key(int i) const override;
31 
33  virtual const char* value(int i) const override;
34 
35  virtual const char* value(const char* key) const override;
36 
37 private:
38  Map m_map;
39 };
40 
41 } // namespace nx::sdk
Definition: string_map.h:14
virtual const char * key(int i) const override
Definition: string_map.cpp:27
Definition: device_agent.h:13
virtual const char * value(int i) const override
Definition: string_map.cpp:37
Definition: ref_countable.h:83