Character.st
changeset 19120 7b3e8d741e4c
parent 18805 7e090beaf16a
child 19127 940613fe6659
child 19195 32f423697432
equal deleted inserted replaced
19119:3b1a284174e7 19120:7b3e8d741e4c
     1 "{ Encoding: utf8 }"
       
     2 
       
     3 "
     1 "
     4  COPYRIGHT (c) 1988 by Claus Gittinger
     2  COPYRIGHT (c) 1988 by Claus Gittinger
     5 	      All Rights Reserved
     3 	      All Rights Reserved
     6 
     4 
     7  This software is furnished under a license and may be used
     5  This software is furnished under a license and may be used
   645       or:[ (asciivalue between:123 and:126)
   643       or:[ (asciivalue between:123 and:126)
   646       or:[ (asciivalue between:161 and:191)
   644       or:[ (asciivalue between:161 and:191)
   647       or:[ (asciivalue == 215 )
   645       or:[ (asciivalue == 215 )
   648       or:[ (asciivalue == 247 ) ]]]]]
   646       or:[ (asciivalue == 247 ) ]]]]]
   649 ! !
   647 ! !
   650 
       
   651 
   648 
   652 !Character methodsFor:'accessing'!
   649 !Character methodsFor:'accessing'!
   653 
   650 
   654 codePoint
   651 codePoint
   655     "return the codePoint of myself.
   652     "return the codePoint of myself.
  1497     s := WriteStream on:(String new:6).
  1494     s := WriteStream on:(String new:6).
  1498     s nextPutUtf8:self.
  1495     s nextPutUtf8:self.
  1499     ^ s contents
  1496     ^ s contents
  1500 
  1497 
  1501     "
  1498     "
  1502 	'ä' utf8Encoded
  1499 	'ä' utf8Encoded
  1503     "
  1500     "
  1504 ! !
  1501 ! !
  1505 
  1502 
  1506 !Character methodsFor:'copying'!
  1503 !Character methodsFor:'copying'!
  1507 
  1504 
  2563     RETURN (__MKUCHARACTER(val)) ;
  2560     RETURN (__MKUCHARACTER(val)) ;
  2564 %}
  2561 %}
  2565 
  2562 
  2566     "
  2563     "
  2567      $e asNonDiacritical
  2564      $e asNonDiacritical
  2568      $é asNonDiacritical
  2565      $é asNonDiacritical
  2569      $ä asNonDiacritical
  2566      $ä asNonDiacritical
  2570      $Ã¥ asNonDiacritical
  2567      $å asNonDiacritical
  2571     "
  2568     "
  2572 !
  2569 !
  2573 
  2570 
  2574 isNationalAlphaNumeric
  2571 isNationalAlphaNumeric
  2575     "return true, if the receiver is a letter or digit.
  2572     "return true, if the receiver is a letter or digit.
  2595 !
  2592 !
  2596 
  2593 
  2597 isNationalLetter
  2594 isNationalLetter
  2598     "return true, if the receiver is a letter.
  2595     "return true, if the receiver is a letter.
  2599      CAVEAT:
  2596      CAVEAT:
  2600 	for now, this method is only correct for unicode characters up to u+1d6ff (Unicode3.1).
  2597         for now, this method is only correct for unicode characters up to u+1d6ff (Unicode3.1).
  2601 	(which is more than mozilla does, btw. ;-)"
  2598         (which is more than mozilla does, btw. ;-)"
  2602 
  2599 
  2603 %{  /* NOCONTEXT */
  2600 %{  /* NOCONTEXT */
  2604 
  2601 
  2605     REGISTER INT val;
  2602     REGISTER INT val;
  2606 
  2603 
  2607     /* because used so often, this is open coded, instead of table driven */
  2604     /* because used so often, this is open coded, instead of table driven */
  2608     val = __intVal(__INST(asciivalue));
  2605     val = __intVal(__INST(asciivalue));
  2609     switch (val >> 8) {
  2606     switch (val >> 8) {
  2610 	case 0x00:
  2607         case 0x00:
  2611 	    if ((unsigned INT)(val - 'A') <= ('Z' - 'A')) {
  2608             if ((unsigned INT)(val - 'A') <= ('Z' - 'A')) {
  2612 		RETURN ( true );
  2609                 RETURN ( true );
  2613 	    }
  2610             }
  2614 	    if ((unsigned INT)(val - 'a') <= ('z' - 'a')) {
  2611             if ((unsigned INT)(val - 'a') <= ('z' - 'a')) {
  2615 		RETURN ( true );
  2612                 RETURN ( true );
  2616 	    }
  2613             }
  2617 	    if (val == 0xAA) { RETURN (true); }
  2614             if (val == 0xAA) { RETURN (true); }
  2618 	    if (val == 0xB5) { RETURN (true); }
  2615             if (val == 0xB5) { RETURN (true); }
  2619 	    if (val == 0xBA) { RETURN (true); }
  2616             if (val == 0xBA) { RETURN (true); }
  2620 	    if (val < 0xC0) { RETURN (false); }
  2617             if (val < 0xC0) { RETURN (false); }
  2621 	    if (val == 0xD7) { RETURN (false); }
  2618             if (val == 0xD7) { RETURN (false); }
  2622 	    if (val == 0xF7) { RETURN (false); }
  2619             if (val == 0xF7) { RETURN (false); }
  2623 	    RETURN (true);
  2620             RETURN (true);
  2624 
  2621 
  2625 	case 0x01:
  2622         case 0x01:
  2626 	    RETURN (true);
  2623             RETURN (true);
  2627 
  2624 
  2628 	case 0x02:
  2625         case 0x02:
  2629 #ifdef UNICODE_3_2
  2626 #ifdef UNICODE_3_2
  2630 	    if (val <= 0x2B8) { RETURN (true); }
  2627             if (val <= 0x2B8) { RETURN (true); }
  2631 	    if (val == 0x2B9) { RETURN (false); }
  2628             if (val == 0x2B9) { RETURN (false); }
  2632 	    if (val == 0x2BA) { RETURN (false); }
  2629             if (val == 0x2BA) { RETURN (false); }
  2633 #else
  2630 #else
  2634 	    if (val <= 0x2BA) { RETURN (true); }
  2631             if (val <= 0x2BA) { RETURN (true); }
  2635 #endif
  2632 #endif
  2636 	    if (val <= 0x2C1) { RETURN (true); }
  2633             if (val <= 0x2C1) { RETURN (true); }
  2637 #ifndef UNICODE_3_2
  2634 #ifndef UNICODE_3_2
  2638 	    if (val <= 0x2C5) { RETURN (false); }
  2635             if (val <= 0x2C5) { RETURN (false); }
  2639 	    if (val <= 0x2CF) { RETURN (true); }
  2636             if (val <= 0x2CF) { RETURN (true); }
  2640 #endif
  2637 #endif
  2641 	    if (val == 0x2D0) { RETURN (true); }
  2638             if (val == 0x2D0) { RETURN (true); }
  2642 	    if (val == 0x2D1) { RETURN (true); }
  2639             if (val == 0x2D1) { RETURN (true); }
  2643 	    if (val <= 0x2DF) { RETURN (false); }
  2640             if (val <= 0x2DF) { RETURN (false); }
  2644 	    if (val <= 0x2E4) { RETURN (true); }
  2641             if (val <= 0x2E4) { RETURN (true); }
  2645 	    if (val == 0x2EE) { RETURN (true); }
  2642             if (val == 0x2EE) { RETURN (true); }
  2646 	    RETURN (false);
  2643             RETURN (false);
  2647 
  2644 
  2648 	case 0x03:
  2645         case 0x03:
  2649 	    if (val == 0x37A) { RETURN (true); }
  2646             if (val == 0x37A) { RETURN (true); }
  2650 	    if (val <= 0x385) { RETURN (false); }
  2647             if (val <= 0x385) { RETURN (false); }
  2651 	    if (val == 0x387) { RETURN (false); }
  2648             if (val == 0x387) { RETURN (false); }
  2652 #ifndef UNICODE_3_2
  2649 #ifndef UNICODE_3_2
  2653 	    if (val == 0x3F6) { RETURN (false); }
  2650             if (val == 0x3F6) { RETURN (false); }
  2654 #endif
  2651 #endif
  2655 	    RETURN (true);
  2652             RETURN (true);
  2656 
  2653 
  2657 	case 0x04:
  2654         case 0x04:
  2658 	    if (val <= 0x481) { RETURN (true); }
  2655             if (val <= 0x481) { RETURN (true); }
  2659 	    if (val <= 0x486) { RETURN (false); }
  2656             if (val <= 0x486) { RETURN (false); }
  2660 	    if (val == 0x487) { RETURN (true); }
  2657             if (val == 0x487) { RETURN (true); }
  2661 #ifdef UNICODE_3_2
  2658 #ifdef UNICODE_3_2
  2662 	    if (val <= 0x48A) { RETURN (false); }
  2659             if (val <= 0x48A) { RETURN (false); }
  2663 #else
  2660 #else
  2664 	    if (val <= 0x489) { RETURN (false); }
  2661             if (val <= 0x489) { RETURN (false); }
  2665 #endif
  2662 #endif
  2666 	    RETURN (true);
  2663             RETURN (true);
  2667 
  2664 
  2668 	case 0x05:
  2665         case 0x05:
  2669 	    if (val <= 0x50f) { RETURN (true); }
  2666             if (val <= 0x50f) { RETURN (true); }
  2670 	    if (val <= 0x530) { RETURN (false); }
  2667             if (val <= 0x530) { RETURN (false); }
  2671 	    if (val <= 0x556) { RETURN (true); }
  2668             if (val <= 0x556) { RETURN (true); }
  2672 	    if (val <= 0x558) { RETURN (false); }
  2669             if (val <= 0x558) { RETURN (false); }
  2673 	    if (val <= 0x559) { RETURN (true); }
  2670             if (val <= 0x559) { RETURN (true); }
  2674 	    if (val <= 0x55F) { RETURN (false); }
  2671             if (val <= 0x55F) { RETURN (false); }
  2675 	    if (val <= 0x587) { RETURN (true); }
  2672             if (val <= 0x587) { RETURN (true); }
  2676 	    if (val <= 0x5cf) { RETURN (false); }
  2673             if (val <= 0x5cf) { RETURN (false); }
  2677 	    if (val <= 0x5f2) { RETURN (true); }
  2674             if (val <= 0x5f2) { RETURN (true); }
  2678 	    RETURN (false);
  2675             RETURN (false);
  2679 
  2676 
  2680 	case 0x06:
  2677         case 0x06:
  2681 	    if (val <= 0x620) { RETURN (false); }
  2678             if (val <= 0x620) { RETURN (false); }
  2682 	    if (val <= 0x64A) { RETURN (true); }
  2679             if (val <= 0x64A) { RETURN (true); }
  2683 	    if (val <= 0x66D) { RETURN (false); }
  2680             if (val <= 0x66D) { RETURN (false); }
  2684 	    if (val == 0x670) { RETURN (false); }
  2681             if (val == 0x670) { RETURN (false); }
  2685 	    if (val <= 0x6D3) { RETURN (true); }
  2682             if (val <= 0x6D3) { RETURN (true); }
  2686 	    if (val == 0x6D5) { RETURN (true); }
  2683             if (val == 0x6D5) { RETURN (true); }
  2687 	    if (val == 0x6E5) { RETURN (true); }
  2684             if (val == 0x6E5) { RETURN (true); }
  2688 	    if (val == 0x6E6) { RETURN (true); }
  2685             if (val == 0x6E6) { RETURN (true); }
  2689 	    if (val == 0x6EE) { RETURN (true); }
  2686             if (val == 0x6EE) { RETURN (true); }
  2690 	    if (val == 0x6EF) { RETURN (true); }
  2687             if (val == 0x6EF) { RETURN (true); }
  2691 	    if (val == 0x6FA) { RETURN (true); }
  2688             if (val == 0x6FA) { RETURN (true); }
  2692 	    if (val == 0x6FB) { RETURN (true); }
  2689             if (val == 0x6FB) { RETURN (true); }
  2693 	    if (val == 0x6FC) { RETURN (true); }
  2690             if (val == 0x6FC) { RETURN (true); }
  2694 #ifndef UNICODE_3_2
  2691 #ifndef UNICODE_3_2
  2695 	    if (val == 0x6FF) { RETURN (true); }
  2692             if (val == 0x6FF) { RETURN (true); }
  2696 #endif
  2693 #endif
  2697 	    RETURN (false);
  2694             RETURN (false);
  2698 
  2695 
  2699 	case 0x07:
  2696         case 0x07:
  2700 	    if (val <= 0x70F) { RETURN (false); }
  2697             if (val <= 0x70F) { RETURN (false); }
  2701 	    if (val == 0x711) { RETURN (false); }
  2698             if (val == 0x711) { RETURN (false); }
  2702 	    if (val <= 0x72F) { RETURN (true); }
  2699             if (val <= 0x72F) { RETURN (true); }
  2703 #ifdef UNICODE_3_2
  2700 #ifdef UNICODE_3_2
  2704 	    if (val <= 0x74d) { RETURN (false); }
  2701             if (val <= 0x74d) { RETURN (false); }
  2705 	    if (val <= 0x74e) { RETURN (true); }
  2702             if (val <= 0x74e) { RETURN (true); }
  2706 #else
  2703 #else
  2707 	    if (val <= 0x74c) { RETURN (false); }
  2704             if (val <= 0x74c) { RETURN (false); }
  2708 	    if (val <= 0x74f) { RETURN (true); }
  2705             if (val <= 0x74f) { RETURN (true); }
  2709 #endif
  2706 #endif
  2710 	    if (val <= 0x77F) { RETURN (false); }
  2707             if (val <= 0x77F) { RETURN (false); }
  2711 	    if (val <= 0x7a5) { RETURN (true); }
  2708             if (val <= 0x7a5) { RETURN (true); }
  2712 	    if (val <= 0x7af) { RETURN (false); }
  2709             if (val <= 0x7af) { RETURN (false); }
  2713 #ifndef UNICODE_3_2
  2710 #ifndef UNICODE_3_2
  2714 	    if (val == 0x7B1) { RETURN (true); }
  2711             if (val == 0x7B1) { RETURN (true); }
  2715 #endif
  2712 #endif
  2716 	    RETURN (false);
  2713             RETURN (false);
  2717 
  2714 
  2718 	case 0x09:
  2715         case 0x09:
  2719 #ifdef UNICODE_3_2
  2716 #ifdef UNICODE_3_2
  2720 	    if (val <= 0x904) { RETURN (false); }
  2717             if (val <= 0x904) { RETURN (false); }
  2721 #else
  2718 #else
  2722 	    if (val <= 0x903) { RETURN (false); }
  2719             if (val <= 0x903) { RETURN (false); }
  2723 #endif
  2720 #endif
  2724 	    if (val <= 0x93B) { RETURN (true); }
  2721             if (val <= 0x93B) { RETURN (true); }
  2725 	    if (val == 0x93D) { RETURN (true); }
  2722             if (val == 0x93D) { RETURN (true); }
  2726 	    if (val == 0x950) { RETURN (true); }
  2723             if (val == 0x950) { RETURN (true); }
  2727 	    if (val <= 0x957) { RETURN (false); }
  2724             if (val <= 0x957) { RETURN (false); }
  2728 	    if (val <= 0x961) { RETURN (true); }
  2725             if (val <= 0x961) { RETURN (true); }
  2729 	    if (val <= 0x984) { RETURN (false); }
  2726             if (val <= 0x984) { RETURN (false); }
  2730 	    if (val <= 0x9BB) { RETURN (true); }
  2727             if (val <= 0x9BB) { RETURN (true); }
  2731 #ifndef UNICODE_3_2
  2728 #ifndef UNICODE_3_2
  2732 	    if (val == 0x9BD) { RETURN (true); }
  2729             if (val == 0x9BD) { RETURN (true); }
  2733 #endif
  2730 #endif
  2734 	    if (val <= 0x9DB) { RETURN (false); }
  2731             if (val <= 0x9DB) { RETURN (false); }
  2735 	    if (val <= 0x9E1) { RETURN (true); }
  2732             if (val <= 0x9E1) { RETURN (true); }
  2736 	    if (val <= 0x9EF) { RETURN (false); }
  2733             if (val <= 0x9EF) { RETURN (false); }
  2737 	    if (val <= 0x9F1) { RETURN (true); }
  2734             if (val <= 0x9F1) { RETURN (true); }
  2738 	    RETURN (false);
  2735             RETURN (false);
  2739 
  2736 
  2740 	case 0x0A:
  2737         case 0x0A:
  2741 	    if (val <= 0xa04) { RETURN (false); }
  2738             if (val <= 0xa04) { RETURN (false); }
  2742 	    if (val <= 0xa3B) { RETURN (true); }
  2739             if (val <= 0xa3B) { RETURN (true); }
  2743 	    if (val <= 0xa58) { RETURN (false); }
  2740             if (val <= 0xa58) { RETURN (false); }
  2744 	    if (val <= 0xa65) { RETURN (true); }
  2741             if (val <= 0xa65) { RETURN (true); }
  2745 	    if (val <= 0xa71) { RETURN (false); }
  2742             if (val <= 0xa71) { RETURN (false); }
  2746 	    if (val <= 0xa80) { RETURN (true); }
  2743             if (val <= 0xa80) { RETURN (true); }
  2747 	    if (val <= 0xa84) { RETURN (false); }
  2744             if (val <= 0xa84) { RETURN (false); }
  2748 	    if (val <= 0xaBB) { RETURN (true); }
  2745             if (val <= 0xaBB) { RETURN (true); }
  2749 	    if (val == 0xaBD) { RETURN (true); }
  2746             if (val == 0xaBD) { RETURN (true); }
  2750 	    if (val <= 0xaCF) { RETURN (false); }
  2747             if (val <= 0xaCF) { RETURN (false); }
  2751 #ifndef UNICODE_3_2
  2748 #ifndef UNICODE_3_2
  2752 	    if (val == 0xAE2) { RETURN (false); }
  2749             if (val == 0xAE2) { RETURN (false); }
  2753 	    if (val == 0xAE3) { RETURN (false); }
  2750             if (val == 0xAE3) { RETURN (false); }
  2754 #endif
  2751 #endif
  2755 	    if (val <= 0xaE5) { RETURN (true); }
  2752             if (val <= 0xaE5) { RETURN (true); }
  2756 	    RETURN (false);
  2753             RETURN (false);
  2757 
  2754 
  2758 	case 0x0B:
  2755         case 0x0B:
  2759 	    if (val <= 0xB04) { RETURN (false); }
  2756             if (val <= 0xB04) { RETURN (false); }
  2760 	    if (val <= 0xb3B) { RETURN (true); }
  2757             if (val <= 0xb3B) { RETURN (true); }
  2761 	    if (val == 0xb3d) { RETURN (true); }
  2758             if (val == 0xb3d) { RETURN (true); }
  2762 	    if (val <= 0xb5B) { RETURN (false); }
  2759             if (val <= 0xb5B) { RETURN (false); }
  2763 	    if (val <= 0xb65) { RETURN (true); }
  2760             if (val <= 0xb65) { RETURN (true); }
  2764 #ifndef UNICODE_3_2
  2761 #ifndef UNICODE_3_2
  2765 	    if (val == 0xB71) { RETURN (true); }
  2762             if (val == 0xB71) { RETURN (true); }
  2766 	    if (val == 0xB83) { RETURN (true); }
  2763             if (val == 0xB83) { RETURN (true); }
  2767 #endif
  2764 #endif
  2768 	    if (val <= 0xb84) { RETURN (false); }
  2765             if (val <= 0xb84) { RETURN (false); }
  2769 	    if (val <= 0xbBB) { RETURN (true); }
  2766             if (val <= 0xbBB) { RETURN (true); }
  2770 	    RETURN (false);
  2767             RETURN (false);
  2771 
  2768 
  2772 	case 0x0c:
  2769         case 0x0c:
  2773 	    if (val <= 0xc04) { RETURN (false); }
  2770             if (val <= 0xc04) { RETURN (false); }
  2774 	    if (val <= 0xc3d) { RETURN (true); }
  2771             if (val <= 0xc3d) { RETURN (true); }
  2775 	    if (val <= 0xc5f) { RETURN (false); }
  2772             if (val <= 0xc5f) { RETURN (false); }
  2776 	    if (val <= 0xc65) { RETURN (true); }
  2773             if (val <= 0xc65) { RETURN (true); }
  2777 	    if (val <= 0xc84) { RETURN (false); }
  2774             if (val <= 0xc84) { RETURN (false); }
  2778 #ifndef UNICODE_3_2
  2775 #ifndef UNICODE_3_2
  2779 	    if (val == 0xcbc) { RETURN (false); }
  2776             if (val == 0xcbc) { RETURN (false); }
  2780 #endif
  2777 #endif
  2781 	    if (val <= 0xcbd) { RETURN (true); }
  2778             if (val <= 0xcbd) { RETURN (true); }
  2782 	    if (val <= 0xcdc) { RETURN (false); }
  2779             if (val <= 0xcdc) { RETURN (false); }
  2783 	    if (val <= 0xce5) { RETURN (true); }
  2780             if (val <= 0xce5) { RETURN (true); }
  2784 	    RETURN (false);
  2781             RETURN (false);
  2785 
  2782 
  2786 	case 0x0d:
  2783         case 0x0d:
  2787 	    if (val <= 0xd04) { RETURN (false); }
  2784             if (val <= 0xd04) { RETURN (false); }
  2788 	    if (val <= 0xd3d) { RETURN (true); }
  2785             if (val <= 0xd3d) { RETURN (true); }
  2789 	    if (val <= 0xd5f) { RETURN (false); }
  2786             if (val <= 0xd5f) { RETURN (false); }
  2790 	    if (val <= 0xd65) { RETURN (true); }
  2787             if (val <= 0xd65) { RETURN (true); }
  2791 	    if (val <= 0xd84) { RETURN (false); }
  2788             if (val <= 0xd84) { RETURN (false); }
  2792 	    if (val <= 0xdc9) { RETURN (true); }
  2789             if (val <= 0xdc9) { RETURN (true); }
  2793 	    RETURN (false);
  2790             RETURN (false);
  2794 
  2791 
  2795 	case 0x0E:
  2792         case 0x0E:
  2796 	    if (val == 0xE31) { RETURN (false); }
  2793             if (val == 0xE31) { RETURN (false); }
  2797 	    if (val <= 0xE33) { RETURN (true); }
  2794             if (val <= 0xE33) { RETURN (true); }
  2798 	    if (val <= 0xE3F) { RETURN (false); }
  2795             if (val <= 0xE3F) { RETURN (false); }
  2799 	    if (val <= 0xE46) { RETURN (true); }
  2796             if (val <= 0xE46) { RETURN (true); }
  2800 	    if (val <= 0xE7f) { RETURN (false); }
  2797             if (val <= 0xE7f) { RETURN (false); }
  2801 	    if (val <= 0xEb0) { RETURN (true); }
  2798             if (val <= 0xEb0) { RETURN (true); }
  2802 	    if (val == 0xEb1) { RETURN (false); }
  2799             if (val == 0xEb1) { RETURN (false); }
  2803 	    if (val <= 0xEb3) { RETURN (true); }
  2800             if (val <= 0xEb3) { RETURN (true); }
  2804 	    if (val <= 0xEbc) { RETURN (false); }
  2801             if (val <= 0xEbc) { RETURN (false); }
  2805 	    if (val <= 0xEc7) { RETURN (true); }
  2802             if (val <= 0xEc7) { RETURN (true); }
  2806 	    if (val <= 0xEdb) { RETURN (false); }
  2803             if (val <= 0xEdb) { RETURN (false); }
  2807 	    RETURN (true);
  2804             RETURN (true);
  2808 
  2805 
  2809 	case 0x0F:
  2806         case 0x0F:
  2810 	    if (val == 0xf00) { RETURN (true); }
  2807             if (val == 0xf00) { RETURN (true); }
  2811 	    if (val <= 0xf3F) { RETURN (false); }
  2808             if (val <= 0xf3F) { RETURN (false); }
  2812 	    if (val <= 0xf70) { RETURN (true); }
  2809             if (val <= 0xf70) { RETURN (true); }
  2813 	    if (val <= 0xf87) { RETURN (false); }
  2810             if (val <= 0xf87) { RETURN (false); }
  2814 	    if (val <= 0xf8f) { RETURN (true); }
  2811             if (val <= 0xf8f) { RETURN (true); }
  2815 	    RETURN (false);
  2812             RETURN (false);
  2816 
  2813 
  2817 	case 0x10:
  2814         case 0x10:
  2818 	    if (val <= 0x102b) { RETURN (true); }
  2815             if (val <= 0x102b) { RETURN (true); }
  2819 	    if (val <= 0x104f) { RETURN (false); }
  2816             if (val <= 0x104f) { RETURN (false); }
  2820 	    if (val <= 0x1055) { RETURN (true); }
  2817             if (val <= 0x1055) { RETURN (true); }
  2821 	    if (val <= 0x109f) { RETURN (false); }
  2818             if (val <= 0x109f) { RETURN (false); }
  2822 	    if (val <= 0x10fa) { RETURN (true); }
  2819             if (val <= 0x10fa) { RETURN (true); }
  2823 	    RETURN (false);
  2820             RETURN (false);
  2824 
  2821 
  2825 	case 0x11:
  2822         case 0x11:
  2826 	case 0x12:
  2823         case 0x12:
  2827 	    RETURN (true);
  2824             RETURN (true);
  2828 
  2825 
  2829 	case 0x13:
  2826         case 0x13:
  2830 	    if (val <= 0x1360) { RETURN (true); }
  2827             if (val <= 0x1360) { RETURN (true); }
  2831 	    if (val <= 0x139f) { RETURN (false); }
  2828             if (val <= 0x139f) { RETURN (false); }
  2832 	    RETURN (true);
  2829             RETURN (true);
  2833 
  2830 
  2834 	case 0x14:
  2831         case 0x14:
  2835 	case 0x15:
  2832         case 0x15:
  2836 	    RETURN (true);
  2833             RETURN (true);
  2837 
  2834 
  2838 	case 0x16:
  2835         case 0x16:
  2839 	    if (val == 0x166d) { RETURN (false); }
  2836             if (val == 0x166d) { RETURN (false); }
  2840 	    if (val == 0x166e) { RETURN (false); }
  2837             if (val == 0x166e) { RETURN (false); }
  2841 	    if (val == 0x1680) { RETURN (false); }
  2838             if (val == 0x1680) { RETURN (false); }
  2842 	    if (val == 0x169b) { RETURN (false); }
  2839             if (val == 0x169b) { RETURN (false); }
  2843 	    if (val == 0x169c) { RETURN (false); }
  2840             if (val == 0x169c) { RETURN (false); }
  2844 	    if (val <= 0x16ea) { RETURN (true); }
  2841             if (val <= 0x16ea) { RETURN (true); }
  2845 	    RETURN (false);
  2842             RETURN (false);
  2846 
  2843 
  2847 	case 0x17:
  2844         case 0x17:
  2848 #ifndef UNICODE_3_2
  2845 #ifndef UNICODE_3_2
  2849 	    if (val == 0x1712) { RETURN (false); }
  2846             if (val == 0x1712) { RETURN (false); }
  2850 	    if (val == 0x1713) { RETURN (false); }
  2847             if (val == 0x1713) { RETURN (false); }
  2851 	    if (val == 0x1714) { RETURN (false); }
  2848             if (val == 0x1714) { RETURN (false); }
  2852 	    if (val == 0x1732) { RETURN (false); }
  2849             if (val == 0x1732) { RETURN (false); }
  2853 	    if (val == 0x1733) { RETURN (false); }
  2850             if (val == 0x1733) { RETURN (false); }
  2854 	    if (val == 0x1734) { RETURN (false); }
  2851             if (val == 0x1734) { RETURN (false); }
  2855 	    if (val == 0x1735) { RETURN (false); }
  2852             if (val == 0x1735) { RETURN (false); }
  2856 	    if (val == 0x1736) { RETURN (false); }
  2853             if (val == 0x1736) { RETURN (false); }
  2857 	    if (val == 0x1752) { RETURN (false); }
  2854             if (val == 0x1752) { RETURN (false); }
  2858 	    if (val == 0x1753) { RETURN (false); }
  2855             if (val == 0x1753) { RETURN (false); }
  2859 	    if (val == 0x1772) { RETURN (false); }
  2856             if (val == 0x1772) { RETURN (false); }
  2860 	    if (val == 0x1773) { RETURN (false); }
  2857             if (val == 0x1773) { RETURN (false); }
  2861 #endif
  2858 #endif
  2862 	    if (val <= 0x17b3) { RETURN (true); }
  2859             if (val <= 0x17b3) { RETURN (true); }
  2863 #ifndef UNICODE_3_2
  2860 #ifndef UNICODE_3_2
  2864 	    if (val == 0x17D7) { RETURN (true); }
  2861             if (val == 0x17D7) { RETURN (true); }
  2865 	    if (val == 0x17DC) { RETURN (true); }
  2862             if (val == 0x17DC) { RETURN (true); }
  2866 #endif
  2863 #endif
  2867 	    RETURN (false);
  2864             RETURN (false);
  2868 
  2865 
  2869 	case 0x18:
  2866         case 0x18:
  2870 	    if (val <= 0x181f) { RETURN (false); }
  2867             if (val <= 0x181f) { RETURN (false); }
  2871 	    if (val <= 0x18a8) { RETURN (true); }
  2868             if (val <= 0x18a8) { RETURN (true); }
  2872 	    RETURN (false);
  2869             RETURN (false);
  2873 
  2870 
  2874 	case 0x19:
  2871         case 0x19:
  2875 #ifndef UNICODE_3_2
  2872 #ifndef UNICODE_3_2
  2876 	    if (val <= 0x191F) { RETURN (true); }
  2873             if (val <= 0x191F) { RETURN (true); }
  2877 	    if (val <= 0x194F) { RETURN (false); }
  2874             if (val <= 0x194F) { RETURN (false); }
  2878 	    if (val <= 0x197F) { RETURN (true); }
  2875             if (val <= 0x197F) { RETURN (true); }
  2879 #endif
  2876 #endif
  2880 	    RETURN (false);
  2877             RETURN (false);
  2881 
  2878 
  2882 	case 0x1d:
  2879         case 0x1d:
  2883 	    if (val == 0x1d00) { RETURN (true); }
  2880             if (val <= 0x1d6B) { RETURN (true); }
  2884 	    RETURN (false);
  2881             RETURN (false);
  2885 
  2882 
  2886 	case 0x1e:
  2883         case 0x1e:
  2887 	    RETURN (true);
  2884             RETURN (true);
  2888 
  2885 
  2889 	case 0x1f:
  2886         case 0x1f:
  2890 	    if (val <= 0x1fbc) { RETURN (true); }
  2887             if (val <= 0x1fbc) { RETURN (true); }
  2891 	    if (val == 0x1fbe) { RETURN (true); }
  2888             if (val == 0x1fbe) { RETURN (true); }
  2892 	    if (val <= 0x1fc1) { RETURN (false); }
  2889             if (val <= 0x1fc1) { RETURN (false); }
  2893 	    if (val <= 0x1fcc) { RETURN (true); }
  2890             if (val <= 0x1fcc) { RETURN (true); }
  2894 	    if (val <= 0x1fcf) { RETURN (false); }
  2891             if (val <= 0x1fcf) { RETURN (false); }
  2895 	    if (val <= 0x1fdc) { RETURN (true); }
  2892             if (val <= 0x1fdc) { RETURN (true); }
  2896 	    if (val <= 0x1fdf) { RETURN (false); }
  2893             if (val <= 0x1fdf) { RETURN (false); }
  2897 	    if (val <= 0x1fec) { RETURN (true); }
  2894             if (val <= 0x1fec) { RETURN (true); }
  2898 	    if (val <= 0x1ff1) { RETURN (false); }
  2895             if (val <= 0x1ff1) { RETURN (false); }
  2899 	    if (val <= 0x1ffc) { RETURN (true); }
  2896             if (val <= 0x1ffc) { RETURN (true); }
  2900 	    RETURN (false);
  2897             RETURN (false);
  2901 
  2898 
  2902 	case 0x20:
  2899         case 0x20:
  2903 #ifndef UNICODE_3_2
  2900 #ifndef UNICODE_3_2
  2904 	    if (val == 0x2071) { RETURN (true); }
  2901             if (val == 0x2071) { RETURN (true); }
  2905 #endif
  2902 #endif
  2906 	    if (val == 0x207f) { RETURN (true); }
  2903             if (val == 0x207f) { RETURN (true); }
  2907 	    RETURN (false);
  2904             RETURN (false);
  2908 
  2905 
  2909 	case 0x21:
  2906         case 0x21:
  2910 	    if (val == 0x2102) { RETURN (true); }
  2907             if (val == 0x2102) { RETURN (true); }
  2911 	    if (val == 0x2107) { RETURN (true); }
  2908             if (val == 0x2107) { RETURN (true); }
  2912 	    if (val <= 0x2109) { RETURN (false); }
  2909             if (val <= 0x2109) { RETURN (false); }
  2913 	    if (val <= 0x2113) { RETURN (true); }
  2910             if (val <= 0x2113) { RETURN (true); }
  2914 	    if (val == 0x2115) { RETURN (true); }
  2911             if (val == 0x2115) { RETURN (true); }
  2915 	    if (val <= 0x2118) { RETURN (false); }
  2912             if (val <= 0x2118) { RETURN (false); }
  2916 	    if (val <= 0x211d) { RETURN (true); }
  2913             if (val <= 0x211d) { RETURN (true); }
  2917 	    if (val <= 0x2123) { RETURN (false); }
  2914             if (val <= 0x2123) { RETURN (false); }
  2918 	    if (val == 0x2125) { RETURN (false); }
  2915             if (val == 0x2125) { RETURN (false); }
  2919 	    if (val == 0x2127) { RETURN (false); }
  2916             if (val == 0x2127) { RETURN (false); }
  2920 	    if (val == 0x2129) { RETURN (false); }
  2917             if (val == 0x2129) { RETURN (false); }
  2921 	    if (val == 0x212E) { RETURN (false); }
  2918             if (val == 0x212E) { RETURN (false); }
  2922 	    if (val == 0x2132) { RETURN (false); }
  2919             if (val == 0x2132) { RETURN (false); }
  2923 	    if (val == 0x213A) { RETURN (false); }
  2920             if (val == 0x213A) { RETURN (false); }
  2924 #ifndef UNICODE_3_2
  2921 #ifndef UNICODE_3_2
  2925 	    if (val == 0x213B) { RETURN (false); }
  2922             if (val == 0x213B) { RETURN (false); }
  2926 	    if (val <= 0x213F) { RETURN (true); }
  2923             if (val <= 0x213F) { RETURN (true); }
  2927 	    if (val <= 0x2144) { RETURN (false); }
  2924             if (val <= 0x2144) { RETURN (false); }
  2928 	    if (val == 0x214A) { RETURN (false); }
  2925             if (val == 0x214A) { RETURN (false); }
  2929 	    if (val == 0x214B) { RETURN (false); }
  2926             if (val == 0x214B) { RETURN (false); }
  2930 #endif
  2927 #endif
  2931 	    if (val <= 0x2152) { RETURN (true); }
  2928             if (val <= 0x2152) { RETURN (true); }
  2932 	    RETURN (false);
  2929             RETURN (false);
  2933 
  2930 
  2934 	case 0x30:
  2931         case 0x30:
  2935 	    if (val == 0x3005) { RETURN (true); }
  2932             if (val == 0x3005) { RETURN (true); }
  2936 	    if (val == 0x3006) { RETURN (true); }
  2933             if (val == 0x3006) { RETURN (true); }
  2937 	    if (val <= 0x3030) { RETURN (false); }
  2934             if (val <= 0x3030) { RETURN (false); }
  2938 	    if (val <= 0x3035) { RETURN (true); }
  2935             if (val <= 0x3035) { RETURN (true); }
  2939 #ifndef UNICODE_3_2
  2936 #ifndef UNICODE_3_2
  2940 	    if (val == 0x303B) { RETURN (true); }
  2937             if (val == 0x303B) { RETURN (true); }
  2941 	    if (val == 0x303C) { RETURN (true); }
  2938             if (val == 0x303C) { RETURN (true); }
  2942 #endif
  2939 #endif
  2943 	    if (val <= 0x3040) { RETURN (false); }
  2940             if (val <= 0x3040) { RETURN (false); }
  2944 	    if (val <= 0x3098) { RETURN (true); }
  2941             if (val <= 0x3098) { RETURN (true); }
  2945 	    if (val <= 0x309c) { RETURN (false); }
  2942             if (val <= 0x309c) { RETURN (false); }
  2946 #ifndef UNICODE_3_2
  2943 #ifndef UNICODE_3_2
  2947 	    if (val == 0x30A0) { RETURN (false); }
  2944             if (val == 0x30A0) { RETURN (false); }
  2948 #endif
  2945 #endif
  2949 	    if (val == 0x30Fb) { RETURN (false); }
  2946             if (val == 0x30Fb) { RETURN (false); }
  2950 	    RETURN ((true));
  2947             RETURN ((true));
  2951 
  2948 
  2952 	case 0x31:
  2949         case 0x31:
  2953 	    if (val <= 0x318f) { RETURN (true); }
  2950             if (val <= 0x318f) { RETURN (true); }
  2954 	    if (val <= 0x319F) { RETURN (false); }
  2951             if (val <= 0x319F) { RETURN (false); }
  2955 	    RETURN ((true));
  2952             RETURN ((true));
  2956 
  2953 
  2957 	case 0x34:
  2954         case 0x34:
  2958 	    RETURN ((true));
  2955             RETURN ((true));
  2959 
  2956 
  2960 	case 0x4d:
  2957         case 0x4d:
  2961 	    if (val <= 0x4DB4) { RETURN (false); }
  2958             if (val <= 0x4DB4) { RETURN (false); }
  2962 #ifndef UNICODE_3_2
  2959 #ifndef UNICODE_3_2
  2963 	    if (val <= 0x4DBF) { RETURN (true); }
  2960             if (val <= 0x4DBF) { RETURN (true); }
  2964 	    RETURN (false);
  2961             RETURN (false);
  2965 #else
  2962 #else
  2966 	    RETURN (true);
  2963             RETURN (true);
  2967 #endif
  2964 #endif
  2968 
  2965 
  2969 	case 0x4e:
  2966         case 0x4e:
  2970 	    RETURN ((true));
  2967             RETURN ((true));
  2971 
  2968 
  2972 	case 0x9f:
  2969         case 0x9f:
  2973 	    if (val <= 0x9fa4) { RETURN (false); }
  2970             if (val <= 0x9fa4) { RETURN (false); }
  2974 	    RETURN (true);
  2971             RETURN (true);
  2975 
  2972 
  2976 	case 0xA0:
  2973         case 0xA0:
  2977 	case 0xA1:
  2974         case 0xA1:
  2978 	case 0xA2:
  2975         case 0xA2:
  2979 	case 0xA3:
  2976         case 0xA3:
  2980 	    RETURN (true);
  2977             RETURN (true);
  2981 
  2978 
  2982 	case 0xA4:
  2979         case 0xA4:
  2983 	    if (val <= 0xa48f) { RETURN (true); }
  2980             if (val <= 0xa48f) { RETURN (true); }
  2984 	    RETURN (false);
  2981             RETURN (false);
  2985 
  2982 
  2986 	case 0xA5:
  2983         case 0xA5:
  2987 	    RETURN (true);
  2984             RETURN (true);
  2988 
  2985 
  2989 	case 0xAC:
  2986         case 0xAC:
  2990 	    RETURN (true);
  2987             RETURN (true);
  2991 
  2988 
  2992 	case 0xD7:
  2989         case 0xD7:
  2993 	    RETURN (true);
  2990             RETURN (true);
  2994 
  2991 
  2995 	case 0xF9:
  2992         case 0xF9:
  2996 	case 0xFA:
  2993         case 0xFA:
  2997 	    RETURN (true);
  2994             RETURN (true);
  2998 
  2995 
  2999 	case 0xFB:
  2996         case 0xFB:
  3000 	    if (val == 0xfb1e) { RETURN (false); }
  2997             if (val == 0xfb1e) { RETURN (false); }
  3001 	    if (val == 0xfb29) { RETURN (false); }
  2998             if (val == 0xfb29) { RETURN (false); }
  3002 	    RETURN (true);
  2999             RETURN (true);
  3003 
  3000 
  3004 	case 0xFC:
  3001         case 0xFC:
  3005 	    RETURN (true);
  3002             RETURN (true);
  3006 
  3003 
  3007 	case 0xFD:
  3004         case 0xFD:
  3008 	    if (val <= 0xFD3d) { RETURN (true); }
  3005             if (val <= 0xFD3d) { RETURN (true); }
  3009 	    if (val <= 0xFD4F) { RETURN (false); }
  3006             if (val <= 0xFD4F) { RETURN (false); }
  3010 #ifndef UNICODE_3_2
  3007 #ifndef UNICODE_3_2
  3011 	    if (val == 0xFDFC) { RETURN (false); }
  3008             if (val == 0xFDFC) { RETURN (false); }
  3012 	    if (val == 0xFDFD) { RETURN (false); }
  3009             if (val == 0xFDFD) { RETURN (false); }
  3013 #endif
  3010 #endif
  3014 	    RETURN (true);
  3011             RETURN (true);
  3015 
  3012 
  3016 	case 0xFE:
  3013         case 0xFE:
  3017 #ifndef UNICODE_3_2
  3014 #ifndef UNICODE_3_2
  3018 	    if (val <= 0xFE0F) { RETURN (false); }
  3015             if (val <= 0xFE0F) { RETURN (false); }
  3019 #endif
  3016 #endif
  3020 	    if (val <= 0xFE1f) { RETURN (true); }
  3017             if (val <= 0xFE1f) { RETURN (true); }
  3021 	    if (val <= 0xFE6F) { RETURN (false); }
  3018             if (val <= 0xFE6F) { RETURN (false); }
  3022 	    if (val <= 0xFEFE) { RETURN (true); }
  3019             if (val <= 0xFEFE) { RETURN (true); }
  3023 	    RETURN (false);
  3020             RETURN (false);
  3024 
  3021 
  3025 	case 0xFF:
  3022         case 0xFF:
  3026 	    if (val <= 0xFF20) { RETURN (false); }
  3023             if (val <= 0xFF20) { RETURN (false); }
  3027 	    if (val <= 0xFF3a) { RETURN (true); }
  3024             if (val <= 0xFF3a) { RETURN (true); }
  3028 	    if (val <= 0xFF40) { RETURN (false); }
  3025             if (val <= 0xFF40) { RETURN (false); }
  3029 	    if (val <= 0xFF5a) { RETURN (true); }
  3026             if (val <= 0xFF5a) { RETURN (true); }
  3030 	    if (val <= 0xFF65) { RETURN (false); }
  3027             if (val <= 0xFF65) { RETURN (false); }
  3031 	    if (val <= 0xFFdC) { RETURN (true); }
  3028             if (val <= 0xFFdC) { RETURN (true); }
  3032 	    RETURN (false);
  3029             RETURN (false);
  3033 
  3030 
  3034 	case 0x100:
  3031         case 0x100:
  3035 #ifndef UNICODE_3_2
  3032 #ifndef UNICODE_3_2
  3036 	    RETURN (true);
  3033             RETURN (true);
  3037 #else
  3034 #else
  3038 	    RETURN (false);
  3035             RETURN (false);
  3039 #endif
  3036 #endif
  3040 
  3037 
  3041 	case 0x103:
  3038         case 0x103:
  3042 	    if (val <= 0x1031f) { RETURN (true); }
  3039             if (val <= 0x1031f) { RETURN (true); }
  3043 	    if (val <= 0x1032F) { RETURN (false); }
  3040             if (val <= 0x1032F) { RETURN (false); }
  3044 	    if (val <= 0x10349) { RETURN (true); }
  3041             if (val <= 0x10349) { RETURN (true); }
  3045 #ifndef UNICODE_3_2
  3042 #ifndef UNICODE_3_2
  3046 	    if (val <= 0x1037F) { RETURN (false); }
  3043             if (val <= 0x1037F) { RETURN (false); }
  3047 	    if (val <= 0x1039E) { RETURN (true); }
  3044             if (val <= 0x1039E) { RETURN (true); }
  3048 #endif
  3045 #endif
  3049 	    RETURN (false);
  3046             RETURN (false);
  3050 
  3047 
  3051 	case 0x104:
  3048         case 0x104:
  3052 #ifndef UNICODE_3_2
  3049 #ifndef UNICODE_3_2
  3053 	    if (val <= 0x1049F) { RETURN (true); }
  3050             if (val <= 0x1049F) { RETURN (true); }
  3054 	    if (val <= 0x104aF) { RETURN (false); }
  3051             if (val <= 0x104aF) { RETURN (false); }
  3055 #endif
  3052 #endif
  3056 	    RETURN (true);
  3053             RETURN (true);
  3057 
  3054 
  3058 	case 0x108:
  3055         case 0x108:
  3059 #ifndef UNICODE_3_2
  3056 #ifndef UNICODE_3_2
  3060 	    RETURN (true);
  3057             RETURN (true);
  3061 #else
  3058 #else
  3062 	    RETURN (false);
  3059             RETURN (false);
  3063 #endif
  3060 #endif
  3064 
  3061 
  3065 	case 0x1D4:
  3062         case 0x1D4:
  3066 	case 0x1D5:
  3063         case 0x1D5:
  3067 	    RETURN (true);
  3064             RETURN (true);
  3068 
  3065 
  3069 	case 0x1D6:
  3066         case 0x1D6:
  3070 	    if (val == 0x1d6c1) { RETURN (false); }
  3067             if (val == 0x1d6c1) { RETURN (false); }
  3071 	    if (val == 0x1d6db) { RETURN (false); }
  3068             if (val == 0x1d6db) { RETURN (false); }
  3072 	    if (val == 0x1d6fb) { RETURN (false); }
  3069             if (val == 0x1d6fb) { RETURN (false); }
  3073 	    RETURN (true);
  3070             RETURN (true);
  3074     }
  3071     }
  3075     RETURN (false);
  3072     RETURN (false);
  3076 %}
  3073 %}
  3077 ! !
  3074 ! !
  3078 
  3075