#ifndef YAMLPARSER_H #define YAMLPARSER_H #include #include #include #include class YamlNode { public: QString value; QStringList listValues; QMap children; bool hasChild(const QString &key) const { return children.contains(key); } YamlNode operator[](const QString &key) const { return children.value(key); } YamlNode& operator[](const QString &key) { return children[key]; } QString asString(const QString &def = "") const { return value.isEmpty() ? def : value; } int asInt(int def = 0) const { bool ok; int v = value.toInt(&ok); return ok ? v : def; } float asFloat(float def = 0.0f) const { bool ok; float v = value.toFloat(&ok); return ok ? v : def; } bool asBool(bool def = false) const { QString s = value.trimmed().toLower(); if (s == "true" || s == "yes" || s == "1") return true; if (s == "false" || s == "no" || s == "0") return false; return def; } }; class YamlParser { public: static YamlNode parseFile(const QString &filePath); static YamlNode parseString(const QString &content); }; #endif // YAMLPARSER_H