| 242 | # Chain several symbolizers so that if one symbolizer fails, we fall back |
| 243 | # to the next symbolizer in chain. |
| 244 | class ChainSymbolizer(Symbolizer): |
| 245 | def __init__(self, symbolizer_list): |
| 246 | super(ChainSymbolizer, self).__init__() |
| 247 | self.symbolizer_list = symbolizer_list |
| 248 | |
| 249 | def symbolize(self, addr, binary, offset): |
| 250 | """Overrides Symbolizer.symbolize.""" |
| 251 | for symbolizer in self.symbolizer_list: |
| 252 | if symbolizer: |
| 253 | result = symbolizer.symbolize(addr, binary, offset) |
| 254 | if result: |
| 255 | return result |
| 256 | return None |
| 257 | |
| 258 | def append_symbolizer(self, symbolizer): |
| 259 | self.symbolizer_list.append(symbolizer) |
| 260 | |
| 261 | |
| 262 | def BreakpadSymbolizerFactory(binary): |