#ifndef QMK_PARSER_H #define QMK_PARSER_H #include #include class qmk_parser { public: qmk_parser(); ~qmk_parser(); // Parsing of all needed qmk files. If parsing finishes processing without errors, returns zero-size str, else returns error description QString parseFiles(QString mainLayout, QString revLayout, QString mainConfig, QString revConfig, QString keymapConfig, QString keymap, QString keycodes, bool ignoreUndefinedKeys = true); QStringList findMacro(QString src); QStringList parseMacro(QString macro); QString deleteCommentsAndStrings(QString src, bool deleteStrings = true); QString findExpression(QString src, QString expression); QStringList findEnums(QString src); QString getEnumName(QString enumSrc); QVector> getEnumValues(QString src); // val 0 - name, val 1 - number in text format QString setMacroToExpression(QString expression, QVector macroList); QVector parseOneDimArr(QString arr); QVector> parseTwoDimArr(QString arr); QVector>> parseThreeDimArr(QString arr); int strToNum(QString s); QVector getColumns(); QVector getRows(); QVector> getMatrix(); QVector> getFnMatrix(); int getDiodeDirection(); private: bool m_isError; QVector m_Columns; QVector m_Rows; int m_diodeDirection; QVector > m_Matrix; QVector > m_FnMatrix; }; #endif // QMK_PARSER_H