| 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 "" |