Revision: 791 Author: christian.egli@xxxxxxxxxxxxxx Date: Mon Sep 10 03:38:13 2012 Log: Update online documentation http://code.google.com/p/liblouis/source/detail?r=791 Modified: /documentation/liblouis.html ======================================= --- /documentation/liblouis.html Wed Feb 22 23:51:21 2012 +++ /documentation/liblouis.html Mon Sep 10 03:38:13 2012 @@ -7,7 +7,7 @@ <link title="Top" rel="top" href="#Top"><link href="http://www.gnu.org/software/texinfo/"; rel="generator-home" title="Texinfo Homepage">
<!-- -This manual is for liblouis (version 2.4.1, 6 February 2012), +This manual is for liblouis (version 2.5.0, 10 September 2012), a Braille Translation and Back-Translation Library derived from the Linux screen reader BRLTTY. @@ -78,30 +78,35 @@ <li><a href="#Miscellaneous-Opcodes">3.12 Miscellaneous Opcodes</a> <li><a href="#Deprecated-Opcodes">3.13 Deprecated Opcodes</a> </li></ul>-<li><a name="toc_Notes-on-Back_002dTranslation" href="#Notes-on-Back_002dTranslation">4 Notes on Back-Translation</a> -<li><a name="toc_Programming-with-liblouis" href="#Programming-with-liblouis">5 Programming with liblouis</a> +<li><a name="toc_How-to-test-Translation-Tables" href="#How-to-test-Translation-Tables">4 How to test Translation Tables</a>
<ul> -<li><a href="#License">5.1 License</a> -<li><a href="#Overview">5.2 Overview</a>-<li><a href="#Data-structure-of-liblouis-tables">5.3 Data structure of liblouis tables</a>
-<li><a href="#lou_005fversion">5.4 lou_version</a> -<li><a href="#lou_005ftranslateString">5.5 lou_translateString</a> -<li><a href="#lou_005ftranslate">5.6 lou_translate</a> -<li><a href="#lou_005fbackTranslateString">5.7 lou_backTranslateString</a> -<li><a href="#lou_005fbackTranslate">5.8 lou_backTranslate</a> -<li><a href="#lou_005fhyphenate">5.9 lou_hyphenate</a> -<li><a href="#lou_005fcompileString">5.10 lou_compileString</a> -<li><a href="#lou_005fdotsToChar">5.11 lou_dotsToChar</a> -<li><a href="#lou_005fcharToDots">5.12 lou_charToDots</a> -<li><a href="#lou_005flogFile">5.13 lou_logFile</a> -<li><a href="#lou_005flogPrint">5.14 lou_logPrint</a> -<li><a href="#lou_005flogEnd">5.15 lou_logEnd</a> -<li><a href="#lou_005fsetDataPath">5.16 lou_setDataPath</a> -<li><a href="#lou_005fgetDataPath">5.17 lou_getDataPath</a> -<li><a href="#lou_005fgetTable">5.18 lou_getTable</a> -<li><a href="#lou_005freadCharFromFile">5.19 lou_readCharFromFile</a> -<li><a href="#lou_005ffree">5.20 lou_free</a> -<li><a href="#Python-bindings">5.21 Python bindings</a>+<li><a href="#Translation-Table-Test-Harness">4.1 Translation Table Test Harness</a> +<li><a href="#Translation-Table-Doctests">4.2 Translation Table Doctests</a>
+</li></ul>+<li><a name="toc_Notes-on-Back_002dTranslation" href="#Notes-on-Back_002dTranslation">5 Notes on Back-Translation</a> +<li><a name="toc_Programming-with-liblouis" href="#Programming-with-liblouis">6 Programming with liblouis</a>
+<ul> +<li><a href="#License">6.1 License</a> +<li><a href="#Overview">6.2 Overview</a>+<li><a href="#Data-structure-of-liblouis-tables">6.3 Data structure of liblouis tables</a>
+<li><a href="#lou_005fversion">6.4 lou_version</a> +<li><a href="#lou_005ftranslateString">6.5 lou_translateString</a> +<li><a href="#lou_005ftranslate">6.6 lou_translate</a> +<li><a href="#lou_005fbackTranslateString">6.7 lou_backTranslateString</a> +<li><a href="#lou_005fbackTranslate">6.8 lou_backTranslate</a> +<li><a href="#lou_005fhyphenate">6.9 lou_hyphenate</a> +<li><a href="#lou_005fcompileString">6.10 lou_compileString</a> +<li><a href="#lou_005fdotsToChar">6.11 lou_dotsToChar</a> +<li><a href="#lou_005fcharToDots">6.12 lou_charToDots</a> +<li><a href="#lou_005flogFile">6.13 lou_logFile</a> +<li><a href="#lou_005flogPrint">6.14 lou_logPrint</a> +<li><a href="#lou_005flogEnd">6.15 lou_logEnd</a> +<li><a href="#lou_005fsetDataPath">6.16 lou_setDataPath</a> +<li><a href="#lou_005fgetDataPath">6.17 lou_getDataPath</a> +<li><a href="#lou_005fgetTable">6.18 lou_getTable</a> +<li><a href="#lou_005freadCharFromFile">6.19 lou_readCharFromFile</a> +<li><a href="#lou_005ffree">6.20 lou_free</a> +<li><a href="#Python-bindings">6.21 Python bindings</a> </li></ul> <li><a name="toc_Opcode-Index" href="#Opcode-Index">Opcode Index</a> <li><a name="toc_Function-Index" href="#Function-Index">Function Index</a> @@ -115,7 +120,7 @@ <h2 class="unnumbered">Liblouis User's and Programmer's Manual</h2> -<p>This manual is for liblouis (version 2.4.1, 6 February 2012), +<p>This manual is for liblouis (version 2.5.0, 10 September 2012), a Braille Translation and Back-Translation Library derived from the Linux screen reader <acronym>BRLTTY</acronym>. @@ -395,16 +400,17 @@ <p>The names used for files containing translation tables are completely arbitrary. They are not interpreted in any way by the translator. -Contraction tables may be 8-bit ASCII files, 16-bit big-endian Unicode -files or 16-bit little-endian Unicode files. Blank lines are ignored. -Any leading and trailing whitespace (any number of blanks and/or tabs) -is ignored. Lines which begin with a number sign or hatch mark-(‘<samp><span class="samp">#</span></samp>’) are ignored, i.e. they are comments. If the number sign is
-not the first non-blank character in the line, it is treated as an -ordinary character. If the first non-blank character is less-than-(‘<samp><span class="samp"><</span></samp>’) the line is also treated as a comment. This makes it possible
-to mark up tables as xhtml documents. Lines which are not blank or -comments define table entries. The general format of a table entry is: +Contraction tables may be 8-bit ASCII files, UTF-8, 16-bit big-endian +Unicode files or 16-bit little-endian Unicode files. Blank lines are +ignored. Any leading and trailing whitespace (any number of blanks +and/or tabs) is ignored. Lines which begin with a number sign or hatch+mark (‘<samp><span class="samp">#</span></samp>’) are ignored, i.e. they are comments. If the number
+sign is not the first non-blank character in the line, it is treated +as an ordinary character. If the first non-blank character is+less-than (‘<samp><span class="samp"><</span></samp>’) the line is also treated as a comment. This makes
+it possible to mark up tables as xhtml documents. Lines which are not +blank or comments define table entries. The general format of a table +entry is: <pre class="example"> opcode operands comments </pre> @@ -1324,9 +1330,12 @@ the attributes are present, but no more than the second number. If only one number is present, then exactly that many characters must have the attributes. A period instead of the numbers indicates an -indefinite number of characters. This suboperand is valid in all test -parts but not in action parts. For the characters which can be used in -attribute strings, see the following table. +indefinite number of characters (for technical reasons the number of +characters that are actually matched is limited to 65535). + + <p>This suboperand is valid in all test parts but not in action parts. +For the characters which can be used in attribute strings, see the +following table.<br><dt><kbd>! (exclamation point)</kbd><dd>reverses the logical meaning of the suboperand which follows. For
example, !$d is true only if the character is <em>NOT</em> a digit. This @@ -1425,10 +1434,6 @@ <li>continue loop </ol>- <p>Note that if any multipass opcode or the <code>correct</code> opcode (see <a href="#correct-opcode">correct</a>) is used -and the <code>pass1Only</code> mode bit (see <a href="#lou_005ftranslateString">lou_translateString</a>) is not
-set, input and output positions may be incorrect. - <p><a name="The-correct-Opcode"></a> <h3 class="section">3.11 The correct Opcode</h3> @@ -1454,11 +1459,7 @@ correct "|" ? ditto for vertical bars correct "\s?" "?" drop space before question mark </pre> - <p>Note that if the <code>correct</code> opcode is used and the-<code>pass1Only</code> mode bit (see <a href="#lou_005ftranslateString">lou_translateString</a>) is not set,
-input and output positions may be incorrect. - -</dl> + </dl> <p><a name="Miscellaneous-Opcodes"></a> @@ -1490,17 +1491,24 @@ range 0-255 and the dots must specify a single cell. Here are some examples:- <pre class="example"> display a 1 When the character a is sent to the embosser or display,
- it # will produce a dot 1.+ <pre class="example"> # When the character a is sent to the embosser or display,
+ # it will produce a dot 1. + display a 1 </pre>- <pre class="example"> display L 123 When the character L is sent to the display or embosser
- # produces dots 1-2-3.+ <pre class="example"> # When the character L is sent to the display or embosser
+ # it will produce dots 1-2-3. + display L 123 </pre><p>The <code>display</code> opcode is optional. It is used when the embosser or
display has a different mapping of characters to dot patterns thanthat given in <a href="#Character_002dDefinition-Opcodes">Character-Definition Opcodes</a>. If used, display
entries must proceed character-definition entries. + <p>A possible use case would be to define display opcodes so that the +result is Unicode braille for use on a display and a second set of +display opcodes (in a different file) to produce plain ASCII braille +for use with an embosser. +<p><a name="index-multind-97"></a><a name="multind-opcode"></a><br><dt><code>multind dots opcode opcode ...</code><dd> The <code>multind</code> opcode tells the back-translator that a sequence of
braille cells represents more than one braille indicator. For example, @@ -1548,10 +1556,113 @@<p><a name="index-literal-107"></a><a name="literal-opcode"></a><br><dt><code>literal characters</code><dd>This opcode is deprecated. Use the <code>compbrl</code> opcode (see <a href="#compbrl-opcode">compbrl</a>) instead.
</dl> +<p><a name="How-to-test-Translation-Tables"></a> + +<h2 class="chapter">4 How to test Translation Tables</h2> + +<p>There are a number of automated tests for liblouis and they are +proving to be of tremendous value. When changing the code the +developers can run the tests to see if anything broke. ++ <p>For testing the translation tables there are basically two approaches:
+there are the harness tests and the doctests. They were created at +roughly the same time using different technologies, have influenced +each other and have gone through improvements and technology changes. +For now they are both based on Python so you need to have that +installed. The philosophies of the two are slightly different: + + <dl>+<dt>Harness tests<dd>The harness tests are data driven, i.e. you give the test data, i.e. a
+string to translate and the expected output. The data is in a standard +format, i.e. json. They work with both Python2 and Python3, however +since the format is json it is perceivable that somebody would write +some C code which takes the data in the harness file and runs it through +liblouis so they could also run without Python and without ucs4. ++ <br><dt>Doctests<dd>The doctests on the other hand are based on a technology used in Python
+where you define your tests as if you were sitting at a terminal session +with a Python interpreter. So the tests look like you typed a command +and got some output, e.g. ++ <pre class="example"> >>> translate(['table.ctb'], "Hello", mode=compbrlLeftCursor)
+ ("HELLO", [0,1,2,3], [0,1,2,3], 0) +</pre>+ <p>There is a convenience wrapper which hides away much of the complexity
+of above example so you can write stuff like ++ <pre class="example"> >>> t.braille('the cat sat on the mat')
+ u'! cat sat on ! mat' +</pre>+ <p>But essentially you are writing code, so the doctests allow you to do
+more flexible tests that are much closer to the raw iron. For technical +reasons the doctests will probably only ever work in either Python2 or +Python3 but not both and they will never run from C. +</dl> + + <p>To sum it up, the recommendation is that for normal table testing you +should use the test harness. It has a lot of momentum and the format +is a standard. If you want to be closer to the raw Python API of +liblouis, if you want to test some more intricate scenarios (involving +inpos, modes, etc) then the doctests are for you. + +<p><a name="Translation-Table-Test-Harness"></a> + +<h3 class="section">4.1 Translation Table Test Harness</h3> ++<p>Each harness file is a simple utf8 encoded json file, which has two entries.
+ <dl>+<dt><code>tables</code><dd>A list containing table names, which the tests should be run against. +This is usually just one table, but for some situations more than one table is required. +<br><dt><code>tests</code><dd>A list of sections of tests, which should be processed independantly.
+Each test section is a dictionary of two items.+<br><dt><code>flags</code><dd>The flags that apply for all the test cases in this section. +For example, they could all be forward translation tests, or they should all be run as computer braille tests.
++ <br><dt><code>data</code><dd>A list of test cases, each one containing the specific test data needed to perform a test.
+</dl> + + <p>These are the valid fields for the flags section: + <dl>+<dt><code>comment</code><dd>A field describing the reason for the tests, the transformation rule or any useful info that might be needed in case the test breaks (optional). +<br><dt><code>cursorPos</code><dd>The position of the cursor within the given text (optional). Useful
+when simulating screenreader interaction, to debug contraction and +cursor behaviour.+<br><dt><code>mode</code><dd>The liblouis translation mode that should be used for this test
+(optional). If not defined defaults to 0.+<br><dt><code>outputUniBrl</code><dd>For a forward translation test, the output should be in unicode braille.
+For a backward translation test, the input is in unicode braille.+<br><dt><code>testmode</code><dd>The optional testmode field can have three values: "translate" (default if undeclaired), "backtranslate" or "hyphenate".
+Declares what tests should be performed on the test data. +</dl> + + <p>Each test case has the following entries: + + <dl> +<dt><code>input</code><dd>The unicode text to be tested (required).+<br><dt><code>output</code><dd>The expected braille output (required). The dots should be encoded in
+the liblouis ascii-braille like encoding.+<br><dt><code>brlCursorPos</code><dd>The expected position of the braille cursor in the braille output
+(optional). Useful when simulating screenreader interaction, to debug +contraction and cursor behaviour. +</dl> ++ <p>Variables defined in the flags section can be overwridden by individual test cases, but if several tests need the same options, they should +idealy be split into their own section, complete with their own flags and data.
++ <p>For examples please see <samp><span class="file">*_harness.txt</span></samp> in the
+harness directory in the source distribution. + +<p><a name="Translation-Table-Doctests"></a> + +<h3 class="section">4.2 Translation Table Doctests</h3> ++<p>For examples on how to create doctests please see <samp><span class="file">*_test.txt</span></samp> in
+the doctest directory in the source distribution. + <p><a name="Notes-on-Back-Translation"></a> <a name="Notes-on-Back_002dTranslation"></a> -<h2 class="chapter">4 Notes on Back-Translation</h2> +<h2 class="chapter">5 Notes on Back-Translation</h2> <p>Back-translation is carried out by the function <code>lou_backTranslateString</code>. Its calling sequence is described in @@ -1566,11 +1677,11 @@ <p><a name="Programming-with-liblouis"></a> -<h2 class="chapter">5 Programming with liblouis</h2> +<h2 class="chapter">6 Programming with liblouis</h2> <p><a name="License"></a> -<h3 class="section">5.1 License</h3> +<h3 class="section">6.1 License</h3> <p>Liblouis may contain code borrowed from the Linux screen reader BRLTTY, Copyright © 1999-2006 by the BRLTTY Team. @@ -1597,7 +1708,7 @@ <p><a name="Overview"></a> -<h3 class="section">5.2 Overview</h3> +<h3 class="section">6.2 Overview</h3> <p>You use the liblouis library by calling the following functions, <code>lou_translateString</code>, <code>lou_backTranslateString</code>, @@ -1656,7 +1767,7 @@ <p><a name="Data-structure-of-liblouis-tables"></a> -<h3 class="section">5.3 Data structure of liblouis tables</h3> +<h3 class="section">6.3 Data structure of liblouis tables</h3> <p>The data structure <code>TranslationTableHeader</code> is defined by a<code>typedef</code> statement in <samp><span class="file">louis.h</span></samp>. To find the beginning,
@@ -1727,7 +1838,7 @@ <p><a name="lou_version"></a> <a name="lou_005fversion"></a> -<h3 class="section">5.4 lou_version</h3> +<h3 class="section">6.4 lou_version</h3> <p><a name="index-lou_005fversion-108"></a> <pre class="example"> char *lou_version () @@ -1739,7 +1850,7 @@ <p><a name="lou_translateString"></a> <a name="lou_005ftranslateString"></a> -<h3 class="section">5.5 lou_translateString</h3> +<h3 class="section">6.5 lou_translateString</h3> <p><a name="index-lou_005ftranslateString-109"></a> <pre class="example"> int lou_translateString ( @@ -1829,7 +1940,7 @@ <p><a name="lou_translate"></a> <a name="lou_005ftranslate"></a> -<h3 class="section">5.6 lou_translate</h3> +<h3 class="section">6.6 lou_translate</h3> <p><a name="index-lou_005ftranslate-110"></a> <pre class="example"> int lou_translate ( @@ -1852,7 +1963,8 @@ position in <code>outbuf</code> corresponding to each input position. Similarly, <code>inputPos</code> must point to an array of integers of at least <code>outlen</code> elements. On return, this array will contain the-position in <code>inbuf</code> corresponding to each position in <code>inbuf</code>.
+position in <code>inbuf</code> corresponding to each position in +<code>outbuf</code>.<code>cursorPos</code> must point to an integer containing the position of the
cursor in the input. On return, it will contain the cursor position inthe output. Any parameter after <code>outlen</code> may be <code>NULL</code>. In
@@ -1863,9 +1975,14 @@ cursor will be translated in computer braille. If the<code>compbrlLeftCursor</code> bit is set only the characters to the left of
the cursor will be in computer braille. This bit overrides-<code>compbrlAtCursor</code>. The <code>ucBrl</code> (Unicode Braille) bit is used -by <code>lou_charToDots</code> and <code>lou_translate</code>. It causes the dot
+<code>compbrlAtCursor</code>.+When the <code>dotsIO</code> bit is set, during translation, produce output as dot patterns. During
+back-translation accept input as dot patterns. Note that the produced+dot patterns are affected if you have any <code>display</code> opcode (see <a href="#display-opcode">display</a>) defined
+in any of your tables.+The <code>ucBrl</code> (Unicode Braille) bit is used by <code>lou_charToDots</code> and <code>lou_translate</code>. It causes the dot
patterns to be Unicode Braille rather than the liblouis representation.+Note that you will not notice any change when setting <code>ucBrl</code> unless <code>dotsIO</code> is also set. <code>lou_dotsToChar</code> and <code>lou_backTranslate</code> recognize Unicode
braille automatically. @@ -1886,7 +2003,7 @@ <p><a name="lou_backTranslateString"></a> <a name="lou_005fbackTranslateString"></a> -<h3 class="section">5.7 lou_backTranslateString</h3> +<h3 class="section">6.7 lou_backTranslateString</h3> <p><a name="index-lou_005fbackTranslateString-111"></a> <pre class="example"> int lou_backTranslateString ( @@ -1912,7 +2029,7 @@ <p><a name="lou_backTranslate"></a> <a name="lou_005fbackTranslate"></a> -<h3 class="section">5.8 lou_backTranslate</h3> +<h3 class="section">6.8 lou_backTranslate</h3> <p><a name="index-lou_005fbackTranslate-112"></a> <pre class="example"> int lou_backTranslate ( @@ -1933,41 +2050,41 @@ <p><a name="lou_hyphenate"></a> <a name="lou_005fhyphenate"></a> -<h3 class="section">5.9 lou_hyphenate</h3> +<h3 class="section">6.9 lou_hyphenate</h3> <p><a name="index-lou_005fhyphenate-113"></a> <pre class="example"> int lou_hyphenate ( - const char * tableList, - const widechar * const inbuf, + const char *tableList, + const widechar *inbuf, int inlen, char *hyphens, int mode); </pre><p>This function looks at the characters in <code>inbuf</code> and if it finds
-a sequence of letters attempts to hyphenate it as a word. Note -that lou_hyphenate operates on single words only, and spaces or -punctuation marks between letters are not allowed. Leading and -trailing punctuation marks are ignored. The table named by the-<code>tableList</code> parameter must contain a hyphenation table. If it does
-not, the function does nothing. <code>inlen</code> is the length of the -character string in <code>inbuf</code>. <code>hyphens</code> is an array of -characters and must be of size <code>inlen</code>. If hyphenation is -successful it will have a 1 at the beginning of each syllable and a 0-elsewhere. If the <code>mode</code> parameter is 0 <code>inbuf</code> is assumed
-to contain untranslated characters. Any nonzero value means that -<code>inbuf</code> contains a translation. In this case, it is -back-translated, hyphenation is performed, and it is re-translated so-that the hyphens can be placed correctly. The <code>lou_translate</code> and
-<code>lou_backTranslate</code> functions are used in this process. -<code>lou_hyphenate</code> returns 1 if hyphenation was successful and 0 -otherwise. In the latter case, the contents of the <code>hyphens</code> -parameter are undefined. This function was provided for use in -liblouisxml. +a sequence of letters attempts to hyphenate it as a word. Note that +lou_hyphenate operates on single words only, and spaces or punctuation +marks between letters are not allowed. Leading and trailing+punctuation marks are ignored. The table named by the <code>tableList</code>
+parameter must contain a hyphenation table. If it does not, the +function does nothing. <code>inlen</code> is the length of the character+string in <code>inbuf</code>. <code>hyphens</code> is an array of characters and +must be of size <code>inlen</code> + 1 (to account for the NULL terminator).
+If hyphenation is successful it will have a 1 at the beginning of each +syllable and a 0 elsewhere. If the <code>mode</code> parameter is 0 +<code>inbuf</code> is assumed to contain untranslated characters. Any +nonzero value means that <code>inbuf</code> contains a translation. In this +case, it is back-translated, hyphenation is performed, and it is +re-translated so that the hyphens can be placed correctly. The+<code>lou_translate</code> and <code>lou_backTranslate</code> functions are used
+in this process. <code>lou_hyphenate</code> returns 1 if hyphenation was +successful and 0 otherwise. In the latter case, the contents of the+<code>hyphens</code> parameter are undefined. This function was provided for
+use in liblouisxml. <p><a name="lou_compileString"></a> <a name="lou_005fcompileString"></a> -<h3 class="section">5.10 lou_compileString</h3> +<h3 class="section">6.10 lou_compileString</h3> <p><a name="index-lou_005fcompileString-114"></a><pre class="example"> int lou_compileString (const char *tableList, const char *inString)
@@ -1983,7 +2100,7 @@ <p><a name="lou_dotsToChar"></a> <a name="lou_005fdotsToChar"></a> -<h3 class="section">5.11 lou_dotsToChar</h3> +<h3 class="section">6.11 lou_dotsToChar</h3> <p><a name="index-lou_005fdotsToChar-115"></a><pre class="example"> int lou_dotsToChar (const char *tableList, const widechar *inbuf, widechar
@@ -2000,7 +2117,7 @@ <p><a name="lou_charToDots"></a> <a name="lou_005fcharToDots"></a> -<h3 class="section">5.12 lou_charToDots</h3> +<h3 class="section">6.12 lou_charToDots</h3> <p><a name="index-lou_005fcharToDots-116"></a><pre class="example"> int lou_charToDots (const char *tableList, const widechar *inbuf, widechar
@@ -2018,7 +2135,7 @@ <p><a name="lou_logFile"></a> <a name="lou_005flogFile"></a> -<h3 class="section">5.13 lou_logFile</h3> +<h3 class="section">6.13 lou_logFile</h3> <p><a name="index-lou_005flogFile-117"></a> <pre class="example"> void lou_logFile (char *fileName); @@ -2032,7 +2149,7 @@ <p><a name="lou_logPrint"></a> <a name="lou_005flogPrint"></a> -<h3 class="section">5.14 lou_logPrint</h3> +<h3 class="section">6.14 lou_logPrint</h3> <p><a name="index-lou_005flogPrint-118"></a> <pre class="example"> void lou_logPrint (char *format, ...); @@ -2045,7 +2162,7 @@ <p><a name="lou_logEnd"></a> <a name="lou_005flogEnd"></a> -<h3 class="section">5.15 lou_logEnd</h3> +<h3 class="section">6.15 lou_logEnd</h3> <p><a name="index-lou_005flogEnd-119"></a> <pre class="example"> lou_logEnd (); @@ -2056,7 +2173,7 @@ <p><a name="lou_setDataPath"></a> <a name="lou_005fsetDataPath"></a> -<h3 class="section">5.16 lou_setDataPath</h3> +<h3 class="section">6.16 lou_setDataPath</h3> <p><a name="index-lou_005fsetDataPath-120"></a> <pre class="example"> char * lou_setDataPath (char *path); @@ -2070,7 +2187,7 @@ <p><a name="lou_getDataPath"></a> <a name="lou_005fgetDataPath"></a> -<h3 class="section">5.17 lou_getDataPath</h3> +<h3 class="section">6.17 lou_getDataPath</h3> <p><a name="index-lou_005fgetDataPath-121"></a> <pre class="example"> char * lou_getDataPath (); @@ -2081,7 +2198,7 @@ <p><a name="lou_getTable"></a> <a name="lou_005fgetTable"></a> -<h3 class="section">5.18 lou_getTable</h3> +<h3 class="section">6.18 lou_getTable</h3> <p><a name="index-lou_005fgetTable-122"></a> <pre class="example"> void *lou_getTable (char *tablelist); @@ -2097,7 +2214,7 @@ <p><a name="lou_readCharFromFile"></a> <a name="lou_005freadCharFromFile"></a> -<h3 class="section">5.19 lou_readCharFromFile</h3> +<h3 class="section">6.19 lou_readCharFromFile</h3> <p><a name="index-lou_005freadCharFromFile-123"></a><pre class="example"> int lou_readCharFromFile (const char *fileName, int *mode);
@@ -2114,7 +2231,7 @@ <p><a name="lou_free"></a> <a name="lou_005ffree"></a> -<h3 class="section">5.20 lou_free</h3> +<h3 class="section">6.20 lou_free</h3> <p><a name="index-lou_005ffree-124"></a> <pre class="example"> void lou_free (); @@ -2127,7 +2244,7 @@ <p><a name="Python-bindings"></a> -<h3 class="section">5.21 Python bindings</h3> +<h3 class="section">6.21 Python bindings</h3> <p>There are Python bindings for <code>lou_translateString</code>, <code>lou_translate</code> and <code>lou_version</code>. For installation For a description of the software, to download it and links to project pages go to http://www.abilitiessoft.com