sapphire/src/Location.cpp

51 lines
864 B
C++
Raw Normal View History

#include "Location.h"
#include "FormatString/FormatString.hpp"
#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)
{
}
Location::~Location()
{
}
2022-06-16 13:56:10 +00:00
std::string Location::str() const
{
2022-06-16 13:56:10 +00:00
std::ostringstream ss;
ss << fname << ":" << line << ":" << column;
return ss.str();
}
2022-06-16 13:56:10 +00:00
std::string Location::paren_str() const
{
return format_string("(%s)", this->str());
}
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-06-16 13:56:10 +00:00
this->parent = other.parent;
this->line = other.line;
this->column = other.column;
this->fname = other.fname;
}
2022-06-14 14:29:51 +00:00
void Location::copy(const Location& other)
{
2022-06-16 13:56:10 +00:00
this->operator=(other);
}