[liblouis-liblouisxml] [liblouis] r791 committed - Update online documentation

  • From: liblouis@xxxxxxxxxxxxxx
  • To: liblouis-liblouisxml@xxxxxxxxxxxxx
  • Date: Mon, 10 Sep 2012 10:38:30 +0000

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
-(&lsquo;<samp><span class="samp">#</span></samp>&rsquo;) 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
-(&lsquo;<samp><span class="samp">&lt;</span></samp>&rsquo;) 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 (&lsquo;<samp><span class="samp">#</span></samp>&rsquo;) 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 (&lsquo;<samp><span class="samp">&lt;</span></samp>&rsquo;) 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 than
that 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"> &gt;&gt;&gt; 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"> &gt;&gt;&gt; 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 &copy; 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 in
the 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

Other related posts:

  • » [liblouis-liblouisxml] [liblouis] r791 committed - Update online documentation - liblouis