aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/options.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2024-06-09 01:03:49 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2024-06-09 01:27:49 +0300
commitfb4fb081f672ee129a8836b3c38ccf5992ec4fc7 (patch)
treeb19f1e9e54a8cc8e00e95b2c32d56b8921389868 /mesonbuild/options.py
parent3c7d4e0ebf6e380666c5af249391a68556a44e3c (diff)
downloadmeson-optstorerefactor.zip
meson-optstorerefactor.tar.gz
meson-optstorerefactor.tar.bz2
Replace direct indexing with named methods.optstorerefactor
Diffstat (limited to 'mesonbuild/options.py')
-rw-r--r--mesonbuild/options.py33
1 files changed, 28 insertions, 5 deletions
diff --git a/mesonbuild/options.py b/mesonbuild/options.py
index 6ffcf1a..e2da6c2 100644
--- a/mesonbuild/options.py
+++ b/mesonbuild/options.py
@@ -481,13 +481,36 @@ 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.
+ 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):