def __init__(self, config, cache=None, decl_factory=None):
self.__config = config<EOL>self.__dcache = None<EOL>if isinstance(cache, declarations_cache.cache_base_t):<EOL><INDENT>self.__dcache = cache<EOL><DEDENT>elif utils.is_str(cache):<EOL><INDENT>self.__dcache = declarations_cache.file_cache_t(cache)<EOL><DEDENT>else:<EOL><INDENT>self.__dcache = declarations_cache.dummy_cache_t()<EOL><DEDENT>self.__decl_factory = decl_factory<EOL>if not decl_factory:<EOL><INDENT>self.__decl_factory = pygccxml.declarations.decl_factory_t()<EOL><DEDENT>self.logger = utils.loggers.cxx_parser<EOL>self.__xml_generator_from_xml_file = None<EOL>
:param config: GCCXML configuration
:type config: :class:xml_generator_configuration_t

:param cache: declaration cache, by default a cache functionality will
              not be used
:type cache: :class:`cache_base_t` instance or `str`

:param decl_factory: declaration factory
:type decl_factory: :class:`decl_factory_t`