summaryrefslogtreecommitdiffstats
path: root/debian/uncrustify-trinity/uncrustify-trinity-0.72.0/src/parens.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'debian/uncrustify-trinity/uncrustify-trinity-0.72.0/src/parens.cpp')
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.72.0/src/parens.cpp210
1 files changed, 0 insertions, 210 deletions
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.72.0/src/parens.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.72.0/src/parens.cpp
deleted file mode 100644
index f6ce7722..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.72.0/src/parens.cpp
+++ /dev/null
@@ -1,210 +0,0 @@
-/**
- * @file parens.cpp
- * Adds or removes parens.
- *
- * @author Ben Gardner
- * @license GPL v2+
- */
-
-#include "parens.h"
-
-#include "chunk_list.h"
-#include "log_rules.h"
-#include "unc_ctype.h"
-#include "uncrustify.h"
-#include "uncrustify_types.h"
-
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-
-using namespace uncrustify;
-
-
-//! Add an open parenthesis after first and add a close parenthesis before the last
-static void add_parens_between(chunk_t *first, chunk_t *last);
-
-
-/**
- * Scans between two parens and adds additional parens if needed.
- * This function is recursive. If it hits another open paren, it'll call itself
- * with the new bounds.
- *
- * Adds optional parens in an IF or SWITCH conditional statement.
- *
- * This basically just checks for a CT_COMPARE that isn't surrounded by parens.
- * The edges for the compare are the open, close and any CT_BOOL tokens.
- *
- * This only handles VERY simple patterns:
- * (!a && b) => (!a && b) -- no change
- * (a && b == 1) => (a && (b == 1))
- * (a == 1 || b > 2) => ((a == 1) || (b > 2))
- *
- * FIXME: we really should bail if we transition between a preprocessor and
- * a non-preprocessor
- */
-static void check_bool_parens(chunk_t *popen, chunk_t *pclose, int nest);
-
-
-void do_parens(void)
-{
- LOG_FUNC_ENTRY();
-
- log_rule_B("mod_full_paren_if_bool");
-
- if (options::mod_full_paren_if_bool())
- {
- chunk_t *pc = chunk_get_head();
-
- while ((pc = chunk_get_next_ncnl(pc)) != nullptr)
- {
- if ( pc->type != CT_SPAREN_OPEN
- || ( get_chunk_parent_type(pc) != CT_IF
- && get_chunk_parent_type(pc) != CT_ELSEIF
- && get_chunk_parent_type(pc) != CT_SWITCH))
- {
- continue;
- }
- // Grab the close sparen
- chunk_t *pclose = chunk_get_next_type(pc, CT_SPAREN_CLOSE, pc->level, scope_e::PREPROC);
-
- if (pclose != nullptr)
- {
- check_bool_parens(pc, pclose, 0);
- pc = pclose;
- }
- }
- }
-}
-
-
-static void add_parens_between(chunk_t *first, chunk_t *last)
-{
- LOG_FUNC_ENTRY();
-
- LOG_FMT(LPARADD, "%s: line %zu between %s [lvl=%zu] and %s [lvl=%zu]\n",
- __func__, first->orig_line,
- first->text(), first->level,
- last->text(), last->level);
-
- // Don't do anything if we have a bad sequence, ie "&& )"
- chunk_t *first_n = chunk_get_next_ncnl(first);
-
- if (first_n == last)
- {
- return;
- }
- chunk_t pc;
-
- set_chunk_type(&pc, CT_PAREN_OPEN);
- pc.orig_line = first_n->orig_line;
- pc.orig_col = first_n->orig_col;
- pc.str = "(";
- pc.flags = first_n->flags & PCF_COPY_FLAGS;
- pc.level = first_n->level;
- pc.pp_level = first_n->pp_level;
- pc.brace_level = first_n->brace_level;
-
- chunk_add_before(&pc, first_n);
-
- chunk_t *last_p = chunk_get_prev_ncnl(last, scope_e::PREPROC);
-
- set_chunk_type(&pc, CT_PAREN_CLOSE);
- pc.orig_line = last_p->orig_line;
- pc.orig_col = last_p->orig_col;
- pc.str = ")";
- pc.flags = last_p->flags & PCF_COPY_FLAGS;
- pc.level = last_p->level;
- pc.pp_level = last_p->pp_level;
- pc.brace_level = last_p->brace_level;
-
- chunk_add_after(&pc, last_p);
-
- for (chunk_t *tmp = first_n;
- tmp != last_p;
- tmp = chunk_get_next_ncnl(tmp))
- {
- tmp->level++;
- }
-
- last_p->level++;
-} // add_parens_between
-
-
-static void check_bool_parens(chunk_t *popen, chunk_t *pclose, int nest)
-{
- LOG_FUNC_ENTRY();
-
- chunk_t *ref = popen;
- bool hit_compare = false;
-
- LOG_FMT(LPARADD, "%s(%d): popen on %zu, col %zu, pclose on %zu, col %zu, level=%zu\n",
- __func__, nest,
- popen->orig_line, popen->orig_col,
- pclose->orig_line, pclose->orig_col,
- popen->level);
-
- chunk_t *pc = popen;
-
- while ((pc = chunk_get_next_ncnl(pc)) != nullptr && pc != pclose)
- {
- if (pc->flags.test(PCF_IN_PREPROC))
- {
- LOG_FMT(LPARADD2, " -- bail on PP %s [%s] at line %zu col %zu, level %zu\n",
- get_token_name(pc->type),
- pc->text(), pc->orig_line, pc->orig_col, pc->level);
- return;
- }
-
- if ( chunk_is_token(pc, CT_BOOL)
- || chunk_is_token(pc, CT_QUESTION)
- || chunk_is_token(pc, CT_COND_COLON)
- || chunk_is_token(pc, CT_COMMA))
- {
- LOG_FMT(LPARADD2, " -- %s [%s] at line %zu col %zu, level %zu\n",
- get_token_name(pc->type),
- pc->text(), pc->orig_line, pc->orig_col, pc->level);
-
- if (hit_compare)
- {
- hit_compare = false;
-
- if (!language_is_set(LANG_CS))
- {
- add_parens_between(ref, pc);
- }
- }
- ref = pc;
- }
- else if (chunk_is_token(pc, CT_COMPARE))
- {
- LOG_FMT(LPARADD2, " -- compare [%s] at line %zu col %zu, level %zu\n",
- pc->text(), pc->orig_line, pc->orig_col, pc->level);
- hit_compare = true;
- }
- else if (chunk_is_paren_open(pc))
- {
- chunk_t *next = chunk_skip_to_match(pc);
-
- if (next != nullptr)
- {
- check_bool_parens(pc, next, nest + 1);
- pc = next;
- }
- }
- else if ( chunk_is_token(pc, CT_BRACE_OPEN)
- || chunk_is_token(pc, CT_SQUARE_OPEN)
- || chunk_is_token(pc, CT_ANGLE_OPEN))
- {
- // Skip [], {}, and <>
- pc = chunk_skip_to_match(pc);
- }
- }
-
- if ( hit_compare
- && ref != popen
- && !language_is_set(LANG_CS))
- {
- add_parens_between(ref, pclose);
- }
-} // check_bool_parens