Commit | Line | Data |
---|---|---|
af2a502e C |
1 | // -*- C++ -*- |
2 | /* Copyright (C) 1989, 1990 Free Software Foundation, Inc. | |
3 | Written by James Clark (jjc@jclark.uucp) | |
4 | ||
5 | This file is part of groff. | |
6 | ||
7 | groff is free software; you can redistribute it and/or modify it under | |
8 | the terms of the GNU General Public License as published by the Free | |
9 | Software Foundation; either version 1, or (at your option) any later | |
10 | version. | |
11 | ||
12 | groff is distributed in the hope that it will be useful, but WITHOUT ANY | |
13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 | for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License along | |
18 | with groff; see the file LICENSE. If not, write to the Free Software | |
19 | Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ | |
20 | ||
21 | #include <ctype.h> | |
22 | #include "cmap.h" | |
23 | ||
24 | cmap cmlower(CMAP_BUILTIN); | |
25 | cmap cmupper(CMAP_BUILTIN); | |
26 | ||
27 | #define ISASCII(c) isascii(c) | |
28 | #if 0 | |
29 | #define ISASCII(c) 1 /* use this is you have an ANSI ctype.h */ | |
30 | #endif | |
31 | ||
32 | cmap::cmap() | |
33 | { | |
34 | unsigned char *p = v; | |
35 | for (int i = 0; i <= UCHAR_MAX; i++) | |
36 | p[i] = i; | |
37 | } | |
38 | ||
39 | cmap::cmap(cmap_builtin) | |
40 | { | |
41 | // these are initialised by cmap_init::cmap_init() | |
42 | } | |
43 | ||
44 | int cmap_init::initialised = 0; | |
45 | ||
46 | cmap_init::cmap_init() | |
47 | { | |
48 | if (initialised) | |
49 | return; | |
50 | initialised = 1; | |
51 | for (int i = 0; i <= UCHAR_MAX; i++) { | |
52 | cmupper.v[i] = ISASCII(i) && islower(i) ? toupper(i) : i; | |
53 | cmlower.v[i] = ISASCII(i) && isupper(i) ? tolower(i) : i; | |
54 | } | |
55 | } |