## @file
# Uncrustify Configuration File for EDK II C Code
#
# Coding Standard: https://edk2-docs.gitbook.io/edk-ii-c-coding-standards-specification/
#
# This configuration file is meant to be a "best attempt" to align with the
# definitions in the EDK II C Coding Standards Specification.
#
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: BSD-2-Clause-Patent
##

# Force UTF-8 encoding (no UTF-16)
enable_digraphs                 = false
utf8_byte                       = false
utf8_force                      = true

# Code width / line splitting
#code_width                      =120     # TODO: This causes non-deterministic behaviour in some cases when code wraps
ls_code_width                   =false
ls_for_split_full               =true
ls_func_split_full              =true
pos_comma                       =trail

# 5.1.7  All files must end with CRLF
newlines                        = crlf

# 5.1.2 Do not use tab characters

cmt_convert_tab_to_spaces       = true      # Whether to convert all tabs to spaces in comments. If false, tabs in
                                            # comments are left alone, unless used for indenting.
indent_columns                  = 2         # Number of spaces for indentation
indent_with_tabs                = 0         # Do not use TAB characters
string_replace_tab_chars        = true      # Replace TAB with SPACE
                                            # Note: This will break .robot files but is needed for edk2 style

# 5.2.1.1 There shall be only one statement on a line (statement ends with ;)
nl_multi_line_cond              = true      # Add a newline between ')' and '{' if the ')' is on a different line than
                                            # the if/for/etc.
nl_after_semicolon              = true      # Whether to add a newline after semicolons, except in 'for' statements.

# 5.2.1.3 An open brace '{' goes on the same line as the closing parenthesis ')' of simple predicate expressions
mod_full_brace_do               = add       # Add or remove braces on a single-line 'do' statement.
mod_full_brace_for              = add
mod_full_brace_function         = add       # Add or remove braces on a single-line function definition.
mod_full_brace_if               = add       # Add or remove braces on a single-line 'if' statement. Braces will not be
                                            # removed if the braced statement contains an 'else'.
mod_full_brace_if_chain         = false
mod_full_brace_while            = add

# 5.2.1.4 A close brace '}' always goes at the beginning of the last line of the body
eat_blanks_after_open_brace     = true
eat_blanks_before_close_brace   = true      # Whether to remove blank lines before '}'.

# 5.2.2.2 Always put space before and after binary operators.
sp_assign                       = add       # Add or remove space around assignment operator '=', '+=', etc.
sp_assign_default               = add
sp_bool                         = add       # Add or remove space around boolean operators '&&' and '||'.
sp_compare                      = add       # Add or remove space around compare operator '<', '>', '==', etc.

# 5.2.2.3 Do not put space between unary operators and their object
sp_addr                         = remove    # A or remove space after the '&' (address-of) unary operator.
sp_incdec                       = remove    # Add or remove space between '++' and '--' the word to which it is being
                                            # applied, as in '(--x)' or 'y++;'.
sp_inv                          = remove    # Add or remove space after the '~' (invert) unary operator.
sp_not                          = remove    # Add or remove space after the '!' (not) unary operator.
sp_sign                         = remove    # Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'.

# 5.2.2.4 Subsequent lines of multi-line function calls should line up two spaces from the beginning of the function
#         name
nl_func_call_args_multi_line    = true      # Whether to add a newline after each ',' in a function call if '(' and ')'
                                            # are in different lines.
nl_func_call_args_multi_line_ignore_closures = false

# - Indent each argument 2 spaces from the start of the function name. If a
#   function is called through a structure or union member, of type
#   pointer-to-function, then indent each argument 2 spaces from the start of the
#   member name.
indent_func_call_edk2_style     = true      # Use EDK2 indentation style for function calls  (**CUSTOM SETTING**)
indent_paren_after_func_call    = true      # Whether to indent the open parenthesis of a function call, if the
                                            # parenthesis is on its own line.

# - Align the close parenthesis with the start of the last argument
indent_paren_close              = 0         # How to indent a close parenthesis after a newline.
                                            # (0: Body, 1: Openparenthesis, 2: Brace level)


# 5.2.2.5 Always put space after commas or semicolons that separate items
sp_after_comma                  = force     # Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
sp_before_comma                 = remove    # Add or remove space before ','.

# 5.2.2.6 Always put space before an open parenthesis
sp_after_sparen                 = add       # Add or remove space after ')' of control statements.
sp_attribute_paren              = add       # Add or remove space between '__attribute__' and '('.
sp_before_sparen                = force     # Add or remove space before '(' of control statements
                                            # ('if', 'for', 'switch', 'while', etc.).
