Files
ScriptPreprocessor/CLineTranslator.cpp
T
Phillip Stephens 4c93b47b2a Initial Commit
2015-05-07 18:10:22 -07:00

43 lines
874 B
C++

#include "CLineTranslator.hpp"
CLineTranslator::Table::Entry& CLineTranslator::Table::search(unsigned int line)
{
for (size_t i = 1; i < lines.size(); ++i)
{
if (line < lines[i].startLine)
return lines[i-1];
}
return lines[lines.size() - 1];
}
void CLineTranslator::Table::addLineRange(const std::string& file, unsigned int startLine, unsigned int offset)
{
Entry e;
e.file = file;
e.startLine = startLine;
e.offset = offset;
lines.push_back(e);
}
CLineTranslator::CLineTranslator()
{
}
std::string CLineTranslator::resolveOriginalFile(unsigned int lineNumber)
{
return m_table.search(lineNumber).file;
}
unsigned int CLineTranslator::resolveOriginalLine(unsigned int lineNumber)
{
return lineNumber - m_table.search(lineNumber).offset;
}
void CLineTranslator::reset()
{
m_table.lines.clear();
}