[kernel] r13162 - in people/waldi/utils/kconfigeditor2: bin lib/kconfigeditor/kconfig/menu

Bastian Blank waldi at alioth.debian.org
Tue Mar 17 19:24:55 UTC 2009


Author: waldi
Date: Tue Mar 17 19:22:12 2009
New Revision: 13162

Log:
Cleanup menu reading.


Modified:
   people/waldi/utils/kconfigeditor2/bin/process.py
   people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py

Modified: people/waldi/utils/kconfigeditor2/bin/process.py
==============================================================================
--- people/waldi/utils/kconfigeditor2/bin/process.py	(original)
+++ people/waldi/utils/kconfigeditor2/bin/process.py	Tue Mar 17 19:22:12 2009
@@ -12,9 +12,9 @@
     for filename, data in package.items():
         kernelarch = data['kernelarch']
         if kernelarch:
-            menufiles = menu.files_arch[kernelarch].itervalues()
+            menufiles = menu.arch(kernelarch)
         else:
-            menufiles = menu.files_all.itervalues()
+            menufiles = menu
 
         filename = os.path.join(config_output, filename)
         filename_tmp = filename + '.tmp'

Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py
==============================================================================
--- people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py	(original)
+++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py	Tue Mar 17 19:22:12 2009
@@ -5,41 +5,47 @@
 from . import MenuEntrySource
 from .file import Parser
 
+
 class All(object):
     def __init__(self, root, arches):
-        self.files = {}
-        self.filenames_all = []
-        self.filenames_arch = {}
+        self.root = root
+
+        self._files = {}
+        self._filenames = set()
+        self._filenames_arch = {}
 
         for arch in arches:
+            self._filenames_arch[arch] = set()
+
             work = ["arch/%s/Kconfig" % arch]
-            self.filenames_arch[arch] = []
 
             while work:
                 filename = work.pop(0)
                 filename_list = filename.split('/')
 
-                self.filenames_arch[arch].append(filename)
-                if not (filename_list[0] == 'arch' or filename_list[0] == 'drivers' and filename_list[1] in arches):
-                    self.filenames_all.append(filename)
+                if filename_list[0] == 'arch' or filename_list[0] == 'drivers' and filename_list[1] in arches:
+                    self._filenames_arch[arch].add(filename)
+                else:
+                    self._filenames.add(filename)
 
-                if filename in self.files:
-                    f = self.files[filename]
+                if filename in self._files:
+                    f = self._files[filename]
                 else:
-                    f = self.files.setdefault(filename, Parser()(file(os.path.join(root, filename)), filename))
+                    f = self._files.setdefault(filename, self.read(filename))
 
                 for i in f:
                     if isinstance(i, MenuEntrySource):
                         work.append(i.filename)
 
-        self.files_all = {}
-        for i in self.filenames_all:
-            self.files_all[i] = self.files[i]
-
-        self.files_arch = {}
-        for arch in arches:
-            f = {}
-            for i in self.filenames_arch[arch]:
-                f[i] = self.files[i]
-            self.files_arch[arch] = f
+    def __iter__(self):
+        for filename in self._filenames:
+            yield self._files[filename]
+
+    def arch(self, arch):
+        for filename in self._filenames_arch[arch]:
+            yield self._files[filename]
+        for filename in self._filenames:
+            yield self._files[filename]
 
+    def read(self, filename):
+         return Parser()(file(os.path.join(self.root, filename)), filename)



More information about the Kernel-svn-changes mailing list