📄 name2char.cpp
字号:
/******************************************************************************** Filename: name2char.c** Purpose: Routines to convert between classes and class names.** Author: Dan Johnson** History: Fri Feb 23 08:03:09 1990, DSJ, Created.** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** http://www.apache.org/licenses/LICENSE-2.0 ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License.******************************************************************************//**---------------------------------------------------------------------------- Include Files and Type Defines----------------------------------------------------------------------------**/#include "name2char.h"#include "matchdefs.h"#include "danerror.h"#include <string.h>#define ILLEGALCHARNAME 6001/**---------------------------------------------------------------------------- Global Data Definitions and Declarations----------------------------------------------------------------------------**//* character ID (ascii code) to character name mapping */static const char *NameList[]={ "!bang", "\"doubleq", "#hash", "$dollar", "%percent", "&and", "'quote", "(lround", ")rround", "*asterisk", "+plus", ",comma", "-minus", ".dot", "/slash", ":colon", ";semic", "<less", "=equal", ">greater", "?question", "@at", "[lsquare", "\\backsl", "]rsquare", "^uparr", "_unders", "`grave", "{lbrace", "|bar", "}rbrace", "~tilde", "AcA", "BcB", "CcC", "DcD", "EcE", "FcF", "GcG", "HcH", "IcI", "JcJ", "KcK", "LcL", "McM", "NcN", "OcO", "PcP", "QcQ", "RcR", "ScS", "TcT", "UcU", "VcV", "WcW", "XcX", "YcY", "ZcZ", NULL };/**---------------------------------------------------------------------------- Public Code----------------------------------------------------------------------------**//*---------------------------------------------------------------------------*/CLASS_ID NameToChar ( char CharName[])/*** Parameters:** CharName character name to convert to a character** Globals:** NameList lookup table for name to char mapping** Operation:** This routine converts the specified character name to** an ascii character.** Return: Ascii character that corresponds to the character name.** Exceptions: ILLEGALCHARNAME** History: Sat Aug 26 12:26:54 1989, DSJ, Created.*/{ int i; // look for name in table and return character if found for ( i = 0; NameList[i] != NULL; i++ ) if ( strcmp (CharName, &NameList[i][1]) == 0) return (NameList[i][0]); if ( strlen (CharName) == 1 ) return (CharName[0]); //name is not in table but is a single character else //illegal character { DoError (ILLEGALCHARNAME, "Illegal character name"); return 0; }} /* NameToChar *//*---------------------------------------------------------------------------*/void CharToName ( CLASS_ID Char, char CharName[])/*** Parameters:** Char character to map to a character name** CharName string to copy character name into** Globals:** NameList lookup table for char to name mapping** Operation:** This routine converts the specified ascii character to a** character name. This is convenient for representing** characters which might have special meaning to operating** system shells or other programs (e.g. "*?&><" etc.).** Return: none** Exceptions: none** History: Sat Aug 26 12:51:02 1989, DSJ, Created.*/{ int i; /* look for character in table and return a copy of its name if found */ for ( i = 0; NameList[i] != NULL; i++ ) if ( Char == NameList[i][0] ) { strcpy ( CharName, &NameList[i][1] ); return; } /* if the character is not in the table, then use it as the name */ CharName[0] = Char; CharName[1] = 0;} /* CharToName */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -