codemap - C code documentation generator.

Codemap is used for fast creation of sourcecode-based documentation. It generates html documentation from C source code files by analyzing simple meta markup.

Codemap markup has following structure:


	MAP
		SECTION_1
			ELEMENT_1
			ELEMENT_N
		SECTION_N
			ELEMENT_1
			ELEMENT_N

map tag organizes all sections together (under sub-sections) and used to generate documentation index file.

section tag groups elements together.

def tag describe element's like functions, macroses or code examples. Following description tags can be used:

desc - text description till /desc tag.
it - description of some argument till /it tag.
ret - description of returnt value till /ret tag.

After that, def tag copies all code content till end or the next def tag.

All tag declarations must be placed in /** **/ C comment.

Example

This Documentation would be generated on following file:


    /* lib.c */

    #include <stdlib.h>
    #include <stdio.h>

    /** <map>
            <name>HelloWorld API reference manual.</name>

            <desc>HelloWorld project.</desc>

            <sub 'main stuff'>
                <attach 'sectionA'>
            </sub>

            <sub 'other'>
                <attach 'sectionB'>
            </sub>
        </map>
    **/

    /** <section sectionA 'section A name'>
        Description of Some very important stuff from sectionA.
        </section>
    **/

    /** <def sectionA somecallback_t>

        <desc>Callback type used in record listing and matching.
        </desc>

        <it 'ptr'>user specified data.</it>
        <it 'name'>record name.</it>
        <it 'category'>category name.</it>
        <it 'rating'>record rating value.</it>
        <it 'date'>record creation date.</it>
        <it 'update'>record update date.</it>
    **/

    typedef void (*somecallback_t)(void * ptr, char * name,
        char * category, int rating, int date_d, int date_m,
            int date_y, int up_d, int up_m, int up_y);

    /** <def sectionA 'hello_func()'>

        <desc>prints "hello ARG1 world ARG2"</desc>

        <it 'arg1'>arg1 description.</it>
        <it 'arg2'>arg2 description.</it>
        <it 'category'>category name.</it>

        <ret>magic number.</ret>
    **/

    int
    hello_func(char * arg1, char * arg2);

    /** <end> **/

    /** <section sectionB 'section B name'>
        Description of Some very important stuff from sectionB.
        </section>
    **/

    /** <def sectionB 'MAX'>

        <desc>MAX macro description</desc>

        <it 'A, B'>integer arguments</it>
    **/

    #define MAX(A, B) (((A) > (B)) ? (A) : (B))

    /** <end> **/

    int
    hello_func(char * arg1, char * arg2)
    {
        printf("hello %s world %s\n", arg1, arg2);
        return 1234;
    }
	

Download