// 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_