mirror of
https://github.com/Huntereb/Awoo-Installer
synced 2024-11-26 21:50:26 +00:00
87 lines
4 KiB
C++
Executable file
87 lines
4 KiB
C++
Executable file
/*
|
|
The "inih" library is distributed under the New BSD license:
|
|
|
|
Copyright (c) 2009, Ben Hoyt
|
|
All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are met:
|
|
* Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
* Redistributions in binary form must reproduce the above copyright
|
|
notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
* Neither the name of Ben Hoyt nor the names of its contributors
|
|
may be used to endorse or promote products derived from this software
|
|
without specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY BEN HOYT ''AS IS'' AND ANY
|
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL BEN HOYT BE LIABLE FOR ANY
|
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef __INIREADER_H__
|
|
#define __INIREADER_H__
|
|
|
|
#include <map>
|
|
#include <string>
|
|
|
|
// Read an INI file into easy-to-access name/value pairs. (Note that I've gone
|
|
// for simplicity here rather than speed, but it should be pretty decent.)
|
|
class INIReader
|
|
{
|
|
public:
|
|
// Construct INIReader and parse given filename. See ini.h for more info
|
|
// about the parsing.
|
|
explicit INIReader(const std::string& filename);
|
|
|
|
// Return the result of ini_parse(), i.e., 0 on success, line number of
|
|
// first error on parse error, or -1 on file open error.
|
|
int ParseError() const;
|
|
|
|
// Get a string value from INI file, returning default_value if not found.
|
|
std::string Get(const std::string& section, const std::string& name,
|
|
const std::string& default_value) const;
|
|
|
|
// Get a string value from INI file, returning default_value if not found,
|
|
// empty, or contains only whitespace.
|
|
std::string GetString(const std::string& section, const std::string& name,
|
|
const std::string& default_value) const;
|
|
|
|
// Get an integer (long) value from INI file, returning default_value if
|
|
// not found or not a valid integer (decimal "1234", "-1234", or hex "0x4d2").
|
|
long GetInteger(const std::string& section, const std::string& name, long default_value) const;
|
|
|
|
// Get a real (floating point double) value from INI file, returning
|
|
// default_value if not found or not a valid floating point value
|
|
// according to strtod().
|
|
double GetReal(const std::string& section, const std::string& name, double default_value) const;
|
|
|
|
// Get a boolean value from INI file, returning default_value if not found or if
|
|
// not a valid true/false value. Valid true values are "true", "yes", "on", "1",
|
|
// and valid false values are "false", "no", "off", "0" (not case sensitive).
|
|
bool GetBoolean(const std::string& section, const std::string& name, bool default_value) const;
|
|
|
|
// Return true if the given section exists (section must contain at least
|
|
// one name=value pair).
|
|
bool HasSection(const std::string& section) const;
|
|
|
|
// Return true if a value exists with the given section and field names.
|
|
bool HasValue(const std::string& section, const std::string& name) const;
|
|
|
|
private:
|
|
int _error;
|
|
std::map<std::string, std::string> _values;
|
|
static std::string MakeKey(const std::string& section, const std::string& name);
|
|
static int ValueHandler(void* user, const char* section, const char* name,
|
|
const char* value);
|
|
};
|
|
|
|
#endif // __INIREADER_H__
|