sp_defined_paren                = force     # Add or remove space between 'defined' and '(' in '#if defined (FOO)'.
sp_func_call_paren              = force     # Add or remove space between function name and '(' on function calls.
sp_func_call_paren_empty        = force     # Add or remove space between function name and '()' on function calls
                                            # without parameters. If set to ignore (the default), sp_func_call_paren is
                                            # used.
sp_func_def_paren               = add       # Add or remove space between alias name and '(' of a non-pointer function
                                            # type typedef.
sp_func_proto_paren             = add       # Add or remove space between function name and '()' on function declaration
sp_sizeof_paren                 = force     # Add or remove space between 'sizeof' and '('.
sp_type_func                    = add       # Add or remove space between return type and function name. A minimum of 1
                                            # is forced except for pointer return types.

# Not specified, but also good style to remove spaces inside parentheses (Optional)
sp_cparen_oparen                = remove    # Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
sp_inside_fparen                = remove    # Add or remove space inside function '(' and ')'.
sp_inside_fparens               = remove    # Add or remove space inside empty function '()'.
sp_inside_paren                 = remove    # Add or remove space inside '(' and ')'.
sp_inside_paren_cast            = remove    # Add or remove spaces inside cast parentheses. '(int)x'
sp_inside_square                = remove    # Add or remove space inside a non-empty '[' and ']'.
sp_paren_paren                  = remove    # Add or remove space between nested parentheses, i.e. '((' vs. ') )'.
sp_square_fparen                = remove    # Add or remove space between ']' and '(' when part of a function call.

# 5.2.2.7 Put a space before an open brace if it is not on its own line
sp_do_brace_open                = force     # Add or remove space between 'do' and '{'.
sp_paren_brace                  = force     # Add or remove space between ')' and '{'.
sp_sparen_brace                 = force     # Add or remove space between ')' and '{' of of control statements.

# 5.2.2.8 Do not put spaces around structure member and pointer operators
sp_after_byref                  = remove    # Add or remove space after reference sign '&', if followed by a word.
sp_before_byref                 = add       # Add or remove space before a reference sign '&'.
sp_deref                        = remove    # Add or remove space after the '*' (dereference) unary operator. This does
                                            # not affect the spacing after a '*' that is part of a type.
sp_member                       = remove    # Add or remove space around the '.' or '->' operators.

# 5.2.2.9 Do not put spaces before open brackets of array subscripts
sp_before_square                = remove    # Add or remove space before '[' (except '[]').
sp_before_squares               = remove    # Add or remove space before '[]'.
sp_before_vardef_square         = remove    # Add or remove space before '[' for a variable definition.

# 5.2.2.10 Use extra parentheses rather than depending on in-depth knowledge of the order of precedence of C
mod_full_paren_if_bool          = true      # Whether to fully parenthesize Boolean expressions in 'while' and 'if'
                                            # statement, as in 'if (a && b > c)' => 'if (a && (b > c))'.

# 5.2.2.11 Align a continuation line with the part of the line that it continues.
use_indent_continue_only_once   = true

# Additional '{}' bracing rules (Optional)
# NOTE - The style guide specifies two different styles for braces,
# so these are ignored for now to allow developers some flexibility.
nl_after_brace_close            = true      # Whether to add a newline after '}'. Does not apply if followed by a
                                            # necessary ';'.
nl_brace_else                   = remove    # Add or remove newline between '}' and 'else'.
nl_brace_while                  = remove    # Add or remove newline between '}' and 'while' of 'do' statement.
nl_do_brace                     = remove    # Add or remove newline between 'do' and '{'.
nl_else_brace                   = remove    # Add or remove newline between 'else' and '{'.
nl_else_if                      = remove    # Add or remove newline between 'else' and 'if'.
nl_elseif_brace                 = remove    # Add or remove newline between 'else if' and '{'.
nl_enum_brace                   = remove    # Add or remove newline between 'enum' and '{'.
nl_fcall_brace                  = remove    # Add or remove newline between a function call's ')' and '{',
                                            # as in 'list_for_each(item, &list) { }'.
nl_for_brace                    = remove    # Add or remove newline between 'for' and '{'.
nl_if_brace                     = remove    # Add or remove newline between 'if' and '{'.
nl_struct_brace                 = remove    # Add or remove newline between 'struct and '{'.
nl_switch_brace                 = remove    # Add or remove newline between 'switch' and '{'.
nl_union_brace                  = remove    # Add or remove newline between 'union' and '{'.
nl_while_brace                  = remove    # Add or remove newline between 'while' and '{'.

