---
# System prepended metadata

title: Documentation Format
tags: [NTURT, electrical_system]

---

# Documentation Format
###### tags: `electrical_system` `NTURT`

## General comment

:::info
Start with two slash and a spece, with all lower case letter without period in the end.
:::

Ex. (C++)

```cpp=
// some comments
int variable_name;
```

## Doxygen

### Documentation session

:::info
Doxygen documentation sentence should start with a capital letter and ends with a period as a complete sentence.
:::

for multiple line documentation block:

```cpp=
/**
 * @author My name (my.email@com)
 * @brief Brief explanation.
 * 
 * Detailed explanation.
 */
class ClassName{};
```
for single line documentation
```cpp=
/// @brief Brief explanation.
int variable_name;
```

### How to document

:::info
Doxygen documentation should all only be in header files (hpp) in `include` directory, not in source files.
:::

### What should be documented

:::info

1. File documentation
2. Class/struct documentation
3. Variables/functions in header files

:::

Ex. (C++)

```cpp=
/**
 * @file header.hpp
 * @author Your name (my.email@com)
 * @brief Brief explanation of the file.
 */

#ifndef HEADER_HPP
#define HEADER_HPP

/**
 * @author Your name
 * @brief Brief explanation of the class.
 */
class SomeClass {
    public:
        /**
         * @brief Brief explanation of the function.
         * @param[in] _argument Brief explanation of the argument.
         * @return Brief explanation of the return.
         */
        int do_something(int _argument);
    
    private:
        /// @brief Brief explanation of the variable.
        int variable_;
}

```

### How to generate dyxygen output

#### Doxyfile

In Doxyfile (config file for doxygen), plaese change to the following settings:

```doxyfile=

...

PROJECT_NAME = "NAME_OF_THE_PROJECT"

PROJECT_NUMBER = "CURRENT_VERSION"

PROJECT_BRIEF = "BRIEF_OF_THE_PROJECT"

PROJECT_LOGO = "doc/NTU_Racing_Logo.png"

OUTPUT_DIRECTORY = "doxygen"

...

INPUT = "include" "README.md" "software_development_log.md"

...

USE_MATHJAX = YES

...

EXTRACT_PRIVATE = YES

...

USE_MDFILE_AS_MAINPAGE = "README.md"

...

```

:::info

Note: The logo for ntu racing can be found at here: [NTU_Racing_Logo](https://drive.google.com/file/d/1ZWAv9gL6xUT7SqnzocaX3FoD65A2lTtD/view?usp=sharing).

:::

## README

:::info
A README file should incorporate the following aspects of the program:
1. Usage
2. Functionality
:::