code: def CheckParenthesisSpacing(filename, clean_lines, linenum, error):
    
    line = clean_lines.elided[linenum]
  
    # No spaces after an if, while, switch, or for
    match = Search(r' (if\(|for\(|while\(|switch\()', line)
    if match:
      error(filename, linenum, 'whitespace/parens', 5,
            'Missing space before ( in %s' % match.group(1))
  
    # For if/for/while/switch, the left and right parens should be
    # consistent about how many spaces are inside the parens, and
    # there should either be zero or one spaces inside the parens.
    # We don't want: "if ( foo)" or "if ( foo   )".
    # Exception: "for ( ; foo; bar)" and "for (foo; bar; )" are allowed.
    match = Search(r'\b(if|for|while|switch)\s*'
                   r'\(([ ]*)(.).*[^ ]+([ ]*)\)\s*{\s*$',
                   line)
    if match:
      if len(match.group(2)) != len(match.group(4)):
        if not (match.group(3) == ';' and
                len(match.group(2)) == 1 + len(match.group(4)) or
                not match.group(2) and Search(r'\bfor\s*\(.*; \)', line)):
          error(filename, linenum, 'whitespace/parens', 5,
                'Mismatching spaces inside () in %s' % match.group(1))
      if len(match.group(2)) not in [0, 1]:
        error(filename, linenum, 'whitespace/parens', 5,
              'Should have zero or one spaces inside ( and ) in %s' %
              match.group(1))
docs: Checks for horizontal spacing around parentheses.
  
    Args:
      filename: The name of the current file.
      clean_lines: A CleansedLines instance containing the file.
      linenum: The number of the line to check.
      error: The function to call with any errors found.