use serde::{Deserialize, Serialize};
use std::cmp::Ordering;
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Serialize, Deserialize)]
pub struct Position {
pub offset: usize,
pub line: usize,
pub column: usize,
}
impl Position {
pub fn null() -> Self {
Position {
offset: 0,
line: 0,
column: 0,
}
}
pub fn is_valid(&self) -> bool {
(self.line > 0) && (self.column > 0)
}
}
impl Ord for Position {
fn cmp(&self, other: &Self) -> Ordering {
self.offset.cmp(&other.offset)
}
}
impl Default for Position {
fn default() -> Self {
Position::null()
}
}