Skip to content

Commit

Permalink
Implemented pass1Only mode bit. Can now set pass1Only in lou_allround.
Browse files Browse the repository at this point in the history
  • Loading branch information
John Boyer committed Jan 21, 2009
1 parent 50e69c3 commit 2919b1e
Show file tree
Hide file tree
Showing 5 changed files with 192 additions and 171 deletions.
5 changes: 4 additions & 1 deletion ChangeLog
@@ -1,5 +1,8 @@
2009-01-20 (2) John J. Boyer <john.boyer@jjb-software.com>
* Implemented pass1Only mode bit
* Can now set pass1Only in lou_allround
2009-01-20 John J. Boyer <john.boyer@jjb-software.com>
Change version in configure.ac to 1.5.2
* Change version in configure.ac to 1.5.2

2009-01-20 James Teh <jamie@jantrid.net>

Expand Down
3 changes: 2 additions & 1 deletion liblouis/liblouis.h
Expand Up @@ -61,7 +61,8 @@ extern "C"
noContractions = 1,
compbrlAtCursor = 2,
dotsIO = 4,
comp8Dots = 8
comp8Dots = 8,
pass1Only = 16
} translationModes;

char *lou_version ();
Expand Down
297 changes: 152 additions & 145 deletions liblouis/lou_backTranslateString.c
Expand Up @@ -57,7 +57,7 @@ static int cursorStatus;

