home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Programming / ICU / src / icu / source / i18n / wdbkdat.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1999-08-16  |  25.5 KB  |  435 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 WDBKDAT.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. *****************************************************************************************
  28. */
  29.  
  30. // *****************************************************************************
  31. // This file was generated from the java source file WordBreakData.java
  32. // *****************************************************************************
  33.  
  34. #include "txtbdat.h"
  35. #include "wdbktbl.h"
  36. #include "unicdcm.h"
  37.  
  38. // *****************************************************************************
  39. // class WordBreakData
  40. // This class contains the following transition state data for word break.
  41. // For more detailed explanation on the boundary break state machine, please
  42. // see the internal documentation of wdbktbl.cpp.
  43. // *****************************************************************************
  44.  
  45. // The forward transition states of word boundary data.
  46. TextBoundaryData::Node TextBoundaryData::kWordForwardData[] = {
  47.         // brk          let             num             mLe             mLN
  48.         // prN          poN             mNu             pMN             blk
  49.         // lf           kat             hir             kan             dia
  50.         // cr           nsm             EOS
  51.  
  52.         // 0
  53.         kStop,          kStop,          kStop,          kStop,          kStop,
  54.         kStop,          kStop,          kStop,          kStop,          kStop,
  55.         kStop,          kStop,          kStop,          kStop,          kStop,
  56.         kStop,          kStop,          kStop,
  57.  
  58.         // 1
  59.         kSI_14,         kSI_2,          kSI_3,          kSI_14,         kSI_14,
  60.         kSI_5,          kSI_14,         kSI_14,         kSI_5,          kSI_6,
  61.         kSI_4,          kSI_10,         kSI_11,         kSI_12,         kSI_9,
  62.         kSI_13,         1,              kSI_Stop,
  63.  
  64.         // 2
  65.         kSI_Stop,       kSI_2,          kSI_3,          kSI_7,          kSI_7,
  66.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_7,          kSI_Stop,
  67.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  68.         kSI_Stop,       2,              kSI_Stop,
  69.  
  70.         // 3
  71.         kSI_Stop,       kSI_2,          kSI_3,          kSI_Stop,       kSI_8,
  72.         kSI_Stop,       kSI_14,         kSI_8,          kSI_8,          kSI_Stop,
  73.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  74.         kSI_Stop,       3,              kSI_Stop,
  75.  
  76.         // 4
  77.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  78.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  79.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  80.         kSI_Stop,       kSI_Stop,       kSI_Stop,
  81.  
  82.         // 5
  83.         kSI_Stop,       kSI_Stop,       kSI_3,          kSI_Stop,       kSI_Stop,
  84.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  85.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  86.         kSI_Stop,       5,              kSI_Stop,
  87.  
  88.         // 6
  89.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  90.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_6,
  91.         kSI_4,          kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  92.         kSI_13,         6,              kSI_Stop,
  93.  
  94.         // 7
  95.         kStop,          kSI_2,          kStop,          kStop,          kStop,
  96.         kStop,          kStop,          kStop,          kStop,          kStop,
  97.         kStop,          kStop,          kStop,          kStop,          kStop,
  98.         kStop,          7,              kStop,
  99.  
  100.         // 8
  101.         kStop,          kStop,          kSI_3,          kStop,          kStop,
  102.         kStop,          kStop,          kStop,          kStop,          kStop,
  103.         kStop,          kStop,          kStop,          kStop,          kStop,
  104.         kStop,          8,              kStop,
  105.  
  106.         // 9
  107.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  108.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  109.         kSI_Stop,       kSI_10,         kSI_11,         kSI_Stop,       kSI_9,
  110.         kSI_Stop,       9,              kSI_Stop,
  111.  
  112.         // 10
  113.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  114.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  115.         kSI_Stop,       kSI_10,         kSI_Stop,       kSI_Stop,       kSI_10,
  116.         kSI_Stop,       10,             kSI_Stop,
  117.  
  118.         // 11
  119.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  120.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  121.         kSI_Stop,       kSI_Stop,       kSI_11,         kSI_Stop,       kSI_11,
  122.         kSI_Stop,       11,             kSI_Stop,
  123.  
  124.         // 12
  125.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  126.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  127.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_12,         kSI_Stop,
  128.         kSI_Stop,       12,             kSI_Stop,
  129.  
  130.         // 13
  131.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  132.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  133.         kSI_4,          kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  134.         kSI_Stop,       kSI_Stop,       kSI_Stop,
  135.  
  136.         // 14
  137.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  138.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  139.         kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,       kSI_Stop,
  140.         kSI_Stop,       14,             kSI_Stop
  141. };
  142.  
  143. const int32_t TextBoundaryData::kWordForwardData_length =
  144.     sizeof(TextBoundaryData::kWordForwardData) / sizeof(TextBoundaryData::kWordForwardData[0]);
  145.  
  146. WordBreakTable* TextBoundaryData::kWordForward = new WordBreakTable(kWordCol_count, kWordForwardData, kWordForwardData_length);
  147.  
  148. // The forward transition states of word boundary data.
  149. TextBoundaryData::Node TextBoundaryData::kWordBackwardData[] = {
  150.         // brk          let             num             mLe             mLN
  151.         // prN          poN             mNu             pMN             blk
  152.         // lf           kat             hir             kan             dia
  153.         // cr           nsm             EOS
  154.  
  155.         // 0
  156.         kStop,          kStop,          kStop,          kStop,          kStop,
  157.         kStop,          kStop,          kStop,          kStop,          kStop,
  158.         kStop,          kStop,          kStop,          kStop,          kStop,
  159.         kStop,          kStop,          kStop,
  160.  
  161.         // 1
  162.         kSI_6,          kSI_2,          kSI_3,          kSI_4,          kSI_5,
  163.         kSI_6,          kSI_7,          kSI_7,          kSI_5,          kSI_8,
  164.         kSI_8,          kSI_9,          kSI_10,         kSI_12,         kSI_11,
  165.         kSI_8,          1,              kStop,
  166.  
  167.         // 2
  168.         kStop,          kSI_2,          kSI_3,          4,              4,
  169.         kStop,          kStop,          kStop,          4,              kStop,
  170.         kStop,          kStop,          kStop,          kStop,          kStop,
  171.         kStop,          2,              kStop,
  172.  
  173.         // 3
  174.         kStop,          kSI_2,          kSI_3,          kStop,          7,
  175.         kSI_Stop,       kStop,          7,              kSI_7,          kStop,
  176.         kStop,          kStop,          kStop,          kStop,          kStop,
  177.         kStop,          3,              kStop,
  178.  
  179.         // 4
  180.         kStop,          kSI_2,          kStop,          kStop,          kStop,
  181.         kStop,          kStop,          kStop,          kStop,          kStop,
  182.         kStop,          kStop,          kStop,          kStop,          kStop,
  183.         kStop,          4,              kStop,
  184.  
  185.         // 5
  186.         kStop,          kSI_2,          kSI_3,          kStop,          kStop,
  187.         kStop,          kStop,          kStop,          kStop,          kStop,
  188.         kStop,          kStop,          kStop,          kStop,          kStop,
  189.         kStop,          5,              kStop,
  190.  
  191.         // 6
  192.         kStop,          kStop,          kStop,          kStop,          kStop,
  193.         kStop,          kStop,          kStop,          kStop,          kStop,
  194.         kStop,          kStop,          kStop,          kStop,          kStop,
  195.         kStop,          6,              kStop,
  196.  
  197.         // 7
  198.         kStop,          kStop,          kSI_3,          kStop,          kStop,
  199.         kStop,          kStop,          kStop,          kStop,          kStop,
  200.         kStop,          kStop,          kStop,          kStop,          kStop,
  201.         kStop,          7,              kStop,
  202.  
  203.         // 8
  204.         kStop,          kStop,          kStop,          kStop,          kStop,
  205.         kStop,          kStop,          kStop,          kStop,          kSI_8,
  206.         kSI_8,          kStop,          kStop,          kStop,          kStop,
  207.         kSI_8,          8,              kStop,
  208.  
  209.         // 9
  210.         kStop,          kStop,          kStop,          kStop,          kStop,
  211.         kStop,          kStop,          kStop,          kStop,          kStop,
  212.         kStop,          kSI_9,          kStop,          kStop,          9,
  213.         kStop,          9,              kStop,
  214.  
  215.         // 10
  216.         kStop,          kStop,          kStop,          kStop,          kStop,
  217.         kStop,          kStop,          kStop,          kStop,          kStop,
  218.         kStop,          kStop,          kSI_10,         kStop,          10,
  219.         kStop,          10,             kStop,
  220.  
  221.         // 11
  222.         kStop,          kStop,          kStop,          kStop,          kStop,
  223.         kStop,          kStop,          kStop,          kStop,          kStop,
  224.         kStop,          kSI_9,          kSI_10,         kStop,          kSI_11,
  225.         kStop,          11,             kStop,
  226.  
  227.         // 12
  228.         kStop,          kStop,          kStop,          kStop,          kStop,
  229.         kStop,          kStop,          kStop,          kStop,          kStop,
  230.         kStop,          kStop,          kStop,          kSI_12,         kStop,
  231.         kStop,          12,             kStop
  232. };
  233.  
  234. const int32_t TextBoundaryData::kWordBackwardData_length =
  235.     sizeof(TextBoundaryData::kWordBackwardData) / sizeof(TextBoundaryData::kWordBackwardData[0]);
  236.  
  237. WordBreakTable* TextBoundaryData::kWordBackward = new WordBreakTable(kWordCol_count, kWordBackwardData, kWordBackwardData_length);
  238.  
  239. // The word type mapping of the break table.
  240. TextBoundaryData::Type TextBoundaryData::kWordRawMapping[] = {
  241.     // Re-coded to match Unicode 2 types [LIU]
  242.     kBreak,     // UNASSIGNED               = 0,
  243.     kLetter,    // UPPERCASE_LETTER         = 1,
  244.     kLetter,    // LOWERCASE_LETTER         = 2,
  245.     kLetter,    // TITLECASE_LETTER         = 3,
  246.     kLetter,    // MODIFIER_LETTER          = 4,
  247.     kLetter,    // OTHER_LETTER             = 5,
  248.     kNsm,       // NON_SPACING_MARK         = 6,
  249.     kNsm,       // ENCLOSING_MARK           = 7,
  250.     kBreak,     // COMBINING_SPACING_MARK   = 8,
  251.     kNumber,    // DECIMAL_DIGIT_NUMBER     = 9,
  252.     kLetter,    // LETTER_NUMBER            = 10,
  253.     kNumber,    // OTHER_NUMBER             = 11,
  254.     kBlank,     // SPACE_SEPARATOR          = 12,
  255.     kBreak,     // LINE_SEPARATOR           = 13,
  256.     kBreak,     // PARAGRAPH_SEPARATOR      = 14,
  257.     kBreak,     // CONTROL                  = 15,
  258.     kBreak,     // FORMAT                   = 16,
  259.     kBreak,     // PRIVATE_USE              = 17,
  260.     kBreak,     // SURROGATE                = 18,
  261.     kMidLetter, // DASH_PUNCTUATION       = 19,
  262.     kBreak,     // START_PUNCTUATION        = 20,
  263.     kBreak,     // END_PUNCTUATION          = 21,
  264.     kBreak,     // CONNECTOR_PUNCTUATION    = 22,
  265.     kBreak,     // OTHER_PUNCTUATION        = 23,
  266.     kBreak,     // MATH_SYMBOL              = 24,
  267.     kPreNum,    // CURRENCY_SYMBOL          = 25,
  268.     kBreak,     // MODIFIER_SYMBOL          = 26,
  269.     kBreak,     // OTHER_SYMBOL             = 27,
  270.     kBreak      // UNDEFINED                = 28
  271. };
  272.  
  273. const int32_t TextBoundaryData::kWordRawMapping_length =
  274.     sizeof(TextBoundaryData::kWordRawMapping) / sizeof(TextBoundaryData::kWordRawMapping[0]);
  275.  
  276. // The exceptions of the word break data.
  277. SpecialMapping TextBoundaryData::kWordExceptionChar[] = {
  278.         //note: the ranges in this table must be sorted in ascending order
  279.         //as required by the UnicodeClassMapping class.
  280.     SpecialMapping(TextBoundaryData::ASCII_HORIZONTAL_TABULATION, TextBoundaryData::kBlank),
  281.     SpecialMapping(TextBoundaryData::ASCII_LINEFEED, TextBoundaryData::kLF),
  282.     SpecialMapping(TextBoundaryData::ASCII_FORM_FEED, TextBoundaryData::kLF),
  283.     SpecialMapping(TextBoundaryData::ASCII_CARRIAGE_RETURN, TextBoundaryData::kCR),
  284.     SpecialMapping(TextBoundaryData::ASCII_QUOTATION_MARK, TextBoundaryData::kMidLetNum),
  285.     SpecialMapping(TextBoundaryData::ASCII_NUMBER_SIGN, TextBoundaryData::kPreNum),
  286.     SpecialMapping(TextBoundaryData::ASCII_PERCENT, TextBoundaryData::kPostNum),
  287.     SpecialMapping(TextBoundaryData::ASCII_AMPERSAND, TextBoundaryData::kPostNum),
  288.     SpecialMapping(TextBoundaryData::ASCII_APOSTROPHE, TextBoundaryData::kMidLetNum),
  289.     SpecialMapping(TextBoundaryData::ASCII_COMMA, TextBoundaryData::kMidNum),
  290.     SpecialMapping(TextBoundaryData::ASCII_FULL_STOP, TextBoundaryData::kPreMidNum),
  291.     SpecialMapping(TextBoundaryData::ASCII_CENT_SIGN, TextBoundaryData::kPostNum),
  292.     SpecialMapping(TextBoundaryData::LATIN1_SOFTHYPHEN, TextBoundaryData::kMidLetter),
  293.     SpecialMapping(TextBoundaryData::ARABIC_PERCENT_SIGN, TextBoundaryData::kPostNum),
  294.     SpecialMapping(TextBoundaryData::ARABIC_DECIMAL_SEPARATOR, TextBoundaryData::kMidNum),
  295.     SpecialMapping(TextBoundaryData::PUNCTUATION_HYPHENATION_POINT, TextBoundaryData::kMidLetter),
  296.     SpecialMapping(TextBoundaryData::PUNCTUATION_LINE_SEPARATOR,
  297.                    TextBoundaryData::PUNCTUATION_PARAGRAPH_SEPARATOR, TextBoundaryData::kLF),
  298.     SpecialMapping(TextBoundaryData::PER_MILLE_SIGN, TextBoundaryData::kPostNum),
  299.     SpecialMapping(TextBoundaryData::PER_TEN_THOUSAND_SIGN, TextBoundaryData::kPostNum),
  300.     SpecialMapping(TextBoundaryData::IDEOGRAPHIC_ITERATION_MARK, TextBoundaryData::kKanji),
  301.     SpecialMapping(TextBoundaryData::HIRAGANA_LETTER_SMALL_A, 
  302.                    TextBoundaryData::HIRAGANA_LETTER_VU, TextBoundaryData::kHira),
  303.     SpecialMapping(TextBoundaryData::COMBINING_KATAKANA_HIRAGANA_VOICED_SOUND_MARK,
  304.                    TextBoundaryData::HIRAGANA_SEMIVOICED_SOUND_MARK, TextBoundaryData::kDiacrit),
  305.     SpecialMapping(TextBoundaryData::KATAKANA_LETTER_SMALL_A,
  306.                    TextBoundaryData::KATAKANA_LETTER_SMALL_KE, TextBoundaryData::kKata),
  307.     SpecialMapping(TextBoundaryData::UNICODE_LOW_BOUND_HAN,
  308.                    TextBoundaryData::UNICODE_HIGH_BOUND_HAN, TextBoundaryData::kKanji),
  309.     SpecialMapping(TextBoundaryData::HANGUL_SYL_LOW, 
  310.                    TextBoundaryData::HANGUL_SYL_HIGH, TextBoundaryData::kLetter),
  311.     SpecialMapping(TextBoundaryData::CJK_COMPATIBILITY_F900,
  312.                    TextBoundaryData::CJK_COMPATIBILITY_FA2D, TextBoundaryData::kKanji),
  313.     SpecialMapping(TextBoundaryData::END_OF_STRING, TextBoundaryData::kwEOS)
  314. };
  315.  
  316. const bool_t TextBoundaryData::kWordExceptionFlags[] = {
  317.     FALSE,          // kNonCharacter            = 0,
  318.     FALSE,          // kUppercaseLetter         = 1,
  319.     FALSE,          // kLowercaseLetter         = 2,
  320.     FALSE,          // kTitlecaseLetter         = 3,
  321.     TRUE,           // kModifierLetter          = 4,
  322.     TRUE,           // kOtherLetter             = 5,
  323.     TRUE,           // kNonSpacingMark          = 6,
  324.     FALSE,          // kEnclosingMark           = 7,
  325.     FALSE,          // kCombiningSpacingMark    = 8,
  326.     FALSE,          // kDecimalNumber           = 9,
  327.     FALSE,          // kLetterNumber            = 10,
  328.     FALSE,          // kOtherNumber             = 11,
  329.     FALSE,          // kSpaceSeparator          = 12,
  330.     TRUE,           // kLineSeparator           = 13,
  331.     TRUE,           // kParagraphSeparator      = 14,
  332.     TRUE,           // kControlCharacter        = 15,
  333.     FALSE,          // kFormatCharacter         = 16,
  334.     FALSE,          // kPrivateUseCharacter     = 17,
  335.     FALSE,          // kSurrogate               = 18,
  336.     TRUE,           // kDashPunctuation         = 19,
  337.     FALSE,          // kOpenPunctuation         = 20,
  338.     FALSE,          // kClosePunctuation        = 21,
  339.     FALSE,          // kConnectorPunctuation    = 22,
  340.     TRUE,           // kOtherPunctuation        = 23,
  341.     FALSE,          // kMathSymbol              = 24,
  342.     TRUE,           // kCurrencySymbol          = 25,
  343.     FALSE,          // kModifierSymbol          = 26,
  344.     FALSE,          // kOtherSymbol             = 27
  345.     FALSE           // UNDEFINED                = 28,
  346. };
  347.  
  348. const int32_t TextBoundaryData::kWordExceptionChar_length =
  349.     sizeof(TextBoundaryData::kWordExceptionChar) / sizeof(TextBoundaryData::kWordExceptionChar[0]);
  350.  
  351. TextBoundaryData::Type TextBoundaryData::kWordAsciiValues[] = {
  352.       
  353.         //  null        soh         stx         etx         eot         enq         ask         bell
  354.             kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,
  355.         //  bs          ht          kLF         vt          ff          cr          so          si
  356.             kBreak,     kBlank,     kLF,        kBreak,     kLF,        kCR,        kBreak,     kBreak,
  357.         //  dle         dc1         dc2         dc3         dc4         nak         syn         etb
  358.             kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,
  359.         //  can         em          sub         esc         fs          gs          rs          us
  360.             kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,
  361.         //  sp          !           "           #           $           %           &           '
  362.             kBlank,     kBreak,     kMidLetNum, kPreNum,    kPreNum,    kPostNum,   kPostNum,   kMidLetNum,
  363.         //  (           )           *           +           ,           -           .           /
  364.             kBreak,     kBreak,     kBreak,     kBreak,     kMidNum,    kMidLetter, kPreMidNum, kBreak,
  365.         //  0           1           2           3           4           5           6           7
  366.             kNumber,    kNumber,    kNumber,    kNumber,    kNumber,    kNumber,    kNumber,    kNumber,
  367.         //  8           9           :           ;           <           =           >           ?
  368.             kNumber,    kNumber,    kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,
  369.         //  @           A           B           C           D           E           F           G
  370.             kBreak,     kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,
  371.         //  H           I           J           K           L           M           N           O
  372.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,
  373.         //  P           Q           R           S           T           U           V           W
  374.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,
  375.         //  X           Y           Z           [           \           ]           ^           _
  376.             kLetter,    kLetter,    kLetter,    kBreak,     kBreak,     kBreak,     kBreak,     kBreak,
  377.         //  `           a           b           c           d           e           f           g
  378.             kBreak,     kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,
  379.         //  h           i           j           k           l           m           n           o
  380.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,
  381.         //  p           q           r           s           t           u           v           w
  382.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,
  383.         //  x           y           z           {           |           }           ~           del
  384.             kLetter,    kLetter,    kLetter,    kBreak,     kBreak,     kBreak,     kBreak,     kBreak,
  385.         //  ctrl        ctrl        ctrl        ctrl        ctrl        ctrl        ctrl        ctrl
  386.             kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,
  387.         //  ctrl        ctrl        ctrl        ctrl        ctrl        ctrl        ctrl        ctrl
  388.             kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,
  389.         //  ctrl        ctrl        ctrl        ctrl        ctrl        ctrl        ctrl        ctrl
  390.             kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,
  391.         //  ctrl        ctrl        ctrl        ctrl        ctrl        ctrl        ctrl        ctrl
  392.             kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,     kBreak,
  393.         //  nbsp        inv-!       cents       pounds      currency    yen         broken-bar  section
  394.             kBlank,     kBreak,     kPostNum,   kPreNum,    kPreNum,    kPreNum,    kBreak,     kBreak,
  395.         //  umlaut      copyright   super-a     gui-left    not         soft-hyph   registered  macron
  396.             kBreak,     kBreak,     kLetter,    kBreak,     kBreak,     kMidLetter, kBreak,     kBreak,
  397.         //  degree      +/-         super-2     super-3     acute       micro       paragraph   bullet
  398.             kBreak,     kBreak,     kNumber,    kNumber,    kBreak,     kLetter,    kBreak,     kBreak,
  399.         //  cedilla     super-1     super-o     gui-right   1/4         1/2         3/4         inv-?
  400.             kBreak,     kLetter,    kBreak,     kBreak,     kNumber,    kNumber,    kNumber,    kBreak,
  401.         //  A-grave     A-acute     A-hat       A-tilde     A-umlaut    A-ring      AE          C-cedilla
  402.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,
  403.         //  E-grave     E-acute     E-hat       E-umlaut    I-grave     I-acute     I-hat       I-umlaut
  404.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,
  405.         //  Edh         N-tilde     O-grave     O-acute     O-hat       O-tilde     O-umlaut    times
  406.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kBreak,
  407.         //  O-slash     U-grave     U-acute     U-hat       U-umlaut    Y-acute     Thorn       ess-zed
  408.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,
  409.         //  a-grave     a-acute     a-hat       a-tilde     a-umlaut    a-ring      ae          c-cedilla
  410.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,
  411.         //  e-grave     e-acute     e-hat       e-umlaut    i-grave     i-acute     i-hat       i-umlaut
  412.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,
  413.         //  edh         n-tilde     o-grave     o-acute     o-hat       o-tilde     o-umlaut    over
  414.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kBreak,
  415.         //  o-slash     u-grave     u-acute     u-hat       u-umlaut    y-acute     thorn       y-umlaut
  416.             kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter,    kLetter
  417.     };
  418.  
  419.  
  420. UnicodeClassMapping* TextBoundaryData::kWordMap = 
  421.     new UnicodeClassMapping(kWordRawMapping, kWordRawMapping_length, 
  422.                             kWordExceptionChar, kWordExceptionChar_length,
  423.                             kWordExceptionFlags,
  424.                             kWordAsciiValues );
  425.  
  426. /**
  427.  * This is the single instance of TextBoundaryData containing word
  428.  * break data.
  429.  */
  430. const TextBoundaryData TextBoundaryData::kWordBreakData(TextBoundaryData::kWordForward,
  431.                                                         TextBoundaryData::kWordBackward,
  432.                                                         TextBoundaryData::kWordMap);
  433.  
  434. //eof
  435.