コード例 #1
0
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;
}
コード例 #2
0
ファイル: gldate.c プロジェクト: ABratovic/open-watcom-v2
void    lay_date( const gmltag * entry )
{
    char            *   p;
    condcode            cc;
    int                 k;
    lay_att             curr;
    att_args            l_args;
    int                 cvterr;

    entry = entry;
    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_date ) {
        ProcFlags.lay_xxx = el_date;
    }
    cc = get_lay_sub_and_value( &l_args );  // get att with value
    while( cc == pos ) {
        cvterr = -1;
        for( k = 0, curr = date_att[k]; curr > 0; k++, curr = date_att[k] ) {

            if( !strnicmp( att_names[curr], l_args.start[0], l_args.len[0] ) ) {
                p = l_args.start[1];

                switch( curr ) {
                case   e_date_form:
                    p = l_args.start[0] + l_args.len[0];
                    cvterr = i_date_form( p, curr, layout_work.date.date_form );
                    break;
                case   e_left_adjust:
                    cvterr = i_space_unit( p, curr, &layout_work.date.left_adjust );
                    break;
                case   e_right_adjust:
                    cvterr = i_space_unit( p, curr, &layout_work.date.right_adjust );
                    break;
                case   e_page_position:
                    cvterr = i_page_position( p, curr, &layout_work.date.page_position );
                    break;
                case   e_font:
                    cvterr = i_font_number( p, curr, &layout_work.date.font );
                    if( layout_work.date.font >= wgml_font_cnt ) {
                        layout_work.date.font = 0;
                    }
                    break;
                case   e_pre_skip:
                    cvterr = i_space_unit( p, curr,
                                           &layout_work.date.pre_skip );
                    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;
}
コード例 #3
0
ファイル: glbanreg.c プロジェクト: Ukusbobra/open-watcom-v2
void    lay_banregion( const gmltag * entry )
{
    char        *   p;
    condcode        cc;
    int             k;
    lay_att         curr;
    att_args        l_args;
    bool            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_banregion ) {
        if( ProcFlags.lay_xxx == el_banner ) {
            lay_banner_end_prepare();
        }
        ProcFlags.lay_xxx = el_banregion;

        init_banregion_wk( &wk );

    } else {
        if( !strnicmp( ":banregion", buff2, sizeof( ":banregion" ) ) ) {
            err_count++;
            g_err( err_nested_tag, entry->tagname );
            file_mac_info();

            while( !ProcFlags.reprocess_line  ) {
                eat_lay_sub_tag();
                if( strnicmp( ":ebanregion", buff2, sizeof( ":ebanregion" ) ) ) {
                    ProcFlags.reprocess_line = false;// not :ebanregion, go on
                }
            }
            return;
        }
    }
    cc = get_lay_sub_and_value( &l_args );              // get att with value
    while( cc == pos ) {
        cvterr = true;
        for( k = 0; k < att_count; k++ ) {
            curr = banregion_att[k];

            if( !strnicmp( att_names[curr], l_args.start[0], l_args.len[0] ) ) {
                p = l_args.start[1];

                if( count[k] ) {
                    cvterr = 1;                  // attribute specified twice
                } else {
                    count[k] += 1;
                    sum_count++;
                    switch( curr ) {
                    case   e_indent:
                        cvterr = i_space_unit( p, curr, &wk.indent );
                        break;
                    case   e_hoffset:
                        cvterr = i_space_unit( p, curr, &wk.hoffset );
                        break;
                    case   e_width:
                        cvterr = i_space_unit( p, curr, &wk.width );
                        break;
                    case   e_voffset:
                        cvterr = i_space_unit( p, curr, &wk.voffset );
                        break;
                    case   e_depth:
                        cvterr = i_space_unit( p, curr, &wk.depth );
                        break;
                    case   e_font:
                        cvterr = i_font_number( p, curr, &wk.font );
                        if( wk.font >= wgml_font_cnt )
                            wk.font = 0;
                        break;
                    case   e_refnum:
                        cvterr = i_int8( p, curr, &wk.refnum );
                        break;
                    case   e_region_position:
                        cvterr = i_page_position( p, curr, &wk.region_position );
                        break;
                    case   e_pouring:
                        cvterr = i_pouring( p, curr, &wk.pouring );
                        break;
                    case   e_script_format:
                        cvterr = i_yes_no( p, curr, &wk.script_format );
                        break;
                    case   e_contents:
                        if( l_args.quoted ) {
                            wk.contents.content_type = string_content;
                            cvterr = i_xx_string( p, curr, wk.contents.string );
                        } else {
                            cvterr = i_content( p, curr, &wk.contents );
                        }
                        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
            }
        }
        cc = get_lay_sub_and_value( &l_args );  // get att with value
    }
    scan_start = scan_stop + 1;
    return;
}