vbtkit/src/etext/ISOChar.i3


 Copyright  1993, Digital Equipment Corporation            
 All rights reserved.                                        
 See the file COPYRIGHT for a full description.              

by Jim Meehan and Henri Gouraud Last modified on Sat May 29 17:44:21 PDT 1993 by meehan

INTERFACE ISOChar;
ISO Latin-1 Characters and Character Sets

ISOChar deals with individual characters, including the ISO Latin-1 8-bit characters. It classifies characters into groups, like digits or punctuation; each group is represented as a set of characters. Finally, it provides mapping tables that translate lower-case letters into upper-case and the like.

TYPE T = CHAR;

CONST
  All           = SET OF T {'\000'.. '\377'};
  Controls      = SET OF T {'\000'.. '\037', '\177'.. '\217', '\231', '\234'};
  Spaces        = SET OF T {' ', '\t', '\n', '\r', '\f', '\240'};
  Digits        = SET OF T {'0'.. '9'};
  Uppers        = SET OF T {'A'.. 'Z', '\300'.. '\326', '\330'.. '\336'};
  Lowers        = SET OF T {'a'.. 'z', '\337'.. '\366', '\367'.. '\377'};
  Letters       = Uppers + Lowers;
  AlphaNumerics = Letters + Digits;
  Graphics      = Asciis - Controls;
  Punctuation   = Graphics - AlphaNumerics;
  Asciis        = All;

VAR
  Upper   : ARRAY T OF T;
  Lower   : ARRAY T OF T;
  Control : ARRAY T OF T;
  (* These constant arrays implement character conversions (mappings):

         Upper[c]   = the upper-case equivalent of c if c is a letter, else c
         Lower[c]   = the lower-case equivalent of c if c is a letter, else c
         Control[c] = the control-shifted equivalent of c if c is in Graphics
                       (i.e. BitAnd (c, 037B)), else c
    *)

END ISOChar.