csharpbindgen/
symbol_config.rs1use std::collections::HashMap;
2
3use crate::ignores::Ignores;
4use crate::CSAccess;
5
6#[derive(Clone, Copy)]
7pub struct SymbolConfig {
8 pub access: CSAccess
9}
10
11impl Default for SymbolConfig {
12 fn default() -> Self {
13 SymbolConfig {
14 access: CSAccess::default()
15 }
16 }
17}
18
19pub struct SymbolConfigManager {
20 pub ignores: Ignores,
21 pub config_map: HashMap<String, SymbolConfig>
22}
23
24impl SymbolConfigManager {
25 pub fn new() -> Self {
26 SymbolConfigManager {
27 ignores: Ignores::new(),
28 config_map: HashMap::new()
29 }
30 }
31
32 pub fn get(&self, ident: &syn::Ident) -> Option<SymbolConfig> {
33 let string = ident.to_string();
34 if self.ignores.ignore(&string) {
35 None
36 } else {
37 if let Some(cfg) = self.config_map.get(&string) {
38 Some(*cfg)
39 } else {
40 Some(SymbolConfig::default())
41 }
42 }
43 }
44}