diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2021-06-25 21:14:27 +0200 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2021-06-26 12:49:35 +0200 |
commit | 8f7343831bb78e6801c93cd45e4edfeed65bc437 (patch) | |
tree | e90a37ac9b27584b8c43a32779330705973def02 /mesonbuild/mesonlib | |
parent | b95d6e319f18389c3a11408481335955bdff4e36 (diff) | |
download | meson-8f7343831bb78e6801c93cd45e4edfeed65bc437.zip meson-8f7343831bb78e6801c93cd45e4edfeed65bc437.tar.gz meson-8f7343831bb78e6801c93cd45e4edfeed65bc437.tar.bz2 |
refactor: Refactor BothLibraries logic
This commit introduces a new type of `HoldableObject`: The
`SecondLevelHolder`. The primary purpose of this class is
to handle cases where two (or more) `HoldableObject`s are
stored at the same time (with one default object). The
best (and currently only) example here is the `BothLibraries`
class.
Diffstat (limited to 'mesonbuild/mesonlib')
-rw-r--r-- | mesonbuild/mesonlib/universal.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/mesonbuild/mesonlib/universal.py b/mesonbuild/mesonlib/universal.py index 4b4eb6e..0ed99a5 100644 --- a/mesonbuild/mesonlib/universal.py +++ b/mesonbuild/mesonlib/universal.py @@ -48,6 +48,7 @@ __all__ = [ 'python_command', 'project_meson_versions', 'HoldableObject', + 'SecondLevelHolder', 'File', 'FileMode', 'GitException', @@ -273,6 +274,14 @@ class HoldableObject(metaclass=abc.ABCMeta): ''' Dummy base class for all objects that can be held by an interpreter.baseobjects.ObjectHolder ''' +class SecondLevelHolder(HoldableObject, metaclass=abc.ABCMeta): + ''' A second level object holder. The primary purpose + of such objects is to hold multiple objects with one + default option. ''' + + @abc.abstractmethod + def get_default_object(self) -> HoldableObject: ... + class FileMode: # The first triad is for owner permissions, the second for group permissions, # and the third for others (everyone else). |