Mentions légales du service

Skip to content
  • Jaskaran Singh's avatar
    parsing_c: includes_cache: Implement a name cache · ed17ca66
    Jaskaran Singh authored and LAWALL Julia's avatar LAWALL Julia committed
    
    
    Implement a name cache and includes dependency graph to optimize
    performance for recursive parsing of header files.
    
    The following is a high-level description of what has been implemented:
    - As header files are recursively parsed, they are scanned for the
      following:
    	- fields of structs/unions/enums
    	- typedefs
    	- function prototypes
    	- global variables
      The names of the above are stored in a "name cache", i.e. a hashtable
      to map the name to the files it is declared in.
    - A dependency graph is built to determine dependencies between all the
      files in the codebase.
    - In the type annotation phase of the C subsystem, if a function call,
      struct/union field or identifier is encountered, the type of which is
      not known to the annoter, the name cache is checked for the name.
    - The name cache gives a list of files that the name is declared/defined
      in.  These files are cross checked with the dependency graph to
      determine if any of these are reachable by the file that the annoter is
      working on.
    - If a reachable header file is found, that file is parsed and all of
      the above listed constructs are extracted from it.
    
    Suggested-by: default avatarJulia Lawall <julia.lawall@inria.fr>
    Signed-off-by: default avatarJaskaran Singh <jaskaran.singh@collabora.com>
    ed17ca66