BSD 4_3_Net_2 release
[unix-history] / usr / src / usr.bin / groff / libgroff / cmap.cc
CommitLineData
af2a502e
C
1// -*- C++ -*-
2/* Copyright (C) 1989, 1990 Free Software Foundation, Inc.
3 Written by James Clark (jjc@jclark.uucp)
4
5This file is part of groff.
6
7groff is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free
9Software Foundation; either version 1, or (at your option) any later
10version.
11
12groff is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or
14FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15for more details.
16
17You should have received a copy of the GNU General Public License along
18with groff; see the file LICENSE. If not, write to the Free Software
19Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
20
21#include <ctype.h>
22#include "cmap.h"
23
24cmap cmlower(CMAP_BUILTIN);
25cmap 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
32cmap::cmap()
33{
34 unsigned char *p = v;
35 for (int i = 0; i <= UCHAR_MAX; i++)
36 p[i] = i;
37}
38
39cmap::cmap(cmap_builtin)
40{
41 // these are initialised by cmap_init::cmap_init()
42}
43
44int cmap_init::initialised = 0;
45
46cmap_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}