blob: d057d99b74d259046a7c28fdef9e1b5ff33a25d6 [file] [log] [blame]
Paul Stewart8e7e4592012-04-29 09:47:48 -07001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "shill/property_store_inspector.h"
6
Paul Stewart8e7e4592012-04-29 09:47:48 -07007using std::map;
8using std::string;
9using std::vector;
10
11namespace shill {
12
Darin Petkov4682aa82012-05-31 16:24:11 +020013PropertyStoreInspector::PropertyStoreInspector() : store_(NULL) {}
Paul Stewart8e7e4592012-04-29 09:47:48 -070014
15PropertyStoreInspector::PropertyStoreInspector(const PropertyStore *store)
16 : store_(store) {}
17
18PropertyStoreInspector::~PropertyStoreInspector() {}
19
Darin Petkov4682aa82012-05-31 16:24:11 +020020bool PropertyStoreInspector::GetBoolProperty(const string &name, bool *value) {
21 return GetProperty(name, value, &PropertyStore::GetBoolPropertiesIter);
Paul Stewart8e7e4592012-04-29 09:47:48 -070022}
23
24bool PropertyStoreInspector::GetInt16Property(const string &name,
Darin Petkov4682aa82012-05-31 16:24:11 +020025 int16 *value) {
26 return GetProperty(name, value, &PropertyStore::GetInt16PropertiesIter);
Paul Stewart8e7e4592012-04-29 09:47:48 -070027}
28
29bool PropertyStoreInspector::GetInt32Property(const string &name,
Darin Petkov4682aa82012-05-31 16:24:11 +020030 int32 *value) {
31 return GetProperty(name, value, &PropertyStore::GetInt32PropertiesIter);
Paul Stewart8e7e4592012-04-29 09:47:48 -070032}
33
34bool PropertyStoreInspector::GetKeyValueStoreProperty(const string &name,
Darin Petkov4682aa82012-05-31 16:24:11 +020035 KeyValueStore *value) {
36 return GetProperty(name, value,
Paul Stewart8e7e4592012-04-29 09:47:48 -070037 &PropertyStore::GetKeyValueStorePropertiesIter);
38}
39
40bool PropertyStoreInspector::GetStringProperty(const string &name,
Darin Petkov4682aa82012-05-31 16:24:11 +020041 string *value) {
42 return GetProperty(name, value, &PropertyStore::GetStringPropertiesIter);
Paul Stewart8e7e4592012-04-29 09:47:48 -070043}
44
45bool PropertyStoreInspector::GetStringmapProperty(const string &name,
Darin Petkov4682aa82012-05-31 16:24:11 +020046 map<string, string> *values) {
47 return GetProperty(name, values, &PropertyStore::GetStringmapPropertiesIter);
Paul Stewart8e7e4592012-04-29 09:47:48 -070048}
49
50bool PropertyStoreInspector::GetStringsProperty(const string &name,
Darin Petkov4682aa82012-05-31 16:24:11 +020051 vector<string> *values) {
52 return GetProperty(name, values, &PropertyStore::GetStringsPropertiesIter);
Paul Stewart8e7e4592012-04-29 09:47:48 -070053}
54
55bool PropertyStoreInspector::GetUint8Property(const string &name,
Darin Petkov4682aa82012-05-31 16:24:11 +020056 uint8 *value) {
57 return GetProperty(name, value, &PropertyStore::GetUint8PropertiesIter);
Paul Stewart8e7e4592012-04-29 09:47:48 -070058}
59
60bool PropertyStoreInspector::GetUint16Property(const string &name,
Darin Petkov4682aa82012-05-31 16:24:11 +020061 uint16 *value) {
62 return GetProperty(name, value, &PropertyStore::GetUint16PropertiesIter);
Paul Stewart8e7e4592012-04-29 09:47:48 -070063}
64
65bool PropertyStoreInspector::GetUint32Property(const string &name,
Darin Petkov4682aa82012-05-31 16:24:11 +020066 uint32 *value) {
67 return GetProperty(name, value, &PropertyStore::GetUint32PropertiesIter);
Paul Stewart8e7e4592012-04-29 09:47:48 -070068}
69
70bool PropertyStoreInspector::GetRpcIdentifierProperty(const string &name,
Darin Petkov4682aa82012-05-31 16:24:11 +020071 RpcIdentifier *value) {
72 return GetProperty(name, value,
Paul Stewart8e7e4592012-04-29 09:47:48 -070073 &PropertyStore::GetRpcIdentifierPropertiesIter);
74}
75
Paul Stewart8e7e4592012-04-29 09:47:48 -070076template <class V>
77bool PropertyStoreInspector::GetProperty(
78 const string &name,
79 V *value,
Paul Stewart8e7e4592012-04-29 09:47:48 -070080 ReadablePropertyConstIterator<V>(PropertyStore::*getter)() const) {
Darin Petkov4682aa82012-05-31 16:24:11 +020081 for (ReadablePropertyConstIterator<V> it = ((*store_).*getter)();
82 !it.AtEnd(); it.Advance()) {
Paul Stewart8e7e4592012-04-29 09:47:48 -070083 if (it.Key() == name) {
Darin Petkov4682aa82012-05-31 16:24:11 +020084 if (value) {
85 *value = it.value();
86 }
87 return true;
Paul Stewart8e7e4592012-04-29 09:47:48 -070088 }
89 }
Paul Stewart8e7e4592012-04-29 09:47:48 -070090 return false;
91};
92
Paul Stewart8e7e4592012-04-29 09:47:48 -070093} // namespace shill