use crate::rule::shape::{one_to_one, part_of};
use seesaw_tgg::rules::format::RuleFile;
const CATALOGUE_NAME: &str = "lua";
pub const STRUCT_TO_TABLE: &str = "struct-to-table";
pub const MEMBER_TO_ENTRY: &str = "member-to-entry";
pub const ENUM_TO_TABLE: &str = "enum-to-table";
pub const ENUMERATOR_TO_ENTRY: &str = "enumerator-to-entry";
pub const ALIAS_TO_ENTRY: &str = "alias-to-entry";
pub const UNION_TO_TABLE: &str = "union-to-table";
pub const CASE_TO_ENTRY: &str = "case-to-entry";
pub const BITMASK_TO_TABLE: &str = "bitmask-to-table";
pub const BIT_TO_ENTRY: &str = "bit-to-entry";
pub const BITSET_TO_TABLE: &str = "bitset-to-table";
pub const VALUETYPE_TO_TABLE: &str = "valuetype-to-table";
pub const MODULE_TO_TABLE: &str = "module-to-table";
pub const CONST_TO_FIELD: &str = "const-to-field";
pub const EXCEPTION_TO_TABLE: &str = "exception-to-table";
pub const NATIVE_TO_TABLE: &str = "native-to-table";
pub const INTERFACE_TO_TABLE: &str = "interface-to-table";
#[must_use]
pub fn catalogue() -> RuleFile {
RuleFile {
format: 3,
name: CATALOGUE_NAME.to_string(),
rules: vec![
one_to_one(STRUCT_TO_TABLE, "Structure", "LuaStruct", "LuaStructCorr"),
part_of(
MEMBER_TO_ENTRY,
("Member", "Structure", "LuaStructCorr"),
("LuaMember", "LuaStruct", "LuaMemberCorr"),
),
one_to_one(ENUM_TO_TABLE, "Enumeration", "LuaEnum", "LuaEnumCorr"),
part_of(
ENUMERATOR_TO_ENTRY,
("Enumerator", "Enumeration", "LuaEnumCorr"),
("LuaEnumerator", "LuaEnum", "LuaEnumeratorCorr"),
),
one_to_one(ALIAS_TO_ENTRY, "Alias", "LuaAlias", "LuaAliasCorr"),
one_to_one(UNION_TO_TABLE, "Union", "LuaUnion", "LuaUnionCorr"),
part_of(
CASE_TO_ENTRY,
("Case", "Union", "LuaUnionCorr"),
("LuaCase", "LuaUnion", "LuaCaseCorr"),
),
one_to_one(BITMASK_TO_TABLE, "Bitmask", "LuaBitmask", "LuaBitmaskCorr"),
part_of(
BIT_TO_ENTRY,
("BitValue", "Bitmask", "LuaBitmaskCorr"),
("LuaBitEntry", "LuaBitmask", "LuaBitCorr"),
),
one_to_one(BITSET_TO_TABLE, "Bitset", "LuaBitset", "LuaBitsetCorr"),
one_to_one(VALUETYPE_TO_TABLE, "Valuetype", "LuaValue", "LuaValueCorr"),
one_to_one(MODULE_TO_TABLE, "Module", "LuaModule", "LuaModuleCorr"),
one_to_one(CONST_TO_FIELD, "Const", "LuaConst", "LuaConstCorr"),
one_to_one(EXCEPTION_TO_TABLE, "Exception", "LuaError", "LuaErrorCorr"),
one_to_one(NATIVE_TO_TABLE, "Native", "LuaNative", "LuaNativeCorr"),
one_to_one(
INTERFACE_TO_TABLE,
"Interface",
"LuaInterface",
"LuaInterfaceCorr",
),
],
}
}