}
+void Generate_Header_IndexMenu(
+ FILE *dest_doc,
+ char *filename,
+ struct RB_Part *owner,
+ struct RB_Document *document )
+{
+ switch ( output_mode )
+ {
+ case HTML:
+ RB_HTML_Generate_Header_IndexMenu( dest_doc, filename,
+ document, owner, NULL );
+ break;
+ default:
+ break;
+ }
+
+}
+
+void Generate_Module_IndexMenu(
+ FILE *dest_doc,
+ char *filename,
+ struct RB_Document *document )
+{
+ switch ( output_mode )
+ {
+ case HTML:
+ RB_HTML_Generate_Module_IndexMenu( dest_doc, filename,
+ document, NULL );
+ break;
+ default:
+ break;
+ }
+
+}
+
void Generate_Begin_Extra(
FILE *dest_doc )
{
case XMLDOCBOOK:
break;
case HTML:
- if ( course_of_action.do_one_file_per_header )
+ if ( course_of_action.do_one_file_per_header )
{
/* Nothing */
}
/****f* Generator/RB_Sort_Items
* FUNCTION
* Sort the items in all the headers according to the order
- * specified in the 'item order' block in the robodoc.rc
+ * specified in the 'item order' block in the robodoc.rc
* file.
* SYNOPSIS
*/
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,
+ document_file, srcname,
+ i_part->filename->name, 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 );
+ if ( document->actions.do_module_index_menu )
+ {
+ if ( i_part->headers[0].htype->typeCharacter == 'h' )
+ Generate_Module_IndexMenu( document_file, docname,
+ document );
+ else
+ Generate_Header_IndexMenu( document_file, docname,
+ i_part, document );
+ }
+ else
+ {
+ RB_HTML_Generate_Nav_Bar_One_File_Per_Header( document,
+ document_file,
+ i_part->
+ headers );
+ }
}
else
{
i_part, docname );
}
RB_Generate_Part( document_file, document, i_part );
+
+ if ( document->actions.do_header_toc && output_mode == HTML )
+ {
+ if ( document->actions.do_one_file_per_header &&
+ i_part->headers[0].htype->typeCharacter == 'h' )
+ RB_HTML_Generate_TOC_Entries( document_file,
+ document->headers,
+ document->no_headers,
+ i_part, docname );
+ }
+
Generate_End_Content( document_file );
RB_Generate_Doc_End( document_file, docname, srcname );
}
}
+ if ( document->actions.do_header_toc && output_mode == HTML )
+ {
+ if ( i_part->headers[0].htype->typeCharacter == 'h' )
+ RB_HTML_Generate_TOC_Entries( document_file,
+ document->headers,
+ document->no_headers,
+ i_part,
+ document->parts->filename->name );
+ }
+
RB_Generate_Doc_End( document_file, "singledoc",
document->srcroot->name );
fclose( document_file );
RB_TROFF_Set_Param( document->compress, document->section );
}
-
for ( i_header = part->headers; i_header; i_header = i_header->next )
{
RB_Say( "generating documentation for header \"%s\"\n", SAY_INFO,
{
if ( utf8_isspace( c ) )
{
- /* We found the end of the string, so we go
+ /* We found the end of the string, so we go
* back to the space skipping state
*/
state = SKIP_SPACE;
/****v* Globals/document_title
* NAME
- * documentat_title -- title for the documentation.
+ * document_title -- title for the documentation.
* PURPOSE
* Used as the title for master index files or for latex documentation.
* SOURCE
/******/
+/****v* Globals/document_header
+ * NAME
+ * document_header -- Header for the documentation.
+ * PURPOSE
+ * Used as the header of generated files
+ * SOURCE
+ */
+
+char *document_header = NULL;
+
+/******/
+
+
+/****v* Globals/document_footer
+ * NAME
+ * document_footer -- Footer for the documentation.
+ * PURPOSE
+ * Used as the footer of generated files
+ * SOURCE
+ */
+
+char *document_footer = NULL;
+
+/******/
+
+
/****v* Globals/output_mode [2.0]
* NAME
* output_mode -- the mode of output
/*******/
/*
- * Global variables
+ * Global variables
*/
/* TODO Document these. */
// Default document title
#define DEFAULT_DOCTITILE "API Reference"
-// Document title
+// Document title, header and footer
extern char *document_title;
+extern char *document_header;
+extern char *document_footer;
extern char *source_file; /* DCD */
/*******/
+void RB_HTML_Generate_TOC_Entries(
+ FILE *dest_doc,
+ struct RB_header **headers,
+ int count,
+ struct RB_Part *owner,
+ char *dest_name )
+{
+ struct RB_header *header;
+ char *object_name, *label_name, *file_name;
+ int i, j;
+
+// fprintf( dest_doc, "<h3>Table of Contents</h3>\n" );
+ fprintf( dest_doc, "<p class=\"item_name\">TABLE OF CONTENTS</p>\n" );
+ fprintf( dest_doc, "<ul class=\"toc_entries\">\n" );
+
+ for ( i = count - 1; i >= 0; i-- )
+ {
+ header = headers[i];
+
+ if ( header->htype->typeCharacter != 'h' &&
+ !strcmp( owner->filename->name, header->owner->filename->name ) &&
+ Find_Link( header->function_name,
+ &object_name, &label_name,
+ &file_name ) )
+ {
+ for ( j = 0; j < header->no_names; j++ )
+ {
+ fprintf( dest_doc, "<li class=\"toc_entries\">" );
+ RB_HTML_Generate_Link( dest_doc,
+ dest_name,
+ file_name,
+ "",
+ object_name, 0);
+ fprintf( dest_doc, "</li>\n" );
+ }
+ }
+ }
+
+ fprintf( dest_doc, "</ul>\n" );
+}
+
+
void RB_HTML_Generate_TOC_2(
FILE *dest_doc,
struct RB_header **headers,
/*
* INPUTS
* o dest_doc -- the output file.
- * o src_name -- The file or directoryname from which
+ * o src_name -- The file or directoryname from which
* this document is generated.
* o name -- The title for this document
* o dest_name -- the name of the output file.
// HTML_Generate_Div( dest_doc, "container" );
- /* Generate document title if available (Thuffir) */
- HTML_Generate_Div( dest_doc, "logo" );
- fprintf( dest_doc, "<a name=\"robo_top_of_doc\">" );
- if ( document_title )
- RB_HTML_Generate_String( dest_doc, document_title );
- fprintf( dest_doc, "</a>\n" );
- HTML_Generate_Div_End( dest_doc, "logo" );
-
-
-
+ /* Use user specified header if present */
+ if ( document_header )
+ {
+ fprintf ( dest_doc, document_header );
+ }
+ else
+ {
+ /* Generate document title if available (Thuffir) */
+ HTML_Generate_Div( dest_doc, "logo" );
+ fprintf( dest_doc, "<a name=\"robo_top_of_doc\">" );
+ if ( document_title )
+ RB_HTML_Generate_String( dest_doc, document_title );
+ fprintf( dest_doc, "</a>\n" );
+ HTML_Generate_Div_End( dest_doc, "logo" );
+ }
}
/******/
USE( name );
-
- HTML_Generate_Div( dest_doc, "footer" );
- /* TODO This should be done with
- * RB_Generate_Label()
- */
- if ( course_of_action.do_nogenwith )
+ /* Use user specified footer if present */
+ if ( document_footer )
{
- fprintf( dest_doc, "<p>Generated from %s on ", src_name );
- RB_TimeStamp( dest_doc );
- fprintf( dest_doc, "</p>\n" );
+ fprintf ( dest_doc, document_footer );
}
else
{
- fprintf( dest_doc,
- "<p>Generated from %s with <a href=\"http://www.xs4all.nl/~rfsber/Robo/robodoc.html\">ROBODoc</a> V%s on ",
- src_name, VERSION );
- RB_TimeStamp( dest_doc );
- fprintf( dest_doc, "</p>\n" );
+ HTML_Generate_Div( dest_doc, "footer" );
+
+ /* TODO This should be done with
+ * RB_Generate_Label()
+ */
+ if ( course_of_action.do_nogenwith )
+ {
+ fprintf( dest_doc, "<p>Generated from %s on ", src_name );
+ RB_TimeStamp( dest_doc );
+ fprintf( dest_doc, "</p>\n" );
+ }
+ else
+ {
+ fprintf( dest_doc,
+ "<p>Generated from %s with <a href=\"http://www.xs4all.nl/~rfsber/Robo/robodoc.html\">ROBODoc</a> V%s on ",
+ src_name, VERSION );
+ RB_TimeStamp( dest_doc );
+ fprintf( dest_doc, "</p>\n" );
+ }
+
+ HTML_Generate_Div_End( dest_doc, "footer" );
}
- HTML_Generate_Div_End( dest_doc, "footer" );
// HTML_Generate_Div_End( dest_doc, "container" );
if ( cur_header->name && cur_header->function_name )
{
- fprintf( dest_doc, "<hr />\n" );
+/* fprintf( dest_doc, "<hr />\n" ); */
RB_HTML_Generate_Label( dest_doc, cur_header->name );
fprintf( dest_doc, "</a><a name=\"%s\"></a><h2>",
cur_header->unique_name );
}
}
+/****f* HTML_Generator/RB_HTML_Generate_Header_IndexMenu
+ * FUNCTION
+ * Generates a menu to jump to the header's entries. The menu is
+ * generated for each entry file.
+ * SYNOPSIS
+ */
+void RB_HTML_Generate_Header_IndexMenu(
+ FILE *dest_doc,
+ char *filename,
+ struct RB_Document *document,
+ struct RB_Part *owner,
+ struct RB_HeaderType *cur_type )
+ /* TODO Use cur_type */
+/*
+ * INPUTS
+ * * dest_doc -- the output file.
+ * * filename -- the name of the output file
+ * * document -- the gathered documention.
+ * * cur_headertype -- the header type that is to be highlighted.
+ ******
+ */
+{
+ struct RB_header *header;
+ char *object_name, *label_name, *file_name;
+ int i, j;
+
+ for ( i = document->no_headers - 1; i >= 0; i-- )
+ {
+ header = document->headers[i];
+
+ if ( !strcmp( owner->filename->name, header->owner->filename->name ) &&
+ ( header->htype->typeCharacter == 'h' ||
+ Find_Link( header->function_name,
+ &object_name, &label_name,
+ &file_name ) ) )
+ {
+ for ( j = 0; j < header->no_names; j++ )
+ {
+ if ( header->htype->typeCharacter == 'h' )
+ {
+ RB_HTML_Generate_Link( dest_doc,
+ filename,
+ header->owner->filename->docname,
+ NULL,
+ header->function_name,
+ "menuitem" );
+ fprintf( dest_doc, "\n" );
+ }
+ else
+ {
+ RB_HTML_Generate_Link( dest_doc,
+ filename,
+ file_name,
+ "",
+ object_name,
+ "menuitem" );
+ fprintf( dest_doc, "\n" );
+ }
+ }
+ }
+ }
+}
+
+/****f* HTML_Generator/RB_HTML_Generate_Module_IndexMenu
+ * FUNCTION
+ * Generates a menu to jump to the different modules. The menu is
+ * generated for each header file.
+ * SYNOPSIS
+ */
+void RB_HTML_Generate_Module_IndexMenu(
+ FILE *dest_doc,
+ char *filename,
+ struct RB_Document *document,
+ struct RB_HeaderType *cur_type )
+ /* TODO Use cur_type */
+/*
+ * INPUTS
+ * * dest_doc -- the output file.
+ * * filename -- the name of the output file
+ * * document -- the gathered documention.
+ * * cur_headertype -- the header type that is to be highlighted.
+ ******
+ */
+{
+ struct RB_Part *i_part;
+
+ for ( i_part = document->parts; i_part != NULL; i_part = i_part->next )
+ {
+ if ( !i_part->headers ||
+ i_part->headers[0].htype->typeCharacter != 'h' ||
+ !strcmp(i_part->headers[0].function_name,
+ "ROBODoc Cascading Style Sheet") )
+ continue;
+ RB_HTML_Generate_Link( dest_doc,
+ filename,
+ i_part->filename->docname,
+ NULL,
+ i_part->headers[0].function_name,
+ "menuitem" );
+ fprintf( dest_doc, "\n" );
+ }
+}
+
+
/****f* HTML_Generator/RB_HTML_Generate_Index_Page
* FUNCTION
* Generate a single file with a index table for headers
else
{
/* File opened, now we generate an index
- * for the specified header type
+ * for the specified header type
*/
RB_HTML_Generate_Doc_Start( file,
document->srcroot->name,
{
fprintf( cur_doc, "<a " );
}
- if ( filename && strcmp( filename, cur_name ) )
+ if ( filename && strcmp( filename, cur_name ) && labelname)
{
char *r = RB_HTML_RelativeAddress( cur_name, filename );
fprintf( cur_doc, "href=\"%s#%s\">", r, labelname );
RB_HTML_Generate_String( cur_doc, linkname );
fprintf( cur_doc, "</a>" );
-
}
- else
+ else if (labelname)
{
fprintf( cur_doc, "href=\"#%s\">", labelname );
RB_HTML_Generate_String( cur_doc, linkname );
fprintf( cur_doc, "</a>" );
}
+ else
+ {
+ fprintf( cur_doc, "href=\"%s\">", filename);
+ RB_HTML_Generate_String( cur_doc, linkname );
+ fprintf( cur_doc, "</a>" );
+ }
}
/******/
* The following two
* this /sub1/sub2/sub3/f.html
* that /sub1/sub2/g.html
- * result in
+ * result in
* ../g.html
*
* this /sub1/f.html
void RB_HTML_Generate_Item_End(
FILE *dest_doc,
char *name );
+void RB_HTML_Generate_TOC_Entries(
+ FILE *dest_doc,
+ struct RB_header **headers,
+ int count,
+ struct RB_Part *owner,
+ char *dest_name );
void RB_HTML_Generate_TOC_2(
FILE *dest_doc,
struct RB_header **headers,
char *filename,
struct RB_Document *document,
struct RB_HeaderType *cur_type );
+void RB_HTML_Generate_Header_IndexMenu(
+ FILE *dest_doc,
+ char *filename,
+ struct RB_Document *document,
+ struct RB_Part *owner,
+ struct RB_HeaderType *cur_type );
+void RB_HTML_Generate_Module_IndexMenu(
+ FILE *dest_doc,
+ char *filename,
+ struct RB_Document *document,
+ struct RB_HeaderType *cur_type );
#endif /* ROBODOC_HTML_GENERATOR_H */
* In addition to the links derived from the headers links are
* also derived from the names of all the sourcefiles.
* MODIFICATION HISTORY
- * ????-??-?? Frans Slothouber V1.0
+ * ????-??-?? Frans Slothouber V1.0
* 2003-02-03 Frans Slothouber Refactoring
*******
* $Header: /cvsroot/robodoc/robo/Source/links.c,v 1.43 2007/07/10 19:13:52 gumpu Exp $
* SYNOPSIS
*/
void
-RB_CollectLinks( struct RB_Document *document,
+RB_CollectLinks( struct RB_Document *document,
struct RB_header **headers,
unsigned long count )
/*
* INPUTS
- * * document --
+ * * document --
* * headers -- the array with headers.
* * count -- number of headers in the array
* OUTPUT
int k;
struct RB_Part *i_part;
- for ( i = j = 0; i < count; ++i )
+ for ( i = j = 0; i < count; ++i )
{
j += headers[i]->no_names - 1;
}
{
for ( i_part = document->parts; i_part; i_part = i_part->next )
{
- if ( i_part->headers )
+ if ( i_part->headers )
{
link_index_size++;
}
assert( header->file_name );
for( k = 0; k < header->no_names; j++, k++ )
{
- link = RB_Alloc_Link( header->unique_name, function_name(header->names[k]),
- header->file_name );
+ link = RB_Alloc_Link( header->unique_name,
+ header->function_name,
+ header->file_name );
link->htype = header->htype;
link->is_internal = header->is_internal;
link_index[j] = link;
{
for ( i_part = document->parts; i_part; i_part = i_part->next )
{
- if ( i_part->headers )
+ if ( i_part->headers )
{
struct RB_link *link;
* Searches for the given word in the list of links and
* headers. There are three passes (or four, when the C option
* is selected). Each pass uses a different definition of "word":
- * o In the first pass it is any thing that ends with a 'space', a '.'
+ * o In the first pass it is any thing that ends with a 'space', a '.'
* or a ','.
* o In the second pass it is any string that consists of alpha
- * numerics, '_', ':', '.', or '-'.
- * o In the third pass (for C) it is any string that consists
+ * numerics, '_', ':', '.', or '-'.
+ * o In the third pass (for C) it is any string that consists
* of alpha numerics or '_'.
* SYNOPSIS
*/
int
-Find_Link( char *word_begin,
- char **object_name,
+Find_Link( char *word_begin,
+ char **object_name,
char **label_name,
char **file_name )
/*
case 2:
{
for ( cur_char = word_begin;
- utf8_isalnum( *cur_char ) || ( *cur_char == '_');
+ utf8_isalnum( *cur_char ) || ( *cur_char == '_');
cur_char++ );
break;
}
old_char = *cur_char;
*cur_char = '\0'; /*
- * End the word with a '\0'
+ * End the word with a '\0'
*/
if ( strlen( word_begin ) == length )
{
length = strlen( word_begin );
/* RB_Say ("Testing (pass %d) \"%s\"\n", SAY_INFO, pass, word_begin); */
/*
- * Search case sensitive for a link
+ * Search case sensitive for a link
*/
for ( cur_index = 0, low_index = 0, high_index =
link_index_size - 1; high_index >= low_index; )
* Search case insensitive for a link.
* But only when the user asks for this.
*/
- if ( course_of_action.do_ignore_case_when_linking )
+ if ( course_of_action.do_ignore_case_when_linking )
{
for ( cur_index = 0, low_index = 0, high_index =
*/
static struct RB_link *
RB_Alloc_Link( char *label_name, char *object_name, char *file_name )
-/*
+/*
* INPUTS
* char *label_name -- strings to copy into the link
* char *file_name
struct RB_link *new_link;
assert( object_name );
- assert( label_name );
assert( file_name );
RB_Say( "Allocating a link (%s %s %s)\n", SAY_DEBUG, object_name, label_name, file_name );
new_link = malloc( sizeof( struct RB_link ) );
new_link->file_name = RB_StrDup( file_name );
new_link->object_name = RB_StrDup( object_name );
- new_link->label_name = RB_StrDup( label_name );
+ new_link->label_name = label_name ? RB_StrDup( label_name ) : NULL;
return ( new_link );
}
}
/******/
-
/****t* UserInterface/Option_Test_Kind
* FUNCTION
- * Enumeration for the kind of tests that are carried out on the
+ * Enumeration for the kind of tests that are carried out on the
* options that the user specifies.
* SOURCE
*/
"--singlefile",
"--multidoc",
"--one_file_per_header",
+ "--module_index_menu",
+ "--header_toc",
"--first_section_level",
"--sections",
"--internal",
"--masterindex",
"--sourceindex",
"--header_breaks",
+ "--document_header",
+ "--document_footer",
( char * ) NULL
};
static void Add_Option_Name(
struct RB_Option_Test *option_test,
char *name )
-/*
+/*
* INPUTS
* option_test -- the option test
* name -- the name of the option
/****f* UserInterface/Do_Option_Tests
* FUNCTION
* Run a series of tests on the options that the user
- * specified. These tests are specified in
+ * specified. These tests are specified in
* option_tests.
* SYNOPSIS
*/
* The whole ROBODoc process consists of three steps: scanning,
* analysing, generating.
*
- * Scanning
+ * Scanning
*
* ROBODoc scans the source directory tree. This collects the names of
* all the source files.
* Generating
*
* In this step the headers are written to one or more documentation files.
- * In addition
+ * In addition
*
*
* The data collected during scanning and analysing is stored in a
* another RB_Path structure that tells in which directory is a directory
* located (of which directory it is a subdirectory). The only exception
* is the root directory.
- *
+ *
* Besides the name of the sourcefile, the RB_Filename also stores the
* name of the documentation file.
- *
+ *
* For each sourcefile there is an RB_Part structure. It contains a
* pointer (filename) to the RB_Filename and a list (headers) of
* RB_Header structure containing the headers found in the sourcefile.
- *
+ *
* Every RB_Header structure contains a pointer (owner) to the RB_Part
* structure to which it belongs. Headers can form a hierarchy that is
* used to create sections and subsections in the documentation. To
* headers, SubModule is the parent of SubSubModule.
* ****h* TopModule/SubModule
* *
- * ****
- *
+ * ****
+ *
* ****h* SubModule/SubSubModule
* *
- * ****
- *
+ * ****
+ *
* In the documentation this creates the sections
* 1.TopModule
* 1.1 SubModule
* 1.1.1 SubSubModule
- *
+ *
* The RB_Directory and the linked list of RB_Part structures are
* stored in a RB_Document structure.
- *
+ *
* During the generation of the documentation ROBODoc tries to create
* cross links between the mention of a header's name (an object) and the
* documentation generated from that header (the documentation for the
* object).
- *
+ *
* To aid this proces there is an array of RB_link structures. This
* array is sorted for quick searching. RB_link structures the name
* of a header and the name of the label under which the documentation
" Specify the tile and filename for master index page\n"
" --sourceindex title,filename\n"
" Specify the tile and filename for source files index page\n"
+ " --document_header filename\n"
+ " Read document header from specified file\n"
+ " --document_footer filename\n"
+ " Read document footer from specified file\n"
" --one_file_per_header\n"
" Create a separate documentation file for each header\n"
+ " --module_index_menu\n"
+ " Create a module menu when used with --one_file_per_header\n"
+ " --header_toc\n"
+ " Create a header TOC when used with --one_file_per_header\n"
" --header_breaks NUMBER\n"
" Insert a linebreak after every NUMBER header names\n"
" (default value: 2, set to zero to disable)\n" "\n";
struct RB_Directory *srctree = NULL;
char *optstr = NULL;
char *used_rc_file = NULL;
+ char *doc_h = NULL;
+ char *doc_f = NULL;
+ char buffer[8192];
+ int r_len;
long debug = 0;
/*
TODO, make setlocale work.
char * loc;
- if ( (loc = getenv("LC_CTYPE") ) != NULL )
+ if ( (loc = getenv("LC_CTYPE") ) != NULL )
{
printf( ".... %s\n", loc );
setlocale( LC_ALL, loc);
document->compress = Find_Parameterized_Option( "--compress" );
document->section = Find_Parameterized_Option( "--mansection" );
document_title = Find_Parameterized_Option( "--documenttitle" );
+ doc_h = Find_Parameterized_Option( "--document_header" );
+ doc_f = Find_Parameterized_Option( "--document_footer" );
optstr = Find_Parameterized_Option( "--first_section_level" );
if ( optstr )
{
return EXIT_FAILURE;
}
+ /* Open header and footer files */
+ if ( doc_h )
+ {
+ FILE *dh = fopen( doc_h, "r" );
+ if ( !dh )
+ {
+ printf( "Error: '%s' no such file or directory\n", doc_h );
+ Print_Short_Use( );
+ return EXIT_FAILURE;
+ }
+
+ memset( buffer, 0, sizeof( buffer ) );
+ r_len = fread ( buffer, 1, sizeof( buffer ), dh );
+ if ( r_len > 0 )
+ {
+ document_header = calloc( r_len, sizeof( *document_header ) );
+ memcpy( document_header, buffer, r_len );
+ }
+ fclose( dh );
+ }
+ if ( doc_f )
+ {
+ FILE *df = fopen( doc_f, "r" );
+ if ( !df )
+ {
+ printf( "Error: '%s' no such file or directory\n", doc_f );
+ Print_Short_Use( );
+ return EXIT_FAILURE;
+ }
+
+ memset( buffer, 0, sizeof( buffer ) );
+ r_len = fread ( buffer, 1, sizeof( buffer ), df );
+ if ( r_len > 0 )
+ {
+ document_footer = calloc( r_len, sizeof( *document_footer ) );
+ memcpy( document_footer, buffer, r_len );
+ }
+ fclose( df );
+ }
+
/* What mode are we using? */
if ( Find_Option( "--multidoc" ) )
{
* other function of robodoc that expect a '/'.
* So to prevent this we replace all the '\' in a path
* with '/'
- *
+ *
* In addition people sometimes add a '/' at the
* end of the path. We remove it.
*
{
actions.do_one_file_per_header = TRUE;
}
+ else if ( !RB_Str_Case_Cmp( configuration.options.names[parameter_nr],
+ "--module_index_menu" ) )
+ {
+ actions.do_module_index_menu = TRUE;
+ }
+ else if ( !RB_Str_Case_Cmp( configuration.options.names[parameter_nr],
+ "--header_toc" ) )
+ {
+ actions.do_header_toc = TRUE;
+ }
else if ( !RB_Str_Case_Cmp( configuration.options.names[parameter_nr],
"--sections" ) )
{
* Search for an option of the form
* --a_option_name a_value
* in argv. The function is used to look for the
- * --rc
- * option that can be used to specify an
+ * --rc
+ * option that can be used to specify an
* alternate robodoc configuration file.
* SYNOPSIS
*/
int do_singlefile:1;
int do_one_file_per_header:1;
int do_no_subdirectories:1;
+ int do_module_index_menu:1;
+ int do_header_toc:1;
// Latex options
int do_altlatex:1;
* Enumeration for the various output formats that are
* supported by ROBODoc.
* NOTES
- * These should be prefixed with RB_
+ * These should be prefixed with RB_
* SOURCE
*/
void );
#endif /* ROBODOC_ROBODOC_H */
-