WSF
AttributeSet.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2013 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11#ifndef ATTRIBUTESET_HPP
12#define ATTRIBUTESET_HPP
13#include <unordered_map>
14
15#include "UtVariant.hpp"
16#include "ViExport.hpp"
17
18class UtQtXmlWriter;
19class UtQtXmlReader;
20class UtQtXmlElementReader;
21
22namespace wizard
23{
24class AttributeOwner;
25
32{
33public:
34 friend class AttributeOwner;
35
36 explicit AttributeSet(const std::string& aName);
37
39 AttributeSet(const AttributeSet& aSrc);
40
42
43 void Apply(const AttributeSet& aOtherSet);
44
45 void WriteXML(const std::string& aName, UtQtXmlWriter& aWriter) const;
46 void ReadXML(UtQtXmlElementReader& aReader);
48 bool ReadSingleXML(UtQtXmlElementReader& aReader);
49
50 std::string ToString();
51
52 void SetValue(const std::string& aName, const UtVariant& aValue);
53
54 bool GetValue(const std::string& aName, UtVariant& aValue) const;
55
56 UtVariant GetValue(const std::string& aName) const;
57
58 bool GetBool(const std::string& aName, bool aDefautlValue) const;
59 double GetDouble(const std::string& aName, double aDefaultValue) const;
60
61 int GetInt(const std::string& aName, int aDefaultValue) const;
62
63 std::string GetString(const std::string& aName, const std::string& aDefaultValue) const;
64
65 AttributeSet& Child(const std::string& aChildName);
66 AttributeSet* FindChild(const std::string& aChildName);
67 bool RenameChild(const std::string& aCurrentName, const std::string& aNewName);
68 bool Rename(const std::string& aNewName);
69 bool RemoveChild(const std::string& aChildName);
70
71 bool HasAttribute(const std::string& aName) const;
72 bool HasChild(const std::string& aChildName) const;
73
75
76 AttributeSet* GetParent() { return mParentSet; }
77
78 const std::string& GetAttributeName() const { return mAttributeName; }
79
80private:
82
83 void BindOwner(AttributeOwner* aOwnerPtr);
84 void UnbindOwner(AttributeOwner* aOwnerPtr);
85
86 AttributeSet& operator=(const AttributeSet&); // not implemented as of yet
87
88 using AttributeStringMap = std::unordered_map<std::string, UtVariant>;
89 using ChildMap = std::unordered_map<std::string, AttributeSet*>;
90 AttributeOwner* mOwnerPtr;
91 AttributeSet* mParentSet;
92 std::string mAttributeName;
93 AttributeStringMap mStrAttributes;
94 ChildMap mChildren;
95};
96} // namespace wizard
97#endif
#define VI_EXPORT
Definition ViExport.hpp:38
Definition AttributeOwner.hpp:23
Definition AttributeSet.hpp:32
void Apply(const AttributeSet &aOtherSet)
Definition AttributeSet.cpp:133
const std::string & GetAttributeName() const
Definition AttributeSet.hpp:78
void WriteXML(const std::string &aName, UtQtXmlWriter &aWriter) const
Definition AttributeSet.cpp:294
bool GetBool(const std::string &aName, bool aDefautlValue) const
Definition AttributeSet.cpp:54
int GetInt(const std::string &aName, int aDefaultValue) const
Definition AttributeSet.cpp:64
AttributeSet(const std::string &aName)
Definition AttributeSet.cpp:33
AttributeSet & Child(const std::string &aChildName)
Definition AttributeSet.cpp:145
bool ReadSingleXML(UtQtXmlElementReader &aReader)
Read the top-level attribute set from a single entry.
Definition AttributeSet.cpp:357
friend class AttributeOwner
Definition AttributeSet.hpp:34
bool HasAttribute(const std::string &aName) const
Definition AttributeSet.cpp:121
bool HasChild(const std::string &aChildName) const
Definition AttributeSet.cpp:126
std::string ToString()
Definition AttributeSet.cpp:321
void NotifyOwnersOfChange()
Definition AttributeSet.cpp:386
AttributeSet * GetParent()
Definition AttributeSet.hpp:76
bool RenameChild(const std::string &aCurrentName, const std::string &aNewName)
Definition AttributeSet.cpp:178
std::string GetString(const std::string &aName, const std::string &aDefaultValue) const
Definition AttributeSet.cpp:87
void ReadXML(UtQtXmlElementReader &aReader)
Definition AttributeSet.cpp:328
bool RemoveChild(const std::string &aChildName)
Definition AttributeSet.cpp:156
bool Rename(const std::string &aNewName)
Definition AttributeSet.cpp:193
void SetValue(const std::string &aName, const UtVariant &aValue)
Definition AttributeSet.cpp:97
AttributeSet * FindChild(const std::string &aChildName)
Definition AttributeSet.cpp:168
double GetDouble(const std::string &aName, double aDefaultValue) const
Definition AttributeSet.cpp:74
bool GetValue(const std::string &aName, UtVariant &aValue) const
Definition AttributeSet.cpp:102
Definition Runner.hpp:22
Copyrights Multiple, All Rights Reserved