/**
* Relational pipes
* Copyright © 2020 František Kučera (Frantovo.cz, GlobalCode.info)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <string>
namespace relpipe {
namespace in {
namespace ini {
namespace lib {
class INIContentHandler {
public:
class Event {
public:
int64_t eventNumber = -1;
int64_t lineNumber = -1;
};
class SectionStartEvent : public Event {
public:
std::string comment;
std::string name;
std::string tag;
};
class EntryEvent : public Event {
public:
std::string comment;
std::string key;
std::string subKey;
std::string fullKey;
std::string value;
};
class CommentEvent : public Event {
public:
std::string comment;
};
class WhitespaceEvent : public Event {
public:
std::string whitespace;
};
virtual ~INIContentHandler() = default;
virtual void startDocument() = 0;
virtual void endDocument() = 0;
virtual void startSection(const SectionStartEvent& event) = 0;
virtual void endSection() = 0;
virtual void entry(const EntryEvent& event) = 0;
virtual void comment(const CommentEvent& event) = 0;
virtual void whitespace(const WhitespaceEvent& event) = 0;
};
}
}
}
}