# pygccxml.parser.project_reader module

class `COMPILATION_MODE`

  Bases: `object`

  `ALL_AT_ONCE` = 'all at once'
  `FILE_BY_FILE` = 'file by file'

`create_cached_source_fc`(header, cached_source_file)

  Creates `parser.file_configuration_t` instance, configured to contain path to GCC-XML generated XML file and C++ source file. If XML file does not exists, it will be created and used for parsing. If XML file exists, it will be used for parsing.

  Parameters:

  - header (str) – path to C++ source file
  - cached_source_file (str) – path to GCC-XML generated XML file

  Return type: | `parser.file_configuration_t`

`create_gccxml_fc`(xml_file)

  Creates `parser.file_configuration_t` instance, configured to contain path to GCC-XML generated XML file.

  Parameters: | xml_file (str) – path to GCC-XML generated XML file
  Return type: | `parser.file_configuration_t`

`create_source_fc`(header)

  Creates `parser.file_configuration_t` instance, configured to contain path to C++ source file

  Parameters: | header (str) – path to C++ source file
  Return type: | `parser.file_configuration_t`

`create_text_fc`(text)

  Creates `parser.file_configuration_t` instance, configured to contain Python string, that contains valid C++ code

  Parameters: | text (str) – C++ code
  Return type: | `parser.file_configuration_t`

class `file_configuration_t`(data, start_with_declarations=None, content_type='standard source file', cached_source_file=None)

  Bases: `object`

  source code location configuration.

  The class instance uses “variant” interface to represent the following data:

  1. path to a C++ source file

  2. path to GCC-XML generated XML file

  3. path to a C++ source file and path to GCC-XML generated file

     > In this case, if XML file does not exists, it will be created. Next time you will ask to parse the source file, the XML file will be used instead.

     > Small tip: you can setup your makefile to delete XML files every time, the relevant source file was changed.

  4. Python string, that contains valid C++ code

  There are few functions, that will help you to construct `file_configuration_t` object:

  - `create_source_fc()`
  - `create_gccxml_fc()`
  - `create_cached_source_fc()`
  - `create_text_fc()`
  class `CONTENT_TYPE`

    Bases: `object`

    `CACHED_SOURCE_FILE` = 'cached source file'
    `GCCXML_GENERATED_FILE` = 'gccxml generated file'
    `STANDARD_SOURCE_FILE` = 'standard source file'
    `TEXT` = 'text'
  `cached_source_file`
  `content_type`
  `data`
  `start_with_declarations`

class `project_reader_t`(config, cache=None, decl_factory=None)

  Bases: `object`

  parses header files and returns the contained declarations

  static `get_os_file_names`(files)

    returns file names

    Parameters: | files (list) – list of strings andor `file_configuration_t` instances.

  `read_files`(files, compilation_mode='file by file')

    parses a set of files

    Parameters:

    - files (list) – list of strings andor `file_configuration_t` instances.
    - compilation_mode (`COMPILATION_MODE`) – determines whether the files are parsed individually or as one single chunk

    Return type: | [`declaration_t`]

  `read_string`(content)

    Parse a string containing C/C++ source code.

    Parameters: | content (str) – C/C++ source code.
    Return type: | Declarations

  `read_xml`(file_configuration)

    parses C++ code, defined on the file_configurations and returns GCCXML generated file content

  `xml_generator_from_xml_file`

    Configuration object containing information about the xml generator read from the xml file.

    Returns: | configuration object
    Return type: | utils.xml_generators