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
crate::ix!();

impl ArgsManagerInner {

    /**
      | Set an argument if it doesn't already
      | have a value
      | 
      | -----------
      | @param strArg
      | 
      | Argument to set (e.g. "-foo")
      | ----------
      | @param strValue
      | 
      | Value (e.g. "1")
      | 
      | -----------
      | @return
      | 
      | true if argument gets set, false if it
      | already had a value
      |
      */
    pub fn soft_set_arg(&mut self, 
        str_arg:   &str,
        str_value: &str) -> bool {
        
        if self.is_arg_set(str_arg) {
            return false;
        }

        self.force_set_arg(str_arg, str_value);

        true
    }

    /**
      | Forces an arg setting. Called by
      | 
      | SoftSetArg() if the arg hasn't already
      | been set. Also called directly in testing.
      |
      */
    pub fn force_set_arg(&mut self, 
        str_arg:   &str,
        str_value: &str)  {
        
        self.settings.forced_settings.insert(
            setting_name(str_arg), 
            SettingsValue(UniValue::from(str_value))
        );
    }
    
    /**
      | Set a boolean argument if it doesn't
      | already have a value
      | 
      | -----------
      | @param strArg
      | 
      | Argument to set (e.g. "-foo")
      | ----------
      | @param fValue
      | 
      | Value (e.g. false)
      | 
      | -----------
      | @return
      | 
      | true if argument gets set, false if it
      | already had a value
      |
      */
    pub fn soft_set_bool_arg(&mut self, 
        str_arg: &str,
        value:   bool) -> bool {

        if value {
            self.soft_set_arg(str_arg,&"1".to_string())
        } else {
            self.soft_set_arg(str_arg,&"0".to_string())
        }
    }
}