def __init__(self, configuration, cache=None, decl_factory=None):
self.logger = utils.loggers.cxx_parser<EOL>self.__search_directories = []<EOL>self.__config = configuration<EOL>self.__cxx_std = utils.cxx_standard(configuration.cflags)<EOL>self.__search_directories.append(configuration.working_directory)<EOL>self.__search_directories.extend(configuration.include_paths)<EOL>if not cache:<EOL><INDENT>cache = declarations_cache.dummy_cache_t()<EOL><DEDENT>self.__dcache = cache<EOL>self.__config.raise_on_wrong_settings()<EOL>self.__decl_factory = decl_factory<EOL>if not decl_factory:<EOL><INDENT>self.__decl_factory = declarations.decl_factory_t()<EOL><DEDENT>self.__xml_generator_from_xml_file = None<EOL>
:param configuration:
               Instance of :class:`xml_generator_configuration_t`
               class, that contains CastXML configuration.

:param cache: Reference to cache object, that will be updated after a
              file has been parsed.
:type cache: Instance of :class:`cache_base_t` class

:param decl_factory: Declarations factory, if not given default
                     declarations factory( :class:`decl_factory_t` )
                     will be used.