diff options
Diffstat (limited to 'debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/mark_functor.cpp')
-rw-r--r-- | debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/mark_functor.cpp | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/mark_functor.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/mark_functor.cpp new file mode 100644 index 00000000..40bec01e --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/mark_functor.cpp @@ -0,0 +1,114 @@ +/** + * @file mark_functor.cpp + * + * @author Guy Maurel + * @license GPL v2+ + */ + +#include "mark_functor.h" + +#include "chunk.h" + + +/* + * tokenize the functor such as: + * desc->add_options() ( a ) (b)(c); + */ +void mark_functor() +{ + LOG_FUNC_ENTRY(); + bool found_functor = false; + Chunk *is_it_closing = Chunk::NullChunkPtr; + + // Issue #3914 + for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNextNcNnl()) + { + LOG_FMT(LCOMBINE, "%s(%d): orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n", + __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text()); + + if (pc->Is(CT_SEMICOLON)) + { + found_functor = false; + continue; + } + + if (found_functor) + { + if ( pc->Is(CT_FPAREN_CLOSE) + || pc->Is(CT_RPAREN_CLOSE)) + { + LOG_FMT(LCOMBINE, "%s(%d): FOUND a Closing: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n", + __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text()); + // desc->add_options() ( a ) ( + // ^ + pc->SetType(CT_RPAREN_CLOSE); + } + else if ( pc->Is(CT_FPAREN_OPEN) + || pc->Is(CT_RPAREN_OPEN)) + { + LOG_FMT(LCOMBINE, "%s(%d): FOUND a Opening: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n", + __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text()); + // desc->add_options() ( a ) ( + // ^ + pc->SetType(CT_RPAREN_OPEN); + } + else // pc->Is(CT_FPAREN_CLOSE) || pc->Is(CT_RPAREN_CLOSE)) + { + continue; + } + } + else // (found_functor) + { + if (pc->Is(CT_FPAREN_OPEN)) + { + LOG_FMT(LCOMBINE, "%s(%d): FOUND 1 Opening: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n", + __func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->GetLevel(), pc->Text()); + is_it_closing = pc->GetPrevNcNnl(); + LOG_FMT(LCOMBINE, "%s(%d): FOUND 2 Closing: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n", + __func__, __LINE__, is_it_closing->GetOrigLine(), is_it_closing->GetOrigCol(), is_it_closing->GetLevel(), is_it_closing->Text()); + + if (is_it_closing->Is(CT_FPAREN_CLOSE)) + { + Chunk *opening = is_it_closing->GetOpeningParen(); + LOG_FMT(LCOMBINE, "%s(%d): FOUND 3 Opening: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n", + __func__, __LINE__, opening->GetOrigLine(), opening->GetOrigCol(), opening->GetLevel(), opening->Text()); + // look for member function + Chunk *is_it_func = opening->GetPrevNcNnl(); + LOG_FMT(LCOMBINE, "%s(%d): FOUND 4 func: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n", + __func__, __LINE__, is_it_func->GetOrigLine(), is_it_func->GetOrigCol(), is_it_func->GetLevel(), is_it_func->Text()); + Chunk *is_it_member = is_it_func->GetPrevNcNnl(); // CT_MEMBER + LOG_FMT(LCOMBINE, "%s(%d): FOUND 5 func: orig line is %zu, orig col is %zu, level is %zu, Text() '%s'\n", + __func__, __LINE__, is_it_member->GetOrigLine(), is_it_member->GetOrigCol(), is_it_member->GetLevel(), is_it_member->Text()); + + if (is_it_member->Is(CT_MEMBER)) + { + // set parenthesis at the function + // desc->add_options() ( a ) ( + // ^ + is_it_closing->SetType(CT_RPAREN_CLOSE); + // desc->add_options() ( a ) ( + // ^ + opening->SetType(CT_RPAREN_OPEN); + // desc->add_options() ( a ) ( + // ^ + pc->SetType(CT_RPAREN_OPEN); + found_functor = true; + } + else + { + continue; + } + } + else + { + LOG_FMT(LCOMBINE, "%s(%d): NOT useable\n", __func__, __LINE__); + continue; + } + } + else // (pc->Is(CT_FPAREN_OPEN)) + { + continue; + } // (pc->Is(CT_FPAREN_OPEN)) + } // (found_functor) + } +} // mark_functor |