def cached_value(self, source_file, configuration):
<EOL>key = self._create_cache_key(source_file)<EOL>entry = self.__index.get(key)<EOL>if entry is None:<EOL><INDENT>return None<EOL><DEDENT>configsig = self._create_config_signature(configuration)<EOL>if configsig != entry.configsig:<EOL><INDENT>return None<EOL><DEDENT>for id_, sig in entry.filesigs:<EOL><INDENT>if self.__filename_rep.is_file_modified(id_, sig):<EOL><INDENT>return None<EOL><DEDENT><DEDENT>cachefilename = self._create_cache_filename(source_file)<EOL>decls = self._read_file(cachefilename)<EOL>return decls<EOL>
Return the cached declarations or None.

        :param source_file: Header file name
        :type source_file: str
        :param configuration: Configuration object
        :type configuration: :class:`parser.xml_generator_configuration_t`
        :rtype: Cached declarations or None