/*ident "@(#)G2++:g2++lib/geng2ctab.c 3.4" */ /****************************************************************************** * * C++ Standard Components, Release 3.0. * * Copyright (c) 1991, 1992 AT&T and Unix System Laboratories, Inc. * Copyright (c) 1988, 1989, 1990 AT&T. All Rights Reserved. * * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T and Unix System * Laboratories, Inc. The copyright notice above does not evidence * any actual or intended publication of such source code. * ******************************************************************************/ // This program generates character mapping tables // into the file g2ctab.c #include #include #include #include #ifdef LSC # define main _main int dochar(int c, FILE *f); #endif char* g2filename_ATTLC = "g2ctab.c"; char* g2progname_ATTLC = "geng2ctab"; char* g2legend_ATTLC[] = { "//000\t001\t002\t003\t004\t005\t006\t007\n//nul\t ^A\t ^B\t ^C\t ^D\t ^E\t ^F\t ^G", "//010\t011\t012\t013\t014\t015\t016\t017\n// ^H\t ^I\t ^J\t ^K\t ^L\t ^M\t ^N\t ^O", "//020\t021\t022\t023\t024\t025\t026\t027\n// ^P\t ^Q\t ^R\t ^S\t ^T\t ^U\t ^V\t ^W", "//030\t031\t032\t033\t034\t035\t036\t037\n// ^X\t ^Y\t ^Z\t ^[\t ^\\\t ^]\t ^^\t ^_", "//040\t041\t042\t043\t044\t045\t046\t047\n// sp\t !\t \"\t #\t $\t %\t &\t '", "//050\t051\t052\t053\t054\t055\t056\t057\n// (\t )\t *\t +\t ,\t -\t .\t /", "//060\t061\t062\t063\t064\t065\t066\t067\n// 0\t 1\t 2\t 3\t 4\t 5\t 6\t 7", "//070\t071\t072\t073\t074\t075\t076\t077\n// 8\t 9\t :\t ;\t <\t =\t >\t ?", "//100\t101\t102\t103\t104\t105\t106\t107\n// @\t A\t B\t C\t D\t E\t F\t G", "//110\t111\t112\t113\t114\t115\t116\t117\n// H\t I\t J\t K\t L\t M\t N\t O", "//120\t121\t122\t123\t124\t125\t126\t127\n// P\t Q\t R\t S\t T\t U\t V\t W", "//130\t131\t132\t133\t134\t135\t136\t137\n// X\t Y\t Z\t [\t \\\t ]\t ^\t _", "//140\t141\t142\t143\t144\t145\t146\t147\n// `\t a\t b\t c\t d\t e\t f\t g", "//150\t151\t152\t153\t154\t155\t156\t157\n// h\t i\t j\t k\t l\t m\t n\t o", "//160\t161\t162\t163\t164\t165\t166\t167\n// p\t q\t r\t s\t t\t u\t v\t w", "//170\t171\t172\t173\t174\t175\t176\t177\n// x\t y\t z\t {\t |\t }\t -\t ^?" }; main(){ int i,row; FILE* f; if( (f=fopen(g2filename_ATTLC, "w")) == NULL ){ fprintf(stderr, "geng2ctab: cannot open '%s'\n", g2filename_ATTLC); exit(1); } fprintf(f, "/*ident \"@(#)G2++:g2++lib/g2ctab.c 3.0\" */\n"); fprintf(f, "/******************************************************************************\n"); fprintf(f, "*\n"); fprintf(f, "* C++ Standard Components, Release 3.0.\n"); fprintf(f, "*\n"); fprintf(f, "* Copyright (c) 1991, 1992 AT&T and Unix System Laboratories, Inc.\n"); fprintf(f, "* Copyright (c) 1988, 1989, 1990 AT&T. All Rights Reserved.\n"); fprintf(f, "*\n"); fprintf(f, "* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T and Unix System\n"); fprintf(f, "* Laboratories, Inc. The copyright notice above does not evidence\n"); fprintf(f, "* any actual or intended publication of such source code.\n"); fprintf(f, "*\n"); fprintf(f, "******************************************************************************/\n\n"); fprintf(f, "//\n"); fprintf(f, "// This file is generated by the program 'geng2ctab'\n"); fprintf(f, "//\n"); fprintf(f, "#include \n"); // Digit table (g2Dtab_ATTLC) row = 0; fprintf(f, "\nint g2Dtab_ATTLC[] = { // Digits\n"); fprintf(f, "0,"); for( i = 0; i < 128; i++ ){ if( i%8 == 0 ){ fprintf(f,"\n\n%s\n",g2legend_ATTLC[row++]); } fprintf(f, "%d,", isdigit(i)!=0); if( i%8 != 7){ fprintf(f,"\t"); } } fprintf(f, "\n\n/* chars 0200-0377: */"); for( i = 128; i < 256; i += 8 ){ fprintf(f, "\n0,\t0,\t0,\t0,\t0,\t0,\t0,\t0,"); } fprintf(f, "\n};\n"); // Printable character table (g2Ptab_ATTLC) row = 0; fprintf(f, "\nint g2Ptab_ATTLC[] = { // Printable characters\n"); fprintf(f, "0,"); for( i = 0; i < 128; i++ ){ if( i%8 == 0 ){ fprintf(f,"\n\n%s\n",g2legend_ATTLC[row++]); } fprintf(f, "%d,", isprint(i)!=0); if( i%8 != 7){ fprintf(f,"\t"); } } fprintf(f, "\n\n/* chars 0200-0377: */"); for( i = 128; i < 256; i += 8 ){ fprintf(f, "\n0,\t0,\t0,\t0,\t0,\t0,\t0,\t0,"); } fprintf(f, "\n};\n"); // Alphabetic character table (g2N1tab_ATTLC) row = 0; fprintf(f, "\nint g2N1tab_ATTLC[] = { // Alphabetic characters\n"); fprintf(f, "0,"); for( i = 0; i < 128; i++ ){ if( i%8 == 0 ){ fprintf(f,"\n\n%s\n",g2legend_ATTLC[row++]); } fprintf(f, "%d,", isalpha(i) || i == '_'); if( i%8 != 7){ fprintf(f,"\t"); } } fprintf(f, "\n\n/* chars 0200-0377: */"); for( i = 128; i < 256; i += 8 ){ fprintf(f, "\n0,\t0,\t0,\t0,\t0,\t0,\t0,\t0,"); } fprintf(f, "\n};\n"); // Figure-this-one-out table (g2N2tab_ATTLC) row = 0; fprintf(f, "\nint g2N2tab_ATTLC[] = { // Cludge\n"); fprintf(f, "0,"); for( i = 0; i < 128; i++ ){ if( i%8 == 0 ){ fprintf(f,"\n\n%s\n",g2legend_ATTLC[row++]); } fprintf( f, "%d,", ( isalpha(i) || i == '_' || i == '*' || // jfi i == '(' || // jfi i == ')' || // jfi isdigit(i) ) ); if( i%8 != 7){ fprintf(f,"\t"); } } fprintf(f, "\n\n/* chars 0200-0377: */"); for( i = 128; i < 256; i += 8 ){ fprintf(f, "\n0,\t0,\t0,\t0,\t0,\t0,\t0,\t0,"); } fprintf(f, "\n};\n"); fclose(f); exit(0); }