diff options
Diffstat (limited to 'debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/chunk.cpp')
| -rw-r--r-- | debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/chunk.cpp | 915 |
1 files changed, 0 insertions, 915 deletions
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/chunk.cpp b/debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/chunk.cpp deleted file mode 100644 index 35d9281c..00000000 --- a/debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/chunk.cpp +++ /dev/null @@ -1,915 +0,0 @@ -/** - * @file chunk.cpp - * Manages and navigates the list of chunks. - * - * @author Ben Gardner - * @license GPL v2+ - */ - -#include "chunk.h" - -#include "ListManager.h" -#include "prototypes.h" -#include "space.h" - -static ChunkListManager gChunkList; // global chunk list - - -/* - * Chunk class methods - */ - -// Null Chunk -Chunk Chunk::NullChunk(true); -Chunk *const Chunk::NullChunkPtr(&Chunk::NullChunk); - - -void Chunk::CopyFrom(const Chunk &o) -{ - m_type = o.m_type; - m_parentType = o.m_parentType; - m_origLine = o.m_origLine; - m_origCol = o.m_origCol; - m_origColEnd = o.m_origColEnd; - m_origPrevSp = o.m_origPrevSp; - m_column = o.m_column; - m_columnIndent = o.m_columnIndent; - m_nlCount = o.m_nlCount; - m_nlColumn = o.m_nlColumn; - m_level = o.m_level; - m_braceLevel = o.m_braceLevel; - m_ppLevel = o.m_ppLevel; - m_afterTab = o.m_afterTab; - - m_flags = o.m_flags; - m_alignmentData = o.m_alignmentData; - m_indentationData = o.m_indentationData; - - m_next = Chunk::NullChunkPtr; - m_prev = Chunk::NullChunkPtr; - m_parent = Chunk::NullChunkPtr; - - m_str = o.m_str; - m_trackingList = o.m_trackingList; -} - - -void Chunk::Reset() -{ - m_type = CT_NONE; - m_parentType = CT_NONE; - m_origLine = 0; - m_origCol = 0; - m_origColEnd = 0; - m_origPrevSp = 0; - m_column = 0; - m_columnIndent = 0; - m_nlCount = 0; - m_nlColumn = 0; - m_level = 0; - m_braceLevel = 0; - m_ppLevel = 999; // use a big value to find some errors - m_afterTab = false; - - m_flags = PCF_NONE; - memset(&m_alignmentData, 0, sizeof(m_alignmentData)); - m_alignmentData.next = NullChunkPtr; - m_alignmentData.start = NullChunkPtr; - m_alignmentData.ref = NullChunkPtr; - memset(&m_indentationData, 0, sizeof(m_indentationData)); - - m_next = Chunk::NullChunkPtr; - m_prev = Chunk::NullChunkPtr; - m_parent = Chunk::NullChunkPtr; - - // for debugging purpose only - m_str.clear(); - m_trackingList = nullptr; -} - - -const char *Chunk::ElidedText(char *for_the_copy) const -{ - const char *test_it = Text(); - size_t test_it_length = strlen(test_it); - - size_t truncate_value = uncrustify::options::debug_truncate(); - - if (truncate_value != 0) - { - if (test_it_length > truncate_value) - { - memset(for_the_copy, 0, 1000); - - if (test_it_length < truncate_value + 30) - { - strncpy(for_the_copy, test_it, truncate_value - 30); - for_the_copy[truncate_value - 30] = 0; - } - else - { - strncpy(for_the_copy, test_it, truncate_value); - for_the_copy[truncate_value] = 0; - } - char *message = strcat(for_the_copy, " ... <The string is truncated>"); - - return(message); - } - else - { - return(test_it); - } - } - return(test_it); -} - - -Chunk *Chunk::GetNext(const E_Scope scope) const -{ - if (scope == E_Scope::ALL) - { - return(m_next); - } - Chunk *pc = m_next; - - if (TestFlags(PCF_IN_PREPROC)) - { - // If in a preproc, return a null chunk if trying to leave - if (!pc->TestFlags(PCF_IN_PREPROC)) - { - return(NullChunkPtr); - } - return(pc); - } - - // Not in a preproc, skip any preproc - while ( pc->IsNotNullChunk() - && pc->TestFlags(PCF_IN_PREPROC)) - { - pc = pc->m_next; - } - return(pc); -} // Chunk::GetNext - - -Chunk *Chunk::GetPrev(const E_Scope scope) const -{ - if (scope == E_Scope::ALL) - { - return(m_prev); - } - Chunk *pc = m_prev; - - if (TestFlags(PCF_IN_PREPROC)) - { - // If in a preproc, return a null chunk if trying to leave - if (!pc->TestFlags(PCF_IN_PREPROC)) - { - return(NullChunkPtr); - } - return(pc); - } - - // Not in a preproc, skip any preproc - while ( pc->IsNotNullChunk() - && pc->TestFlags(PCF_IN_PREPROC)) - { - pc = pc->m_prev; - } - return(pc); -} // Chunk::GetPrev - - -static void chunk_log(Chunk *pc, const char *text); - - -Chunk *Chunk::GetHead() -{ - return(gChunkList.GetHead()); -} - - -Chunk *Chunk::GetTail() -{ - return(gChunkList.GetTail()); -} - - -Chunk::T_SearchFnPtr Chunk::GetSearchFn(const E_Direction dir) -{ - return((dir == E_Direction::FORWARD) ? &Chunk::GetNext : &Chunk::GetPrev); -} - - -Chunk *Chunk::Search(const T_CheckFnPtr checkFn, const E_Scope scope, - const E_Direction dir, const bool cond) const -{ - T_SearchFnPtr searchFnPtr = GetSearchFn(dir); - Chunk *pc = const_cast<Chunk *>(this); - - do // loop over the chunk list - { - pc = (pc->*searchFnPtr)(scope); // in either direction while - } while ( pc->IsNotNullChunk() // the end of the list was not reached yet - && ((pc->*checkFn)() != cond)); // and the demanded chunk was not found either - - return(pc); // the latest chunk is the searched one -} - - -bool Chunk::IsOnSameLine(const Chunk *end) const -{ - if (IsNullChunk()) - { - return(false); - } - Chunk *tmp = GetNext(); - - while ( tmp->IsNotNullChunk() - && tmp != end) - { - if (tmp->Is(CT_NEWLINE)) - { - return(false); - } - tmp = tmp->GetNext(); - } - return(true); -} - - -Chunk *Chunk::SearchTypeLevel(const E_Token type, const E_Scope scope, - const E_Direction dir, const int level) const -{ - T_SearchFnPtr searchFnPtr = GetSearchFn(dir); - Chunk *pc = const_cast<Chunk *>(this); - - do // loop over the chunk list - { - pc = (pc->*searchFnPtr)(scope); // in either direction while - } while ( pc->IsNotNullChunk() // the end of the list was not reached yet - && (!pc->IsTypeAndLevel(type, level))); // and the chunk was not found either - - return(pc); // the latest chunk is the searched one -} - - -Chunk *Chunk::SearchStringLevel(const char *str, const size_t len, int level, - const E_Scope scope, const E_Direction dir) const -{ - T_SearchFnPtr searchFnPtr = GetSearchFn(dir); - Chunk *pc = const_cast<Chunk *>(this); - - do // loop over the chunk list - { - pc = (pc->*searchFnPtr)(scope); // in either direction while - } while ( pc->IsNotNullChunk() // the end of the list was not reached yet - && !pc->IsStringAndLevel(str, len, true, level)); // and the demanded chunk was not found either - - return(pc); // the latest chunk is the searched one -} - - -Chunk *Chunk::SearchPpa(const T_CheckFnPtr checkFn, const bool cond) const -{ - if (!TestFlags(PCF_IN_PREPROC)) - { - // if not in preprocessor, do a regular search - return(Search(checkFn, E_Scope::ALL, E_Direction::FORWARD, cond)); - } - Chunk *pc = GetNext(); - - while (pc->IsNotNullChunk()) - { - if (!pc->TestFlags(PCF_IN_PREPROC)) - { - // Bail if we run off the end of the preprocessor directive, but return - // the token because the caller may need to know where the search ended - assert(pc->Is(CT_NEWLINE)); - return(pc); - } - - if (pc->Is(CT_NL_CONT)) - { - // Skip line continuation - pc = pc->GetNext(); - continue; - } - - if ((pc->*checkFn)() == cond) - { - // Requested token was found - return(pc); - } - pc = pc->GetNext(); - } - // Ran out of tokens - return(Chunk::NullChunkPtr); -} - - -static void chunk_log_msg(Chunk *chunk, const log_sev_t log, const char *str) -{ - LOG_FMT(log, "%s orig line is %zu, orig col is %zu, ", - str, chunk->GetOrigLine(), chunk->GetOrigCol()); - - if (chunk->Is(CT_NEWLINE)) - { - LOG_FMT(log, "<Newline>,\n"); - } - else if (chunk->Is(CT_VBRACE_OPEN)) - { - LOG_FMT(log, "<VBRACE_OPEN>,\n"); - } - else if (chunk->Is(CT_VBRACE_CLOSE)) - { - LOG_FMT(log, "<VBRACE_CLOSE>,\n"); - } - else - { - LOG_FMT(log, "Text() is '%s', type is %s,\n", chunk->Text(), get_token_name(chunk->GetType())); - } -} - - -static void chunk_log(Chunk *pc, const char *text) -{ - if ( pc->IsNotNullChunk() - && (cpd.unc_stage != unc_stage_e::TOKENIZE) - && (cpd.unc_stage != unc_stage_e::CLEANUP)) - { - const log_sev_t log = LCHUNK; - Chunk *prev = pc->GetPrev(); - Chunk *next = pc->GetNext(); - - chunk_log_msg(pc, log, text); - - if ( prev->IsNotNullChunk() - && next->IsNotNullChunk()) - { - chunk_log_msg(prev, log, " @ between"); - chunk_log_msg(next, log, " and"); - } - else if (next->IsNotNullChunk()) - { - chunk_log_msg(next, log, " @ before"); - } - else if (prev->IsNotNullChunk()) - { - chunk_log_msg(prev, log, " @ after"); - } - LOG_FMT(log, " stage is %s", // Issue #3034 - get_unc_stage_name(cpd.unc_stage)); - log_func_stack_inline(log); - } -} - - -void Chunk::Delete(Chunk * &pc) -{ - gChunkList.Remove(pc); - delete pc; - pc = Chunk::NullChunkPtr; -} - - -void Chunk::MoveAfter(Chunk *ref) -{ - LOG_FUNC_ENTRY(); - - if (ref == this) - { - return; - } - gChunkList.Remove(this); - gChunkList.AddAfter(this, ref); - - // Adjust the original column - m_column = ref->m_column + space_col_align(ref, this); - m_origCol = m_column; - m_origColEnd = m_origCol + Len(); -} - - -void Chunk::Swap(Chunk *other) -{ - gChunkList.Swap(this, other); -} - - -bool Chunk::IsAddress() const -{ - if ( IsNotNullChunk() - && ( Is(CT_BYREF) - || ( Len() == 1 - && m_str[0] == '&' - && IsNot(CT_OPERATOR_VAL)))) - { - Chunk *prevc = GetPrev(); - - if ( TestFlags(PCF_IN_TEMPLATE) - && ( prevc->Is(CT_COMMA) - || prevc->Is(CT_ANGLE_OPEN))) - { - return(false); - } - return(true); - } - return(false); -} - - -Chunk *Chunk::GetFirstChunkOnLine() const -{ - Chunk *pc = const_cast<Chunk *>(this); - Chunk *first = pc; - - pc = pc->GetPrev(); - - while ( pc->IsNotNullChunk() - && !pc->IsNewline()) - { - first = pc; - pc = pc->GetPrev(); - } - return(first); -} - - -bool Chunk::IsLastChunkOnLine() const -{ - if (this == Chunk::GetTail()) - { - return(true); - } - - // if the next chunk is a newline then pc is the last chunk on its line - if (GetNext()->Is(CT_NEWLINE)) - { - return(true); - } - return(false); -} - - -void Chunk::SwapLines(Chunk *other) -{ - // to swap lines we need to find the first chunk of the lines - Chunk *pc1 = GetFirstChunkOnLine(); - Chunk *pc2 = other->GetFirstChunkOnLine(); - - if ( pc1->IsNullChunk() - || pc2->IsNullChunk() - || pc1 == pc2) - { - return; - } - /* - * Example start: - * ? - start1 - a1 - b1 - nl1 - ? - ref2 - start2 - a2 - b2 - nl2 - ? - * ^- pc1 ^- pc2 - */ - Chunk *ref2 = pc2->GetPrev(); - - // Move the line started at pc2 before pc1 - while ( pc2->IsNotNullChunk() - && !pc2->IsNewline()) - { - Chunk *tmp = pc2->GetNext(); - gChunkList.Remove(pc2); - gChunkList.AddBefore(pc2, pc1); - pc2 = tmp; - } - /* - * Should now be: - * ? - start2 - a2 - b2 - start1 - a1 - b1 - nl1 - ? - ref2 - nl2 - ? - * ^- pc1 ^- pc2 - */ - - // Now move the line started at pc1 after ref2 - while ( pc1->IsNotNullChunk() - && !pc1->IsNewline()) - { - Chunk *tmp = pc1->GetNext(); - gChunkList.Remove(pc1); - - if (ref2->IsNotNullChunk()) - { - gChunkList.AddAfter(pc1, ref2); - } - else - { - gChunkList.AddHead(pc1); - } - ref2 = pc1; - pc1 = tmp; - } - /* - * Should now be: - * ? - start2 - a2 - b2 - nl1 - ? - ref2 - start1 - a1 - b1 - nl2 - ? - * ^- pc1 ^- pc2 - */ - - /* - * pc1 and pc2 should be the newlines for their lines. - * swap the chunks and the new line count so that the spacing remains the same. - */ - if ( pc1->IsNotNullChunk() - && pc2->IsNotNullChunk()) - { - size_t nlCount = pc1->GetNlCount(); - - pc1->SetNlCount(pc2->GetNlCount()); - pc2->SetNlCount(nlCount); - - pc1->Swap(pc2); - } -} // Chunk::SwapLines - - -void Chunk::SetResetFlags(PcfFlags resetBits, PcfFlags setBits) -{ - if (IsNotNullChunk()) - { - LOG_FUNC_ENTRY(); - const PcfFlags newFlags = (m_flags & ~resetBits) | setBits; - - if (m_flags != newFlags) - { - LOG_FMT(LSETFLG, - "%s(%d): %016llx^%016llx=%016llx\n" - "%s(%d): orig line is %zu, orig col is %zu, Text() is '%s', type is %s,", - __func__, __LINE__, - static_cast<PcfFlags::int_t>(m_flags), - static_cast<PcfFlags::int_t>(m_flags ^ newFlags), - static_cast<PcfFlags::int_t>(newFlags), - __func__, __LINE__, m_origLine, m_origCol, Text(), get_token_name(m_type)); - LOG_FMT(LSETFLG, " parent type is %s,\n", - get_token_name(m_parentType)); - log_func_stack_inline(LSETFLG); - - LOG_FMT(LSETFLG, " before: "); - log_pcf_flags(LSETFLG, m_flags); - LOG_FMT(LSETFLG, " after: "); - log_pcf_flags(LSETFLG, newFlags); - m_flags = newFlags; - } - } -} - - -void Chunk::SetType(const E_Token token) -{ - LOG_FUNC_ENTRY(); - - if ( IsNullChunk() - || m_type == token) - { - return; - } - LOG_FMT(LSETTYP, "%s(%d): orig line is %zu, orig col is %zu, Text() is ", - __func__, __LINE__, m_origLine, m_origCol); - - if (token == CT_NEWLINE) - { - LOG_FMT(LSETTYP, "<Newline>\n"); - } - else - { - LOG_FMT(LSETTYP, "'%s'\n", Text()); - } - LOG_FMT(LSETTYP, " type is %s, parent type is %s => new type is %s\n", - get_token_name(m_type), get_token_name(m_parentType), get_token_name(token)); - m_type = token; -} - - -void Chunk::SetParentType(const E_Token token) -{ - LOG_FUNC_ENTRY(); - - if ( IsNullChunk() - || m_parentType == token) - { - return; - } - LOG_FMT(LSETPAR, "%s(%d): orig line is %zu, orig col is %zu, Text() is ", - __func__, __LINE__, m_origLine, m_origCol); - - if (token == CT_NEWLINE) - { - LOG_FMT(LSETPAR, "<Newline>\n"); - } - else - { - LOG_FMT(LSETPAR, "'%s'\n", Text()); - } - LOG_FMT(LSETPAR, " type is %s, parent type is %s => new parent type is %s\n", - get_token_name(m_type), get_token_name(m_parentType), get_token_name(token)); - m_parentType = token; -} - - -Chunk *Chunk::CopyAndAdd(Chunk *pos, const E_Direction dir) const -{ -#ifdef DEBUG - // test if this chunk is properly set - if (m_ppLevel == 999) - { - fprintf(stderr, "%s(%d): pp level is not set\n", __func__, __LINE__); - log_func_stack_inline(LSETFLG); - log_flush(true); - exit(EX_SOFTWARE); - } - - if (m_origLine == 0) - { - fprintf(stderr, "%s(%d): no line number\n", __func__, __LINE__); - log_func_stack_inline(LSETFLG); - log_flush(true); - exit(EX_SOFTWARE); - } - - if (m_origCol == 0) - { - fprintf(stderr, "%s(%d): no column number\n", __func__, __LINE__); - log_func_stack_inline(LSETFLG); - log_flush(true); - exit(EX_SOFTWARE); - } -#endif /* DEBUG */ - - Chunk *pc = new Chunk(*this); - - if (pos->IsNotNullChunk()) - { - (dir == E_Direction::FORWARD) ? gChunkList.AddAfter(pc, pos) : gChunkList.AddBefore(pc, pos); - } - else - { - (dir == E_Direction::FORWARD) ? gChunkList.AddHead(pc) : gChunkList.AddTail(pc); - } - chunk_log(pc, "CopyAndAdd(A):"); - return(pc); -} // Chunk::CopyAndAdd - - -Chunk *Chunk::GetNextNbsb() const -{ - Chunk *pc = const_cast<Chunk *>(this); - - while ( pc->Is(CT_TSQUARE) - || pc->Is(CT_SQUARE_OPEN)) - { - if (pc->Is(CT_SQUARE_OPEN)) - { - pc = pc->GetClosingParen(); - } - pc = pc->GetNextNcNnl(); - } - return(pc); -} - - -Chunk *Chunk::GetPrevNbsb() const -{ - Chunk *pc = const_cast<Chunk *>(this); - - while ( pc->Is(CT_TSQUARE) - || pc->Is(CT_SQUARE_CLOSE)) - { - if (pc->Is(CT_SQUARE_CLOSE)) - { - pc = pc->GetOpeningParen(); - } - pc = pc->GetPrevNcNnl(); - } - return(pc); -} - - -Chunk *Chunk::GetPpStart() const -{ - if (!IsPreproc()) - { - return(Chunk::NullChunkPtr); - } - Chunk *pc = const_cast<Chunk *>(this); - - while (pc->IsNot(CT_PREPROC)) - { - pc = pc->GetPrev(E_Scope::PREPROC); - } - return(pc); -} - - -Chunk *Chunk::SkipDcMember() const -{ - LOG_FUNC_ENTRY(); - - Chunk *pc = const_cast<Chunk *>(this); - Chunk *nxt = pc->Is(CT_DC_MEMBER) ? pc : pc->GetNextNcNnl(E_Scope::ALL); - - while (nxt->Is(CT_DC_MEMBER)) - { - pc = nxt->GetNextNcNnl(E_Scope::ALL); - - if (pc->IsNullChunk()) - { - return(Chunk::NullChunkPtr); - } - nxt = pc->GetNextNcNnl(E_Scope::ALL); - } - return(pc); -} - - -int Chunk::ComparePosition(const Chunk *other) const -{ - if (m_origLine < other->m_origLine) - { - return(-1); - } - else if (m_origLine == other->m_origLine) - { - if (m_origCol < other->m_origCol) - { - return(-1); - } - else if (m_origCol == other->m_origCol) - { - return(0); - } - } - return(1); -} - - -bool Chunk::IsOCForinOpenParen() const -{ - if ( language_is_set(LANG_OC) - && Is(CT_SPAREN_OPEN) - && GetPrevNcNnl()->Is(CT_FOR)) - { - Chunk *nxt = const_cast<Chunk *>(this); - - while ( nxt->IsNotNullChunk() - && nxt->IsNot(CT_SPAREN_CLOSE) - && nxt->IsNot(CT_IN)) - { - nxt = nxt->GetNextNcNnl(); - } - - if (nxt->Is(CT_IN)) - { - return(true); - } - } - return(false); -} - - -bool Chunk::IsStringAndLevel(const char *str, const size_t len, - bool caseSensitive, const int level) const -{ - return( ( level < 0 - || m_level == static_cast<size_t>(level)) - && Len() == len // the length is as expected - && ( ( caseSensitive - && memcmp(Text(), str, len) == 0) - || ( !caseSensitive - && strncasecmp(Text(), str, len) == 0))); // the strings are equal -} - - -Chunk *Chunk::GetClosingParen(E_Scope scope) const -{ - if ( Is(CT_PAREN_OPEN) - || Is(CT_SPAREN_OPEN) - || Is(CT_FPAREN_OPEN) - || Is(CT_TPAREN_OPEN) - || Is(CT_BRACE_OPEN) - || Is(CT_VBRACE_OPEN) - || Is(CT_ANGLE_OPEN) - || Is(CT_SQUARE_OPEN)) - { - return(GetNextType((E_Token)(m_type + 1), m_level, scope)); - } - return(const_cast<Chunk *>(this)); -} - - -Chunk *Chunk::GetOpeningParen(E_Scope scope) const -{ - if ( Is(CT_PAREN_CLOSE) - || Is(CT_SPAREN_CLOSE) - || Is(CT_FPAREN_CLOSE) - || Is(CT_TPAREN_CLOSE) - || Is(CT_BRACE_CLOSE) - || Is(CT_VBRACE_CLOSE) - || Is(CT_ANGLE_CLOSE) - || Is(CT_SQUARE_CLOSE)) - { - return(GetPrevType((E_Token)(m_type - 1), m_level, scope)); - } - return(const_cast<Chunk *>(this)); -} - - -bool Chunk::IsCppInheritanceAccessSpecifier() const -{ - return( language_is_set(LANG_CPP) - && ( Is(CT_ACCESS) - || Is(CT_QUALIFIER)) - && ( IsString("private") - || IsString("protected") - || IsString("public"))); -} - - -bool Chunk::IsColon() const -{ - return( Is(CT_ACCESS_COLON) - || Is(CT_ASM_COLON) - || Is(CT_BIT_COLON) - || Is(CT_CASE_COLON) - || Is(CT_CLASS_COLON) - || Is(CT_COLON) - || Is(CT_COND_COLON) - || Is(CT_CONSTR_COLON) - || Is(CT_CS_SQ_COLON) - || Is(CT_D_ARRAY_COLON) - || Is(CT_ENUM_COLON) - || Is(CT_FOR_COLON) - || Is(CT_LABEL_COLON) - || Is(CT_OC_COLON) - || Is(CT_OC_DICT_COLON) - || Is(CT_TAG_COLON) - || Is(CT_WHERE_COLON)); -} - - -bool Chunk::IsDoxygenComment() const -{ - if (!IsComment()) - { - return(false); - } - - if (Len() < 3) - { - return(false); - } - // check the third character - const char *sComment = Text(); - return( (sComment[2] == '/') - || (sComment[2] == '!') - || (sComment[2] == '@')); -} - - -bool Chunk::IsTypeDefinition() const -{ - return( Is(CT_TYPE) - || Is(CT_PTR_TYPE) - || Is(CT_BYREF) - || Is(CT_DC_MEMBER) - || Is(CT_QUALIFIER) - || Is(CT_STRUCT) - || Is(CT_ENUM) - || Is(CT_UNION)); -} - - -bool Chunk::IsNewlineBetween(const Chunk *other) const -{ - Chunk *pc = const_cast<Chunk *>(this); - - while (pc != other) - { - if (pc->IsNewline()) - { - return(true); - } - pc = pc->GetNext(); - } - return(false); -} - - -void shift_the_rest_of_the_line(Chunk *first) -{ - // shift all the tokens in this line to the right Issue #3236 - for (Chunk *temp = first; ; temp = temp->GetNext()) - { - temp->SetColumn(temp->GetColumn() + 1); // Issue #3236 - temp->SetOrigCol(temp->GetOrigCol() + 1); // Issue #3236 - temp->SetOrigColEnd(temp->GetOrigColEnd() + 1); // Issue #3236 - - if (temp->Is(CT_NEWLINE)) - { - break; - } - } -} //shift_the_rest_of_the_line |
