home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / SORTKEY.H < prev    next >
Text File  |  1997-07-05  |  11KB  |  281 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. #ifndef SORTKEY_H_
  4. #define SORTKEY_H_
  5.  
  6. /**************************************************************************
  7. * @(#)sortkey.h
  8. * @(#)      This file contains examples of two sort order tables:
  9. * @(#)            CaseMatch & CaseIgnore
  10. * @(#)      These tables are used for sorting, comparing and case converting
  11. * @(#)      using non-ASCII charactersets
  12. *
  13. *  Each table containes 256 elements. The sort value of a charater is
  14. *  defined as the value in the characters position in the table.
  15. *
  16. *  EXAMPLE:
  17. *     The character é is to be sorted as an ordinary e
  18. *     The é has the ASCII value 130 (82h). On position 130 in the
  19. *     table you will find an e.
  20. *
  21. *     -         |130      |140   <- ASCII decimal value
  22. *     -       ÇüéâäàåçêëèïîìÄÅÉ  <- Standard ASCII sort sequence
  23. *            "Cyea{a}ceeeiii[]E  <- Local sort sequence
  24. *
  25. *
  26. *  Please note the C syntax using \ in combination with ' " and \ :
  27. *           \", \', \\
  28. *
  29. *
  30. *=========================================================================
  31. *
  32. *  Danish/Norwegan sort order:
  33. *     special mapping:
  34. *         ü      =   y        Ü     =  Y
  35. *         w      =   v        W     =  V
  36. *         æ ä    =   {        Æ Ä   =  [
  37. *         ¢ ö    =   |        ¥ ö   =  \\
  38. *         å      =   }        Å     =  ]
  39. *
  40. *     diacritical charaters to ordinary characters:
  41. *         é è ê ë  = e
  42. *         á à â    = a   (note ä = æ sorted as { )
  43. *         í ì î ï  = i
  44. *         ó ò ô    = o   (note ö = ¢ sorted as } )
  45. *         ú ù û    = u   (note ü = y)
  46. *
  47. *  Sorting cent and yen characters might sound strange to you, but the
  48. *  Norwegan and danish character set contains tree extra characters:
  49. *
  50. *     æ Æ  [ε:] a combination of a & e
  51. *     ¢ ¥  [φ┴:] (o slash like φ ) a combination of o & e
  52. *     å Å  [å:] a sort of double a
  53. *
  54. *  These characters follow A-Z in order Æ, ¥, Å and a-z in order æ, ¢, å
  55. *  I swedish the characters ä & ö are used instead of æ and ¢. Their sort
  56. *  order is A-Z, Å, Ä, Ö
  57. *
  58. *
  59. *
  60. *=========================================================================
  61. *
  62. * The following examples of other sort orders are picked up from:
  63. *        TDE, the Thomson-Davis Editor
  64. *                 Version 2.10
  65. *              November 13, 1992
  66. *                 Frank Davis
  67. *
  68. * Frank Davis claimes, that Pierre Jelenc is the creator of these examples.
  69. *
  70. *
  71. * Standard ASCII sort sequence:
  72.  
  73. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_'abcdefghijkl
  74. mnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕
  75. ╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ 
  76.  
  77. *
  78. *  English/French/Esperanto sort order:  map accents to unaccented
  79. *
  80. ***************************     ******
  81. * CaseMatch
  82.  
  83. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_'abcdefghijkl
  84. mnopqrstuvwxyz{|}~CueaaaaceeeiiiAAEaAooouuyOU¢£¥₧ƒaiounN
  85.  
  86. *
  87. * CaseIgnore
  88.  
  89. !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_'abcdefghijkl
  90. mnopqrstuvwxyz{|}~cueaaaaceeeiiiaaeaaooouuyou¢£¥₧ƒaiounn
  91.  
  92. *
  93. *
  94. *  Swedish/Finnish sort order:  map ü = y, w = v, and the accents
  95. *
  96. * CaseMatch
  97.  
  98. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVXYZ[\]^_'abcdefghijkl
  99. mnopqrstuvvxyz{|}~CyeaaaaceeeiiiAAEaAooouuyOY¢£¥₧ƒaiounN
  100.  
  101. *
  102. * CaseIgnore
  103.  
  104. !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvvxyz[\]^_'abcdefghijkl
  105. mnopqrstuvvxyz{|}~cyeaaaaceeeiiiaaeaaooouuyoy¢£¥₧ƒaiounn
  106.  
  107. *
  108. *
  109. *  German sort order:  slide everything down for ä, ö, ü, ß, and the accents
  110. *  see asterisks for changes ====>                                   *
  111. *     *           *             *   * *          *  *         *     *    **
  112. *
  113. * Standard ASCII sort sequence:
  114.  
  115. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_'abcdefghijkl
  116. mnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕
  117. ╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ 
  118.  
  119. *
  120. * CaseMatch
  121.  
  122. !"#$%&'()*+,-./0123456789:;<=>?@ACDEFGHIJKLMNOPRSTUVWYZ[\]^_'abcdfghijklmnop
  123. qrsuvwxz{}~ÇüéâäàåD|ideddgiiimmmBAFdAsts{{ÇQX£¥₧ƒádms{rOº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣
  124. ║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßy
  125.  
  126. *  see asterisks for changes ====>                                   *
  127. *     *           *             *   * *          *  *         *     *    **
  128. *
  129. * CaseIgnore
  130.  
  131. !"#$%&'()*+,-./0123456789:;<=>?@dfghijklmnopqrsuvwxz{}~Çü^_'abcdfghijklmnop
  132. qrsuvwxz{}~Çüéâäàåg|ideddgiiimmmedidAsts{{Çt|£¥₧ƒádms{rrº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣
  133. ║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßy
  134.  
  135. *  see asterisks for changes ====>                                   *
  136. *     *           *             *   * *          *  *         *     *    **
  137. *
  138. *
  139. ******************************************************************************
  140. *@(#)1993-06-10/Erik Bachmann
  141. ******************************************************************************/
  142.  
  143. const unsigned char *CaseMatch  =
  144. /*
  145. Standard ASCII sort sequence:
  146. -        |00                 |05                 |10                 |15
  147. -        \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F
  148. */      "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"
  149. /*
  150. -        |16             |20                 |25                 |30
  151. -        \x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F
  152. */      "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"
  153.  
  154. /*
  155. -       |32       |40       |50       |60       |70
  156. -        !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO
  157. */     " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO"
  158. /*
  159. -       |80       |90         |100      |110      |120
  160. -       PQRSTUVWXYZ[\\]^_\'abcdefghijklmnopqrstuvwxyz{|}~
  161. */     "PQRSTUVVXYZ[\\]^_\'abcdefghijklmnopqrstuvvxyz{|}~"
  162. /*
  163. -         |130      |140      |150      |160      |170
  164. -       ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿ ÖÜ¢£ ¥₧ƒáíóúñѪº¿⌐¬½¼¡«»
  165. */     "Cyea{a}ceeeiii[]E{[o|ouuy\\Y|£\\₧ƒaiounNªº¿⌐¬½¼¡«»"
  166. /*
  167. -           |180      |190      |200      |210      |220
  168. -       ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀
  169. */     "░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀"
  170. /*
  171. -             |230      |240      |250
  172. -       αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xFF
  173. */     "αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xFF";
  174.  
  175.  
  176. /*====================================================================*/
  177.  
  178. const unsigned char *CaseIgnore =
  179. /*
  180. Standard ASCII sort sequence:
  181. -        |00                 |05                 |10                 |15
  182. -        \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F
  183. */      "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"
  184. /*
  185. -        |16             |20                 |25                 |30
  186. -        \x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F
  187. */      "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"
  188.  
  189. /*
  190. -       |32       |40       |50       |60       |70
  191. -        !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO
  192. */     " !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmno"
  193. /*
  194. -       |80       |90         |100      |110      |120
  195. -       PQRSTUVWXYZ[\\]^_\'abcdefghijklmnopqrstuvwxyz{|}~
  196. */     "pqrstuvvxyz[\\]^_\'abcdefghijklmnopqrstuvvxyz{|}~"
  197. /*
  198. -         |130      |140      |150      |160      |170
  199. -       ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿ ÖÜ¢£ ¥₧ƒáíóúñѪº¿⌐¬½¼¡«»
  200. */     "cyea{a}ceeeiii{}e{{o|ouuy|y|£|₧ƒaiounnªº¿⌐¬½¼¡«»"
  201. /*
  202. -           |180      |190      |200      |210      |220
  203. -       ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀
  204. */     "░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀"
  205. /*
  206. -             |230      |240      |250
  207. -       αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xFF
  208. */     "αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xFF";
  209.  
  210. /*====================================================================*/
  211.  
  212. const char *CaseUpper  =
  213. /*
  214. Standard ASCII sort sequence:
  215. -        |00                 |05                 |10                 |15
  216. -        \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F
  217. */      "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"
  218. /*
  219. -        |16             |20                 |25                 |30
  220. -        \x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F
  221. */      "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"
  222.  
  223. /*
  224. -       |32       |40       |50       |60       |70
  225. -        !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO
  226. */     " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO"
  227. /*
  228. -       |80       |90         |100      |110      |120
  229. -       PQRSTUVWXYZ[\\]^_\'abcdefghijklmnopqrstuvwxyz{|}~
  230. */     "PQRSTUVWXYZ[\\]^_\'ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~"
  231. /*
  232. -         |130      |140      |150    |160      |170
  233. -       ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»
  234. */     "ÇÜÉ╥Ä╖ÅÇ╥╙╘╪╫▐ÄÅÉÆÆΓÖπΩδYÖÜ¥£¥₧ƒ╡╓αΘÑѪº¿⌐¬½¼¡«»"
  235. /*
  236. -           |180      |190      |200      |210      |220
  237. -       ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀
  238. */     "░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╟╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀"
  239. /*
  240. -             |230      |240      |250
  241. -       αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xFF
  242. */     "αßΓπσσµτΦΘΩδφφε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xFF";
  243.  
  244.  
  245. /*====================================================================*/
  246.  
  247.  
  248. const char *CaseLower  =
  249. /*
  250. Standard ASCII sort sequence:
  251. -        |00                 |05                 |10                 |15
  252. -        \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F
  253. */      "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"
  254. /*
  255. -        |16             |20                 |25                 |30
  256. -        \x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F
  257. */      "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"
  258.  
  259. /*
  260. -       |32       |40       |50       |60       |70
  261. -        !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO
  262. */     " !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmno"
  263. /*
  264. -       |80       |90         |100      |110      |120
  265. -       PQRSTUVWXYZ[\\]^_\'abcdefghijklmnopqrstuvwxyz{|}~
  266. */     "pqrstuvwxyz[\\]^_\'abcdefghijklmnopqrstuvwxyz{|}~"
  267. /*
  268. -         |130      |140      |150    |160      |170
  269. -       ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»
  270. */     "çüéâäàåçêëèïîìäåéææôöòûùÿöü¢£¢₧ƒáíóúññªº¿⌐¬½¼¡«»"
  271. /*
  272. -           |180      |190      |200      |210      |220
  273. -       ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀
  274. */     "░▒▓│┤áâà╕╣║╗╝╜╛┐└┴┬├─┼╞╞╚╔╩╦╠═╬╧╨╤êëè╒íîï┘┌█▄▌ì▀"
  275. /*
  276. -             |230      |240      |250
  277. -       αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xFF
  278. */     "óßôòΣΣµΦΦúûù∞∞ε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xFF";
  279.  
  280. #endif /*  SORTKEY_H_ */
  281.