blob: c740ce4fa9b2de17a0a73489ee8d43ba79cbc44f [file] [log] [blame]
henrike@webrtc.orgf7795df2014-05-13 18:00:26 +00001/*
2 * Copyright 2008 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef WEBRTC_BASE_OPTIONSFILE_H_
12#define WEBRTC_BASE_OPTIONSFILE_H_
13
14#include <map>
15#include <string>
16
17namespace rtc {
18
19// Implements storage of simple options in a text file on disk. This is
20// cross-platform, but it is intended mostly for Linux where there is no
21// first-class options storage system.
22class OptionsFile {
23 public:
24 OptionsFile(const std::string &path);
25
26 // Loads the file from disk, overwriting the in-memory values.
27 bool Load();
28 // Saves the contents in memory, overwriting the on-disk values.
29 bool Save();
30
31 bool GetStringValue(const std::string& option, std::string* out_val) const;
32 bool GetIntValue(const std::string& option, int* out_val) const;
33 bool SetStringValue(const std::string& option, const std::string& val);
34 bool SetIntValue(const std::string& option, int val);
35 bool RemoveValue(const std::string& option);
36
37 private:
38 typedef std::map<std::string, std::string> OptionsMap;
39
40 static bool IsLegalName(const std::string &name);
41 static bool IsLegalValue(const std::string &value);
42
43 std::string path_;
44 OptionsMap options_;
45};
46
47} // namespace rtc
48
49#endif // WEBRTC_BASE_OPTIONSFILE_H_