docstr: Parse a Cython generated C/C++ source file and find the executable lines.
  Each executable line starts with a comment header that states source file
  and line number, as well as the surrounding range of source code lines.
docstr_tok: ["Parse","a","Cython","generated","C\/C++","source","file","and","find","the","executable","lines",".","Each","executable","line","starts","with","a","comment","header","that","states","source","file","and","line","number",",","as","well","as","the","surrounding","range","of","source","code","lines","."]
code: def _read_source_lines(self, c_file, sourcefile):
      """
      Parse a Cython generated C/C++ source file and find the executable lines.
      Each executable line starts with a comment header that states source file
      and line number, as well as the surrounding range of source code lines.
      """
      if self._parsed_c_files is None:
          self._parsed_c_files = {}
      if c_file in self._parsed_c_files:
          code_lines = self._parsed_c_files[c_file]
      else:
          code_lines = self._parse_cfile_lines(c_file)
          self._parsed_c_files[c_file] = code_lines
  
      if self._c_files_map is None:
          self._c_files_map = {}
  
      for filename, code in code_lines.items():
          abs_path = _find_dep_file_path(
              c_file, filename, relative_path_search=True
          )
          self._c_files_map[abs_path] = (c_file, filename, code)
  
      if sourcefile not in self._c_files_map:
          return (None,) * 2  # e.g. shared library file
      return self._c_files_map[sourcefile][1:]
  
imports: from __future__ import absolute_import
  import re
  import os.path
  import sys
  from collections import defaultdict
  from coverage.plugin import CoveragePlugin, FileTracer, FileReporter
  from coverage.files import canonical_filename
  from .Utils import find_root_package_dir, is_package_dir, open_source_file
  from .None import __version__
label_desc: Use image node_id 6 for calling the Plugin obj's underlying member method code with example usage: obj._read_source_lines(c_file, sourcefile) and returns: self, unknown