A cpp documentation generator written in python3 which parses the cpp source files for comments written in this format 📠 📝 :
/**
* @method <method name>
* @access <access specifier>
* @desc <multi/single line description>
*
* @param {<param1 type>} <param1 name> <param1 description (multi/single line)>
* @param {<param2 type>} <param2 name> <param2 description (multi/single line)>
* @returns {<return type>} <return value description(multi/single line)>
*/
Supported tags are @method
, @access
, @desc
, @param
, @returns
, @namespace
, @class
, @construct
.
cd cpp_doc_generation
./cpp_doc_generator -f <cpp_source_file.cpp> <cpp_source_file.hpp> .... -d <destination_dir>
Note that by default the destination directory is your current working directory
Markdown for each source file will be generated in the given destination directory (default: current working directory) by the name: source_file.md
// example.cpp
#include <iostream>
#include <vector>
/**
* @function someFunc
* @desc Multiplies every number in the collection of given input numbers by
* the given multiplier
*
* @param {std::vector<int>} _v Collection of integers
* @param {int} _multiplier Amount to multiply every number by
* @returns {std::vector<int>} Collection of results
*/
auto times(const std::vector<int>& _v, const int& _multiplier){
std::vector<int> res;
for(auto &x: _v){
res.push_back(x * _multiplier);
}
return res;
}
int main(){
std::vector<int> my_vec{4, 6, 8, 2, 1};
auto twice = times(my_vec, 2);
std::cout << "Double of my_vec:";
for (auto &x: twice){
std::cout << ' ' << x;
}
std::cout << '\n';
auto thrice = times(my_vec, 3);
std::cout << "Thrice of my_vec:";
for (auto &x: thrice){
std::cout << ' ' << x;
}
return 0;
}
Running cpp doc generator on the above example.cpp like this:
./cpp_doc_generator.py -f example.cpp
Markdown generated file example.md
is:
## **someFunc**
>Multiplies every number in the collection of given input numbers by the given multiplier
```
auto times(const std::vector<int>& _v, const int& _multiplier)
```
### PARAMETERS:
| NAME | TYPE | DESCRIPTION |
|------ | ------ | -------------|
|_v|std::vector<int>|Collection of integers|
|_multiplier|int|Amount to multiply every number by|
### RETURN VALUE:
|TYPE | DESCRIPTION |
|------|-------------|
|std::vector<int>|Collection of results|
___
Which renders like this:
Support of @throws
tag coming soon