int
lou_backTranslateString (const char *trantab, const widechar
*inbuf,
* inbuf,
int *inlen, widechar * outbuf, int *outlen, char
*typeform, char *spacing, int modex)
{
Expand All @@ -68,7 +68,7 @@ lou_backTranslateString (const char *trantab, const widechar
int
lou_backTranslate (const char *trantab, const
widechar
*inbuf,
* inbuf,
int *inlen, widechar * outbuf, int *outlen,
char *typeform, char *spacing, int
*outputPos, int *inputPos, int *cursorPos, int modex)
Expand Down Expand Up @@ -105,161 +105,167 @@ lou_backTranslate (const char *trantab, const
passbuf1[k] = getDotsForChar (inbuf[k]);
passbuf1[srcmax] = getDotsForChar (' ');
currentInput = passbuf1;
if (table->numPasses > 1 || table->corrections)
if ((!(mode & pass1Only)) && (table->numPasses > 1 || table->corrections))
{
if (!(passbuf2 = liblouis_allocMem (alloc_passbuf2, srcmax, destmax)))
return 0;
}
currentPass = table->numPasses;
switch (table->numPasses + (table->corrections << 3))
if ((mode & pass1Only))
{
case 1:
currentOutput = outbuf;
goodTrans = backTranslateString ();
break;
case 2:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = outbuf;
goodTrans = backTranslateString ();
break;
case 3:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = passbuf1;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentInput = passbuf1;
currentOutput = outbuf;
currentPass--;
srcmax = src;
goodTrans = backTranslateString ();
break;
case 4:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = passbuf1;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentInput = passbuf1;
currentOutput = passbuf2;
srcmax = dest;
currentPass--;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentInput = passbuf2;
currentOutput = outbuf;
currentPass--;
srcmax = dest;
goodTrans = backTranslateString ();
break;
case 9:
currentOutput = passbuf2;
goodTrans = backTranslateString ();
if (!goodTrans)
break;
currentInput = passbuf2;
currentOutput = outbuf;
currentPass--;
srcmax = dest;
goodTrans = makeCorrections ();
break;
case 10:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
}
else
switch (table->numPasses + (table->corrections << 3))
{
case 1:
currentOutput = outbuf;
goodTrans = backTranslateString ();
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = passbuf1;
goodTrans = backTranslateString ();
if (!goodTrans)
case 2:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = outbuf;
goodTrans = backTranslateString ();
break;
currentInput = passbuf1;
currentOutput = outbuf;
currentPass--;
srcmax = dest;
goodTrans = makeCorrections ();
break;
case 11:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
case 3:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = passbuf1;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentInput = passbuf1;
currentOutput = outbuf;
currentPass--;
srcmax = src;
goodTrans = backTranslateString ();
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = passbuf1;
goodTrans = translatePass ();
if (!goodTrans)
case 4:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = passbuf1;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentInput = passbuf1;
currentOutput = passbuf2;
srcmax = dest;
currentPass--;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentInput = passbuf2;
currentOutput = outbuf;
currentPass--;
srcmax = dest;
goodTrans = backTranslateString ();
break;
currentInput = passbuf1;
currentOutput = passbuf2;
currentPass--;
srcmax = dest;
goodTrans = backTranslateString ();
if (!goodTrans)
case 9:
currentOutput = passbuf2;
goodTrans = backTranslateString ();
if (!goodTrans)
break;
currentInput = passbuf2;
currentOutput = outbuf;
currentPass--;
srcmax = dest;
goodTrans = makeCorrections ();
break;
currentInput = passbuf2;
currentOutput = outbuf;
currentPass--;
srcmax = dest;
goodTrans = makeCorrections ();
break;
case 12:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
case 10:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = passbuf1;
goodTrans = backTranslateString ();
if (!goodTrans)
break;
currentInput = passbuf1;
currentOutput = outbuf;
currentPass--;
srcmax = dest;
goodTrans = makeCorrections ();
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = passbuf1;
goodTrans = translatePass ();
if (!goodTrans)
case 11:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = passbuf1;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentInput = passbuf1;
currentOutput = passbuf2;
currentPass--;
srcmax = dest;
goodTrans = backTranslateString ();
if (!goodTrans)
break;
currentInput = passbuf2;
currentOutput = outbuf;
currentPass--;
srcmax = dest;
goodTrans = makeCorrections ();
break;
currentInput = passbuf1;
currentOutput = passbuf2;
srcmax = dest;
currentPass--;
goodTrans = translatePass ();
if (!goodTrans)
case 12:
currentOutput = passbuf2;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentPass--;
srcmax = dest;
currentInput = passbuf2;
currentOutput = passbuf1;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentInput = passbuf1;
currentOutput = passbuf2;
srcmax = dest;
currentPass--;
goodTrans = translatePass ();
if (!goodTrans)
break;
currentInput = passbuf2;
currentOutput = passbuf1;
currentPass--;
srcmax = dest;
goodTrans = backTranslateString ();
if (!goodTrans)
break;
currentInput = passbuf1;
currentOutput = outbuf;
currentPass--;
srcmax = dest;
goodTrans = makeCorrections ();
break;
currentInput = passbuf2;
currentOutput = passbuf1;
currentPass--;
srcmax = dest;
goodTrans = backTranslateString ();
if (!goodTrans)
default:
break;
currentInput = passbuf1;
currentOutput = outbuf;
currentPass--;
srcmax = dest;
goodTrans = makeCorrections ();
break;
default:
break;
}
}
if (src < *inlen)
*inlen = src;
*outlen = dest;
Expand Down Expand Up @@ -754,7 +760,8 @@ putchars (const widechar * chars, int count)
return 0;
if (nextUpper)
{
currentOutput[dest++] = (back_findCharOrDots (chars[k++], 0))->uppercase;
currentOutput[dest++] =
(back_findCharOrDots (chars[k++], 0))->uppercase;
nextUpper = 0;
}
if (!allUpper)
Expand Down Expand Up @@ -861,7 +868,8 @@ static int
putCharacter (widechar dots)
{
/*Output character(s) corresponding to a Unicode braille Character*/
TranslationTableOffset offset = (back_findCharOrDots (dots, 0))->definitionRule;
TranslationTableOffset offset =
(back_findCharOrDots (dots, 0))->definitionRule;
if (offset)
{
widechar c;
Expand Down Expand Up @@ -905,9 +913,8 @@ compareChars (const widechar * address1, const widechar * address2, int
if (!count)
return 0;
for (k = 0; k < count; k++)
if ((back_findCharOrDots (address1[k], m))->lowercase != (back_findCharOrDots
(address2[k],
m))->lowercase)
if ((back_findCharOrDots (address1[k], m))->lowercase !=
(back_findCharOrDots (address2[k], m))->lowercase)
return 0;
return 1;
}
Expand Down

0 comments on commit 2919b1e

Please sign in to comment.