void align_stack(ChunkStack &cs, size_t col, bool align_single, log_sev_t sev) { LOG_FUNC_ENTRY(); if (options::align_on_tabstop()) { col = align_tab_column(col); } if ( (cs.Len() > 1) || (align_single && (cs.Len() == 1))) { LOG_FMT(sev, "%s(%d): max_col=%zu\n", __func__, __LINE__, col); chunk_t *pc; while ((pc = cs.Pop_Back()) != nullptr) { align_to_column(pc, col); chunk_flags_set(pc, PCF_WAS_ALIGNED); LOG_FMT(sev, "%s(%d): indented [%s] on line %zu to %zu\n", __func__, __LINE__, pc->text(), pc->orig_line, pc->column); } } cs.Reset(); } // align_stack
/** * Aligns everything in the chunk stack to a particular column. * The stack is empty after this function. * * @param col the column * @param align_single align even if there is only one item on the stack */ static void align_stack(ChunkStack& cs, int col, bool align_single, log_sev_t sev) { chunk_t *pc; if (cpd.settings[UO_align_on_tabstop].b) { int rem = (col - 1) % cpd.settings[UO_output_tab_size].n; if (rem != 0) { LOG_FMT(sev, "%s: col=%d rem=%d", __func__, col, rem); col += cpd.settings[UO_output_tab_size].n - rem; } } if ((cs.Len() > 1) || (align_single && (cs.Len() == 1))) { LOG_FMT(sev, "%s: max_col=%d\n", __func__, col); while ((pc = cs.Pop()) != NULL) { align_to_column(pc, col); pc->flags |= PCF_WAS_ALIGNED; LOG_FMT(sev, "%s: indented [%.*s] on line %d to %d\n", __func__, pc->len, pc->str, pc->orig_line, pc->column); } } cs.Reset(); }