From dad947286b08f9a303074e2f88e65d63d0090b74 Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Wed, 1 May 2013 20:36:30 +1000 Subject: Replacing raw pointers and allocations with std::vector and std::string. --- src/Document.cxx | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/Document.cxx') diff --git a/src/Document.cxx b/src/Document.cxx index 80f306c1a..d5a677499 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -1232,6 +1232,28 @@ char *Document::TransformLineEnds(int *pLenOut, const char *s, size_t len, int e return dest; } +std::string Document::TransformLineEnds(const char *s, size_t len, int eolModeWanted) { + std::string dest; + for (size_t i = 0; (i < len) && (s[i]); i++) { + if (s[i] == '\n' || s[i] == '\r') { + if (eolModeWanted == SC_EOL_CR) { + dest.push_back('\r'); + } else if (eolModeWanted == SC_EOL_LF) { + dest.push_back('\n'); + } else { // eolModeWanted == SC_EOL_CRLF + dest.push_back('\r'); + dest.push_back('\n'); + } + if ((s[i] == '\r') && (i+1 < len) && (s[i+1] == '\n')) { + i++; + } + } else { + dest.push_back(s[i]); + } + } + return dest; +} + void Document::ConvertLineEnds(int eolModeSet) { UndoGroup ug(this); -- cgit v1.2.3