summaryrefslogtreecommitdiffstats
path: root/parameter/ComponentLibrary.cpp
diff options
context:
space:
mode:
authorGuillaume Denneulin <guillaume.denneulin@intel.com>2014-01-31 15:09:42 +0100
committerDavid Wagner <david.wagner@intel.com>2014-02-13 16:08:59 +0100
commit3ba083ee0b0ff7e01caeb3bc7395377071e20fe6 (patch)
treed639c767d5308ee2658db9d1fc0f946067a74c94 /parameter/ComponentLibrary.cpp
parent7613e74a97d67c392a241ad3a62c6533b31f48ab (diff)
downloadexternal_parameter-framework-3ba083ee0b0ff7e01caeb3bc7395377071e20fe6.zip
external_parameter-framework-3ba083ee0b0ff7e01caeb3bc7395377071e20fe6.tar.gz
external_parameter-framework-3ba083ee0b0ff7e01caeb3bc7395377071e20fe6.tar.bz2
In structure XML files, implement component library files inclusion
BZ: 168727 In the PFW structure file, it is not possible to include a component library from another XML file. Implement the possibility to import component from another XML file that would be included in a structure XML file and that would describe a component library. Change-Id: Id6125140de1c8e9882375d01199f695b929f45e2 Signed-off-by: Guillaume Denneulin <guillaume.denneulin@intel.com>
Diffstat (limited to 'parameter/ComponentLibrary.cpp')
-rw-r--r--parameter/ComponentLibrary.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/parameter/ComponentLibrary.cpp b/parameter/ComponentLibrary.cpp
index f133213..f3576e8 100644
--- a/parameter/ComponentLibrary.cpp
+++ b/parameter/ComponentLibrary.cpp
@@ -45,3 +45,35 @@ const CComponentType* CComponentLibrary::getComponentType(const string& strName)
return static_cast<const CComponentType*>(findChild(strName));
}
+bool CComponentLibrary::fromXml(const CXmlElement& xmlElement,
+ CXmlSerializingContext& serializingContext)
+{
+ CXmlElement childElement;
+
+ CXmlElement::CChildIterator it(xmlElement);
+
+ // XML populate all component libraries
+ while (it.next(childElement)) {
+
+ // Filter component library/type set elements
+ if (childElement.getType() == "ComponentLibrary" ||
+ childElement.getType() == "ComponentTypeSet") {
+
+ if (!fromXml(childElement, serializingContext)) {
+
+ return false;
+ }
+ } else {
+ // Regular child creation and populating
+ CElement* pChild = createChild(childElement, serializingContext);
+
+ if (!pChild || !pChild->fromXml(childElement, serializingContext)) {
+
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+