home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Programming / ICU / src / icu / source / i18n / lnbkdat.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1999-08-16  |  28.8 KB  |  406 lines

  1. /*
  2. *****************************************************************************************
  3. *                                                                                       *
  4. * COPYRIGHT:                                                                            *
  5. *   (C) Copyright Taligent, Inc.,  1997                                                 *
  6. *   (C) Copyright International Business Machines Corporation,  1997-1998                    *
  7. *   Licensed Material - Program-Property of IBM - All Rights Reserved.                  *
  8. *   US Government Users Restricted Rights - Use, duplication, or disclosure             *
  9. *   restricted by GSA ADP Schedule Contract with IBM Corp.                              *
  10. *                                                                                       *
  11. *****************************************************************************************
  12. *
  13. * File LNBKDAT.CPP
  14. *
  15. * Modification History:
  16. *
  17. *   Date        Name        Description
  18. *   02/18/97    aliu        Converted from OpenClass.
  19. *                           Recoded kRawMapping table for Unicode::getType() type codes.
  20. *                           Made static data members const where appropriate.
  21. *   03/25/97    aliu        Moved into TextBoundaryData; no longer a subclass.
  22. *   04/15/97    aliu        Worked around bug in AIX xlC compiler which occurs if static
  23. *                           arrays contain const elements.
  24. *   05/06/97    aliu        Made SpecialMapping an array of objects instead of pointers,
  25. *                           to help out non-compliant compilers.
  26. *   08/14/98    helena      Sync-up JDK1.2.
  27. *   07/12/99    helena      HPUX 11 CC port.
  28. *****************************************************************************************
  29. */
  30.  
  31. // *****************************************************************************
  32. // This file was generated from the java source file LineBreakData.java
  33. // *****************************************************************************
  34.  
  35. #include "txtbdat.h"
  36. #include "wdbktbl.h"
  37. #include "unicdcm.h"
  38.  
  39. // *****************************************************************************
  40. // class LineBreakData
  41. // The following tables contain the transition state data for line break.
  42. // For more detailed explanation on the boundary break state machine, please
  43. // see the internal documentation of wdbktbl.cpp.
  44. // *****************************************************************************
  45.  
  46. // The forward transition states of line boundary data.
  47. TextBoundaryData::Node TextBoundaryData::kLineForwardData[] =
  48. {
  49.         // brk          bl              cr              nBl
  50.         // op           kan             prJ             poJ
  51.         // dgt          np              curr            nsm
  52.         // nbsp         EOS
  53.         /*00*/
  54.         kStop,          kStop,          kStop,          kStop,
  55.         kStop,          kStop,          kStop,          kStop,
  56.         kStop,          kStop,          kStop,          kStop,
  57.         kStop,          kStop,
  58.         /*01*/
  59.         kSI_4,          kSI_2,          kSI_7,          kSI_3,
  60.         kSI_6,          kSI_5,          kSI_1,          kSI_8,
  61.         kSI_9,          kSI_8,          kSI_1,          kSI_1,
  62.         kSI_1,          kSI_Stop,
  63.         /*02*/
  64.         kSI_4,          kSI_2,          kSI_7,          kSI_Stop,
  65.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  66.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_2,
  67.         kSI_1,          kSI_Stop,
  68.         /*03*/
  69.         kSI_4,          kSI_2,          kSI_7,          kSI_3,
  70.         kSI_6,          kSI_Stop,       kSI_Stop,       kSI_8,
  71.         kSI_9,          kSI_8,          kSI_Stop,       kSI_3,
  72.         kSI_1,          kSI_Stop,
  73.         /*04*/
  74.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  75.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  76.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  77.         kSI_Stop,       kSI_Stop,
  78.         /*05*/
  79.         kSI_4,          kSI_2,          kSI_7,          kSI_Stop,
  80.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_8,
  81.         kSI_Stop,       kSI_8,          kSI_Stop,       kSI_5,
  82.         kSI_1,          kSI_Stop,
  83.         /*06*/
  84.         kSI_4,          kSI_Stop,       kSI_7,          kSI_Stop,
  85.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  86.         kSI_9,          kSI_Stop,       kSI_11,         kSI_6,
  87.         kSI_1,          kSI_Stop,
  88.         /*07*/
  89.         kSI_4,          kSI_Stop,       kSI_Stop,       kSI_Stop,
  90.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  91.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  92.         kSI_Stop,       kSI_Stop,
  93.         /*08*/
  94.         kSI_4,          kSI_2,          kSI_7,          kSI_Stop,
  95.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_8,
  96.         kSI_Stop,       kSI_8,          kSI_Stop,       kSI_8,
  97.         kSI_1,          kSI_Stop,
  98.         /*09*/
  99.         kSI_4,          kSI_2,          kSI_7,          kSI_3,
  100.         kSI_6,          kSI_Stop,       kSI_Stop,       kSI_8,
  101.         kSI_9,          kSI_10,         kSI_10,         kSI_9,
  102.         kSI_1,          kSI_Stop,
  103.         /*10*/
  104.         kSI_4,          kSI_2,          kSI_7,          kSI_Stop,
  105.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_8,
  106.         kSI_9,          kSI_8,          kSI_Stop,       kSI_10,
  107.         kSI_1,          kSI_Stop,
  108.         /*11*/
  109.         kStop,          kStop,          kStop,          kStop,
  110.         kStop,          kStop,          kStop,          kStop,
  111.         kSI_9,          kStop,          kStop,          11,
  112.         kSI_1,          kStop
  113. };
  114.  
  115. const int32_t TextBoundaryData::kLineForwardData_length =
  116.     sizeof(TextBoundaryData::kLineForwardData) / sizeof(TextBoundaryData::kLineForwardData[0]);
  117.  
  118. WordBreakTable* TextBoundaryData::kLineForward =
  119.     new WordBreakTable(kLineCol_count, kLineForwardData, kLineForwardData_length);
  120.  
  121. // The backward transition states of line boundary data.
  122. TextBoundaryData::Node TextBoundaryData::kLineBackwardData[] =
  123. {
  124.         // brk          bl              cr              nBl
  125.         // op           kan             prJ             poJ
  126.         // dgt          np              curr            nsm
  127.         // nbsp         EOS
  128.         /*00*/
  129.         kStop,          kStop,          kStop,          kStop,
  130.         kStop,          kStop,          kStop,          kStop,
  131.         kStop,          kStop,          kStop,          kStop,
  132.         kStop,          kStop,
  133.         /*01*/
  134.         kSI_1,          kSI_1,          kSI_1,          kSI_2,
  135.         kSI_2,          kSI_4,          kSI_2,          kSI_3,
  136.         kSI_2,          kSI_3,          kSI_2,          kSI_1,
  137.         kSI_2,          kStop,
  138.         /*02*/
  139.         kStop,          kStop,          kStop,          kSI_2,
  140.         kSI_2,          kStop,          kSI_2,          kSI_3,
  141.         kSI_2,          kSI_3,          kSI_2,          kSI_2,
  142.         kSI_2,          kStop,
  143.         /*03*/
  144.         kStop,          kStop,          kStop,          kSI_2,
  145.         kStop,          kSI_4,          kSI_2,          kSI_3,
  146.         kSI_2,          kSI_3,          kSI_2,          kSI_3,
  147.         kSI_2,          kStop,
  148.         /*04*/
  149.         kStop,          kStop,          kStop,          kStop,
  150.         kStop,          kStop,          kSI_2,          kStop,
  151.         kStop,          kStop,          kSI_2,          kSI_4,
  152.         kSI_4,          kStop
  153. };
  154.  
  155. const int32_t TextBoundaryData::kLineBackwardData_length =
  156.     sizeof(TextBoundaryData::kLineBackwardData) / sizeof(TextBoundaryData::kLineBackwardData[0]);
  157.  
  158. WordBreakTable* TextBoundaryData::kLineBackward =
  159.     new WordBreakTable(kLineCol_count, kLineBackwardData, kLineBackwardData_length);
  160.  
  161. // The line type mapping of the break table.
  162. TextBoundaryData::Type TextBoundaryData::kLineRawMapping[] = {
  163.     // Re-coded to match Unicode 2 types [LIU]
  164.     kLineNonBlank,  // UNASSIGNED               = 0,
  165.     kLineNonBlank,  // UPPERCASE_LETTER         = 1,
  166.     kLineNonBlank,  // LOWERCASE_LETTER         = 2,
  167.     kLineNonBlank,  // TITLECASE_LETTER         = 3,
  168.     kLineNonBlank,  // MODIFIER_LETTER          = 4,
  169.     kLineNonBlank,  // OTHER_LETTER             = 5,
  170.     kLineNsm,       // NON_SPACING_MARK         = 6,
  171.     kLineNsm,       // ENCLOSING_MARK           = 7,
  172.     kLineNonBlank,  // COMBINING_SPACING_MARK   = 8,
  173.     kLineDigit,     // DECIMAL_DIGIT_NUMBER     = 9,
  174.     kLineNonBlank,  // LETTER_NUMBER            = 10,
  175.     kLineDigit,     // OTHER_NUMBER             = 11,
  176.     kLineBlank,     // SPACE_SEPARATOR          = 12,
  177.     kLineBlank,     // LINE_SEPARATOR           = 13,
  178.     kLineBlank,     // PARAGRAPH_SEPARATOR      = 14,
  179.     kLineBlank,     // CONTROL                  = 15,
  180.     kLineNonBlank,  // FORMAT                   = 16,
  181.     kLineNonBlank,  // PRIVATE_USE              = 17,
  182.     kLineNonBlank,  // SURROGATE                = 18,
  183.     kLineOp,        // DASH_PUNCTUATION         = 19,
  184.     kLinePreJwrd,   // START_PUNCTUATION        = 20,
  185.     kLinePostJwrd,  // END_PUNCTUATION          = 21,
  186.     kLineNonBlank,  // CONNECTOR_PUNCTUATION    = 22,
  187.     kLineNonBlank,  // OTHER_PUNCTUATION        = 23,
  188.     kLineNonBlank,  // MATH_SYMBOL              = 24,
  189.     kLinePreJwrd,   // CURRENCY_SYMBOL          = 25,
  190.     kLineNonBlank,  // MODIFIER_SYMBOL          = 26,
  191.     kLineNonBlank,  // OTHER_SYMBOL             = 27,
  192.     kLineNonBlank   // UNDEFINED                = 28
  193. };
  194.  
  195. const int32_t TextBoundaryData::kLineRawMapping_length =
  196.     sizeof(TextBoundaryData::kLineRawMapping)/sizeof(TextBoundaryData::kLineRawMapping[0]);
  197.  
  198. // The exceptions of the line break data.
  199. SpecialMapping TextBoundaryData::kLineExceptionChar[] = {
  200.         //note: the ranges in this table must be sorted in ascending order as
  201.         //      required by the UnicodeClassMapping class.
  202.         SpecialMapping(TextBoundaryData::ASCII_END_OF_TEXT, TextBoundaryData::kLineBreak),
  203.         SpecialMapping(TextBoundaryData::ASCII_HORIZONTAL_TABULATION,
  204.                        TextBoundaryData::ASCII_FORM_FEED, TextBoundaryData::kLineBreak),
  205.         SpecialMapping(TextBoundaryData::ASCII_CARRIAGE_RETURN, TextBoundaryData::kLineCR),
  206.         SpecialMapping(TextBoundaryData::ASCII_EXCLAMATION_MARK, TextBoundaryData::kLinePostJwrd),
  207.         SpecialMapping(TextBoundaryData::ASCII_DOLLAR_SIGN, TextBoundaryData::kLinePreJwrd),
  208.         SpecialMapping(TextBoundaryData::ASCII_PERCENT, TextBoundaryData::kLinePostJwrd),
  209.         SpecialMapping(TextBoundaryData::ASCII_COMMA, TextBoundaryData::kLineNumPunct),
  210.         SpecialMapping(TextBoundaryData::ASCII_FULL_STOP, TextBoundaryData::kLineNumPunct),
  211.         SpecialMapping(TextBoundaryData::ASCII_COLON, TextBoundaryData::ASCII_SEMICOLON, TextBoundaryData::kLinePostJwrd),
  212.         SpecialMapping(TextBoundaryData::ASCII_QUESTION_MARK, TextBoundaryData::kLinePostJwrd),
  213.         SpecialMapping(TextBoundaryData::ASCII_NONBREAKING_SPACE, TextBoundaryData::kLineNbsp),
  214.         SpecialMapping(TextBoundaryData::ASCII_CENT_SIGN, TextBoundaryData::kLinePostJwrd),
  215.         SpecialMapping(TextBoundaryData::LATIN1_SOFTHYPHEN, TextBoundaryData::kLineOp),
  216.         SpecialMapping(TextBoundaryData::LATIN1_DEGREE_SIGN, TextBoundaryData::kLinePostJwrd),
  217.         SpecialMapping(TextBoundaryData::ARABIC_PERCENT_SIGN, TextBoundaryData::kLinePostJwrd),
  218.         SpecialMapping(TextBoundaryData::FIGURE_SPACE, TextBoundaryData::kLineNbsp),
  219.         SpecialMapping(TextBoundaryData::NONBREAKING_HYPHEN, TextBoundaryData::kLineNbsp),
  220.         SpecialMapping(TextBoundaryData::PUNCTUATION_LINE_SEPARATOR,
  221.                        TextBoundaryData::PUNCTUATION_PARAGRAPH_SEPARATOR, TextBoundaryData::kLineBreak),
  222.         SpecialMapping(TextBoundaryData::PER_MILLE_SIGN, TextBoundaryData::kLinePostJwrd),
  223.         SpecialMapping(TextBoundaryData::PER_TEN_THOUSAND_SIGN, TextBoundaryData::kLinePostJwrd),
  224.         SpecialMapping(TextBoundaryData::PRIME, TextBoundaryData::TRIPLE_PRIME, TextBoundaryData::kLinePostJwrd),
  225.         SpecialMapping(TextBoundaryData::DEGREE_CELSIUS, TextBoundaryData::kLinePostJwrd),
  226.         SpecialMapping(TextBoundaryData::DEGREE_FAHRENHEIT, TextBoundaryData::kLinePostJwrd),
  227.         SpecialMapping(TextBoundaryData::PUNCTUATION_IDEOGRAPHIC_COMMA,
  228.                        TextBoundaryData::PUNCTUATION_IDEOGRAPHIC_FULL_STOP, TextBoundaryData::kLinePostJwrd),
  229.         SpecialMapping(TextBoundaryData::IDEOGRAPHIC_ITERATION_MARK, TextBoundaryData::kLinePostJwrd),
  230.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_SMALL_A, TextBoundaryData::kLinePostJwrd),
  231.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_A, TextBoundaryData::kLineJwrd),
  232.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_SMALL_I, TextBoundaryData::kLinePostJwrd),
  233.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_I, TextBoundaryData::kLineJwrd),
  234.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_SMALL_U, TextBoundaryData::kLinePostJwrd),
  235.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_U, TextBoundaryData::kLineJwrd),
  236.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_SMALL_E, TextBoundaryData::kLinePostJwrd),
  237.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_E, TextBoundaryData::kLineJwrd),
  238.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_SMALL_O, TextBoundaryData::kLinePostJwrd),
  239.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_O, TextBoundaryData::HIRAGANA_LETTER_DI, TextBoundaryData::kLineJwrd),
  240.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_SMALL_TU, TextBoundaryData::kLinePostJwrd),
  241.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_TU, TextBoundaryData::HIRAGANA_LETTER_MO, TextBoundaryData::kLineJwrd),
  242.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_SMALL_YA, TextBoundaryData::kLinePostJwrd),
  243.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_YA, TextBoundaryData::kLineJwrd),
  244.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_SMALL_YU, TextBoundaryData::kLinePostJwrd),
  245.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_YU, TextBoundaryData::kLineJwrd),
  246.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_SMALL_YO, TextBoundaryData::kLinePostJwrd),
  247.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_YO, TextBoundaryData::HIRAGANA_LETTER_RO, TextBoundaryData::kLineJwrd),
  248.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_SMALL_WA, TextBoundaryData::kLinePostJwrd),
  249.         SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_WA, TextBoundaryData::HIRAGANA_LETTER_VU, TextBoundaryData::kLineJwrd),
  250.         SpecialMapping(TextBoundaryData::COMBINING_KATAKANA_HIRAGANA_VOICED_SOUND_MARK,
  251.                        TextBoundaryData::HIRAGANA_SEMIVOICED_SOUND_MARK, TextBoundaryData::kLinePostJwrd),
  252.         SpecialMapping(TextBoundaryData::HIRAGANA_ITERATION_MARK, TextBoundaryData::HIRAGANA_VOICED_ITERATION_MARK, TextBoundaryData::kLinePostJwrd),
  253.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_A, TextBoundaryData::kLinePostJwrd),
  254.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_A, TextBoundaryData::kLineJwrd),
  255.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_I, TextBoundaryData::kLinePostJwrd),
  256.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_I, TextBoundaryData::kLineJwrd),
  257.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_U, TextBoundaryData::kLinePostJwrd),
  258.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_U, TextBoundaryData::kLineJwrd),
  259.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_E, TextBoundaryData::kLinePostJwrd),
  260.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_E, TextBoundaryData::kLineJwrd),
  261.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_O, TextBoundaryData::kLinePostJwrd),
  262.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_O, TextBoundaryData::KATAKANA_LETTER_DI, TextBoundaryData::kLineJwrd),
  263.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_TU, TextBoundaryData::kLinePostJwrd),
  264.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_TU, TextBoundaryData::KATAKANA_LETTER_MO, TextBoundaryData::kLineJwrd),
  265.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_YA, TextBoundaryData::kLinePostJwrd),
  266.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_YA, TextBoundaryData::kLineJwrd),
  267.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_YU, TextBoundaryData::kLinePostJwrd),
  268.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_YU, TextBoundaryData::kLineJwrd),
  269.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_YO, TextBoundaryData::kLinePostJwrd),
  270.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_YO, TextBoundaryData::KATAKANA_LETTER_RO, TextBoundaryData::kLineJwrd),
  271.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_WA, TextBoundaryData::kLinePostJwrd),
  272.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_WA, TextBoundaryData::KATAKANA_LETTER_VU, TextBoundaryData::kLineJwrd),
  273.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_KA, TextBoundaryData::KATAKANA_LETTER_SMALL_KE, TextBoundaryData::kLinePostJwrd),
  274.         SpecialMapping(TextBoundaryData::KATAKANA_LETTER_VA, TextBoundaryData::KATAKANA_LETTER_VO, TextBoundaryData::kLineJwrd),
  275.         SpecialMapping(TextBoundaryData::KATAKANA_HIRAGANA_PROLONGED_SOUND_MARK, TextBoundaryData::kLinePostJwrd),
  276.         SpecialMapping(TextBoundaryData::KATAKANA_ITERATION_MARK, TextBoundaryData::KATAKANA_VOICED_ITERATION_MARK, TextBoundaryData::kLinePostJwrd),
  277.         SpecialMapping(TextBoundaryData::UNICODE_LOW_BOUND_HAN, TextBoundaryData::UNICODE_HIGH_BOUND_HAN,TextBoundaryData::kLineJwrd),
  278.         SpecialMapping(TextBoundaryData::CJK_COMPATIBILITY_F900,
  279.                        TextBoundaryData::CJK_COMPATIBILITY_FA2D, TextBoundaryData::kLineJwrd),
  280.         SpecialMapping(TextBoundaryData::UNICODE_ZERO_WIDTH_NON_BREAKING_SPACE, TextBoundaryData::kLineNbsp),
  281.         SpecialMapping(TextBoundaryData::FULLWIDTH_EXCLAMATION_MARK, TextBoundaryData::kLinePostJwrd),
  282.         SpecialMapping(TextBoundaryData::FULLWIDTH_FULL_STOP, TextBoundaryData::kLinePostJwrd),
  283.         SpecialMapping(TextBoundaryData::FULLWIDTH_QUESTION_MARK, TextBoundaryData::kLinePostJwrd),
  284.         SpecialMapping(TextBoundaryData::END_OF_STRING, TextBoundaryData::kLineEOS)
  285. };
  286.  
  287. const int32_t TextBoundaryData::kLineExceptionChar_length =
  288.     sizeof(TextBoundaryData::kLineExceptionChar)/sizeof(TextBoundaryData::kLineExceptionChar[0]);
  289.  
  290. const bool_t TextBoundaryData::kLineExceptionFlags[] = {
  291.         FALSE,          // kNonCharacter            = 0,
  292.         FALSE,          // kUppercaseLetter         = 1,
  293.         FALSE,          // kLowercaseLetter         = 2,
  294.         FALSE,          // kTitlecaseLetter         = 3,
  295.         TRUE,           // kModifierLetter          = 4,
  296.         TRUE,           // kOtherLetter             = 5,
  297.         TRUE,           // kNonSpacingMark          = 6,
  298.         FALSE,          // kEnclosingMark           = 7,
  299.         FALSE,          // kCombiningSpacingMark    = 8,
  300.         FALSE,          // kDecimalNumber           = 9,
  301.         FALSE,          // kLetterNumber            = 10,
  302.         FALSE,          // kOtherNumber             = 11,
  303.         TRUE,           // kSpaceSeparator          = 12,
  304.         TRUE,           // kLineSeparator           = 13,
  305.         TRUE,           // kParagraphSeparator      = 14,
  306.         TRUE,           // kControlCharacter        = 15,
  307.         TRUE,           // kFormatCharacter         = 16,
  308.         FALSE,          // kPrivateUseCharacter     = 17,
  309.         FALSE,          // kSurrogate               = 18,
  310.         TRUE,           // kDashPunctuation         = 19,
  311.         FALSE,          // kOpenPunctuation         = 20,
  312.         FALSE,          // kClosePunctuation        = 21,
  313.         FALSE,          // kConnectorPunctuation    = 22,
  314.         TRUE,           // kOtherPunctuation        = 23,
  315.         FALSE,          // kMathSymbol              = 24,
  316.         TRUE,           // kCurrencySymbol          = 25,
  317.         FALSE,          // kModifierSymbol          = 26,
  318.         TRUE,           // kOtherSymbol             = 27
  319.         FALSE           // UNDEFINED                = 28,
  320.     };
  321.  
  322. TextBoundaryData::Type TextBoundaryData::kLineAsciiValues[] = {
  323.  
  324.         //  null            soh             stx             etx             eot             enq             ask             bell
  325.             kLineBlank,     kLineBlank,     kLineBlank,     kLineBreak,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,
  326.         //  bs              ht              lf              vt              ff              cr              so              si
  327.             kLineBlank,     kLineBreak,     kLineBreak,     kLineBreak,     kLineBreak,     kLineCR,        kLineBlank,     kLineBlank,
  328.         //  dle             dc1             dc2             dc3             dc4             nak             syn             etb
  329.             kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,
  330.         //  can             em              sub             esc             fs              gs              rs              us
  331.             kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,
  332.         //  sp              !               "               #               $               %               &               '
  333.             kLineBlank,     kLinePostJwrd,  kLineNonBlank,  kLineNonBlank,  kLineCurrency,  kLinePostJwrd,  kLineNonBlank,  kLineNonBlank,
  334.         //  (               )               *               +               ,               -               .               /
  335.             kLinePreJwrd,   kLinePostJwrd,  kLineNonBlank,  kLineNonBlank,  kLineNumPunct,  kLineOp,        kLineNumPunct,  kLineNonBlank,
  336.         //  0               1               2               3               4               5               6               7
  337.             kLineDigit,     kLineDigit,     kLineDigit,     kLineDigit,     kLineDigit,     kLineDigit,     kLineDigit,     kLineDigit,
  338.         //  8               9               :               ;               <               =               >               ?
  339.             kLineDigit,     kLineDigit,     kLinePostJwrd,  kLinePostJwrd,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,   kLinePostJwrd,
  340.         //  @               A               B               C               D               E               F               G
  341.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  342.         //  H               I               J               K               L               M               N               O
  343.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  344.         //  P               Q               R               S               T               U               V               W
  345.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  346.         //  X               Y               Z               [               \               ]               ^               _
  347.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLinePreJwrd,   kLineNonBlank,  kLinePostJwrd,  kLineNonBlank,  kLineNonBlank,
  348.         //  `               a               b               c               d               e               f               g
  349.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  350.         //  h               i               j               k               l               m               n               o
  351.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  352.         //  p               q               r               s               t               u               v               w
  353.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  354.         //  x               y               z               {               |               }               ~               del
  355.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLinePreJwrd,   kLineNonBlank,  kLinePostJwrd,  kLineNonBlank,  kLineBlank,
  356.         //  ctrl            ctrl            ctrl            ctrl            ctrl            ctrl            ctrl            ctrl
  357.             kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,
  358.         //  ctrl            ctrl            ctrl            ctrl            ctrl            ctrl            ctrl            ctrl
  359.             kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,
  360.         //  ctrl            ctrl            ctrl            ctrl            ctrl            ctrl            ctrl            ctrl
  361.             kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,
  362.         //  ctrl            ctrl            ctrl            ctrl            ctrl            ctrl            ctrl            ctrl
  363.             kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,     kLineBlank,
  364.         //  kLineNbsp       inv-!           cents           pounds          currency        yen             broken-bar      section
  365.             kLineNbsp,      kLineNonBlank,  kLinePostJwrd,  kLineCurrency,  kLineCurrency,  kLineCurrency,  kLineNonBlank,  kLineNonBlank,
  366.         //  umlaut          copyright       super-a         gui-left        not             soft-hyph       registered      macron
  367.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLinePreJwrd,   kLineNonBlank,  kLineOp,        kLineNonBlank,  kLineNonBlank,
  368.         //  degree          +/-             super-2         super-3         acute           micro           paragraph       bullet
  369.             kLinePostJwrd,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  370.         //  cedilla         super-1         super-o         gui-right       1/4             1/2             3/4             inv-?
  371.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLinePostJwrd,  kLineDigit,     kLineDigit,     kLineDigit,     kLineNonBlank,
  372.         //  A-grave         A-acute         A-hat           A-tilde         A-umlaut        A-ring          AE              C-cedilla
  373.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  374.         //  E-grave         E-acute         E-hat           E-umlaut        I-grave         I-acute         I-hat           I-umlaut
  375.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  376.         //  Edh             N-tilde         O-grave         O-acute         O-hat           O-tilde         O-umlaut        times
  377.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  378.         //  O=slash         U-grave         U-acute         U-hat           U-umlaut        Y-acute         Thorn           ess-zed
  379.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  380.         //  a-grave         a-acute         a-hat           a-tilde         a-umlaut        a-ring          ae              c-cedilla
  381.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  382.         //  e-grave         e-acute         e-hat           e-umlaut        i-grave         i-acute         i-hat           i-umlaut
  383.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  384.         //  edh             n-tilde         o-grave         o-acute         o-hat           o-tilde         o-umlaut        over
  385.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,
  386.         //  o-slash         u-grave         u-acute         u-hat           u-umlaut        y-acute         thorn           y-umlaut
  387.             kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank,  kLineNonBlank
  388.     };
  389.  
  390.  
  391. UnicodeClassMapping* TextBoundaryData::kLineMap =
  392.     new UnicodeClassMapping(kLineRawMapping, kLineRawMapping_length, 
  393.                             kLineExceptionChar, kLineExceptionChar_length,
  394.                             kLineExceptionFlags,
  395.                             kLineAsciiValues );
  396.  
  397. /**
  398.  * This is the single instance of TextBoundaryData containing line
  399.  * break data.
  400.  */
  401. const TextBoundaryData TextBoundaryData::kLineBreakData(TextBoundaryData::kLineForward,
  402.                                                         TextBoundaryData::kLineBackward,
  403.                                                         TextBoundaryData::kLineMap);
  404.  
  405. //eof
  406.