use std::fmt;
use std::path::PathBuf;
#[derive(Debug, Clone, Default, PartialEq)]
pub struct PLocation{
p_filename: PathBuf,
p_current_line: usize,
p_current_col: usize,
}
impl fmt::Display for PLocation {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{:?}:{}:{}", self.p_filename, self.p_current_line, self.p_current_col)
}
}
impl PLocation{
pub fn new(filename: &PathBuf, current_line: usize, current_col: usize) -> Self{
PLocation {
p_filename: filename.clone(),
p_current_line: current_line,
p_current_col: current_col
}
}
pub fn set_current_line(&mut self, current_line: usize){
self.p_current_line = current_line;
}
pub fn set_current_col(&mut self, current_col: usize){
self.p_current_col = current_col;
}
pub fn get_filename(&self) -> &PathBuf{
&self.p_filename
}
pub fn get_current_line(&self) -> usize{
self.p_current_line
}
pub fn get_current_col(&self) -> usize{
self.p_current_col
}
}