cmap.cpp revision 114403
1// -*- C++ -*- 2/* Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. 3 Written by James Clark (jjc@jclark.com) 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 2, 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 COPYING. If not, write to the Free Software 19Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 20 21#include <ctype.h> 22#include "cmap.h" 23 24cmap cmlower(CMAP_BUILTIN); 25cmap cmupper(CMAP_BUILTIN); 26 27#ifdef isascii 28#define ISASCII(c) isascii(c) 29#else 30#define ISASCII(c) (1) 31#endif 32 33cmap::cmap() 34{ 35 unsigned char *p = v; 36 for (int i = 0; i <= UCHAR_MAX; i++) 37 p[i] = i; 38} 39 40cmap::cmap(cmap_builtin) 41{ 42 // these are initialised by cmap_init::cmap_init() 43} 44 45int cmap_init::initialised = 0; 46 47cmap_init::cmap_init() 48{ 49 if (initialised) 50 return; 51 initialised = 1; 52 for (int i = 0; i <= UCHAR_MAX; i++) { 53 cmupper.v[i] = ISASCII(i) && islower(i) ? toupper(i) : i; 54 cmlower.v[i] = ISASCII(i) && isupper(i) ? tolower(i) : i; 55 } 56} 57