static unsigned char *typebuf = NULL;
static int *srcMapping = NULL;
static char *spacebuf;
-static int backTranslateString (void);
-static int makeCorrections (void);
-static int translatePass (void);
+static int backTranslateString ();
+static int makeCorrections ();
+static int translatePass ();
static int *outputPositions;
static int *inputPositions;
int EXPORT_CALL
lou_backTranslateString (const char *tableList, const widechar
* inbuf,
- int *inlen, widechar * outbuf, int *outlen, char
+ int *inlen, widechar * outbuf, int *outlen,
+ formtype
*typeform, char *spacing, int modex)
{
return lou_backTranslate (tableList, inbuf, inlen, outbuf, outlen,
widechar
* inbuf,
int *inlen, widechar * outbuf, int *outlen,
- char *typeform, char *spacing, int
+ formtype *typeform, char *spacing, int
*outputPos, int *inputPos, int *cursorPos, int modex)
{
int k;
static TranslationTableCharacterAttributes beforeAttributes;
static TranslationTableCharacterAttributes afterAttributes;
static void
-back_setBefore (void)
+back_setBefore ()
{
before = (dest == 0) ? ' ' : currentOutput[dest - 1];
beforeAttributes = (back_findCharOrDots (before, 0))->attributes;
static int
-isBegWord (void)
+isBegWord ()
{
/*See if this is really the beginning of a word. Look at what has
* already been translated. */
}
static int
-isEndWord (void)
+isEndWord ()
{
/*See if this is really the end of a word. */
int k;
}
return 1;
}
-
static int
findBrailleIndicatorRule (TranslationTableOffset offset)
{
static const TranslationTableRule *multindRule;
static int
-handleMultind (void)
+handleMultind ()
{
/*Handle multille braille indicators*/
int found = 0;
static int startReplace;
static int endReplace;
-static int back_passDoTest (void);
-static int back_passDoAction (void);
+static int back_passDoTest ();
+static int back_passDoAction ();
static int
-findAttribOrSwapRules (void)
+findAttribOrSwapRules ()
{
TranslationTableOffset ruleOffset;
if (src == previousSrc)
}
static void
-back_selectRule (void)
+back_selectRule ()
{
/*check for valid back-translations */
int length = srcmax - src;
break;
length = 1;
ruleOffset = dots->otherRules;
- if (itsANumber)
- {
- while (ruleOffset)
- {
- currentRule =
- (TranslationTableRule *) & table->ruleArea[ruleOffset];
- if (currentRule->opcode == CTO_LitDigit)
- {
- currentOpcode = currentRule->opcode;
- currentDotslen = currentRule->dotslen;
- return;
- }
- ruleOffset = currentRule->dotsnext;
- }
- ruleOffset = dots->otherRules;
- }
break;
case 2: /*No rule found */
currentRule = &pseudoRule;
case CTO_Punctuation:
case CTO_Math:
case CTO_Sign:
- case CTO_Always:
case CTO_ExactDots:
case CTO_NoCross:
case CTO_Repeated:
case CTO_LargeSign:
return;
case CTO_WholeWord:
- if (itsALetter)
+ if (itsALetter || itsANumber)
break;
case CTO_Contraction:
if ((beforeAttributes & (CTC_Space | CTC_Punctuation))
return;
break;
case CTO_SuffixableWord:
- if ((beforeAttributes & (CTC_Space | CTC_Punctuation))
- &&
- ((afterAttributes & (CTC_Space | CTC_Letter))
- || isEndWord ()))
+ if (beforeAttributes & (CTC_Space | CTC_Punctuation))
return;
break;
case CTO_PrefixableWord:
return;
break;
case CTO_PartWord:
- if (beforeAttributes & CTC_Letter || !isEndWord ())
+ if (!(beforeAttributes &
+ CTC_LitDigit) && (beforeAttributes & CTC_Letter ||
+ !isEndWord ()))
return;
break;
case CTO_MidWord:
if (isEndWord ())
return;
break;
+ case CTO_Always:
+ if ((beforeAttributes & CTC_LitDigit) &&
+ (afterAttributes & CTC_LitDigit) &&
+ currentRule->charslen > 1)
+ break;
+ return;
default:
break;
}
}
static int
-insertSpace (void)
+insertSpace ()
{
widechar c = ' ';
if (!back_updatePositions (&c, 1, 1))
}
static int
-makeCorrections (void)
+makeCorrections ()
{
int k;
if (!table->corrections)
}
static int
-backTranslateString (void)
+backTranslateString ()
{
/*Back translation */
int srcword = 0;
switch (currentOpcode)
{
case CTO_Hyphen:
- if (isEndWord ())
itsANumber = 0;
break;
case CTO_LargeSign:
itsANumber = 0;
goto insertChars;
case CTO_Space:
- itsANumber = allUpper = nextUpper = 0;
+ itsALetter = itsANumber = allUpper = nextUpper = 0;
default:
insertChars:
if (currentRule->charslen)
/*Multipass translation*/
static int
-matchcurrentInput (void)
+matchcurrentInput ()
{
int k;
int kk = passSrc;
}
static int
-back_swapTest (void)
+back_swapTest ()
{
int curLen;
int curTest;
}
static int
-back_passDoAction (void)
+back_passDoAction ()
{
int k;
if ((dest + startReplace - startMatch) > destmax)
}
static int
-checkDots (void)
+checkDots ()
{
int k;
int kk = src;
}
static void
-for_passSelectRule (void)
+for_passSelectRule ()
{
int length = srcmax - src;
const TranslationTableCharacter *dots;
}
static int
-translatePass (void)
+translatePass ()
{
int k;
previousOpcode = CTO_None;