code: def ParseInteger(text, is_signed=False, is_long=False):
    
    # Do the actual parsing. Exception handling is propagated to caller.
    try:
      # We force 32-bit values to int and 64-bit values to long to make
      # alternate implementations where the distinction is more significant
      # (e.g. the C++ implementation) simpler.
      if is_long:
        result = long(text, 0)
      else:
        result = int(text, 0)
    except ValueError:
      raise ValueError('Couldn\'t parse integer: %s' % text)
  
    # Check if the integer is sane. Exceptions handled by callers.
    checker = _INTEGER_CHECKERS[2 * int(is_long) + int(is_signed)]
    checker.CheckValue(result)
    return result
docs: Parses an integer.
  
    Args:
      text: The text to parse.
      is_signed: True if a signed integer must be parsed.
      is_long: True if a long integer must be parsed.
  
    Returns:
      The integer value.
  
    Raises:
      ValueError: Thrown Iff the text is not a valid integer.