File indexing completed on 2024-05-12 15:59:16

0001 /*
0002  *  SPDX-FileCopyrightText: 2007, 2009 Cyrille Berger <cberger@cberger.net>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.1-or-later
0005  */
0006 
0007 #include "kis_meta_data_schema.h"
0008 
0009 #include <QHash>
0010 
0011 class QDomElement;
0012 
0013 namespace KisMetaData
0014 {
0015 struct Q_DECL_HIDDEN Schema::Private {
0016     QString uri;
0017     QString prefix;
0018     struct EntryInfo {
0019         const TypeInfo* propertyType;
0020         QHash<QString, TypeInfo*> qualifiers;
0021     };
0022     QHash<QString, EntryInfo> types;
0023     QHash<QString, const TypeInfo*> structures;
0024     bool load(const QString&);
0025 private:
0026     void parseStructures(QDomElement&);
0027     void parseStructure(QDomElement&);
0028     void parseProperties(QDomElement&);
0029     bool parseEltType(QDomElement&, EntryInfo& entryInfo, QString& name, bool ignoreStructure, bool ignoreName);
0030     const TypeInfo* parseAttType(QDomElement&, bool ignoreStructure);
0031     const TypeInfo* parseEmbType(QDomElement&, bool ignoreStructure);
0032     const TypeInfo* parseChoice(QDomElement&);
0033 };
0034 }