File: parser.hpp

package info (click to toggle)
openmw 0.50.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 37,076 kB
  • sloc: cpp: 380,958; xml: 2,192; sh: 1,449; python: 911; makefile: 26; javascript: 5
file content (32 lines) | stat: -rw-r--r-- 939 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#ifndef COMPONENTS_SETTINGS_PARSER_H
#define COMPONENTS_SETTINGS_PARSER_H

#include "categories.hpp"

#include <filesystem>
#include <string>

namespace Settings
{
    class SettingsFileParser
    {
    public:
        void loadSettingsFile(const std::filesystem::path& file, CategorySettingValueMap& settings,
            bool base64Encoded = false, bool overrideExisting = false);

        void saveSettingsFile(const std::filesystem::path& file, const CategorySettingValueMap& settings);

    private:
        /// Increment i until it longer points to a whitespace character
        /// in the string or has reached the end of the string.
        /// @return false if we have reached the end of the string
        bool skipWhiteSpace(size_t& i, std::string& str);

        [[noreturn]] void fail(const std::string& message);

        std::filesystem::path mFile;
        int mLine = 0;
    };
}

#endif // _COMPONENTS_SETTINGS_PARSER_H