> On April 15, 2013, 1:58 p.m., Jos van den Oever wrote: > > The current use is this: > > if (el.namespaceUri() == KoXml::fo && el.name == "border") { ... } > > You propose to have code like this: > > if (el.qualifiedName() == "fo:border") { ... } > > > > That is still too error-prone. This would be better: > > if (el === ODFElement::fo::border) { ... } > > > > It has the advantage that no typo in the namespace or local name are > > possible: the compiler will check that. > > In addition, the code behind the operator== and even the type of > > ODFElement::fo::border can be optimized independently of the code that uses > > it.
Oops s/===/== I've been writing too much javascript ;-) - Jos ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/109887/#review31094 ----------------------------------------------------------- On April 6, 2013, 3:56 p.m., Inge Wallin wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://git.reviewboard.kde.org/r/109887/ > ----------------------------------------------------------- > > (Updated April 6, 2013, 3:56 p.m.) > > > Review request for Calligra, Jarosław Staniek and Jos van den Oever. > > > Description > ------- > > This patch contains a new XML stream reader based on the QXmlStreamReader > that is better suited for ODF. > > Much ODF parsing code in Calligra looks like: > > if (el.namespaceUri() == KoXml::fo && el.name == "border") { ... } > > The reason for this complicated construction is that the prefix (the "fo" in > "fo:border") is not unique but is declared at the beginning of each Xml file. > Even though "fo" is the normal prefix there is no guarantee that it is the > same in every document. > > However, it is a very rare document where it is *not* the normal prefix, so > what we want to do is to be able to write code like this: > > If (el.qualifiedName() == "fo:border") { ... } > > and make the XML stream reader or dom tree rewrite the qualified name in the > very rare cases that the prefix does not match what we want. > > This is exactly what the KoXmlStreamReader does. It allows you to write > easier and faster code while still be correct in the few cases where the > prefixes are not the expected ones. It does this by letting the user enter > the expected namespace declarations and then compare those to the actual > namespace declarations in the document. If they match everything will be as > fast as possible. If they don't, it will be slower but still correct. > > As an extra feature I have allowed the user to declare some extra namespaces > (see fixNamespace() in KoXmlReader.cpp). This will let documents created by > old versions of OpenOffice.org be read even though they use other namespaces. > > I have code that uses this file but that is not yet ready for review. I > wanted to put this up early to get feedback while the rest of the yet > unfinished code is maturing. > > > Diffs > ----- > > libs/odf/CMakeLists.txt 3680486 > libs/odf/KoXmlStreamReader.h PRE-CREATION > libs/odf/KoXmlStreamReader.cpp PRE-CREATION > > Diff: http://git.reviewboard.kde.org/r/109887/diff/ > > > Testing > ------- > > Not much. I will do that when the code that uses this code is ready. This > review is for getting feedback on the ideas and implementation details. > > > Thanks, > > Inge Wallin > >
_______________________________________________ calligra-devel mailing list calligra-devel@kde.org https://mail.kde.org/mailman/listinfo/calligra-devel