diff -r 2bdc3ac5e77c -r 55a55a9ec2c2 src/parser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/parser.h Sun Sep 22 11:51:41 2019 +0300 @@ -0,0 +1,43 @@ +/* + * LDForge: LDraw parts authoring CAD + * Copyright (C) 2013 - 2018 Teemu Piippo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "main.h" +#include "objecttypes/modelobject.h" +#include "model.h" +#include "modeleditcontext.h" +#include "header.h" + +class Parser : public QObject +{ + Q_OBJECT +public: + enum { EndOfModel = -1 }; + Parser(QIODevice& device, QObject* parent = nullptr); + LDHeader parseHeader(Winding& winding); + void parseBody(Model::EditContext& editor); + static modelobjects::BaseObject* parseFromString(Model::EditContext& editor, + const QString& line); + static const QMap typeStrings; +private: + enum HeaderParseResult {ParseSuccess, ParseFailure, StopParsing}; + QString readLine(); + HeaderParseResult parseHeaderLine(LDHeader& header, Winding& winding, const QString& line); + QIODevice& device; + QStringList bag; +};