'Parse the tool\'s <stdio> element\'s <exit_code> subelements.
This will add all of those elements, if any, to self.stdio_exit_codes.'

def parse_stdio_exit_codes(self, stdio_elem):

    try:
        for exit_code_elem in stdio_elem.findall('exit_code'):
            exit_code = ToolStdioExitCode()
            exit_code.desc = exit_code_elem.get('desc')
            if (exit_code.desc is None):
                exit_code.desc = exit_code_elem.get('description')
            exit_code.error_level = self.parse_error_level(exit_code_elem.get('level'))
            code_range = exit_code_elem.get('range', '')
            if (code_range is None):
                code_range = exit_code_elem.get('value', '')
            if (code_range is None):
                log.warning(('Tool    stdio    exit    codes    must    have    ' + 'a    range    or    value'))
                continue
            code_range = re.sub('\\s', '', code_range)
            code_ranges = re.split(':', code_range)
            if (len(code_ranges) == 2):
                if ((code_ranges[0] is None) or ('' == code_ranges[0])):
                    exit_code.range_start = float('-inf')
                else:
                    exit_code.range_start = int(code_ranges[0])
                if ((code_ranges[1] is None) or ('' == code_ranges[1])):
                    exit_code.range_end = float('inf')
                else:
                    exit_code.range_end = int(code_ranges[1])
            elif (len(code_ranges) > 2):
                log.warning(('Invalid    tool    exit_code    range    %s    -    ignored' % code_range))
                continue
            else:
                try:
                    exit_code.range_start = int(code_range)
                except:
                    log.error(code_range)
                    log.warning(("Invalid    range    start    for    tool's    exit_code    %s:    exit_code    ignored" % code_range))
                    continue
                exit_code.range_end = exit_code.range_start
            if (isinf(exit_code.range_start) and isinf(exit_code.range_end)):
                log.warning(('Tool    exit_code    range    %s    will    match    on    ' + ('all    exit    codes' % code_range)))
            self.stdio_exit_codes.append(exit_code)
    except Exception:
        log.error(('Exception    in    parse_stdio_exit_codes!    ' + str(sys.exc_info())))
        trace = sys.exc_info()[2]
        if (trace is not None):
            trace_msg = repr(traceback.format_tb(trace))
            log.error(('Traceback:    %s' % trace_msg))
