summaryrefslogtreecommitdiff
path: root/mesonbuild/options.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/options.py')
-rw-r--r--mesonbuild/options.py34
1 files changed, 29 insertions, 5 deletions
diff --git a/mesonbuild/options.py b/mesonbuild/options.py
index 6ffcf1a27..435c53def 100644
--- a/mesonbuild/options.py
+++ b/mesonbuild/options.py
@@ -481,16 +481,40 @@ class OptionStore:
def __len__(self):
return len(self.d)
- def __setitem__(self, key, value):
- self.d[key] = value
+ def ensure_key(self,key: T.Union[OptionKey, str]) -> OptionKey:
+ if isinstance(key, str):
+ return OptionKey(key)
+ return key
- def __getitem__(self, key):
- return self.d[key]
+ def get_value_object(self, key: T.Union[OptionKey, str]) -> 'UserOption[T.Any]':
+ return self.d[self.ensure_key(key)]
- def __delitem__(self, key):
+ def get_value(self, key: T.Union[OptionKey, str]) -> 'T.Any':
+ return self.get_value_object(key).value
+
+ def add_system_option(self, key: T.Union[OptionKey, str], valobj: 'UserOption[T.Any'):
+ key = self.ensure_key(key)
+ self.d[key] = valobj
+
+ def add_project_option(self, key: T.Union[OptionKey, str], valobj: 'UserOption[T.Any]'):
+ key = self.ensure_key(key)
+ self.d[key] = valobj
+
+ def set_value(self, key: T.Union[OptionKey, str], new_value: 'T.Any') -> bool:
+ key = self.ensure_key(key)
+ return self.d[key].set_value(new_value)
+
+ # FIXME, this should be removed.or renamed to "change_type_of_existing_object" or something like that
+ def set_value_object(self, key: T.Union[OptionKey, str], new_object: 'UserOption[T.Any]') -> bool:
+ key = self.ensure_key(key)
+ self.d[key] = new_object
+
+
+ def remove(self, key):
del self.d[key]
def __contains__(self, key):
+ key = self.ensure_key(key)
return key in self.d
def __repr__(self):