| /* | |
| Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. | |
| NVIDIA CORPORATION and its licensors retain all intellectual property | |
| and proprietary rights in and to this software, related documentation | |
| and any modifications thereto. Any use, reproduction, disclosure or | |
| distribution of this software and related documentation without an express | |
| license agreement from NVIDIA CORPORATION is strictly prohibited. | |
| */ | |
| using config_dict = std::unordered_map<std::string, std::string>; | |
| /** | |
| Parses and provides access to configuration values. The format of the file expected is: | |
| # Comments start with #. No comments allowed on lines having name/value | |
| name value | |
| */ | |
| class ConfigReader { | |
| public: | |
| // Parses the config file. | |
| bool Load(const std::string& config_filename); | |
| // Returns true if config value is available | |
| bool IsConfigValueAvailable(const std::string& name) const; | |
| // Get value associated with name | |
| bool GetConfigValue(const std::string& name, std::string* value) const; | |
| // Get value associated with name. Returns empty string if value not found | |
| std::string GetConfigValue(const std::string& name) const; | |
| // Get vector of values associated with name. Returns empty vector if no value is found | |
| std::vector<std::string> GetConfigValueList(const std::string& name) const; | |
| private: | |
| // true if config file is loaded | |
| bool loaded_ = false; | |
| // Internal config data store | |
| config_dict config_dict_; | |
| }; |