80 |
class Vector (XML_Mixin): |
class Vector (XML_Mixin): |
81 |
children = { |
children = { |
82 |
'description': PCData, |
'description': PCData, |
83 |
'sig_name': PCData |
'sig_name': PCData, |
84 |
|
'alt_name': PCData |
85 |
} |
} |
86 |
|
def add_child (self, name, obj): |
87 |
|
if name == "alt_name": |
88 |
|
try: |
89 |
|
x = getattr (self, name) |
90 |
|
x.data.append(obj.data) |
91 |
|
setattr (self, name, x) |
92 |
|
except AttributeError: |
93 |
|
x = obj.data |
94 |
|
obj.data = [x] |
95 |
|
self.xml_members.append (name) |
96 |
|
setattr (self, name, obj) |
97 |
|
else: |
98 |
|
self.xml_members.append (name) |
99 |
|
setattr (self, name, obj) |
100 |
|
|
101 |
|
|
102 |
class Interrupts (dict, XML_Mixin): |
class Interrupts (dict, XML_Mixin): |
103 |
children = { |
children = { |
146 |
XML_Mixin.__init__ (self, attrs) |
XML_Mixin.__init__ (self, attrs) |
147 |
|
|
148 |
def add_child (self, name, obj): |
def add_child (self, name, obj): |
149 |
# Use the IORegister 'addr' attr as the key for the child object. |
# Use the IORegister 'name' attr as the key for the child object. |
150 |
if self.has_key (obj.addr): |
if self.has_key (obj.name): |
151 |
raise 'Duplicate io register entry', obj |
raise 'Duplicate io register entry', obj |
152 |
self[obj.addr] = obj |
self[obj.name] = obj |
153 |
|
|
154 |
class BootMode (XML_Mixin): |
class BootMode (XML_Mixin): |
155 |
pass |
pass |
230 |
self.get_curr_obj().characters (ch) |
self.get_curr_obj().characters (ch) |
231 |
|
|
232 |
def endDocument (self): |
def endDocument (self): |
233 |
print self.dev |
#print self.dev |
234 |
|
pass |
235 |
|
|
236 |
if __name__ == '__main__': |
if __name__ == '__main__': |
237 |
parser = make_parser () |
parser = make_parser () |
239 |
handler = DescHandler () |
handler = DescHandler () |
240 |
parser.setContentHandler (handler) |
parser.setContentHandler (handler) |
241 |
|
|
242 |
parser.parse (open ('desc-90s1200.xml')) |
if len(sys.argv) > 1: |
243 |
|
parser.parse (open (sys.argv[1])) |
244 |
|
else: |
245 |
|
parser.parse (open ('desc-90s1200.xml')) |
246 |
|
|
247 |
|
l = parser.getContentHandler().dev.interrupts.keys() |
248 |
|
l.sort(lambda x, y: cmp(int(x), int(y))) |
249 |
|
for key in l: |
250 |
|
ele = parser.getContentHandler().dev.interrupts[key] |
251 |
|
print "/* " + ele.description.data + " */" |
252 |
|
print "#define " + ele.sig_name.data + "\t_VECTOR(" + key + ")" |
253 |
|
for x in ele.alt_name.data: |
254 |
|
print "#define " + x + "\t_VECTOR(" + key + ")" |
255 |
|
print "" |