Generator/RB_Generate_MultiDoc [ Functions ]

FUNCTION

Create documentation by creating a file for each individual source file that was scanned.

SYNOPSIS

void RB_Generate_MultiDoc(
    struct RB_Document *document )

INPUTS

document -- pointer to the RB_Document structure.

SOURCE

{
    struct RB_Part     *i_part;
    FILE               *document_file = NULL;

    RB_Document_Determine_DocFilePaths( document );
    RB_Document_Create_DocFilePaths( document );
    if ( document->actions.do_one_file_per_header )
    {
        RB_Document_Split_Parts( document );
    }
    RB_Document_Determine_DocFileNames( document );
    RB_Document_Collect_Headers( document );
    if ( document->actions.do_nosort )
    {
        /* Nothing */
    }
    else
    {
        RB_Document_Sort_Headers( document );
    }
    RB_Document_Link_Headers( document );
    RB_Fill_Header_Filename( document );
    RB_Name_Headers( document->headers, document->no_headers );
    RB_Sort_Items( document->headers, document->no_headers );
    RB_CollectLinks( document, document->headers, document->no_headers );
    if ( output_mode == HTML )
    {
        RB_Create_CSS( document );
    }


    for ( i_part = document->parts; i_part != NULL; i_part = i_part->next )
    {

        char               *srcname = Get_Fullname( i_part->filename );
        char               *docname = RB_Get_FullDocname( i_part->filename );

        /* Nothing found in this part, do not generate it */
        if ( i_part->headers == 0 )
            continue;


        if ( output_mode != TROFF )
        {
            document_file = RB_Open_Documentation( i_part );
            RB_Generate_Doc_Start( document,
                                   document_file, srcname, srcname, 1,
                                   docname, document->charset );

            Generate_Begin_Navigation( document_file );
            if ( document->actions.do_one_file_per_header )
            {
                RB_HTML_Generate_Nav_Bar_One_File_Per_Header( document,
                                                              document_file,
                                                              i_part->
                                                              headers );
            }
            else
            {
                Generate_IndexMenu( document_file, docname, document );
            }
            Generate_End_Navigation( document_file );

            Generate_Begin_Content( document_file );

            if ( ( document->actions.do_toc ) && document->no_headers )
            {
                RB_Generate_TOC_2( document_file,
                                   document->headers, document->no_headers,
                                   i_part, docname );
            }
            RB_Generate_Part( document_file, document, i_part );
            Generate_End_Content( document_file );

            RB_Generate_Doc_End( document_file, docname, srcname );
            fclose( document_file );
        }
        else
        {
            RB_Generate_Part( document_file, document, i_part );
        }
    }

    if ( document->actions.do_index )
    {
        Generate_Index( document );
    }

    RB_Free_Links(  );
}