Home | History | Annotate | Download | only in base
      1 /*
      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 
     17 namespace 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.
     22 class 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_
     50