{{ indent_str }}{{ function.prototype }}
{{ indent_str * 2 }}{{ function.brief }}

{% if function.description %}
{{ function.description|smartwrap(indent*2) }}

{% endif %}
{% if function.arguments %}
{{ indent_str * 2 }}Arguments:
{% with longest = function.arguments|map('firstword')|map('length')|max %}
{% for argument in function.arguments %}
{{ indent_str * 3 }}{{ "{a:{w}}"|format(a=argument|firstword, w=longest) }} - {{ argument|body }}
{% endfor %}
{% endwith %}

{% endif %}
{% if function.return_codes %}
{{ indent_str * 2 }}Return codes:
{% for return_code in function.return_codes %}
{{ indent_str * 3 }}{{ return_code|firstword }} - {{ return_code|body }}
{% endfor %}

{% endif %}
{% if function.preconditions %}
{{ indent_str * 2 }}Pre-conditions:
{% for precondition in function.preconditions %}
{{ indent_str * 3 }}{{ precondition }}
{% endfor %}

{% endif %}
{% if function.seealso %}
{{ indent_str * 2 }}See also:
{% for seealso in function.seealso %}
{{ indent_str * 3 }}{{ seealso }}
{% endfor %}

{% endif %}
{% if function.stdin %}
{{ indent_str * 2 }}Standard input:
{% for stdin in function.stdin %}
{{ indent_str * 3 }}{{ stdin }}
{% endfor %}

{% endif %}
{% if function.stdout %}
{{ indent_str * 2 }}Standard output:
{% for stdout in function.stdout %}
{{ indent_str * 3 }}{{ stdout }}
{% endfor %}

{% endif %}
{% if function.stderr %}
{{ indent_str * 2 }}Standard error:
{% for stderr in function.stderr %}
{{ indent_str * 3 }}{{ stderr }}
{% endfor %}

{% endif %}
