diff options
author | nyamatongwe <devnull@localhost> | 2013-05-01 20:36:30 +1000 |
---|---|---|
committer | nyamatongwe <devnull@localhost> | 2013-05-01 20:36:30 +1000 |
commit | dad947286b08f9a303074e2f88e65d63d0090b74 (patch) | |
tree | a0de90fab4802954b949d5dbcba2301327cc873a /src/Document.cxx | |
parent | b1051ba9ece39aae86bed19c3c4b965ab5e86058 (diff) | |
download | scintilla-mirror-dad947286b08f9a303074e2f88e65d63d0090b74.tar.gz |
Replacing raw pointers and allocations with std::vector and std::string.
Diffstat (limited to 'src/Document.cxx')
-rw-r--r-- | src/Document.cxx | 22 |
1 files changed, 22 insertions, 0 deletions
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); |