ASPiK SDK
uiattributes.h
1 // This file is part of VSTGUI. It is subject to the license terms
2 // in the LICENSE file found in the top-level directory of this
3 // distribution and at http://github.com/steinbergmedia/vstgui/LICENSE
4 
5 #ifndef __uiattributes__
6 #define __uiattributes__
7 
8 #include "../lib/vstguifwd.h"
9 #include "../lib/cstring.h"
10 
11 #include <vector>
12 #include "../lib/platform/std_unorderedmap.h"
13 
14 namespace VSTGUI {
15 class OutputStream;
16 class InputStream;
17 
18 using UIAttributesMap = std::unordered_map<std::string,std::string>;
19 
20 //-----------------------------------------------------------------------------
21 class UIAttributes : public NonAtomicReferenceCounted, private UIAttributesMap
22 {
23 public:
24  using StringArray = std::vector<std::string>;
25 
26  explicit UIAttributes (UTF8StringPtr* attributes = nullptr);
27  ~UIAttributes () noexcept override = default;
28 
29  using UIAttributesMap::begin;
30  using UIAttributesMap::end;
31  using UIAttributesMap::iterator;
32  using UIAttributesMap::const_iterator;
33 
34  bool hasAttribute (const std::string& name) const;
35  const std::string* getAttributeValue (const std::string& name) const;
36  void setAttribute (const std::string& name, const std::string& value);
37  void setAttribute (const std::string& name, std::string&& value);
38  void setAttribute (std::string&& name, std::string&& value);
39  void removeAttribute (const std::string& name);
40 
41  void setBooleanAttribute (const std::string& name, bool value);
42  bool getBooleanAttribute (const std::string& name, bool& value) const;
43 
44  void setIntegerAttribute (const std::string& name, int32_t value);
45  bool getIntegerAttribute (const std::string& name, int32_t& value) const;
46 
47  void setDoubleAttribute (const std::string& name, double value);
48  bool getDoubleAttribute (const std::string& name, double& value) const;
49 
50  void setPointAttribute (const std::string& name, const CPoint& p);
51  bool getPointAttribute (const std::string& name, CPoint& p) const;
52 
53  void setRectAttribute (const std::string& name, const CRect& r);
54  bool getRectAttribute (const std::string& name, CRect& r) const;
55 
56  void setStringArrayAttribute (const std::string& name, const StringArray& values);
57  bool getStringArrayAttribute (const std::string& name, StringArray& values) const;
58 
59  static std::string createStringArrayValue (const StringArray& values);
60 
61  void removeAll () { clear (); }
62 
63  bool store (OutputStream& stream) const;
64  bool restore (InputStream& stream);
65 };
66 
67 }
68 
69 #endif // __uiattributes__
Definition: cstream.h:50
Rect structure.
Definition: crect.h:17
Definition: cstream.h:21
Definition: customcontrols.cpp:8
Definition: uiattributes.h:21
Definition: vstguibase.h:247
Point structure.
Definition: cpoint.h:17