mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
introduce tableset and impl for tables enum (#12617)
Co-authored-by: dkathiriya <lakshya-sky@users.noreply.github.com> Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
committed by
GitHub
parent
61cb3dedca
commit
8f61af0136
@ -98,6 +98,15 @@ pub trait TableViewer<R> {
|
||||
}
|
||||
}
|
||||
|
||||
/// General trait for defining the set of tables
|
||||
/// Used to initialize database
|
||||
pub trait TableSet {
|
||||
/// Returns all the table names in the database.
|
||||
fn table_names(&self) -> Vec<&'static str>;
|
||||
/// Returns `true` if the table at the given index is a `DUPSORT` table.
|
||||
fn is_dupsort(&self, idx: usize) -> bool;
|
||||
}
|
||||
|
||||
/// Defines all the tables in the database.
|
||||
#[macro_export]
|
||||
macro_rules! tables {
|
||||
@ -243,6 +252,18 @@ macro_rules! tables {
|
||||
}
|
||||
}
|
||||
|
||||
impl TableSet for Tables {
|
||||
fn table_names(&self) -> Vec<&'static str> {
|
||||
//vec![$(table_names::$name,)*]
|
||||
Self::ALL.iter().map(|t| t.name()).collect()
|
||||
}
|
||||
|
||||
fn is_dupsort(&self, idx: usize) -> bool {
|
||||
let table: Self = self.table_names()[idx].parse().expect("should be valid table name");
|
||||
table.is_dupsort()
|
||||
}
|
||||
}
|
||||
|
||||
// Need constants to match on in the `FromStr` implementation.
|
||||
#[allow(non_upper_case_globals)]
|
||||
mod table_names {
|
||||
|
||||
Reference in New Issue
Block a user