<div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace;font-size:small"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On 13 May 2016 at 00:28, Jos van den Oever <span dir="ltr"><<a href="mailto:jos@vandenoever.info" target="_blank">jos@vandenoever.info</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello all,<br>
<br>
Calligra relies on a project called MSOScheme. This project generates Java and<br>
C++ from an XML description of the Microsoft Office binary file formats.<br>
<br>
The project used to be on Gitorious. Gitorious closed and MSOScheme needs a<br>
new home.<br>
<br>
The code is not moving very fast and currently only Calligra uses it. The code<br>
only supports MS Office files, but it would be great to support more file formats.<br>
<br>
Writing XML instead of code for parsing and serializing has great advantages.<br>
You prevent many memory errors and can work on optimization without<br>
understanding all the separate file formats. This approach helped Calligra to<br>
have very fast MS Office parsers. At the time this was needed for running well<br>
on Nokia Maemo and Meego phones.<br>
<br>
As an example of the flexibility, there are 3 types of C++ generated. One that<br>
can parse with zero allocations, one that is a bit more easy to use but does<br>
use allocations and a third one that has full introspection on the parsed data<br>
and can output it as an XML tree for easy debugging or conversion with XML<br>
tools.<br>
<br>
<a href="https://gitorious.org/msoscheme/msoscheme.git/" rel="noreferrer" target="_blank">https://gitorious.org/msoscheme/msoscheme.git/</a><br>
<br>
I believe the project could be useful for more than just Calligra. I'm writing<br>
a small demo to create a parser for tar files as a simple tutorial.<br>
<br></blockquote><div><br><div class="gmail_default" style="font-family:monospace,monospace;font-size:small;display:inline">​+10<br><br></div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small;display:inline">We need more general-purpose projects like ​</div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small;display:inline">​that.​<br></div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small;display:inline">And IMHO if there's a way to make (generate) a C++-only version of the tool then even better.<br></div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small;display:inline">Larger audience.<br></div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small;display:inline"><br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Best regards,<br>
Jos van den Oever<br>
<br>
<br>
_______________________________________________<br>
kde-community mailing list<br>
<a href="mailto:kde-community@kde.org">kde-community@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/kde-community" rel="noreferrer" target="_blank">https://mail.kde.org/mailman/listinfo/kde-community</a></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">regards, Jaroslaw Staniek<br><br>KDE:<br>: A world-wide network of software engineers, artists, writers, translators<br>: and facilitators committed to Free Software development - <a href="http://kde.org" target="_blank">http://kde.org</a><br>Calligra Suite:<br>: A graphic art and office suite - <a href="http://calligra.org" target="_blank">http://calligra.org</a><br>Kexi:<br>: A visual database apps builder - <a href="http://calligra.org/kexi" target="_blank">http://calligra.org/kexi</a><br>Qt Certified Specialist:<br>: <a href="http://www.linkedin.com/in/jstaniek" target="_blank">http://www.linkedin.com/in/jstaniek</a></div>
</div></div>