csharpbindgen/
symbol_config.rs

1use 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}