2022-03-11 16:00:09 +00:00
|
|
|
#include "Location.h"
|
2022-08-25 18:02:23 +00:00
|
|
|
#include "FormatString/FormatString.hpp"
|
2022-03-11 16:00:09 +00:00
|
|
|
#include <sstream>
|
|
|
|
|
2022-06-14 14:29:51 +00:00
|
|
|
Location::Location(int ln, int col, std::string file) : line(ln), column(col), fname(file)
|
2022-03-11 16:00:09 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
Location::~Location()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2022-06-16 13:56:10 +00:00
|
|
|
std::string Location::str() const
|
2022-03-11 16:00:09 +00:00
|
|
|
{
|
2022-08-25 18:10:13 +00:00
|
|
|
return format_string("%s:%d:%d", fname, line, column);
|
2022-03-11 16:00:09 +00:00
|
|
|
}
|
|
|
|
|
2022-06-16 13:56:10 +00:00
|
|
|
std::string Location::paren_str() const
|
2022-03-11 16:00:09 +00:00
|
|
|
{
|
2022-08-25 18:10:13 +00:00
|
|
|
return format_string("(%s:%d:%d)", fname, line, column);
|
2022-03-11 16:00:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void Location::advance()
|
|
|
|
{
|
2022-06-16 13:56:10 +00:00
|
|
|
++column;
|
2022-03-11 16:00:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void Location::pos_from_char(const char& character)
|
|
|
|
{
|
2022-06-16 13:56:10 +00:00
|
|
|
if (character == '\n')
|
|
|
|
{
|
|
|
|
++line;
|
|
|
|
column = 0;
|
|
|
|
}
|
2022-03-11 16:00:09 +00:00
|
|
|
}
|
|
|
|
|
2022-06-14 14:29:51 +00:00
|
|
|
void Location::operator=(const Location& other)
|
2022-03-11 16:00:09 +00:00
|
|
|
{
|
2022-06-16 13:56:10 +00:00
|
|
|
this->parent = other.parent;
|
|
|
|
this->line = other.line;
|
|
|
|
this->column = other.column;
|
|
|
|
this->fname = other.fname;
|
2022-03-11 16:00:09 +00:00
|
|
|
}
|
|
|
|
|
2022-06-14 14:29:51 +00:00
|
|
|
void Location::copy(const Location& other)
|
2022-03-11 16:00:09 +00:00
|
|
|
{
|
2022-06-16 13:56:10 +00:00
|
|
|
this->operator=(other);
|
2022-03-11 16:00:09 +00:00
|
|
|
}
|