You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1.0 KiB
33 lines
1.0 KiB
// 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_
|
|
|