pub mod parsing {
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
pub struct Info {
pub filename: String,
pub functions: Vec<Function>,
pub identifiers: Vec<Identifier>,
}
impl Info {
pub fn new(
filename: String,
functions: Vec<Function>,
identifiers: Vec<Identifier>,
) -> Self {
Self {
filename,
functions,
identifiers,
}
}
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Function {
pub name: String,
pub start: usize,
pub end: usize,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Identifier {
pub name: String,
pub type_name: String,
pub start: usize,
pub end: usize,
}
pub trait Functions {
fn read_functions(&self, text: &str) -> Vec<Function>;
}
pub trait Identifiers {
fn read_identifiers(&self, text: &str) -> Vec<Identifier>;
}
impl Identifier {
pub fn new(name: String, typ: String, start: usize, end: usize) -> Self {
Self {
name,
type_name: typ,
start,
end,
}
}
}
impl Function {
pub fn new(name: String, start: usize, end: usize) -> Self {
Self { name, start, end }
}
}
}
pub mod clike;
pub mod rustlike;