2021-11-03 17:11:00 +08:00
|
|
|
use nac3parser::ast;
|
2021-06-28 14:48:04 +08:00
|
|
|
use std::vec::Vec;
|
|
|
|
|
|
|
|
#[derive(Clone, Copy, PartialEq)]
|
|
|
|
pub struct FileID(u32);
|
|
|
|
|
|
|
|
#[derive(Clone, Copy, PartialEq)]
|
|
|
|
pub enum Location {
|
|
|
|
CodeRange(FileID, ast::Location),
|
2021-08-05 14:55:09 +08:00
|
|
|
Builtin,
|
2021-06-28 14:48:04 +08:00
|
|
|
}
|
|
|
|
|
2021-09-22 17:56:48 +08:00
|
|
|
#[derive(Default)]
|
2021-06-28 14:48:04 +08:00
|
|
|
pub struct FileRegistry {
|
|
|
|
files: Vec<String>,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl FileRegistry {
|
|
|
|
pub fn add_file(&mut self, path: &str) -> FileID {
|
|
|
|
let index = self.files.len() as u32;
|
|
|
|
self.files.push(path.to_owned());
|
|
|
|
FileID(index)
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn query_file(&self, id: FileID) -> &str {
|
|
|
|
&self.files[id.0 as usize]
|
|
|
|
}
|
|
|
|
}
|