# Additional whitespace rules (Optional)
sp_after_ptr_star               = remove    # Add or remove space after pointer star '*', if followed by a word.
                                            # Useful when paired with align_var_def_star_style==2
sp_after_ptr_star_func          = remove    # Add or remove space after a pointer star '*', if followed by a function
                                            # prototype or function definition.
sp_after_semi                   = remove    # Add or remove space after ';', except when followed by a comment.
sp_before_case_colon            = remove    # Add or remove space before case ':'.
sp_before_ptr_star              = add       # Add or remove space before pointer star '*'.
sp_before_ptr_star_func         = add       # Add or remove space before a pointer star '*', if followed by a function
                                            # prototype or function definition.
sp_before_semi                  = remove    # Add or remove space before ';'
sp_before_semi_for              = remove    # Add or remove space before ';' in non-empty 'for' statements.
sp_before_semi_for_empty        = add       # Add or remove space before a semicolon of an empty part of a for statement
sp_between_ptr_star             = remove    # Add or remove space between pointer stars '*'. (ie, 'VOID **')
sp_brace_close_while            = force     # Add or remove space between '}' and 'while'.

sp_after_cast                   = remove
sp_after_type                   = add
sp_balance_nested_parens        = false
sp_before_nl_cont               = add
sp_before_square_asm_block      = ignore
sp_before_unnamed_byref         = add
sp_brace_brace                  = ignore
sp_brace_else                   = force
sp_brace_typedef                = add
sp_case_label                   = force
sp_cmt_cpp_doxygen              = true
sp_cond_colon                   = add
sp_cond_question                = add
sp_cpp_cast_paren               = force
sp_else_brace                   = force
sp_endif_cmt                    = force
sp_enum_assign                  = add
sp_inside_braces                = force
sp_inside_braces_empty          = force
sp_inside_braces_enum           = force
sp_inside_braces_struct         = force
sp_pp_concat                    = add
sp_pp_stringify                 = add
sp_return_paren                 = add
sp_special_semi                 = force
sp_while_paren_open             = force

# Additional Indentation Rules
indent_access_spec              = 1
indent_access_spec_body         = false
indent_align_assign             = true
indent_align_string             = true
indent_bool_paren               = true
indent_brace_parent             = false
indent_braces                   = false
indent_braces_no_class          = false
indent_braces_no_func           = true
indent_braces_no_struct         = false
indent_class                    = true
indent_class_colon              = false
indent_cmt_with_tabs            = false         # Whether to indent comments that are not at a brace level with tabs on
                                                # a tabstop. Requires indent_with_tabs=2. If false, will use spaces.
indent_col1_comment             = true
indent_col1_multi_string_literal= true
indent_comma_paren              = true
indent_else_if                  = true
indent_extern                   = true
indent_first_bool_expr          = true

indent_func_def_param_paren_pos_threshold = 0
indent_func_param_double                  = false
indent_func_proto_param                   = true
indent_ignore_asm_block                   = true
indent_label                              = 1
indent_member                             = 2
indent_namespace                          = false
indent_param                              = 2
indent_paren_nl                           = false
indent_paren_open_brace                   = false
indent_preserve_sql                       = false
indent_relative_single_line_comments      = false
indent_sing_line_comments                 = 0
indent_single_newlines                    = false
indent_square_nl                          = false
indent_switch_case                        = 2
indent_template_param                     = true
indent_var_def_blk                        = 0
indent_var_def_cont                       = false

# Tidy-up rules (Optional)
mod_move_case_break             = true      # Whether to move a 'break' that appears after a fully braced 'case'
                                            # before the close brace, as in 'case X: { ... } break;' =>
                                            # 'case X: { ... break; }'.
mod_pawn_semicolon              = false
mod_remove_empty_return         = false     # Whether to remove a void 'return;' that appears as the last statement
                                            # in a function.
mod_remove_extra_semicolon      = true
mod_sort_import                 = false
mod_sort_include                = false
mod_sort_using                  = false
nl_after_case                   = false     # Whether to add a newline after a 'case' statement.
nl_end_of_file                  = force     # Add or remove newline at the end of the file.
nl_end_of_file_min              = 1         # The minimum number of newlines at the end of the file
nl_max                          = 2         # The maximum number of consecutive newlines (3 = 2 blank lines).
nl_start_of_file                = remove    # Add or remove newlines at the start of the file.

