| // Copyright 2014 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef LIBBRILLO_BRILLO_VARIANT_DICTIONARY_H_ |
| #define LIBBRILLO_BRILLO_VARIANT_DICTIONARY_H_ |
| |
| #include <map> |
| #include <string> |
| |
| #include <brillo/any.h> |
| #include <brillo/brillo_export.h> |
| |
| namespace brillo { |
| |
| using VariantDictionary = std::map<std::string, brillo::Any>; |
| |
| // GetVariantValueOrDefault tries to retrieve the named key from the dictionary |
| // and convert it to the type T. If the value does not exist, or the type |
| // conversion fails, the default value of type T is returned. |
| template <typename T> |
| const T GetVariantValueOrDefault(const VariantDictionary& dictionary, |
| const std::string& key) { |
| VariantDictionary::const_iterator it = dictionary.find(key); |
| if (it == dictionary.end()) { |
| return T(); |
| } |
| return it->second.TryGet<T>(); |
| } |
| |
| } // namespace brillo |
| |
| #endif // LIBBRILLO_BRILLO_VARIANT_DICTIONARY_H_ |