Overte C++ Documentation
HifiConfigVariantMap.h
1 //
2 // HifiConfigVariantMap.h
3 // libraries/shared/src
4 //
5 // Created by Stephen Birarda on 2014-04-08.
6 // Copyright 2014 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #ifndef hifi_HifiConfigVariantMap_h
13 #define hifi_HifiConfigVariantMap_h
14 
15 #include <QtCore/QStringList>
16 #include <QtCore/QVariantMap>
17 
18 QVariant* valueForKeyPath(QVariantMap& variantMap, const QString& keyPath, bool shouldCreateIfMissing = false);
19 
20 class HifiConfigVariantMap {
21 public:
22  static QVariantMap mergeCLParametersWithJSONConfig(const QStringList& argumentList);
23 
24  void loadConfig();
25 
26  const QVariant value(const QString& key) const { return _userConfig.value(key); }
27  QVariant* valueForKeyPath(const QString& keyPath, bool shouldCreateIfMissing = false)
28  { return ::valueForKeyPath(_userConfig, keyPath, shouldCreateIfMissing); }
29 
30  QVariantMap& getConfig() { return _userConfig; }
31 
32  const QString& getUserConfigFilename() const { return _userConfigFilename; }
33  void setUserConfigFilename(const QString& filename) { _userConfigFilename = filename; }
34 private:
35  QString _userConfigFilename;
36 
37  QVariantMap _userConfig;
38 
39  void loadMapFromJSONFile(QVariantMap& existingMap, const QString& filename);
40  void addMissingValuesToExistingMap(QVariantMap& existingMap, const QVariantMap& newMap);
41 };
42 
43 #endif // hifi_HifiConfigVariantMap_h