diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2022-12-04 19:16:43 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2022-12-04 19:38:30 +0900 |
commit | fdcd72088371b3d8dfd31f2a5159861ce0be5535 (patch) | |
tree | 06c160cc34157344f62b6c19af297858a0e57157 /debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.cpp | |
parent | a5d7db3b2c6171ea9e76b84155d2dfb66c243e5a (diff) | |
download | extra-dependencies-fdcd72088371b3d8dfd31f2a5159861ce0be5535.tar.gz extra-dependencies-fdcd72088371b3d8dfd31f2a5159861ce0be5535.zip |
uncrustify-trinity: updated based on upstream version 0.76.0
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.cpp')
-rw-r--r-- | debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.cpp | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.cpp new file mode 100644 index 00000000..d44d5799 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.76.0/src/enum_cleanup.cpp @@ -0,0 +1,96 @@ +/** + * @file enum_cleanup.cpp + * works on the last comma within enum + * + * @author Guy Maurel Juli 2018 + * @license GPL v2+ + */ + +#include "enum_cleanup.h" + +#include "log_rules.h" + +constexpr static auto LCURRENT = LTOK; + +using namespace uncrustify; + + +void enum_cleanup() +{ + LOG_FUNC_ENTRY(); + + log_rule_B("mod_enum_last_comma"); + + if (options::mod_enum_last_comma() == IARF_IGNORE) + { + // nothing to do + return; + } + Chunk *pc = Chunk::GetHead(); // Issue #858 + + while (pc->IsNotNullChunk()) + { + if ( pc->GetParentType() == CT_ENUM + && pc->Is(CT_BRACE_CLOSE)) + { + LOG_FMT(LTOK, "%s(%d): orig line is %zu, type is %s\n", + __func__, __LINE__, pc->GetOrigLine(), get_token_name(pc->GetType())); + Chunk *prev = pc->GetPrevNcNnl(); // Issue #3604 + + if ( prev != nullptr + && prev->IsNotNullChunk()) + { + if (prev->Is(CT_COMMA)) + { + log_rule_B("mod_enum_last_comma"); + + if (options::mod_enum_last_comma() == IARF_REMOVE) + { + Chunk::Delete(prev); + } + } + else + { + if (prev->Is(CT_BRACE_OPEN)) // Issue #2902 + { + // nothing between CT_BRACE_OPEN and CT_BRACE_CLOSE + } + else + { + log_rule_B("mod_enum_last_comma"); + + if ( options::mod_enum_last_comma() == IARF_ADD + || options::mod_enum_last_comma() == IARF_FORCE) + { + // create a comma + Chunk comma; + comma.SetType(CT_COMMA); + comma.SetOrigLine(prev->GetOrigLine()); + comma.SetOrigCol(prev->GetOrigCol() + 1); + comma.SetNlCount(0); + comma.SetPpLevel(0); + comma.SetFlags(PCF_NONE); + comma.Str() = ","; + + if (prev->Is(CT_PP_ENDIF)) // Issue #3604 + { + prev = prev->GetPrevNcNnlNpp(); + } + + if (prev->Is(CT_COMMA)) // Issue #3604 + { + // nothing to do + } + else + { + comma.CopyAndAddAfter(prev); + } + pc = pc->GetNext(); + } + } + } + } + } + pc = pc->GetNext(); + } +} // enum_cleanup |