summaryrefslogtreecommitdiffstats
path: root/util/glgen/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'util/glgen/main.cpp')
-rw-r--r--util/glgen/main.cpp33
1 files changed, 25 insertions, 8 deletions
diff --git a/util/glgen/main.cpp b/util/glgen/main.cpp
index 15c311caf3..41d97a6c85 100644
--- a/util/glgen/main.cpp
+++ b/util/glgen/main.cpp
@@ -40,22 +40,39 @@
****************************************************************************/
#include "codegenerator.h"
-#include "specparser.h"
+#include "legacyspecparser.h"
+#include "xmlspecparser.h"
+
+#include <QCommandLineParser>
int main(int argc, char *argv[])
{
- Q_UNUSED(argc);
- Q_UNUSED(argv);
+ QCoreApplication app(argc, argv);
+ QCommandLineParser cmdParser;
+
+ // flag whether to use legacy or not
+ QCommandLineOption legacyOption(QStringList() << "l" << "legacy", "Use legacy parser.");
+ cmdParser.addOption(legacyOption);
+ cmdParser.process(app);
+
+ SpecParser *parser;
+
+ if (cmdParser.isSet(legacyOption)) {
+ parser = new LegacySpecParser();
+ parser->setTypeMapFileName(QStringLiteral("gl.tm"));
+ parser->setSpecFileName(QStringLiteral("gl.spec"));
+ } else {
+ parser = new XmlSpecParser();
+ parser->setSpecFileName(QStringLiteral("gl.xml"));
+ }
- SpecParser parser;
- parser.setTypeMapFileName(QStringLiteral("gl.tm"));
- parser.setSpecFileName(QStringLiteral("gl.spec"));
- parser.parse();
+ parser->parse();
CodeGenerator generator;
- generator.setParser(&parser);
+ generator.setParser(parser);
generator.generateCoreClasses(QStringLiteral("qopenglversionfunctions"));
generator.generateExtensionClasses(QStringLiteral("qopenglextensions"));
+ delete parser;
return 0;
}