Objective
- Semantic annotations for source code
- Able to integrate with or generate tags for
Syntax
Operators
Operator | Meaning |
! | error |
? | warning |
Attributes
Tag | splint | doxygen | Meaning |
in | @in | @param [in] | Input parameter |
out | @out | @param [out] | Output parameter |
inout | @in @out | @param[in,out] | |
nullin | @null | - | Null input is ok |
nullout | | | Null output is ok |
zeroin | | | Zero input is ok |
zeroout | | | Zero output is ok |
pointer | | | Target is a pointer type |
Example
Plain C
extern int
handle_init(void* handle);
Commented C
/*
* Initialize the handle.
*
* Returns non-zero on error.
*/
extern int
handle_init(
void* handle /* pointer to handle, can be null */
);
splint
/* Initialize the handle.
*
* Returns non-zero on error.
*/
extern int
handle_init(
/*@out*/ /*@null@*/ void* handle /* pointer to handle */
);
Doxygen
/**
* Initialize the handle.
*
* @return non-zero on error
*/
extern int
handle_init(
void* handle /**< [out] pointer to handle, can be null */
);
splint and Doxygen
/**
* Initialize the handle.
*
* @return non-zero on error
*/
extern int
handle_init(
/*@out*/ /*@null@*/ void* handle /**< [out] pointer to handle, can be null */
);
GAC
/** Initialize the handle. */
extern int /**< @!notzero */
handle_init(
void* handle /**< @inout @nullin @?nullout @pointer to handle */
);
Notes
- Aim to document only what can't be expressed in code