# Code alignment rules (Optional)
align_asm_colon                 = false
align_assign_span               = 1         # The span for aligning on '=' in assignments.
align_assign_thresh             = 0
align_edk2_style                = true      # Whether to apply edk2-specific alignment formatting
align_enum_equ_span             = 1         # The span for aligning on '=' in enums.
align_func_params               = true      # Whether to align variable definitions in prototypes and functions.
align_func_params_gap           = 2
align_func_params_span          = 2         # The span for aligning parameter definitions in function on parameter name.
align_func_params_thresh        = 0
align_func_proto_span           = 0
align_keep_tabs                 = false
align_left_shift                = false
align_mix_var_proto             = false
align_nl_cont                   = false
align_oc_decl_colon             = false
align_on_operator               = false
align_on_tabstop                = false
align_pp_define_gap             = 2
align_pp_define_span            = 1
align_right_cmt_at_col          = 0         # Align trailing comment at or beyond column N; 'pulls in' comments as
                                            # a bonus side effect (0=ignore)
align_right_cmt_gap             = 0         # If a trailing comment is more than this number of columns away from the
                                            # text it follows,
                                            # it will qualify for being aligned. This has to be > 0 to do anything.
align_right_cmt_mix             = false     # If aligning comments, mix with comments after '}' and #endif with less
                                            # than 3 spaces before the comment
align_right_cmt_same_level      = true      # Whether to only align trailing comments that are at the same brace level.
align_right_cmt_span            = 2         # The span for aligning comments that end lines.
align_same_func_call_params     = false
align_single_line_brace         = true
align_single_line_func          = true
align_struct_init_span          = 1         # The span for aligning struct initializer values.
align_typedef_amp_style         = 1
align_typedef_func              = 1         # How to align typedef'd functions with other typedefs.
                                            # (0: No align, 1: Align open paranthesis, 2: Align function type name)
align_typedef_gap               = 2
align_typedef_span              = 1         # The span for aligning single-line typedefs.
align_typedef_star_style        = 1
align_var_def_amp_style         = 1
align_var_def_attribute         = true
align_var_def_colon             = true      # Whether to align the colon in struct bit fields.
align_var_def_gap               = 2         # The gap (minimum spacing for aligned items) for variable definitions.
align_var_def_inline            = false
align_var_def_span              = 1         # The span (lines needed to align) for aligning variable definitions.
align_var_def_star_style        = 1         # How to consider (or treat) the '*' in the alignment of variable
                                            # definitions.
                                            # 0: Part of the type     'void *   foo;' (default)
                                            # 1: Part of the variable 'void     *foo;'
                                            # 2: Dangling             'void    *foo;'
                                            # (Note - should also set sp_after_ptr_star=remove)
align_var_struct_gap            = 4
align_var_struct_span           = 8         # The span for aligning struct/union member definitions.
align_var_struct_thresh         = 0
align_with_tabs                 = false

# Comment formatting
cmt_align_doxygen_javadoc_tags  = true      # Whether to align doxygen javadoc-style tags ('@param', '@return', etc.)
                                            # TODO: Eats '[' in '[in]'
cmt_c_group                     = false
cmt_c_nl_end                    = true      # Whether to add a newline before the closing '*/' of the combined c-comment.
cmt_c_nl_start                  = true
cmt_cpp_group                   = false
cmt_cpp_nl_end                  = true
cmt_cpp_nl_start                = true
cmt_cpp_to_c                    = false
cmt_indent_multi                = false     # Whether to apply changes to multi-line comments, including cmt_width,
                                            # keyword substitution and leading chars.
cmt_insert_before_preproc       = false
#cmt_insert_file_header          = default_file_header.txt
#cmt_insert_func_header          = default_function_header.txt
cmt_multi_check_last            = false
cmt_multi_first_len_minimum     = 2
cmt_reflow_mode                 = 1         # How to reflow comments.
                                            # (0:No reflow, 1:No touching at all, 2: Full reflow)
cmt_sp_after_star_cont          = 0         # The number of spaces to insert after the star on subsequent comment lines.
cmt_sp_before_star_cont         = 0         # The number of spaces to insert at the start of subsequent comment lines.
cmt_star_cont                   = false     # Whether to put a star on subsequent comment lines.
cmt_width                       = 120       # Try to wrap comments at N columns.
sp_cmt_cpp_start                = add       # Add or remove space after the opening of a C++ comment, as in
                                            # '// <here> A'.  NOTE: Breaks indentation within comments.

# Function definitions / declarations
indent_func_call_param          = false     # Whether to indent continued function call parameters one indent level,
                                            # rather than aligning parameters under the open parenthesis.
indent_func_class_param         = false     # Whether to indent continued function call declaration one indent level,
                                            # rather than aligning parameters under the open parenthesis.
indent_func_ctor_var_param      = false     # Whether to indent continued class variable constructors one indent level,
                                            # rather than aligning parameters under the open parenthesis.
