diff --git a/utils_maintenance/code_clean.py b/utils_maintenance/code_clean.py index 8d08e74d45929aacd456e4e7b2b5a07ad5e2ad06..2169c27d9ad6f08e6748aa1346abd3f52aa86c6c 100755 --- a/utils_maintenance/code_clean.py +++ b/utils_maintenance/code_clean.py @@ -496,7 +496,7 @@ class edit_generators: class use_brief_types(EditGenerator): """ - Use zero before the float suffix. + Use less verbose unsigned types. Replace: unsigned int @@ -526,6 +526,42 @@ class edit_generators: return edits + class use_nullptr(EditGenerator): + """ + Use ``nullptr`` instead of ``NULL`` for C++ code. + + Replace: + NULL + With: + nullptr + """ + @staticmethod + def edit_list_from_file(source: str, data: str, _shared_edit_data: Any) -> List[Edit]: + edits = [] + + # The user might exclude C++, if they forget, it is better not to operate on C. + if not source.lower().endswith((".h", ".c")): + return edits + + # `NULL` -> `nullptr`. + for match in re.finditer(r"\bNULL\b", data): + edits.append(Edit( + span=match.span(), + content='nullptr', + content_fail='__ALWAYS_FAIL__', + )) + + # There may be some remaining uses of `unsigned` without any integer type afterwards. + # `unsigned` -> `uint`. + for match in re.finditer(r"\bunsigned\b", data): + edits.append(Edit( + span=match.span(), + content='uint', + content_fail='__ALWAYS_FAIL__', + )) + + return edits + class unused_arg_as_comment(EditGenerator): """ Replace `UNUSED(argument)` in C++ code.