blob: c9344553921a9de34ac7931c3b30e1cce0948c2e [file] [log] [blame]
// 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 LIBCHROMEOS_BRILLO_VARIANT_DICTIONARY_H_
#define LIBCHROMEOS_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 // LIBCHROMEOS_BRILLO_VARIANT_DICTIONARY_H_