#pragma once #include "XmlReader.h" #include #include namespace NGL { class INGLLogger; } namespace Grantlee { class Context; class Engine; class TemplateImpl; using Template = QSharedPointer; } // namespace Grantlee namespace CodeGen { class StructBuilder; class GeneratorGrantleeBase : public QObject { Q_OBJECT public: virtual ~GeneratorGrantleeBase(); virtual bool init(const XmlReader* reader, StructBuilder* structBuilder) = 0; bool setTemplate(const QString& templateName, const QString& tmpl); QString render() const; QString errorString() const; bool generateData(const QString& templateName, const QString& outDirectory); protected: NGL::INGLLogger& m_logger; explicit GeneratorGrantleeBase(const char* loggerName); bool initInternal(const XmlReader* reader, StructBuilder* structBuilder); bool readFile(const QString& filename, QString& data) const; bool getFilenameFromData(const QString& dataToParse, QString& filename) const; void addCustomFunctions(const QVector& customFunctions); void exportUsedServices(const XmlReader* reader); protected: NGL::INGLLogger& m_logger; Grantlee::Engine* m_engine; Grantlee::Context* m_ctx; Grantlee::Template m_template; StructBuilder* m_structBuilder; }; } // namespace CodeGen