EMPTY_IF("noicon",icon)
EMPTY_IF("nochangelog",changelog)
}
+ BuildDependencies(ext->plugin);
+}
+
+void AddonProps::BuildDependencies(const cp_plugin_info_t *plugin)
+{
+ if (!plugin)
+ return;
+ // TODO: no need for a pair of versions here here - could use the optional flag instead?
+ for (unsigned int i = 0; i < plugin->num_imports; ++i)
+ dependencies.insert(make_pair(CStdString(plugin->imports[i].plugin_id),
+ make_pair(AddonVersion(plugin->imports[i].version),
+ AddonVersion(plugin->imports[i].version))));
}
/**
return URIUtils::AddFileToFolder(m_props.path, m_strLibName);
}
-ADDONDEPS CAddon::GetDeps()
-{
- return CAddonMgr::Get().GetDeps(ID());
-}
-
/**
* CAddonLibrary
*
CStdString broken;
InfoMap extrainfo;
int stars;
+private:
+ void BuildDependencies(const cp_plugin_info_t *plugin);
};
typedef std::vector<class AddonProps> VECADDONPROPS;
int Stars() const { return m_props.stars; }
const CStdString Disclaimer() const { return m_props.disclaimer; }
const InfoMap &ExtraInfo() const { return m_props.extrainfo; }
- ADDONDEPS GetDeps();
+ const ADDONDEPS &GetDeps() const { return m_props.dependencies; }
protected:
CAddon(const CAddon&); // protected as all copying is handled by Clone()
return NULL;
}
-ADDONDEPS CAddonMgr::GetDeps(const CStdString &id)
-{
- ADDONDEPS result;
- cp_status_t status;
-
- cp_plugin_info_t *info = m_cpluff->get_plugin_info(m_cp_context,id.c_str(),&status);
- if (info)
- {
- for (unsigned int i=0;i<info->num_imports;++i)
- result.insert(make_pair(CStdString(info->imports[i].plugin_id),
- make_pair(AddonVersion(info->version),
- AddonVersion(info->version))));
- m_cpluff->release_info(m_cp_context, info);
- }
-
- return result;
-}
-
CStdString CAddonMgr::GetExtValue(cp_cfg_element_t *base, const char *path)
{
const char *value = NULL;
\return true if the repository XML file is parsed, false otherwise.
*/
bool AddonsFromRepoXML(const TiXmlElement *root, VECADDONS &addons);
- ADDONDEPS GetDeps(const CStdString& id);
/*! \brief Start all services addons.
\return True is all addons are started, false otherwise
virtual CStdString GetSetting(const CStdString& key) =0;
virtual TiXmlElement* GetSettingsXML() =0;
virtual CStdString GetString(uint32_t id) =0;
- virtual ADDONDEPS GetDeps() =0;
+ virtual const ADDONDEPS &GetDeps() const =0;
protected:
virtual const AddonPtr Parent() const =0;