Improve performance of obj line break

pull/1254/head
Amit Cirt 2017-05-01 16:32:49 +03:00
parent 3f361ecc1f
commit 8b4e066ca5
1 changed files with 18 additions and 21 deletions

View File

@ -99,27 +99,24 @@ ObjFile::Model *ObjFileParser::GetModel() const {
}
void ignoreNewLines(IOStreamBuffer<char> &streamBuffer, std::vector<char> &buffer)
{
std::vector<char> buf(buffer);
auto copyPosition = buffer.begin();
auto curPosition = buf.cbegin();
do
{
while (*curPosition != '\n'&&*curPosition != '\\')
{
++curPosition;
}
if (*curPosition == '\\')
{
copyPosition = std::copy(buf.cbegin(), curPosition, copyPosition);
*(copyPosition++) = ' ';
do
{
streamBuffer.getNextLine(buf);
} while (buf[0] == '\n');
curPosition = buf.cbegin();
}
} while (*curPosition != '\n');
std::copy(buf.cbegin(), curPosition, copyPosition);
static std::vector<char> tempBuf;
auto curPosition = buffer.begin();
do
{
while (*curPosition!='\n'&&*curPosition!='\\')
{
++curPosition;
}
if (*curPosition=='\\')
{
do
{
streamBuffer.getNextLine(tempBuf);
} while (tempBuf[0]=='\n');
*curPosition = ' ';
std::copy(tempBuf.cbegin(), tempBuf.cend(), ++curPosition);
}
} while (*curPosition!='\n');
}
// -------------------------------------------------------------------
// File parsing method.