relpipe-data/implementation.xml
author František Kučera <franta-hg@frantovo.cz>
Tue, 27 Aug 2019 13:50:37 +0200
branchv_0
changeset 268 1b8576c9640c
parent 264 d39cfc926f95
child 274 f7334408c681
permissions -rw-r--r--
examples: XHTML table processing in SQL

<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-csv.cpp	executable	input	c++	GNU GPLv3+
			relpipe-in-filesystem.cpp	executable	input	c++	GNU GPLv3+
			relpipe-in-fstab.cpp	executable	input	c++	GNU GPLv3+
			relpipe-in-recfile.cpp	executable	input	c++	GNU GPLv3+
			relpipe-in-xml.cpp	executable	input	c++	GNU GPLv3+
			relpipe-in-xmltable.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-lib-xmlwriter.cpp	library	header-only	c++	GNU GPLv3+
			relpipe-out-asn1.cpp	executable	output	c++	GNU GPLv3+
			relpipe-out-csv.cpp	executable	output	c++	GNU GPLv3+
			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-recfile.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-awk.cpp	executable	transformation	c++	GNU GPLv3+
			relpipe-tr-cut.cpp	executable	transformation	c++	GNU GPLv3+
			relpipe-tr-grep.cpp	executable	transformation	c++	GNU GPLv3+
			relpipe-tr-guile.cpp	executable	transformation	c++	GNU GPLv3+
			relpipe-tr-python.cpp	executable	transformation	c++	GNU GPLv3+
			relpipe-tr-sed.cpp	executable	transformation	c++	GNU GPLv3+
			relpipe-tr-sql.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>