147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org/* 247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * Copyright 2008 The WebRTC Project Authors. All rights reserved. 347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * 447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * Use of this source code is governed by a BSD-style license 547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * that can be found in the LICENSE file in the root of the source 647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * tree. An additional intellectual property rights grant can be found 747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * in the file PATENTS. All contributing project authors may 847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * be found in the AUTHORS file in the root of the source tree. 947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org */ 1047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#ifndef WEBRTC_BASE_OPTIONSFILE_H_ 1247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#define WEBRTC_BASE_OPTIONSFILE_H_ 1347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include <map> 1547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include <string> 1647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgnamespace rtc { 1847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Implements storage of simple options in a text file on disk. This is 2047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// cross-platform, but it is intended mostly for Linux where there is no 2147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// first-class options storage system. 2247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgclass OptionsFile { 2347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org public: 2447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org OptionsFile(const std::string &path); 2547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 2647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org // Loads the file from disk, overwriting the in-memory values. 2747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org bool Load(); 2847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org // Saves the contents in memory, overwriting the on-disk values. 2947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org bool Save(); 3047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 3147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org bool GetStringValue(const std::string& option, std::string* out_val) const; 3247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org bool GetIntValue(const std::string& option, int* out_val) const; 3347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org bool SetStringValue(const std::string& option, const std::string& val); 3447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org bool SetIntValue(const std::string& option, int val); 3547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org bool RemoveValue(const std::string& option); 3647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 3747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org private: 3847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org typedef std::map<std::string, std::string> OptionsMap; 3947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 4047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org static bool IsLegalName(const std::string &name); 4147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org static bool IsLegalValue(const std::string &value); 4247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 4347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org std::string path_; 4447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org OptionsMap options_; 4547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}; 4647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 4747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} // namespace rtc 4847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 4947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#endif // WEBRTC_BASE_OPTIONSFILE_H_ 50