I like the idea. On the headerWriter example you give, the end-element is written when the Writer gets out of scope. We'd need to verify that all our start/end element couples are within the same scope however.
Pierre On Fri, Jun 10, 2011 at 8:22 AM, Jos van den Oever < jos.van.den.oe...@kogmbh.com> wrote: > Here is an idea to improve code quality in Calligra. > > Currently, we use KoXmlWriter to write ODF XML. For this, functions like > startElement, endElement, addAttribute are used. > > By using the Relax NG schema, we could generate a wrapper around this class > which would give us functions like > > TextPWriter TextContentWriter::startTextP(); > void TextHWriter::writeTextOutlineLevel(quint32 level); > > that would wrap around KoXmlWriter or QXmlStreamWriter: > > class TextHWriter { > friend class TextContentWriter; > private: > KoXmlWriter* const xml; > protected: > TextHWriter(KoXmlWriter* xml_) :xml(xml_) { > xml->startElement("text:h"); > } > public: > ~TextHWriter() { xml->endElement(); } > TextSpan startTextSpan() { return TextSpanWriter(xml); } > void writeTextOutlineLevel(quint32 level) { > xml->setAttribute("text:outline-level", level); > } > }; > > These writer classes would all go in header files only and should not > affect the > compiled form; the functions are so simple and that they should all be > compiled away. > The classes would provide compile time checking of the code that writes > XML. > It would be easier for people to write code to write XML and it would be > harder to make mistakes. When writing serialization code, one would not > need > to look up the what attributes can go in which element and what type they > have; your development enviroment would tell you with autocompletion. > > Can you think of a reason why this would not work? > > Cheers, > Jos > > -- > Jos van den Oever, software architect > +49 391 25 19 15 53 > 074 3491911 > http://kogmbh.com/legal/ > _______________________________________________ > calligra-devel mailing list > calligra-devel@kde.org > https://mail.kde.org/mailman/listinfo/calligra-devel >
_______________________________________________ calligra-devel mailing list calligra-devel@kde.org https://mail.kde.org/mailman/listinfo/calligra-devel