config: support bitwise options
authorDmitry Selyutin <ghostmansd@gmail.com>
Tue, 19 Sep 2017 19:36:59 +0000 (22:36 +0300)
committerDmitry Selyutin <ghostmansd@gmail.com>
Tue, 19 Sep 2017 19:36:59 +0000 (22:36 +0300)
pygnulib/config.py

index bcdb1c6ee55e42f3a2b7aded084549d58152f68c..27539b345a159e9fb4bf5bf67b544a9485e25491 100644 (file)
@@ -6,6 +6,7 @@
 
 import codecs as _codecs_
 import collections as _collections_
+import enum as _enum_
 import os as _os_
 import re as _re_
 
@@ -21,6 +22,18 @@ def _regex_(regex):
 
 
 
+class Option(_enum_.Flag):
+    Obsolete = (1 << 0)
+    Tests = (1 << 1)
+    CXX = (1 << 2)
+    Longrunning = (1 << 3)
+    Privileged = (1 << 4)
+    Unportable = (1 << 5)
+    All = (Obsolete | Tests | CXX | Longrunning | Privileged | Unportable)
+
+
+
+
 class Base:
     """gnulib generic configuration"""
     _TABLE_ = {
@@ -295,6 +308,24 @@ class Base:
         self.unportable_tests = value
         self.longrunning_tests = value
 
+    @property
+    def options(self):
+        """bitmask of active options"""
+        result = ~Option.All
+        if self.obsolete:
+            result |= Option.Obsolete
+        if self.tests:
+            result |= Option.Tests
+        if self.cxx_tests:
+            result |= Option.CXX
+        if self.longrunning_tests:
+            result |= Option.Longrunning
+        if self.privileged_tests:
+            result |= Option.Privileged
+        if self.unportable_tests:
+            result |= Option.Unportable
+        return result
+
 
     @property
     def libtool(self):