blob: 90976ac5795fc958b41096add14bc6081be0d928 [file] [log] [blame]
henrike@webrtc.orgf0488722014-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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#ifndef RTC_BASE_OPTIONSFILE_H_
12#define RTC_BASE_OPTIONSFILE_H_
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000013
Henrik Kjellanderec78f1c2017-06-29 07:52:50 +020014#include <map>
15#include <string>
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000016
Henrik Kjellanderec78f1c2017-06-29 07:52:50 +020017namespace 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 ~OptionsFile();
26
27 // Loads the file from disk, overwriting the in-memory values.
28 bool Load();
29 // Saves the contents in memory, overwriting the on-disk values.
30 bool Save();
31
32 bool GetStringValue(const std::string& option, std::string* out_val) const;
33 bool GetIntValue(const std::string& option, int* out_val) const;
34 bool SetStringValue(const std::string& option, const std::string& val);
35 bool SetIntValue(const std::string& option, int val);
36 bool RemoveValue(const std::string& option);
37
38 private:
39 typedef std::map<std::string, std::string> OptionsMap;
40
41 static bool IsLegalName(const std::string &name);
42 static bool IsLegalValue(const std::string &value);
43
44 std::string path_;
45 OptionsMap options_;
46};
47
48} // namespace rtc
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000049
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020050#endif // RTC_BASE_OPTIONSFILE_H_