1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
impl Config { pub fn new() -> Self { toml::from_str("").unwrap() } pub fn enable_all(mut self) -> Self { self.rules.case_default = true; self.rules.enum_with_type = true; self.rules.for_with_begin = true; self.rules.function_same_as_system_function = true; self.rules.function_with_automatic = true; self.rules.generate_for_with_label = true; self.rules.generate_if_with_label = true; self.rules.generate_keyword = true; self.rules.genvar_declaration = true; self.rules.if_with_begin = true; self.rules.inout_with_tri = true; self.rules.input_with_var = true; self.rules.interface_port_with_modport = true; self.rules.legacy_always = true; self.rules.level_sensitive_always = true; self.rules.loop_variable_declaration = true; self.rules.non_ansi_module = true; self.rules.output_with_var = true; self.rules.parameter_in_package = true; self.rules.priority_keyword = true; self.rules.tab_charactor = true; self.rules.unique0_keyword = true; self.rules.unique_keyword = true; self.rules.wire_reg = true; self } pub fn gen_rules(&self) -> Vec<Box<dyn Rule>> { let mut ret: Vec<Box<dyn Rule>> = Vec::new(); if self.rules.case_default { ret.push(Box::new(CaseDefault)); } if self.rules.enum_with_type { ret.push(Box::new(EnumWithType)); } if self.rules.for_with_begin { ret.push(Box::new(ForWithBegin)); } if self.rules.function_same_as_system_function { ret.push(Box::new(FunctionSameAsSystemFunction)); } if self.rules.function_with_automatic { ret.push(Box::new(FunctionWithAutomatic)); } if self.rules.generate_for_with_label { ret.push(Box::new(GenerateForWithLabel)); } if self.rules.generate_if_with_label { ret.push(Box::new(GenerateIfWithLabel)); } if self.rules.generate_keyword { ret.push(Box::new(GenerateKeyword)); } if self.rules.genvar_declaration { ret.push(Box::new(GenvarDeclaration)); } if self.rules.if_with_begin { ret.push(Box::new(IfWithBegin)); } if self.rules.inout_with_tri { ret.push(Box::new(InoutWithTri)); } if self.rules.input_with_var { ret.push(Box::new(InputWithVar)); } if self.rules.interface_port_with_modport { ret.push(Box::new(InterfacePortWithModport)); } if self.rules.legacy_always { ret.push(Box::new(LegacyAlways)); } if self.rules.level_sensitive_always { ret.push(Box::new(LevelSensitiveAlways)); } if self.rules.loop_variable_declaration { ret.push(Box::new(LoopVariableDeclaration)); } if self.rules.non_ansi_module { ret.push(Box::new(NonAnsiModule)); } if self.rules.output_with_var { ret.push(Box::new(OutputWithVar)); } if self.rules.parameter_in_package { ret.push(Box::new(ParameterInPackage)); } if self.rules.priority_keyword { ret.push(Box::new(PriorityKeyword)); } if self.rules.tab_charactor { ret.push(Box::new(TabCharactor)); } if self.rules.unique0_keyword { ret.push(Box::new(Unique0Keyword)); } if self.rules.unique_keyword { ret.push(Box::new(UniqueKeyword)); } if self.rules.wire_reg { ret.push(Box::new(WireReg)); } ret } pub fn gen_all_rules() -> Vec<Box<dyn Rule>> { let mut ret: Vec<Box<dyn Rule>> = Vec::new(); ret.push(Box::new(CaseDefault)); ret.push(Box::new(EnumWithType)); ret.push(Box::new(ForWithBegin)); ret.push(Box::new(FunctionSameAsSystemFunction)); ret.push(Box::new(FunctionWithAutomatic)); ret.push(Box::new(GenerateForWithLabel)); ret.push(Box::new(GenerateIfWithLabel)); ret.push(Box::new(GenerateKeyword)); ret.push(Box::new(GenvarDeclaration)); ret.push(Box::new(IfWithBegin)); ret.push(Box::new(InoutWithTri)); ret.push(Box::new(InputWithVar)); ret.push(Box::new(InterfacePortWithModport)); ret.push(Box::new(LegacyAlways)); ret.push(Box::new(LevelSensitiveAlways)); ret.push(Box::new(LoopVariableDeclaration)); ret.push(Box::new(NonAnsiModule)); ret.push(Box::new(OutputWithVar)); ret.push(Box::new(ParameterInPackage)); ret.push(Box::new(PriorityKeyword)); ret.push(Box::new(TabCharactor)); ret.push(Box::new(Unique0Keyword)); ret.push(Box::new(UniqueKeyword)); ret.push(Box::new(WireReg)); ret } }