# Configuration options for Uncrustify specifying the Mbed TLS code style.
#
# Note: The code style represented by this file has not yet been introduced
# to Mbed TLS.
#
# Copyright The Mbed TLS Contributors
# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later


# Wrap lines at 100 characters
code_width = 100

# Allow splitting long for statements between the condition statements
ls_for_split_full = true

# Allow splitting function calls between arguments
ls_func_split_full = true

input_tab_size = 4

# Spaces-only indentation
indent_with_tabs = 0

indent_columns = 4

# Indent 'case' 1 level from 'switch'
indent_switch_case = indent_columns

# Line-up strings broken by '\'
indent_align_string = true

# Braces on the same line (Egyptian-style braces)
nl_enum_brace = remove
nl_union_brace = remove
nl_struct_brace = remove
nl_do_brace = remove
nl_if_brace = remove
nl_for_brace = remove
nl_else_brace = remove
nl_while_brace = remove
nl_switch_brace = remove

# Braces on same line as keywords that follow them - 'else' and the 'while' in 'do {} while ()';
nl_brace_else = remove
nl_brace_while = remove
# Space before else on the same line
sp_brace_else = add
# If else is on the same line as '{', force exactly 1 space between them
sp_else_brace = force

# Functions are the exception and have braces on the next line
nl_fcall_brace = add
nl_fdef_brace = add

# Force exactly one space between ')' and '{' in statements
sp_sparen_brace = force

# At least 1 space around assignment
sp_assign = add

# Remove spaces around the preprocessor '##' token-concatenate
sp_pp_concat = ignore

# At least 1 space around '||' and '&&'
sp_bool = add

# But no space after the '!' operator
sp_not = remove

# No space after the bitwise-not '~' operator
sp_inv = remove

# No space after the addressof '&' operator
sp_addr = remove

# No space around the member '.' and '->' operators
sp_member = remove

# No space after the dereference '*' operator
sp_deref = remove

# No space after a unary negation '-'
sp_sign = remove

# No space between the '++'/'--' operator and its operand
sp_incdec = remove

# At least 1 space around comparison operators
sp_compare = add

# Remove spaces inside all kinds of parentheses:

# Remove spaces inside parentheses
sp_inside_paren = remove

# No spaces inside statement parentheses
sp_inside_sparen = remove

# No spaces inside cast parentheses '( char )x' -> '(char)x'
sp_inside_paren_cast = remove

# No spaces inside function parentheses
sp_inside_fparen = remove
# (The case where the function has no parameters/arguments)
sp_inside_fparens = remove

# No spaces inside the first parentheses in a function type
sp_inside_tparen = remove

# (Uncrustify >= 0.74.0) No spaces inside parens in for statements
sp_inside_for = remove

# Remove spaces between nested parentheses '( (' -> '(('
sp_paren_paren = remove
# (Uncrustify >= 0.74.0)
sp_sparen_paren = remove

# Remove spaces between ')' and adjacent '('
sp_cparen_oparen = remove

# (Uncrustify >= 0.73.0) space between 'do' and '{'
sp_do_brace_open = force

# (Uncrustify >= 0.73.0) space between '}' and 'while'
sp_brace_close_while = force

# At least 1 space before a '*' pointer star
sp_before_ptr_star = add

# Remove spaces between pointer stars
sp_between_ptr_star = remove

# No space after a pointer star
sp_after_ptr_star = remove

# But allow a space in the case of e.g. char * const x;
sp_after_ptr_star_qualifier = ignore

# Remove space after star in a function return type
sp_after_ptr_star_func = remove

# At least 1 space after a type in variable definition etc
sp_after_type = add

# Force exactly 1 space between a statement keyword (e.g. 'if') and an opening parenthesis
sp_before_sparen = force

# Remove a space before a ';'
sp_before_semi = remove
# (Uncrustify >= 0.73.0) Remove space before a semi in a non-empty for
sp_before_semi_for = remove
# (Uncrustify >= 0.73.0) Remove space in empty first statement of a for
sp_before_semi_for_empty = remove
# (Uncrustify >= 0.74.0) Remove space in empty middle statement of a for
sp_between_semi_for_empty = remove

# Add a space after a ';' (unless a comment follows)
sp_after_semi = add
# (Uncrustify >= 0.73.0) Add a space after a semi in non-empty for statements
sp_after_semi_for = add
# (Uncrustify >= 0.73.0) No space after final semi in empty for statements
sp_after_semi_for_empty = remove

# Remove spaces on the inside of square brackets '[]'
sp_inside_square = remove

# Must have at least 1 space after a comma
sp_after_comma = add

# Must not have a space before a comma
sp_before_comma = remove

# No space before the ':' in a case statement
sp_before_case_colon = remove

# Must have space after a cast - '(char)x' -> '(char) x'
sp_after_cast = add

# No space between 'sizeof' and '('
sp_sizeof_paren = remove

# At least 1 space inside '{ }'
sp_inside_braces = add

# At least 1 space inside '{ }' in an enum
sp_inside_braces_enum = add

# At least 1 space inside '{ }' in a struct
sp_inside_braces_struct = add

# At least 1 space between a function return type and the function name
sp_type_func = add

# No space between a function name and its arguments/parameters
sp_func_proto_paren = remove
sp_func_def_paren = remove
sp_func_call_paren = remove

# No space between '__attribute__' and '('
sp_attribute_paren = remove

# No space between 'defined' and '(' in preprocessor conditions
sp_defined_paren = remove

# At least 1 space between a macro's name and its definition
sp_macro = add
sp_macro_func = add

# Force exactly 1 space between a '}' and the name of a typedef if on the same line
sp_brace_typedef = force

# At least 1 space before a '\' line continuation
sp_before_nl_cont = add

# At least 1 space around '?' and ':' in ternary statements
sp_cond_colon = add
sp_cond_question = add

# Space between #else/#endif and comment afterwards
sp_endif_cmt = add

# Remove newlines at the start of a file
nl_start_of_file = remove

# At least 1 newline at the end of a file
nl_end_of_file = add
nl_end_of_file_min = 1

# Add braces in single-line statements
mod_full_brace_do = add
mod_full_brace_for = add
mod_full_brace_if = add
mod_full_brace_while = add

# Remove parentheses from return statements
mod_paren_on_return = remove

# Disable removal of leading spaces in a multi-line comment if the first and
# last lines are the same length
cmt_multi_check_last = false
