use crate::rule::shape::{one_to_one, part_of};
use seesaw_tgg::rules::format::RuleFile;
const CATALOGUE_NAME: &str = "csharp";
pub const STRUCT_TO_CLASS: &str = "struct-to-class";
pub const MEMBER_TO_FIELD: &str = "member-to-field";
#[must_use]
pub fn catalogue() -> RuleFile {
RuleFile {
format: 3,
name: CATALOGUE_NAME.to_string(),
rules: vec![
one_to_one(
STRUCT_TO_CLASS,
"Structure",
"CSharpClass",
"CSharpClassCorr",
),
part_of(
MEMBER_TO_FIELD,
("Member", "Structure", "CSharpClassCorr"),
("CSharpField", "CSharpClass", "CSharpFieldCorr"),
),
one_to_one(
"enum-to-enum",
"Enumeration",
"CSharpEnum",
"CSharpEnumCorr",
),
part_of(
"enumerator-to-member",
("Enumerator", "Enumeration", "CSharpEnumCorr"),
("CSharpEnumMember", "CSharpEnum", "CSharpEnumMemberCorr"),
),
one_to_one("alias-to-using", "Alias", "CSharpAlias", "CSharpAliasCorr"),
one_to_one("union-to-class", "Union", "CSharpUnion", "CSharpUnionCorr"),
part_of(
"case-to-field",
("Case", "Union", "CSharpUnionCorr"),
("CSharpCase", "CSharpUnion", "CSharpCaseCorr"),
),
one_to_one(
"bitmask-to-flags-enum",
"Bitmask",
"CSharpBitmask",
"CSharpBitmaskCorr",
),
part_of(
"bit-to-member",
("BitValue", "Bitmask", "CSharpBitmaskCorr"),
("CSharpBitMember", "CSharpBitmask", "CSharpBitCorr"),
),
one_to_one(
"bitset-to-class",
"Bitset",
"CSharpBitset",
"CSharpBitsetCorr",
),
one_to_one(
"valuetype-to-class",
"Valuetype",
"CSharpValue",
"CSharpValueCorr",
),
one_to_one(
"module-to-namespace",
"Module",
"CSharpNamespace",
"CSharpNamespaceCorr",
),
one_to_one("const-to-const", "Const", "CSharpConst", "CSharpConstCorr"),
one_to_one(
"exception-to-class",
"Exception",
"CSharpError",
"CSharpErrorCorr",
),
one_to_one(
"interface-to-interface",
"Interface",
"CSharpInterface",
"CSharpInterfaceCorr",
),
one_to_one(
"native-to-alias",
"Native",
"CSharpNative",
"CSharpNativeCorr",
),
],
}
}