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   ~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
     49 
     50 #endif  // WEBRTC_BASE_OPTIONSFILE_H_
     51