indent_func_def_param           = true      # Whether to indent continued function definition parameters one indent
                                            # level, rather than aligning parameters under the open parenthesis.
nl_fdef_brace                   = add       # Add or remove newline between function signature and '{'.
nl_func_call_end_multi_line     = true      # Whether to add a newline before ')' in a function call if '(' and ')' are
                                            # in different lines.
nl_func_call_paren              = remove    # Add or remove newline between a function name and the opening '(' in the
                                            # call.
nl_func_call_start_multi_line   = true      # Whether to add a newline after '(' in a function call if '(' and ')' are
                                            # in different lines.
nl_func_decl_args               = force     # Add or remove newline after each ',' in a function declaration.
nl_func_decl_empty              = add       # Add or remove newline between '()' in a function declaration.
nl_func_def_args                = force     # Add or remove newline after each ',' in a function definition.
nl_func_def_empty               = add       # Add or remove newline between '()' in a function definition.
nl_func_def_paren               = remove    # Add or remove newline between a function name and the opening '('
                                            # in the definition.
nl_func_paren                   = remove    # Add or remove newline between a function name and the opening '(' in
                                            # the declaration.
nl_func_type_name               = add       # Add or remove newline between return type and function name in a function
                                            # definition.
sp_fparen_brace                 = force     # Add or remove space between ')' and '{' of function.
use_indent_func_call_param      = true      # indent_func_call_param will be used

# Additional Newline Rules
nl_after_brace_open                          = true     # Whether to add a newline after '{'. This also adds a newline
                                                        # before the matching '}'.
nl_after_brace_open_cmt                      = true     # Whether to add a newline between the open brace and a
                                                        # trailing single-line comment.
                                                        # Requires nl_after_brace_open = true.
nl_after_do                                  = add      # Add or remove blank line after 'do/while' statement.
nl_after_for                                 = add      # Add or remove blank line after 'for' statement.
nl_after_func_body                           = 2        # The number of newlines after '}' of a multi-line function body
nl_after_func_body_one_liner                 = 2
nl_after_func_proto                          = 2
nl_after_func_proto_group                    = 2
nl_after_if                                  = add
nl_after_multiline_comment                   = false
nl_after_return                              = false
nl_after_struct                              = 2
nl_after_switch                              = add
nl_after_vbrace_close                        = true
nl_after_vbrace_open                         = true
nl_after_vbrace_open_empty                   = true
nl_after_while                               = add
nl_assign_leave_one_liners                   = true
nl_before_block_comment                      = 2
nl_before_case                               = false
nl_before_do                                 = ignore
nl_before_for                                = ignore
nl_before_if                                 = ignore
nl_before_switch                             = ignore
nl_before_while                              = ignore
nl_before_whole_file_ifdef                   = 2
nl_brace_brace                               = force
nl_brace_struct_var                          = remove
nl_case_colon_brace                          = add
nl_class_leave_one_liners                    = false
nl_collapse_empty_body                       = false
nl_comment_func_def                          = 1
nl_create_for_one_liner                      = false
nl_create_if_one_liner                       = false
nl_create_while_one_liner                    = false
nl_define_macro                              = false
nl_ds_struct_enum_close_brace                = true
nl_ds_struct_enum_cmt                        = false
nl_enum_leave_one_liners                     = false
nl_func_decl_end                             = add
nl_func_decl_start                           = add
nl_func_def_end                              = add
nl_func_def_start                            = add
nl_func_leave_one_liners                     = false
nl_func_proto_type_name                      = add
nl_func_var_def_blk                          = 1
nl_getset_leave_one_liners                   = false
nl_if_leave_one_liners                       = false
nl_multi_line_define                         = false
nl_squeeze_ifdef                             = false
nl_var_def_blk_end                           = 0
nl_var_def_blk_start                         = 0

# Preprocessor Rules
pp_define_at_level      = true
pp_if_indent_code       = false
pp_indent_func_def      = false
pp_indent_extern        = false
pp_ignore_define_body   = true                # Workaround: Turn off processing for #define body
                                              # (current rules do not work for some defines)
pp_indent               = add
pp_indent_at_level      = true
pp_indent_count         = 2
pp_indent_if            = 2
pp_indent_region        = 2
pp_region_indent_code   = false
pp_space                = remove

#
# The tokens below are assigned specific types so they are always recognized properly.
#

# Explicitly define EDK II qualifiers
set QUALIFIER CONST
set QUALIFIER EFIAPI
set QUALIFIER IN
set QUALIFIER OPTIONAL
set QUALIFIER OUT

# Explicitly define EDK II types
set TYPE EFI_STATUS
set TYPE VOID
