use crate::rule::shape::{one_to_one, part_of};
use seesaw_tgg::rules::format::RuleFile;
const CATALOGUE_NAME: &str = "zig";
pub const STRUCT_TO_STRUCT: &str = "struct-to-struct";
pub const MEMBER_TO_FIELD: &str = "member-to-field";
pub const ENUM_TO_ENUM: &str = "enum-to-enum";
pub const ENUMERATOR_TO_VARIANT: &str = "enumerator-to-variant";
pub const ALIAS_TO_CONST: &str = "alias-to-const";
pub const UNION_TO_STRUCT: &str = "union-to-struct";
pub const CASE_TO_FIELD: &str = "case-to-field";
pub const BITMASK_TO_INT: &str = "bitmask-to-int";
pub const BIT_TO_CONST: &str = "bit-to-const";
pub const BITSET_TO_STRUCT: &str = "bitset-to-struct";
pub const VALUETYPE_TO_STRUCT: &str = "valuetype-to-struct";
pub const MODULE_TO_PREFIX: &str = "module-to-prefix";
pub const CONST_TO_CONST: &str = "const-to-const";
pub const EXCEPTION_TO_STRUCT: &str = "exception-to-struct";
pub const NATIVE_TO_OPAQUE: &str = "native-to-opaque";
pub const INTERFACE_TO_STRUCT: &str = "interface-to-struct";
#[must_use]
pub fn catalogue() -> RuleFile {
RuleFile {
format: 3,
name: CATALOGUE_NAME.to_string(),
rules: vec![
one_to_one(STRUCT_TO_STRUCT, "Structure", "ZigStruct", "ZigStructCorr"),
part_of(
MEMBER_TO_FIELD,
("Member", "Structure", "ZigStructCorr"),
("ZigField", "ZigStruct", "ZigFieldCorr"),
),
one_to_one(ENUM_TO_ENUM, "Enumeration", "ZigEnum", "ZigEnumCorr"),
part_of(
ENUMERATOR_TO_VARIANT,
("Enumerator", "Enumeration", "ZigEnumCorr"),
("ZigVariant", "ZigEnum", "ZigVariantCorr"),
),
one_to_one(ALIAS_TO_CONST, "Alias", "ZigAlias", "ZigAliasCorr"),
one_to_one(UNION_TO_STRUCT, "Union", "ZigUnion", "ZigUnionCorr"),
part_of(
CASE_TO_FIELD,
("Case", "Union", "ZigUnionCorr"),
("ZigCase", "ZigUnion", "ZigCaseCorr"),
),
one_to_one(BITMASK_TO_INT, "Bitmask", "ZigBitmask", "ZigBitmaskCorr"),
part_of(
BIT_TO_CONST,
("BitValue", "Bitmask", "ZigBitmaskCorr"),
("ZigBitConst", "ZigBitmask", "ZigBitCorr"),
),
one_to_one(BITSET_TO_STRUCT, "Bitset", "ZigBitset", "ZigBitsetCorr"),
one_to_one(VALUETYPE_TO_STRUCT, "Valuetype", "ZigValue", "ZigValueCorr"),
one_to_one(MODULE_TO_PREFIX, "Module", "ZigModule", "ZigModuleCorr"),
one_to_one(CONST_TO_CONST, "Const", "ZigConst", "ZigConstCorr"),
one_to_one(EXCEPTION_TO_STRUCT, "Exception", "ZigError", "ZigErrorCorr"),
one_to_one(NATIVE_TO_OPAQUE, "Native", "ZigNative", "ZigNativeCorr"),
one_to_one(
INTERFACE_TO_STRUCT,
"Interface",
"ZigInterface",
"ZigInterfaceCorr",
),
],
}
}