void lay_abspref( lay_tag ltag ) { char * p; condcode cc; int k; lay_att curr; att_args l_args; int cvterr; lay_sub x_tag; abspref_lay_tag * ap; p = scan_start; cvterr = false; if( !GlobalFlags.firstpass ) { scan_start = scan_stop; eat_lay_sub_tag(); return; // process during first pass only } switch( ltag ) { case LAY_TAG_ABSTRACT: x_tag = el_abstract; ap = &layout_work.abstract; break; case LAY_TAG_PREFACE: x_tag = el_preface; ap = &layout_work.preface; break; default: out_msg( "WGML logic error glabsprf.c.\n"); file_mac_info(); err_count++; break; } if( ProcFlags.lay_xxx != x_tag ) { ProcFlags.lay_xxx = x_tag; } cc = get_lay_sub_and_value( &l_args ); // get att with value while( cc == pos ) { cvterr = -1; for( k = 0, curr = abspref_att[k]; curr > 0; k++, curr = abspref_att[k] ) { if( !strnicmp( att_names[curr], l_args.start[0], l_args.len[0] ) ) { p = l_args.start[1]; switch( curr ) { case e_post_skip: cvterr = i_space_unit( p, curr, &(ap->post_skip) ); break; case e_pre_top_skip: cvterr = i_space_unit( p, curr, &(ap->pre_top_skip) ); break; case e_font: cvterr = i_font_number( p, curr, &(ap->font) ); if( ap->font >= wgml_font_cnt ) ap->font = 0; break; case e_spacing: cvterr = i_int8( p, curr, &(ap->spacing) ); break; case e_header: cvterr = i_yes_no( p, curr, &(ap->header) ); break; case e_abstract_string: if( x_tag == el_abstract ) { cvterr = i_xx_string( p, curr, ap->string ); } break; case e_preface_string: if( x_tag == el_preface ) { cvterr = i_xx_string( p, curr, ap->string ); } break; case e_page_eject: cvterr = i_page_eject( p, curr, &(ap->page_eject) ); break; case e_page_reset: cvterr = i_yes_no( p, curr, &(ap->page_reset) ); break; case e_columns: cvterr = i_int8( p, curr, &(ap->columns) ); break; default: out_msg( "WGML logic error.\n"); cvterr = true; break; } if( cvterr ) { // there was an error err_count++; g_err( err_att_val_inv ); file_mac_info(); } break; // break out of for loop } } if( cvterr < 0 ) { err_count++; g_err( err_att_name_inv ); file_mac_info(); } cc = get_lay_sub_and_value( &l_args ); // get one with value } scan_start = scan_stop; return; }
void lay_appendix( const gmltag * entry ) { char * p; condcode cc; int k; lay_att curr; att_args l_args; int cvterr; p = scan_start; cvterr = false; if( !GlobalFlags.firstpass ) { scan_start = scan_stop + 1; eat_lay_sub_tag(); return; // process during first pass only } if( ProcFlags.lay_xxx != el_appendix ) { ProcFlags.lay_xxx = el_appendix; } cc = get_lay_sub_and_value( &l_args ); // get att with value while( cc == pos ) { cvterr = -1; for( k = 0, curr = appendix_att[k]; curr > 0; k++, curr = appendix_att[k] ) { if( !strnicmp( att_names[curr], l_args.start[0], l_args.len[0] ) ) { p = l_args.start[1]; switch( curr ) { case e_indent: cvterr = i_space_unit( p, curr, &layout_work.hx.hx_head[hds_appendix].indent ); break; case e_pre_top_skip: cvterr = i_space_unit( p, curr, &layout_work.hx.hx_sect[hds_appendix].pre_top_skip ); break; case e_pre_skip: cvterr = i_space_unit( p, curr, &layout_work.hx.hx_head[hds_appendix].pre_skip ); break; case e_post_skip: cvterr = i_space_unit( p, curr, &layout_work.hx.hx_sect[hds_appendix].post_skip ); break; case e_spacing: cvterr = i_int8( p, curr, &layout_work.hx.hx_sect[hds_appendix].spacing ); break; case e_font: cvterr = i_font_number( p, curr, &layout_work.hx.hx_sect[hds_appendix].text_font ); if( layout_work.hx.hx_sect[hds_appendix].text_font >= wgml_font_cnt ) { layout_work.hx.hx_sect[hds_appendix].text_font = 0; } break; case e_number_font: cvterr = i_font_number( p, curr, &layout_work.hx.hx_head[hds_appendix].number_font ); if( layout_work.hx.hx_head[hds_appendix].number_font >= wgml_font_cnt ) { layout_work.hx.hx_head[hds_appendix].number_font = 0; } break; case e_number_form: cvterr = i_number_form( p, curr, &layout_work.hx.hx_head[hds_appendix].number_form ); break; case e_page_position: cvterr = i_page_position( p, curr, &layout_work.hx.hx_head[hds_appendix].line_position ); break; case e_number_style: cvterr = i_number_style( p, curr, &layout_work.hx.hx_head[hds_appendix].number_style ); break; case e_page_eject: cvterr = i_page_eject( p, curr, &layout_work.hx.hx_head[hds_appendix].page_eject ); break; case e_line_break: cvterr = i_yes_no( p, curr, &layout_work.hx.hx_head[hds_appendix].line_break ); break; case e_display_heading: cvterr = i_yes_no( p, curr, &layout_work.hx.hx_head[hds_appendix].display_heading ); break; case e_number_reset: cvterr = i_yes_no( p, curr, &layout_work.hx.hx_head[hds_appendix].number_reset ); break; case e_case: cvterr = i_case( p, curr, &layout_work.hx.hx_head[hds_appendix].hd_case ); break; case e_align: cvterr = i_space_unit( p, curr, &layout_work.hx.hx_head[hds_appendix].align ); break; case e_header: cvterr = i_yes_no( p, curr, &layout_work.hx.hx_sect[hds_appendix].header ); break; case e_appendix_string: cvterr = i_xx_string( p, curr, &layout_work.appendix.string ); break; case e_page_reset: cvterr = i_yes_no( p, curr, &layout_work.appendix.page_reset ); break; case e_section_eject: cvterr = i_page_eject( p, curr, &layout_work.appendix.section_eject ); break; case e_columns: cvterr = i_int8( p, curr, &layout_work.appendix.columns ); break; default: out_msg( "WGML logic error.\n"); cvterr = true; break; } if( cvterr ) { // there was an error err_count++; g_err( err_att_val_inv ); file_mac_info(); } break; // break out of for loop } } if( cvterr < 0 ) { err_count++; g_err( err_att_name_inv ); file_mac_info(); } cc = get_lay_sub_and_value( &l_args ); // get att with value } scan_start = scan_stop + 1; return; }