static void out_linetoscr_do_srcpix (DEPTH_T bpp, HMODE_T hmode, int aga, CMODE_T cmode) { if (aga && cmode != CMODE_DUALPF) outln ( " spix_val = pixdata.apixels[spix] ^ xor_val;"); else if (cmode != CMODE_HAM) outln ( " spix_val = pixdata.apixels[spix];"); }
static void out_linetoscr_do_incspix (DEPTH_T bpp, HMODE_T hmode, int aga, CMODE_T cmode) { if (hmode == HMODE_HALVE) outln ( " spix += 2;"); else outln ( " spix++;"); }
virtual void on_file_entry (const fs::directory::entry& e, fs::path::parts& p, const string_t& source, const string_t& target) { const char_t *chars; size_t length; if ((chars = target.chars(length)) && (0 < length)) { fs::path::directory::name name(chars, length); name.append(e.directory()); name.append(e.name()); if ((on_match_file_entry_target(e, name))) { out(before_.c_str()); if ((source_on_)) { if ((name_on_)) { out(e.path()); } else { out(e.directory()); } out(between_.c_str()); } if ((target_on_)) { if ((name_on_)) { out(name.chars()); } else { fs::path::directory::name directory(chars, length); directory.append(e.directory()); out(directory.chars()); } } out(after_.c_str()); if ((ln_on_)) { outln(); } } } else { out(before_.c_str()); if ((source_on_)) { if ((name_on_)) { out(e.path()); } else { out(e.directory()); } } out(after_.c_str()); if ((ln_on_)) { outln(); } } }
void right ( void ) { level = level - 1 ; putc ( ')' , plfile ); outln () ; }
int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); Eigen::MatrixXf m(ROWS, 2); m = GetData2Cols("testdata.txt"); //std::cout << m << std::endl; /*Eigen::MatrixXf newM = CreateMatrixWithoutYAxis(m,2);*/ //std::cout << newM << std::endl; const int noOfHarmonicsAnalyse = 10; Eigen::MatrixXf rFSDs(4, noOfHarmonicsAnalyse); rFSDs = fEfourier(m, noOfHarmonicsAnalyse, true, true); for (int i = 0; i < 4; ++i){ rFSDs(i, 0) = 0; } const int noOfHarmonicsReconstruct = 10; const int noOfPointsReconstruct = 200; Eigen::MatrixXf outln(noOfPointsReconstruct, 2); outln = rEfourier(rFSDs, noOfHarmonicsReconstruct, noOfPointsReconstruct); std::cout << " Reconstruct Result" <<std::endl; std::cout << "***********************************************" << std::endl; std::cout << outln << std::endl; std::cout << " DONE" << std::endl; return app.exec(); }
int main (int argc, char *argv[]) { DEPTH_T bpp; int aga; HMODE_T hmode; unsigned int i; do_bigendian = 0; for (i = 1; i < argc; i++) { if (argv[i][0] != '-') continue; if (argv[i][1] == 'b' && argv[i][2] == '\0') do_bigendian = 1; } set_outfile (stdout); outln ("/*"); outln (" * E-UAE - The portable Amiga emulator."); outln (" *"); outln (" * This file was generated by genlinetoscr. Don't edit."); outln (" */"); outln (""); for (bpp = DEPTH_8BPP; bpp <= DEPTH_MAX; bpp++) { for (aga = 0; aga <= 1 ; aga++) { for (hmode = HMODE_NORMAL; hmode <= HMODE_MAX; hmode++) out_linetoscr (bpp, hmode, aga); } } return 0; }
virtual io::write::file* safe_open_file (io::write::file& file, const char_t* line, const char_t* name, bool mode_is_binary = false) { if ((line) && (line[0]) && (name) && (name[0])) { ssize_t length = chars_t::count(line); ssize_t amount = 0; io::read::file f; if ((f.open(name, (mode_is_binary) ?(f.mode_read_binary()):(f.mode_read())))) { #if defined(__GNUC__) char_t chars[length+3]; #else // defined(__GNUC__) nadir::arrayt<char_t> a(length + 3); char_t* chars = a.elements(); #endif // defined(__GNUC__) if (!((length + 2) != (amount = f.read(chars, length + 2)))) { if ((chars_t::compare(line, chars, length)) || (chars[length] != cr_) || (chars[length+1] != lf_)) { outl("file \"", name, "\" already exists", 0); outln(); f.close(); return 0; } } f.close(); } if ((file.open(name, (mode_is_binary) ?(file.mode_write_binary()):(file.mode_write())))) { if (!(length != (amount = file.write(line, length)))) { if (!(1 != (amount = file.write(&cr_, 1)))) { if (!(1 != (amount = file.write(&lf_, 1)))) { return &file; } } } file.close(); } } return 0; }
static void out_linetoscr (DEPTH_T bpp, HMODE_T hmode, int aga) { if (aga) outln ("#ifdef AGA"); out_linetoscr_decl (bpp, hmode, aga); outln ( "{"); outlnf ( " %s *buf = (%s *) xlinebuffer;", get_depth_type_str (bpp), get_depth_type_str (bpp)); if (aga) outln ( " uae_u8 xor_val = (uae_u8)(dp_for_drawing->bplcon4 >> 8);"); outln ( ""); outln ( " if (dp_for_drawing->ham_seen) {"); out_linetoscr_mode (bpp, hmode, aga, CMODE_HAM); outln ( " } else if (bpldualpf) {"); out_linetoscr_mode (bpp, hmode, aga, CMODE_DUALPF); outln ( " } else if (bplehb) {"); out_linetoscr_mode (bpp, hmode, aga, CMODE_EXTRAHB); outln ( " } else {"); out_linetoscr_mode (bpp, hmode, aga, CMODE_NORMAL); outln ( " }\n"); outln ( " return spix;"); outln ( "}"); if (aga) outln ( "#endif"); outln ( ""); }
static void out_linetoscr_mode (DEPTH_T bpp, HMODE_T hmode, int aga, CMODE_T cmode) { int old_indent = set_indent (8); if (aga && cmode == CMODE_DUALPF) { outln ( "int *lookup = bpldualpfpri ? dblpf_ind2_aga : dblpf_ind1_aga;"); outln ( "int *lookup_no = bpldualpfpri ? dblpf_2nd2 : dblpf_2nd1;"); } else if (cmode == CMODE_DUALPF) outln ( "int *lookup = bpldualpfpri ? dblpf_ind2 : dblpf_ind1;"); /* TODO: add support for combining pixel writes in 8-bpp modes. */ if (bpp == DEPTH_16BPP && hmode != HMODE_DOUBLE) { outln ( "int rem;"); outln ( "if (((long)&buf[dpix]) & 2) {"); outln ( " uae_u32 spix_val;"); outln ( " uae_u32 dpix_val;"); out_linetoscr_do_srcpix (bpp, hmode, aga, cmode); out_linetoscr_do_dstpix (bpp, hmode, aga, cmode); out_linetoscr_do_incspix (bpp, hmode, aga, cmode); outln ( " buf[dpix++] = dpix_val;"); outln ( "}"); outln ( "if (dpix >= stoppos)"); outln ( " return spix;"); outln ( "rem = (((long)&buf[stoppos]) & 2);"); outln ( "if (rem)"); outln ( " stoppos--;"); } outln ( "while (dpix < stoppos) {"); outln ( " uae_u32 spix_val;"); outln ( " uae_u32 dpix_val;"); outln ( " uae_u32 out_val;"); outln ( ""); out_linetoscr_do_srcpix (bpp, hmode, aga, cmode); out_linetoscr_do_dstpix (bpp, hmode, aga, cmode); out_linetoscr_do_incspix (bpp, hmode, aga, cmode); outln ( " out_val = dpix_val;"); if (hmode != HMODE_DOUBLE && bpp == DEPTH_16BPP) { out_linetoscr_do_srcpix (bpp, hmode, aga, cmode); out_linetoscr_do_dstpix (bpp, hmode, aga, cmode); out_linetoscr_do_incspix (bpp, hmode, aga, cmode); if (do_bigendian) outln ( " out_val = (out_val << 16) | (dpix_val & 0xFFFF);"); else outln ( " out_val = (out_val & 0xFFFF) | (dpix_val << 16);"); } if (hmode == HMODE_DOUBLE) { if (bpp == DEPTH_8BPP) { outln ( " *((uae_u16 *)&buf[dpix]) = (uae_u16) out_val;"); outln ( " dpix += 2;"); } else if (bpp == DEPTH_16BPP) { outln ( " *((uae_u32 *)&buf[dpix]) = out_val;"); outln ( " dpix += 2;"); } else { outln ( " buf[dpix++] = out_val;"); outln ( " buf[dpix++] = out_val;"); } } else { if (bpp == DEPTH_16BPP) { outln ( " *((uae_u32 *)&buf[dpix]) = out_val;"); outln ( " dpix += 2;"); } else outln ( " buf[dpix++] = out_val;"); } outln ( "}"); if (bpp == DEPTH_16BPP && hmode != HMODE_DOUBLE) { outln ( "if (rem) {"); outln ( " uae_u32 spix_val;"); outln ( " uae_u32 dpix_val;"); out_linetoscr_do_srcpix (bpp, hmode, aga, cmode); out_linetoscr_do_dstpix (bpp, hmode, aga, cmode); out_linetoscr_do_incspix (bpp, hmode, aga, cmode); outln ( " buf[dpix++] = dpix_val;"); outln ( "}"); } set_indent (old_indent); return; }
static void out_linetoscr_do_dstpix (DEPTH_T bpp, HMODE_T hmode, int aga, CMODE_T cmode) { if (aga && cmode == CMODE_HAM) outln ( " dpix_val = CONVERT_RGB (ham_linebuf[spix]);"); else if (cmode == CMODE_HAM) outln ( " dpix_val = xcolors[ham_linebuf[spix]];"); else if (aga && cmode == CMODE_DUALPF) { outln ( " if (spriteagadpfpixels[spix]) {"); outln ( " dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];"); outln ( " spriteagadpfpixels[spix] = 0;"); outln ( " } else {"); outln ( " unsigned int val = lookup[spix_val];"); outln ( " if (lookup_no[spix_val] == 2)"); outln ( " val += dblpfofs[bpldualpf2of];"); outln ( " val ^= xor_val;"); outln ( " dpix_val = colors_for_drawing.acolors[val];"); outln ( " }"); } else if (cmode == CMODE_DUALPF) { outln ( " dpix_val = colors_for_drawing.acolors[lookup[spix_val]];"); } else if (aga && cmode == CMODE_EXTRAHB) { outln ( " if (spix_val >= 32 && spix_val < 64) {"); outln ( " unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;"); outln ( " dpix_val = CONVERT_RGB (c);"); outln ( " } else"); outln ( " dpix_val = colors_for_drawing.acolors[spix_val];"); } else if (cmode == CMODE_EXTRAHB) { outln ( " if (spix_val <= 31)"); outln ( " dpix_val = colors_for_drawing.acolors[spix_val];"); outln ( " else"); outln ( " dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];"); } else outln ( " dpix_val = colors_for_drawing.acolors[spix_val];"); }
static void out_linetoscr_do_incspix (DEPTH_T bpp, HMODE_T hmode, int aga, CMODE_T cmode, int spr) { if (hmode == HMODE_HALVE1F) { outln ( " {"); outln ( " uae_u32 tmp_val;"); outln ( " spix++;"); outln ( " tmp_val = dpix_val;"); out_linetoscr_do_srcpix (bpp, hmode, aga, cmode, spr); out_linetoscr_do_dstpix (bpp, hmode, aga, cmode, spr); outlnf ( " dpix_val = merge_2pixel%d (dpix_val, tmp_val);", bpp == 0 ? 8 : bpp == 1 ? 16 : 32); outln ( " spix++;"); outln ( " }"); } else if (hmode == HMODE_HALVE2F) { outln ( " {"); outln ( " uae_u32 tmp_val, tmp_val2, tmp_val3;"); outln ( " spix++;"); outln ( " tmp_val = dpix_val;"); out_linetoscr_do_srcpix (bpp, hmode, aga, cmode, spr); out_linetoscr_do_dstpix (bpp, hmode, aga, cmode, spr); outln ( " spix++;"); outln ( " tmp_val2 = dpix_val;"); out_linetoscr_do_srcpix (bpp, hmode, aga, cmode, spr); out_linetoscr_do_dstpix (bpp, hmode, aga, cmode, spr); outln ( " spix++;"); outln ( " tmp_val3 = dpix_val;"); out_linetoscr_do_srcpix (bpp, hmode, aga, cmode, spr); out_linetoscr_do_dstpix (bpp, hmode, aga, cmode, spr); outlnf ( " tmp_val = merge_2pixel%d (tmp_val, tmp_val2);", bpp == 0 ? 8 : bpp == 1 ? 16 : 32); outlnf ( " tmp_val2 = merge_2pixel%d (tmp_val3, dpix_val);", bpp == 0 ? 8 : bpp == 1 ? 16 : 32); outlnf ( " dpix_val = merge_2pixel%d (tmp_val, tmp_val2);", bpp == 0 ? 8 : bpp == 1 ? 16 : 32); outln ( " spix++;"); outln ( " }"); } else if (hmode == HMODE_HALVE1) { outln ( " spix += 2;"); } else if (hmode == HMODE_HALVE2) { outln ( " spix += 4;"); } else { outln ( " spix++;"); } }
void dosimplethings ( void ) { short i ; { fonttype = 0 ; if ( lh >= 12 ) { { checkBCPL ( 32 , 40 ) ; if ( ( tfm [32 ]>= 11 ) && ( tfm [33 ]== 84 ) && ( tfm [34 ]== 69 ) && ( tfm [35 ]== 88 ) && ( tfm [36 ]== 32 ) && ( tfm [37 ] == 77 ) && ( tfm [38 ]== 65 ) && ( tfm [39 ]== 84 ) && ( tfm [40 ]== 72 ) && ( tfm [41 ]== 32 ) ) { if ( ( tfm [42 ]== 83 ) && ( tfm [43 ]== 89 ) ) fonttype = 1 ; else if ( ( tfm [42 ]== 69 ) && ( tfm [43 ]== 88 ) ) fonttype = 2 ; } } if ( lh >= 17 ) { left () ; Fputs ( plfile , "FAMILY" ) ; checkBCPL ( 72 , 20 ) ; outBCPL ( 72 ) ; right () ; if ( lh >= 18 ) { left () ; Fputs ( plfile , "FACE" ) ; outface ( 95 ) ; right () ; {register integer for_end; i = 18 ;for_end = lh - 1 ; if ( i <= for_end) do { left () ; fprintf ( plfile , "%s%ld", "HEADER D " , (long)i ) ; outoctal ( 24 + 4 * i , 4 ) ; right () ; } while ( i++ < for_end ) ;} } } left () ; Fputs ( plfile , "CODINGSCHEME" ) ; outBCPL ( 32 ) ; right () ; } left () ; Fputs ( plfile , "DESIGNSIZE" ) ; if ( tfm [28 ]> 127 ) { { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%s%c\n", "Bad TFM file: " , "Design size " , "negative" , '!' ) ; } fprintf ( stderr , "%s\n", "I've set it to 10 points." ) ; Fputs ( plfile , " D 10" ) ; } else if ( ( tfm [28 ]== 0 ) && ( tfm [29 ]< 16 ) ) { { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%s%c\n", "Bad TFM file: " , "Design size " , "too small" , '!' ) ; } fprintf ( stderr , "%s\n", "I've set it to 10 points." ) ; Fputs ( plfile , " D 10" ) ; } else outfix ( 28 ) ; right () ; Fputs ( plfile , "(COMMENT DESIGNSIZE IS IN POINTS)" ) ; outln () ; Fputs ( plfile , "(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)" ) ; outln () ; left () ; Fputs ( plfile , "CHECKSUM" ) ; outoctal ( 24 , 4 ) ; right () ; if ( ( lh > 17 ) && ( tfm [92 ]> 127 ) ) { left () ; Fputs ( plfile , "SEVENBITSAFEFLAG TRUE" ) ; right () ; } } if ( np > 0 ) { left () ; Fputs ( plfile , "FONTDIMEN" ) ; outln () ; {register integer for_end; i = 1 ;for_end = np ; if ( i <= for_end) do { left () ; if ( i == 1 ) Fputs ( plfile , "SLANT" ) ; else { if ( ( tfm [4 * ( parambase + i ) ]> 0 ) && ( tfm [4 * ( parambase + i ) ]< 255 ) ) { tfm [4 * ( parambase + i ) ]= 0 ; tfm [( 4 * ( parambase + i ) ) + 1 ]= 0 ; tfm [( 4 * ( parambase + i ) ) + 2 ]= 0 ; tfm [( 4 * ( parambase + i ) ) + 3 ]= 0 ; { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%c%ld%s\n", "Bad TFM file: " , "Parameter" , ' ' , (long)i , " is too big;" ) ; } fprintf ( stderr , "%s\n", "I have set it to zero." ) ; } if ( i <= 7 ) switch ( i ) {case 2 : Fputs ( plfile , "SPACE" ) ; break ; case 3 : Fputs ( plfile , "STRETCH" ) ; break ; case 4 : Fputs ( plfile , "SHRINK" ) ; break ; case 5 : Fputs ( plfile , "XHEIGHT" ) ; break ; case 6 : Fputs ( plfile , "QUAD" ) ; break ; case 7 : Fputs ( plfile , "EXTRASPACE" ) ; break ; } else if ( ( i <= 22 ) && ( fonttype == 1 ) ) switch ( i ) {case 8 : Fputs ( plfile , "NUM1" ) ; break ; case 9 : Fputs ( plfile , "NUM2" ) ; break ; case 10 : Fputs ( plfile , "NUM3" ) ; break ; case 11 : Fputs ( plfile , "DENOM1" ) ; break ; case 12 : Fputs ( plfile , "DENOM2" ) ; break ; case 13 : Fputs ( plfile , "SUP1" ) ; break ; case 14 : Fputs ( plfile , "SUP2" ) ; break ; case 15 : Fputs ( plfile , "SUP3" ) ; break ; case 16 : Fputs ( plfile , "SUB1" ) ; break ; case 17 : Fputs ( plfile , "SUB2" ) ; break ; case 18 : Fputs ( plfile , "SUPDROP" ) ; break ; case 19 : Fputs ( plfile , "SUBDROP" ) ; break ; case 20 : Fputs ( plfile , "DELIM1" ) ; break ; case 21 : Fputs ( plfile , "DELIM2" ) ; break ; case 22 : Fputs ( plfile , "AXISHEIGHT" ) ; break ; } else if ( ( i <= 13 ) && ( fonttype == 2 ) ) { if ( i == 8 ) Fputs ( plfile , "DEFAULTRULETHICKNESS" ) ; else fprintf ( plfile , "%s%ld", "BIGOPSPACING" , (long)i - 8 ) ; } else fprintf ( plfile , "%s%ld", "PARAMETER D " , (long)i ) ; } outfix ( 4 * ( parambase + i ) ) ; right () ; } while ( i++ < for_end ) ;} right () ; } if ( ( fonttype == 1 ) && ( np != 22 ) ) fprintf ( stderr , "%s%ld%s\n", "Unusual number of fontdimen parameters for a math symbols font (" , (long)np , " not 22)." ) ; else if ( ( fonttype == 2 ) && ( np != 13 ) ) fprintf ( stderr , "%s%ld%s\n", "Unusual number of fontdimen parameters for an extension font (" , (long)np , " not 13)." ) ; if ( ( tfm [4 * widthbase ]> 0 ) || ( tfm [4 * widthbase + 1 ]> 0 ) || ( tfm [4 * widthbase + 2 ]> 0 ) || ( tfm [4 * widthbase + 3 ]> 0 ) ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s\n", "Bad TFM file: " , "width[0] should be zero." ) ; } if ( ( tfm [4 * heightbase ]> 0 ) || ( tfm [4 * heightbase + 1 ]> 0 ) || ( tfm [4 * heightbase + 2 ]> 0 ) || ( tfm [4 * heightbase + 3 ]> 0 ) ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s\n", "Bad TFM file: " , "height[0] should be zero." ) ; } if ( ( tfm [4 * depthbase ]> 0 ) || ( tfm [4 * depthbase + 1 ]> 0 ) || ( tfm [4 * depthbase + 2 ]> 0 ) || ( tfm [4 * depthbase + 3 ]> 0 ) ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s\n", "Bad TFM file: " , "depth[0] should be zero." ) ; } if ( ( tfm [4 * italicbase ]> 0 ) || ( tfm [4 * italicbase + 1 ]> 0 ) || ( tfm [4 * italicbase + 2 ]> 0 ) || ( tfm [4 * italicbase + 3 ]> 0 ) ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s\n", "Bad TFM file: " , "italic[0] should be zero." ) ; } {register integer for_end; i = 0 ;for_end = nw - 1 ; if ( i <= for_end) do if ( ( tfm [4 * ( widthbase + i ) ]> 0 ) && ( tfm [4 * ( widthbase + i ) ]< 255 ) ) { tfm [4 * ( widthbase + i ) ]= 0 ; tfm [( 4 * ( widthbase + i ) ) + 1 ]= 0 ; tfm [( 4 * ( widthbase + i ) ) + 2 ]= 0 ; tfm [( 4 * ( widthbase + i ) ) + 3 ]= 0 ; { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%c%ld%s\n", "Bad TFM file: " , "Width" , ' ' , (long)i , " is too big;" ) ; } fprintf ( stderr , "%s\n", "I have set it to zero." ) ; } while ( i++ < for_end ) ;} {register integer for_end; i = 0 ;for_end = nh - 1 ; if ( i <= for_end) do if ( ( tfm [4 * ( heightbase + i ) ]> 0 ) && ( tfm [4 * ( heightbase + i ) ]< 255 ) ) { tfm [4 * ( heightbase + i ) ]= 0 ; tfm [( 4 * ( heightbase + i ) ) + 1 ]= 0 ; tfm [( 4 * ( heightbase + i ) ) + 2 ]= 0 ; tfm [( 4 * ( heightbase + i ) ) + 3 ]= 0 ; { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%c%ld%s\n", "Bad TFM file: " , "Height" , ' ' , (long)i , " is too big;" ) ; } fprintf ( stderr , "%s\n", "I have set it to zero." ) ; } while ( i++ < for_end ) ;} {register integer for_end; i = 0 ;for_end = nd - 1 ; if ( i <= for_end) do if ( ( tfm [4 * ( depthbase + i ) ]> 0 ) && ( tfm [4 * ( depthbase + i ) ]< 255 ) ) { tfm [4 * ( depthbase + i ) ]= 0 ; tfm [( 4 * ( depthbase + i ) ) + 1 ]= 0 ; tfm [( 4 * ( depthbase + i ) ) + 2 ]= 0 ; tfm [( 4 * ( depthbase + i ) ) + 3 ]= 0 ; { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%c%ld%s\n", "Bad TFM file: " , "Depth" , ' ' , (long)i , " is too big;" ) ; } fprintf ( stderr , "%s\n", "I have set it to zero." ) ; } while ( i++ < for_end ) ;} {register integer for_end; i = 0 ;for_end = ni - 1 ; if ( i <= for_end) do if ( ( tfm [4 * ( italicbase + i ) ]> 0 ) && ( tfm [4 * ( italicbase + i ) ]< 255 ) ) { tfm [4 * ( italicbase + i ) ]= 0 ; tfm [( 4 * ( italicbase + i ) ) + 1 ]= 0 ; tfm [( 4 * ( italicbase + i ) ) + 2 ]= 0 ; tfm [( 4 * ( italicbase + i ) ) + 3 ]= 0 ; { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%c%ld%s\n", "Bad TFM file: " , "Italic correction" , ' ' , (long)i , " is too big;" ) ; } fprintf ( stderr , "%s\n", "I have set it to zero." ) ; } while ( i++ < for_end ) ;} if ( nk > 0 ) {register integer for_end; i = 0 ;for_end = nk - 1 ; if ( i <= for_end) do if ( ( tfm [4 * ( kernbase + i ) ]> 0 ) && ( tfm [4 * ( kernbase + i ) ]< 255 ) ) { tfm [4 * ( kernbase + i ) ]= 0 ; tfm [( 4 * ( kernbase + i ) ) + 1 ]= 0 ; tfm [( 4 * ( kernbase + i ) ) + 2 ]= 0 ; tfm [( 4 * ( kernbase + i ) ) + 3 ]= 0 ; { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%c%ld%s\n", "Bad TFM file: " , "Kern" , ' ' , (long)i , " is too big;" ) ; } fprintf ( stderr , "%s\n", "I have set it to zero." ) ; } while ( i++ < for_end ) ;} }
void mainbody( void ) { initialize () ; if ( ! organize () ) uexit ( 1 ) ; dosimplethings () ; if ( nl > 0 ) { {register integer for_end; ai = 0 ;for_end = nl - 1 ; if ( ai <= for_end) do activity [ai ]= 0 ; while ( ai++ < for_end ) ;} if ( tfm [4 * ( ligkernbase + ( 0 ) ) ]== 255 ) { left () ; Fputs ( plfile , "BOUNDARYCHAR" ) ; boundarychar = tfm [4 * ( ligkernbase + ( 0 ) ) + 1 ]; outchar ( boundarychar ) ; right () ; activity [0 ]= 1 ; } if ( tfm [4 * ( ligkernbase + ( nl - 1 ) ) ]== 255 ) { r = 256 * tfm [4 * ( ligkernbase + ( nl - 1 ) ) + 2 ]+ tfm [4 * ( ligkernbase + ( nl - 1 ) ) + 3 ]; if ( r >= nl ) { perfect = false ; { putc ( ' ' , stderr ); putc ( '\n', stderr ); } Fputs ( stderr , "Ligature/kern starting index for boundarychar is too large;" ) ; fprintf ( stderr , "%s\n", "so I removed it." ) ; } else { labelptr = 1 ; labeltable [1 ].cc = 256 ; labeltable [1 ].rr = r ; bcharlabel = r ; activity [r ]= 2 ; } activity [nl - 1 ]= 1 ; } } {register integer for_end; c = bc ;for_end = ec ; if ( c <= for_end) do if ( ( tfm [4 * ( charbase + c ) + 2 ]% 4 ) == 1 ) { r = tfm [4 * ( charbase + c ) + 3 ]; if ( r < nl ) { if ( tfm [4 * ( ligkernbase + ( r ) ) ]> 128 ) { r = 256 * tfm [4 * ( ligkernbase + ( r ) ) + 2 ]+ tfm [4 * ( ligkernbase + ( r ) ) + 3 ]; if ( r < nl ) { if ( activity [tfm [4 * ( charbase + c ) + 3 ]]== 0 ) activity [tfm [4 * ( charbase + c ) + 3 ]]= 1 ; } } } if ( r >= nl ) { perfect = false ; { putc ( ' ' , stderr ); putc ( '\n', stderr ); } Fputs ( stderr , "Ligature/kern starting index for character " ) ; printoctal ( c ) ; fprintf ( stderr , "%s\n", " is too large;" ) ; fprintf ( stderr , "%s\n", "so I removed it." ) ; tfm [4 * ( charbase + c ) + 2 ]= 4 * ( tfm [4 * ( charbase + c ) + 2 ]/ 4 ) + 0 ; } else { sortptr = labelptr ; while ( labeltable [sortptr ].rr > r ) { labeltable [sortptr + 1 ]= labeltable [sortptr ]; sortptr = sortptr - 1 ; } labeltable [sortptr + 1 ].cc = c ; labeltable [sortptr + 1 ].rr = r ; labelptr = labelptr + 1 ; activity [r ]= 2 ; } } while ( c++ < for_end ) ;} labeltable [labelptr + 1 ].rr = ligsize ; if ( nl > 0 ) { left () ; Fputs ( plfile , "LIGTABLE" ) ; outln () ; {register integer for_end; ai = 0 ;for_end = nl - 1 ; if ( ai <= for_end) do if ( activity [ai ]== 2 ) { r = tfm [4 * ( ligkernbase + ( ai ) ) ]; if ( r < 128 ) { r = r + ai + 1 ; if ( r >= nl ) { { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%ld%s\n", "Bad TFM file: " , "Ligature/kern step " , (long)ai , " skips too far;" ) ; } fprintf ( stderr , "%s\n", "I made it stop." ) ; tfm [4 * ( ligkernbase + ( ai ) ) ]= 128 ; } else activity [r ]= 2 ; } } while ( ai++ < for_end ) ;} sortptr = 1 ; {register integer for_end; acti = 0 ;for_end = nl - 1 ; if ( acti <= for_end) do if ( activity [acti ]!= 1 ) { i = acti ; if ( activity [i ]== 0 ) { if ( level == 1 ) { left () ; Fputs ( plfile , "COMMENT THIS PART OF THE PROGRAM IS NEVER USED!" ) ; outln () ; } } else if ( level == 2 ) right () ; while ( i == labeltable [sortptr ].rr ) { left () ; Fputs ( plfile , "LABEL" ) ; if ( labeltable [sortptr ].cc == 256 ) Fputs ( plfile , " BOUNDARYCHAR" ) ; else outchar ( labeltable [sortptr ].cc ) ; right () ; sortptr = sortptr + 1 ; } { k = 4 * ( ligkernbase + ( i ) ) ; if ( tfm [k ]> 128 ) { if ( 256 * tfm [k + 2 ]+ tfm [k + 3 ]>= nl ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s\n", "Bad TFM file: " , "Ligature unconditional stop command address is too big." ) ; } } else if ( tfm [k + 2 ]>= 128 ) { if ( ( ( tfm [k + 1 ]< bc ) || ( tfm [k + 1 ]> ec ) || ( tfm [ 4 * ( charbase + tfm [k + 1 ]) ]== 0 ) ) ) { if ( tfm [k + 1 ]!= boundarychar ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%s", "Bad TFM file: " , "Kern step for" , " nonexistent character " ) ; printoctal ( tfm [k + 1 ]) ; { putc ( '.' , stderr ); putc ( '\n', stderr ); } tfm [k + 1 ]= bc ; } } left () ; Fputs ( plfile , "KRN" ) ; outchar ( tfm [k + 1 ]) ; r = 256 * ( tfm [k + 2 ]- 128 ) + tfm [k + 3 ]; if ( r >= nk ) { { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s\n", "Bad TFM file: " , "Kern index too large." ) ; } Fputs ( plfile , " R 0.0" ) ; } else outfix ( 4 * ( kernbase + r ) ) ; right () ; } else { if ( ( ( tfm [k + 1 ]< bc ) || ( tfm [k + 1 ]> ec ) || ( tfm [ 4 * ( charbase + tfm [k + 1 ]) ]== 0 ) ) ) { if ( tfm [k + 1 ]!= boundarychar ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%s", "Bad TFM file: " , "Ligature step for" , " nonexistent character " ) ; printoctal ( tfm [k + 1 ]) ; { putc ( '.' , stderr ); putc ( '\n', stderr ); } tfm [k + 1 ]= bc ; } } if ( ( ( tfm [k + 3 ]< bc ) || ( tfm [k + 3 ]> ec ) || ( tfm [ 4 * ( charbase + tfm [k + 3 ]) ]== 0 ) ) ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%s", "Bad TFM file: " , "Ligature step produces the" , " nonexistent character " ) ; printoctal ( tfm [k + 3 ]) ; { putc ( '.' , stderr ); putc ( '\n', stderr ); } tfm [k + 3 ]= bc ; } left () ; r = tfm [k + 2 ]; if ( ( r == 4 ) || ( ( r > 7 ) && ( r != 11 ) ) ) { fprintf ( stderr , "%s\n", "Ligature step with nonstandard code changed to LIG" ) ; r = 0 ; tfm [k + 2 ]= 0 ; } if ( r % 4 > 1 ) putc ( '/' , plfile ); Fputs ( plfile , "LIG" ) ; if ( odd ( r ) ) putc ( '/' , plfile ); while ( r > 3 ) { putc ( '>' , plfile ); r = r - 4 ; } outchar ( tfm [k + 1 ]) ; outchar ( tfm [k + 3 ]) ; right () ; } if ( tfm [k ]> 0 ) { if ( level == 1 ) { if ( tfm [k ]>= 128 ) Fputs ( plfile , "(STOP)" ) ; else { count = 0 ; {register integer for_end; ai = i + 1 ;for_end = i + tfm [k ]; if ( ai <= for_end) do if ( activity [ai ]== 2 ) count = count + 1 ; while ( ai++ < for_end ) ;} fprintf ( plfile , "%s%ld%c", "(SKIP D " , (long)count , ')' ) ; } outln () ; } } } } while ( acti++ < for_end ) ;} if ( level == 2 ) right () ; right () ; hashptr = 0 ; yligcycle = 256 ; {register integer for_end; hh = 0 ;for_end = hashsize ; if ( hh <= for_end) do hash [hh ]= 0 ; while ( hh++ < for_end ) ;} {register integer for_end; c = bc ;for_end = ec ; if ( c <= for_end) do if ( ( tfm [4 * ( charbase + c ) + 2 ]% 4 ) == 1 ) { i = tfm [4 * ( charbase + c ) + 3 ]; if ( tfm [4 * ( ligkernbase + ( i ) ) ]> 128 ) i = 256 * tfm [4 * ( ligkernbase + ( i ) ) + 2 ]+ tfm [4 * ( ligkernbase + ( i ) ) + 3 ]; do { hashinput () ; k = tfm [4 * ( ligkernbase + ( i ) ) ]; if ( k >= 128 ) i = nl ; else i = i + 1 + k ; } while ( ! ( i >= nl ) ) ; } while ( c++ < for_end ) ;} if ( bcharlabel < nl ) { c = 256 ; i = bcharlabel ; do { hashinput () ; k = tfm [4 * ( ligkernbase + ( i ) ) ]; if ( k >= 128 ) i = nl ; else i = i + 1 + k ; } while ( ! ( i >= nl ) ) ; } if ( hashptr == hashsize ) { fprintf ( stderr , "%s\n", "Sorry, I haven't room for so many ligature/kern pairs!" ) ; uexit ( 1 ) ; } {register integer for_end; hh = 1 ;for_end = hashptr ; if ( hh <= for_end) do { r = hashlist [hh ]; if ( classvar [r ]> 0 ) r = ffn ( r , ( hash [r ]- 1 ) / 256 , ( hash [r ]- 1 ) % 256 ) ; } while ( hh++ < for_end ) ;} if ( yligcycle < 256 ) { Fputs ( stderr , "Infinite ligature loop starting with " ) ; if ( xligcycle == 256 ) Fputs ( stderr , "boundary" ) ; else printoctal ( xligcycle ) ; Fputs ( stderr , " and " ) ; printoctal ( yligcycle ) ; { putc ( '!' , stderr ); putc ( '\n', stderr ); } Fputs ( plfile , "(INFINITE LIGATURE LOOP MUST BE BROKEN!)" ) ; uexit ( 1 ) ; } } if ( ne > 0 ) {register integer for_end; c = 0 ;for_end = ne - 1 ; if ( c <= for_end) do {register integer for_end; d = 0 ;for_end = 3 ; if ( d <= for_end) do { k = 4 * ( extenbase + c ) + d ; if ( ( tfm [k ]> 0 ) || ( d == 3 ) ) { if ( ( ( tfm [k ]< bc ) || ( tfm [k ]> ec ) || ( tfm [4 * ( charbase + tfm [k ]) ]== 0 ) ) ) { { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%s", "Bad TFM file: " , "Extensible recipe involves the" , " nonexistent character " ) ; printoctal ( tfm [k ]) ; { putc ( '.' , stderr ); putc ( '\n', stderr ); } } if ( d < 3 ) tfm [k ]= 0 ; } } } while ( d++ < for_end ) ;} while ( c++ < for_end ) ;} docharacters () ; if ( verbose ) { putc ( '.' , stderr ); putc ( '\n', stderr ); } if ( level != 0 ) fprintf ( stderr , "%s\n", "This program isn't working!" ) ; if ( ! perfect ) { Fputs ( plfile , "(COMMENT THE TFM FILE WAS BAD, SO THE DATA HAS BEEN CHANGED!)" ) ; putc ('\n', plfile ); } }
void docharacters ( void ) { byte c ; indextype k ; integer ai ; sortptr = 0 ; {register integer for_end; c = bc ;for_end = ec ; if ( c <= for_end) do if ( tfm [4 * ( charbase + c ) ]> 0 ) { if ( charsonline == 8 ) { { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 1 ; } else { if ( charsonline > 0 ) putc ( ' ' , stderr ); if ( verbose ) charsonline = charsonline + 1 ; } if ( verbose ) printoctal ( c ) ; left () ; Fputs ( plfile , "CHARACTER" ) ; outchar ( c ) ; outln () ; { left () ; Fputs ( plfile , "CHARWD" ) ; if ( tfm [4 * ( charbase + c ) ]>= nw ) { perfect = false ; { putc ( ' ' , stderr ); putc ( '\n', stderr ); } fprintf ( stderr , "%s%s", "Width" , " index for character " ) ; printoctal ( c ) ; fprintf ( stderr , "%s\n", " is too large;" ) ; fprintf ( stderr , "%s\n", "so I reset it to zero." ) ; } else outfix ( 4 * ( widthbase + tfm [4 * ( charbase + c ) ]) ) ; right () ; } if ( ( tfm [4 * ( charbase + c ) + 1 ]/ 16 ) > 0 ) { if ( ( tfm [4 * ( charbase + c ) + 1 ]/ 16 ) >= nh ) { perfect = false ; { putc ( ' ' , stderr ); putc ( '\n', stderr ); } fprintf ( stderr , "%s%s", "Height" , " index for character " ) ; printoctal ( c ) ; fprintf ( stderr , "%s\n", " is too large;" ) ; fprintf ( stderr , "%s\n", "so I reset it to zero." ) ; } else { left () ; Fputs ( plfile , "CHARHT" ) ; outfix ( 4 * ( heightbase + ( tfm [4 * ( charbase + c ) + 1 ]/ 16 ) ) ) ; right () ; } } if ( ( tfm [4 * ( charbase + c ) + 1 ]% 16 ) > 0 ) { if ( ( tfm [4 * ( charbase + c ) + 1 ]% 16 ) >= nd ) { perfect = false ; { putc ( ' ' , stderr ); putc ( '\n', stderr ); } fprintf ( stderr , "%s%s", "Depth" , " index for character " ) ; printoctal ( c ) ; fprintf ( stderr , "%s\n", " is too large;" ) ; fprintf ( stderr , "%s\n", "so I reset it to zero." ) ; } else { left () ; Fputs ( plfile , "CHARDP" ) ; outfix ( 4 * ( depthbase + ( tfm [4 * ( charbase + c ) + 1 ]% 16 ) ) ) ; right () ; } } if ( ( tfm [4 * ( charbase + c ) + 2 ]/ 4 ) > 0 ) { if ( ( tfm [4 * ( charbase + c ) + 2 ]/ 4 ) >= ni ) { perfect = false ; { putc ( ' ' , stderr ); putc ( '\n', stderr ); } fprintf ( stderr , "%s%s", "Italic correction" , " index for character " ) ; printoctal ( c ) ; fprintf ( stderr , "%s\n", " is too large;" ) ; fprintf ( stderr , "%s\n", "so I reset it to zero." ) ; } else { left () ; Fputs ( plfile , "CHARIC" ) ; outfix ( 4 * ( italicbase + ( tfm [4 * ( charbase + c ) + 2 ]/ 4 ) ) ) ; right () ; } } switch ( ( tfm [4 * ( charbase + c ) + 2 ]% 4 ) ) {case 0 : ; break ; case 1 : { left () ; Fputs ( plfile , "COMMENT" ) ; outln () ; i = tfm [4 * ( charbase + c ) + 3 ]; r = 4 * ( ligkernbase + ( i ) ) ; if ( tfm [r ]> 128 ) i = 256 * tfm [r + 2 ]+ tfm [r + 3 ]; do { { k = 4 * ( ligkernbase + ( i ) ) ; if ( tfm [k ]> 128 ) { if ( 256 * tfm [k + 2 ]+ tfm [k + 3 ]>= nl ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s\n", "Bad TFM file: " , "Ligature unconditional stop command address is too big." ) ; } } else if ( tfm [k + 2 ]>= 128 ) { if ( ( ( tfm [k + 1 ]< bc ) || ( tfm [k + 1 ]> ec ) || ( tfm [4 * ( charbase + tfm [k + 1 ]) ]== 0 ) ) ) { if ( tfm [k + 1 ]!= boundarychar ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%s", "Bad TFM file: " , "Kern step for" , " nonexistent character " ) ; printoctal ( tfm [k + 1 ]) ; { putc ( '.' , stderr ); putc ( '\n', stderr ); } tfm [k + 1 ]= bc ; } } left () ; Fputs ( plfile , "KRN" ) ; outchar ( tfm [k + 1 ]) ; r = 256 * ( tfm [k + 2 ]- 128 ) + tfm [k + 3 ]; if ( r >= nk ) { { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s\n", "Bad TFM file: " , "Kern index too large." ) ; } Fputs ( plfile , " R 0.0" ) ; } else outfix ( 4 * ( kernbase + r ) ) ; right () ; } else { if ( ( ( tfm [k + 1 ]< bc ) || ( tfm [k + 1 ]> ec ) || ( tfm [4 * ( charbase + tfm [k + 1 ]) ]== 0 ) ) ) { if ( tfm [k + 1 ]!= boundarychar ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%s", "Bad TFM file: " , "Ligature step for" , " nonexistent character " ) ; printoctal ( tfm [k + 1 ]) ; { putc ( '.' , stderr ); putc ( '\n', stderr ); } tfm [k + 1 ]= bc ; } } if ( ( ( tfm [k + 3 ]< bc ) || ( tfm [k + 3 ]> ec ) || ( tfm [4 * ( charbase + tfm [k + 3 ]) ]== 0 ) ) ) { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%s", "Bad TFM file: " , "Ligature step produces the" , " nonexistent character " ) ; printoctal ( tfm [k + 3 ]) ; { putc ( '.' , stderr ); putc ( '\n', stderr ); } tfm [k + 3 ]= bc ; } left () ; r = tfm [k + 2 ]; if ( ( r == 4 ) || ( ( r > 7 ) && ( r != 11 ) ) ) { fprintf ( stderr , "%s\n", "Ligature step with nonstandard code changed to LIG" ) ; r = 0 ; tfm [k + 2 ]= 0 ; } if ( r % 4 > 1 ) putc ( '/' , plfile ); Fputs ( plfile , "LIG" ) ; if ( odd ( r ) ) putc ( '/' , plfile ); while ( r > 3 ) { putc ( '>' , plfile ); r = r - 4 ; } outchar ( tfm [k + 1 ]) ; outchar ( tfm [k + 3 ]) ; right () ; } if ( tfm [k ]> 0 ) { if ( level == 1 ) { if ( tfm [k ]>= 128 ) Fputs ( plfile , "(STOP)" ) ; else { count = 0 ; {register integer for_end; ai = i + 1 ;for_end = i + tfm [k ]; if ( ai <= for_end) do if ( activity [ai ]== 2 ) count = count + 1 ; while ( ai++ < for_end ) ;} fprintf ( plfile , "%s%ld%c", "(SKIP D " , (long)count , ')' ) ; } outln () ; } } } if ( tfm [k ]>= 128 ) i = nl ; else i = i + 1 + tfm [k ]; } while ( ! ( i >= nl ) ) ; right () ; } break ; case 2 : { r = tfm [4 * ( charbase + c ) + 3 ]; if ( ( ( r < bc ) || ( r > ec ) || ( tfm [4 * ( charbase + r ) ]== 0 ) ) ) { { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s%s", "Bad TFM file: " , "Character list link to" , " nonexistent character " ) ; printoctal ( r ) ; { putc ( '.' , stderr ); putc ( '\n', stderr ); } } tfm [4 * ( charbase + c ) + 2 ]= 4 * ( tfm [4 * ( charbase + c ) + 2 ]/ 4 ) + 0 ; } else { while ( ( r < c ) && ( ( tfm [4 * ( charbase + r ) + 2 ]% 4 ) == 2 ) ) r = tfm [4 * ( charbase + r ) + 3 ]; if ( r == c ) { { perfect = false ; if ( charsonline > 0 ) { putc ( ' ' , stderr ); putc ( '\n', stderr ); } charsonline = 0 ; fprintf ( stderr , "%s%s\n", "Bad TFM file: " , "Cycle in a character list!" ) ; } Fputs ( stderr , "Character " ) ; printoctal ( c ) ; fprintf ( stderr , "%s\n", " now ends the list." ) ; tfm [4 * ( charbase + c ) + 2 ]= 4 * ( tfm [4 * ( charbase + c ) + 2 ]/ 4 ) + 0 ; } else { left () ; Fputs ( plfile , "NEXTLARGER" ) ; outchar ( tfm [4 * ( charbase + c ) + 3 ]) ; right () ; } } } break ; case 3 : if ( tfm [4 * ( charbase + c ) + 3 ]>= ne ) { { perfect = false ; { putc ( ' ' , stderr ); putc ( '\n', stderr ); } fprintf ( stderr , "%s%s", "Extensible" , " index for character " ) ; printoctal ( c ) ; fprintf ( stderr , "%s\n", " is too large;" ) ; fprintf ( stderr , "%s\n", "so I reset it to zero." ) ; } tfm [4 * ( charbase + c ) + 2 ]= 4 * ( tfm [4 * ( charbase + c ) + 2 ]/ 4 ) + 0 ; } else { left () ; Fputs ( plfile , "VARCHAR" ) ; outln () ; {register integer for_end; k = 0 ;for_end = 3 ; if ( k <= for_end) do if ( ( k == 3 ) || ( tfm [4 * ( extenbase + tfm [4 * ( charbase + c ) + 3 ]) + k ]> 0 ) ) { left () ; switch ( k ) {case 0 : Fputs ( plfile , "TOP" ) ; break ; case 1 : Fputs ( plfile , "MID" ) ; break ; case 2 : Fputs ( plfile , "BOT" ) ; break ; case 3 : Fputs ( plfile , "REP" ) ; break ; } if ( ( ( tfm [4 * ( extenbase + tfm [4 * ( charbase + c ) + 3 ]) + k ]< bc ) || ( tfm [4 * ( extenbase + tfm [4 * ( charbase + c ) + 3 ]) + k ]> ec ) || ( tfm [4 * ( charbase + tfm [4 * ( extenbase + tfm [4 * ( charbase + c ) + 3 ]) + k ] ) ]== 0 ) ) ) outchar ( c ) ; else outchar ( tfm [4 * ( extenbase + tfm [4 * ( charbase + c ) + 3 ]) + k ]) ; right () ; } while ( k++ < for_end ) ;} right () ; } break ; } right () ; } while ( c++ < for_end ) ;} }