FlightGear next
DefaultTranslationParser.hxx
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 Florent Rougon
2// SPDX-License-Identifier: GPL-2.0-or-later
3
8
9#pragma once
10
11#include <string>
12
13#include <simgear/xml/easyxml.hxx>
14
16
17namespace flightgear
18{
19
28
29class DefaultTranslationParser : public XMLVisitor
30{
31public:
33
34protected:
35 void startXML () override;
36 void endXML () override;
37 void startElement (const char * name, const XMLAttributes &atts) override;
38 void endElement (const char * name) override;
39 void data (const char * s, int len) override;
40 void warning (const char * message, int line, int column) override;
41
42private:
51 bool asBoolean(const std::string& str);
52 [[noreturn]] void parseError(const std::string& message);
54 void startElementInsideMeta(const std::string& name);
56 void checkIfFormatIsSupported();
57
59 TranslationResource* _resource;
60 std::string _text;
61 std::string _stringTagName;
62 bool _hasPlural = false;
70 std::map<std::string, int> _nextIndex;
71
72 // Our parser is a state machine
73 enum class State {
74 LOOKING_FOR_RESOURCE_ELEMENT, // this is the root element
75 LOOKING_FOR_META_ELEMENT,
76 READING_META_ELEMENT,
77 READING_FILE_TYPE_ELEMENT,
78 READING_FORMAT_VERSION_ELEMENT,
79 LOOKING_FOR_STRINGS_ELEMENT,
80 READING_STRINGS_ELEMENT,
81 READING_TRANSLATABLE_STRING,
82 AFTER_STRINGS_ELEMENT,
83 };
84
85 State _state = State::LOOKING_FOR_RESOURCE_ELEMENT;
86
88 std::string _fileType;
89 bool _foundFileType = false;
90 std::string _formatVersion;
91 bool _foundFormatVersion = false;
92};
93
94} // namespace flightgear
Container class for related translation units.
DefaultTranslationParser(TranslationResource *resource)
Class that holds translation units within a resource (“context”)
void data(const char *s, int len) override
void startElement(const char *name, const XMLAttributes &atts) override
DefaultTranslationParser(TranslationResource *resource)
void warning(const char *message, int line, int column) override
const char * name
FlightPlan.hxx - defines a full flight-plan object, including departure, cruise, arrival information ...
Definition Addon.cxx:53