<stránka
xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro">
<nadpis>Implementation</nadpis>
<perex>Reference implementation of Relational pipes libraries, inputs and outputs</perex>
<pořadí>30</pořadí>
<text xmlns="http://www.w3.org/1999/xhtml">
<p>
The reference implementation of <m:name/> is divided into several modules, each in separate Mercurial repository.
</p>
<m:tabulka>
name type subtype language license
relpipe-in-cli.cpp executable input c++ GNU GPLv3+
relpipe-in-fstab.cpp executable input c++ GNU GPLv3+
relpipe-lib-cli.cpp library header-only c++ GNU GPLv3+
relpipe-lib-protocol.cpp library header-only c++ GNU LGPLv3+ or GPLv2+
relpipe-lib-reader.cpp library shared c++ GNU LGPLv3+ or GPLv2+
relpipe-lib-writer.cpp library shared c++ GNU LGPLv3+ or GPLv2+
relpipe-out-gui.qt.cpp executable output c++ GNU GPLv3+
relpipe-out-nullbyte.cpp executable output c++ GNU GPLv3+
relpipe-out-ods.cpp executable output c++ GNU GPLv3+
relpipe-out-tabular.cpp executable output c++ GNU GPLv3+
relpipe-out-xml.cpp executable output c++ GNU GPLv3+
relpipe-tr-cut.cpp executable transformation c++ GNU GPLv3+
relpipe-tr-grep.cpp executable transformation c++ GNU GPLv3+
relpipe-tr-sed.cpp executable transformation c++ GNU GPLv3+
relpipe-tr-validator.cpp executable transformation c++ GNU GPLv3+
</m:tabulka>
<!--
relpipe-web website - XWG XML GNU FDLv1.3+
relpipe-specification specification - DocBook GNU FDLv1.3+
-->
<p>
There various subtypes of executables:
</p>
<ul>
<li>The <em>inputs</em> read other formats from STDIN (or do other interaction) and generate relational data on STDOUT.</li>
<li>The <em>outputs</em> read relational data from STDIN and generate other formats on STDOUT or do other interactions.</li>
<li>The <em>transformations</em> read relational data on STDIN and generate transformed relational data on STDOUT.</li>
</ul>
<p>
The libraries are intended to be used as shared ones (<code>.so</code>) in order to guarantee the freedom of the end-user.
A shared library can be easily replaced without recompiling of the program.
It can be also hacked using <code>LD_PRELOAD</code>.
</p>
<p>
The helper libraries and constants are designed as <em>header-only</em> (they are compiled into a program/library instead of dynamic linking).
They do not provide any public API and are used only internally by other <code>relpipe-*</code> tools and libraries.
Because they are maintained by the same team of developers, this usage cause no harm.
If any change in this <em>header-only</em> library is needed, just recompile whole shared library and plug it in given existing program.
</p>
</text>
</stránka>