sapphire/src/Location.cpp

48 lines
908 B
C++
Raw Normal View History

#include "Location.h"
#include "FormatString/FormatString.hpp"
#include <sstream>
2022-08-26 10:00:14 +00:00
Location::Location(int line, int column, std::string filename)
: line(line), column(column), filename(std::move(filename))
{
}
Location::~Location()
{
}
2022-06-16 13:56:10 +00:00
std::string Location::str() const
{
2022-08-26 10:00:14 +00:00
return format_string("%s:%d:%d", filename, line, column);
}
void Location::advance()
{
2022-06-16 13:56:10 +00:00
++column;
}
void Location::pos_from_char(const char& character)
{
2022-06-16 13:56:10 +00:00
if (character == '\n')
{
++line;
column = 0;
}
}
2022-06-14 14:29:51 +00:00
void Location::operator=(const Location& other)
{
2022-08-26 10:00:14 +00:00
Location copied = copy(other);
line = copied.line;
column = copied.column;
parent = copied.parent;
filename = std::move(copied.filename);
}
2022-08-26 10:00:14 +00:00
Location Location::copy(const Location& other)
{
2022-08-26 10:00:14 +00:00
Location result(other.line, other.column, other.filename);
result.parent = other.parent;
return std::move(result);
}