Mercurial > codeOptimizer
annotate Config.py @ 4:3a56cd936c59
Cleanup some code.
Add code for breaking loops in the dependency tree.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Mon, 24 Sep 2012 01:16:43 +0200 |
| parents | f65c2d63ab66 |
| children | 09b39021c4af |
| rev | line source |
|---|---|
|
2
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
1 #!/usr/bin/env python -O |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
2 |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
3 import xml.dom.minidom, sys, re |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
4 |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
5 class Config: |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
6 def __init__(self, path): |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
7 self.document = xml.dom.minidom.parse(path) |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
8 |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
9 @staticmethod |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
10 def getOption(node, option, match): |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
11 for potentialMatch in node.childNodes: |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
12 if potentialMatch.nodeName == "option": |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
13 if potentialMatch.hasAttribute('match'): |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
14 matchstr = potentialMatch.getAttribute('match') |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
15 try: |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
16 prog = re.compile(matchstr) |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
17 except: |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
18 raise xml.dom.SyntaxErr(matchstr |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
19 + |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
20 " is not a valid value for attribute match") |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
21 if prog.match(match): |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
22 res = Config.getOption(potentialMatch, option, match) |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
23 if not res: |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
24 res = potentialMatch.getAttribute('cxxflags') |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
25 return res |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
26 return None |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
27 |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
28 def getCxxflags(self, name): |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
29 value = self.getOption(self.document.childNodes[0], 'Cxxflags', name) |
|
4
3a56cd936c59
Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
3
diff
changeset
|
30 if value == None: |
|
2
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
31 raise xml.dom.NotFoundErr() |
|
10f1d7de9bc3
New module for reading configurations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
32 return value |
|
4
3a56cd936c59
Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
3
diff
changeset
|
33 |
|
3a56cd936c59
Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
3
diff
changeset
|
34 def getFiles(self): |
|
3a56cd936c59
Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
3
diff
changeset
|
35 retVal = [] |
|
3a56cd936c59
Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
3
diff
changeset
|
36 for elem in self.document.getElementsByTagName('file'): |
|
3a56cd936c59
Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
3
diff
changeset
|
37 for t in elem.childNodes: |
|
3a56cd936c59
Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
3
diff
changeset
|
38 retVal.append(t.wholeText) |
|
3a56cd936c59
Cleanup some code.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
3
diff
changeset
|
39 return retVal |
