|
|
@@ -1,7 +1,7 @@ |
|
|
|
/* |
|
|
|
* Copyright (C) 2005 to 2014 by Jonathan Duddington |
|
|
|
* email: [email protected] |
|
|
|
* Copyright (C) 2015-2017 Reece H. Dunn |
|
|
|
* Copyright (C) 2015-2017, 2020 Reece H. Dunn |
|
|
|
* |
|
|
|
* This program is free software; you can redistribute it and/or modify |
|
|
|
* it under the terms of the GNU General Public License as published by |
|
|
@@ -438,31 +438,32 @@ typedef struct { |
|
|
|
unsigned char *length_mods; |
|
|
|
unsigned char *length_mods0; |
|
|
|
|
|
|
|
#define NUM_THOUS_SPACE 0x00000004 |
|
|
|
#define NUM_DECIMAL_COMMA 0x00000008 |
|
|
|
#define NUM_SWAP_TENS 0x00000010 |
|
|
|
#define NUM_AND_UNITS 0x00000020 |
|
|
|
#define NUM_HUNDRED_AND 0x00000040 |
|
|
|
#define NUM_SINGLE_AND 0x00000080 |
|
|
|
#define NUM_SINGLE_STRESS 0x00000100 |
|
|
|
#define NUM_SINGLE_VOWEL 0x00000200 |
|
|
|
#define NUM_OMIT_1_HUNDRED 0x00000400 |
|
|
|
#define NUM_1900 0x00000800 |
|
|
|
#define NUM_ALLOW_SPACE 0x00001000 |
|
|
|
#define NUM_DFRACTION_BITS 0x0000e000 |
|
|
|
#define NUM_ORDINAL_DOT 0x00010000 |
|
|
|
#define NUM_NOPAUSE 0x00020000 |
|
|
|
#define NUM_AND_HUNDRED 0x00040000 |
|
|
|
#define NUM_THOUSAND_AND 0x00080000 |
|
|
|
#define NUM_VIGESIMAL 0x00100000 |
|
|
|
#define NUM_OMIT_1_THOUSAND 0x00200000 |
|
|
|
#define NUM_ZERO_HUNDRED 0x00400000 |
|
|
|
#define NUM_HUNDRED_AND_DIGIT 0x00800000 |
|
|
|
#define NUM_ROMAN 0x01000000 |
|
|
|
#define NUM_ROMAN_CAPITALS 0x02000000 |
|
|
|
#define NUM_ROMAN_AFTER 0x04000000 |
|
|
|
#define NUM_ROMAN_ORDINAL 0x08000000 |
|
|
|
#define NUM_SINGLE_STRESS_L 0x10000000 |
|
|
|
#define NUM_ROUTINE_BITS 0x00000003 // which numbers routine to use. |
|
|
|
#define NUM_THOUS_SPACE 0x00000004 // thousands separator must be space |
|
|
|
#define NUM_DECIMAL_COMMA 0x00000008 // , decimal separator, not . |
|
|
|
#define NUM_SWAP_TENS 0x00000010 // use three-and-twenty rather than twenty-three |
|
|
|
#define NUM_AND_UNITS 0x00000020 // 'and' between tens and units |
|
|
|
#define NUM_HUNDRED_AND 0x00000040 // add "and" after hundred or thousand |
|
|
|
#define NUM_SINGLE_AND 0x00000080 // don't have "and" both after hundreds and also between tens and units |
|
|
|
#define NUM_SINGLE_STRESS 0x00000100 // only one primary stress in tens+units |
|
|
|
#define NUM_SINGLE_VOWEL 0x00000200 // only one vowel betwen tens and units |
|
|
|
#define NUM_OMIT_1_HUNDRED 0x00000400 // omit "one" before "hundred" |
|
|
|
#define NUM_1900 0x00000800 // say 19** as nineteen hundred |
|
|
|
#define NUM_ALLOW_SPACE 0x00001000 // allow space as thousands separator (in addition to langopts.thousands_sep) |
|
|
|
#define NUM_DFRACTION_BITS 0x0000e000 // post-decimal-digits 0=single digits, 1=(LANG=it) 2=(LANG=pl) 3=(LANG=ro) |
|
|
|
#define NUM_ORDINAL_DOT 0x00010000 // dot after number indicates ordinal |
|
|
|
#define NUM_NOPAUSE 0x00020000 // don't add pause after a number |
|
|
|
#define NUM_AND_HUNDRED 0x00040000 // 'and' before hundreds |
|
|
|
#define NUM_THOUSAND_AND 0x00080000 // 'and' after thousands if there are no hundreds |
|
|
|
#define NUM_VIGESIMAL 0x00100000 // vigesimal number, if tens are not found |
|
|
|
#define NUM_OMIT_1_THOUSAND 0x00200000 // omit "one" before "thousand" |
|
|
|
#define NUM_ZERO_HUNDRED 0x00400000 // say "zero" before hundred |
|
|
|
#define NUM_HUNDRED_AND_DIGIT 0x00800000 // add "and" after hundreds and thousands, only if there are digits and no tens |
|
|
|
#define NUM_ROMAN 0x01000000 // recognize roman numbers |
|
|
|
#define NUM_ROMAN_CAPITALS 0x02000000 // Roman numbers only if upper case |
|
|
|
#define NUM_ROMAN_AFTER 0x04000000 // say "roman" after the number, not before |
|
|
|
#define NUM_ROMAN_ORDINAL 0x08000000 // Roman numbers are ordinal numbers |
|
|
|
#define NUM_SINGLE_STRESS_L 0x10000000 // only one primary stress in tens+units (on the tens) |
|
|
|
|
|
|
|
#define NUM_DFRACTION_1 0x00002000 |
|
|
|
#define NUM_DFRACTION_2 0x00004000 |
|
|
@@ -472,34 +473,6 @@ typedef struct { |
|
|
|
#define NUM_DFRACTION_6 0x0000c000 |
|
|
|
#define NUM_DFRACTION_7 0x0000e000 // lang=si, alternative form of number for decimal fraction digits (except the last) |
|
|
|
|
|
|
|
// bits0-1=which numbers routine to use. |
|
|
|
// bit2= thousands separator must be space |
|
|
|
// bit3= , decimal separator, not . |
|
|
|
// bit4=use three-and-twenty rather than twenty-three |
|
|
|
// bit5='and' between tens and units |
|
|
|
// bit6=add "and" after hundred or thousand |
|
|
|
// bit7=don't have "and" both after hundreds and also between tens and units |
|
|
|
// bit8=only one primary stress in tens+units |
|
|
|
// bit9=only one vowel betwen tens and units |
|
|
|
// bit10=omit "one" before "hundred" |
|
|
|
// bit11=say 19** as nineteen hundred |
|
|
|
// bit12=allow space as thousands separator (in addition to langopts.thousands_sep) |
|
|
|
// bits13-15 post-decimal-digits 0=single digits, 1=(LANG=it) 2=(LANG=pl) 3=(LANG=ro) |
|
|
|
|
|
|
|
// bit16= dot after number indicates ordinal |
|
|
|
// bit17= don't add pause after a number |
|
|
|
// bit18= 'and' before hundreds |
|
|
|
// bit19= 'and' after thousands if there are no hundreds |
|
|
|
// bit20= vigesimal number, if tens are not found |
|
|
|
// bit21= omit "one" before "thousand" |
|
|
|
// bit22= say "zero" before hundred |
|
|
|
// bit23= add "and" after hundreds and thousands, only if there are digits and no tens |
|
|
|
|
|
|
|
// bit24= recognize roman numbers |
|
|
|
// bit25= Roman numbers only if upper case |
|
|
|
// bit26= say "roman" after the number, not before |
|
|
|
// bit27= Roman numbers are ordinal numbers |
|
|
|
// bit28= only one primary stress in tens+units (on the tens) |
|
|
|
int numbers; |
|
|
|
|
|
|
|
#define NUM2_THOUSANDS_VAR1 0x40 |