diff options
Diffstat (limited to 'parse_xml.cpp')
-rw-r--r-- | parse_xml.cpp | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/parse_xml.cpp b/parse_xml.cpp index 9f144f4..7287604 100644 --- a/parse_xml.cpp +++ b/parse_xml.cpp | |||
@@ -439,6 +439,30 @@ struct KernelConfigConverter : public XmlNodeConverter<KernelConfig> { | |||
439 | 439 | ||
440 | const KernelConfigConverter kernelConfigConverter{}; | 440 | const KernelConfigConverter kernelConfigConverter{}; |
441 | 441 | ||
442 | struct HalInterfaceConverter : public XmlNodeConverter<HalInterface> { | ||
443 | std::string elementName() const override { return "interface"; } | ||
444 | void mutateNode(const HalInterface &intf, NodeType *root, DocType *d) const override { | ||
445 | appendTextElement(root, "name", intf.name, d); | ||
446 | appendTextElements(root, "instance", intf.instances, d); | ||
447 | } | ||
448 | bool buildObject(HalInterface *intf, NodeType *root) const override { | ||
449 | std::vector<std::string> instances; | ||
450 | if (!parseTextElement(root, "name", &intf->name) || | ||
451 | !parseTextElements(root, "instance", &instances)) { | ||
452 | return false; | ||
453 | } | ||
454 | intf->instances.clear(); | ||
455 | intf->instances.insert(instances.begin(), instances.end()); | ||
456 | if (intf->instances.size() != instances.size()) { | ||
457 | this->mLastError = "Duplicated instances in " + intf->name; | ||
458 | return false; | ||
459 | } | ||
460 | return true; | ||
461 | } | ||
462 | }; | ||
463 | |||
464 | const HalInterfaceConverter halInterfaceConverter{}; | ||
465 | |||
442 | struct MatrixHalConverter : public XmlNodeConverter<MatrixHal> { | 466 | struct MatrixHalConverter : public XmlNodeConverter<MatrixHal> { |
443 | std::string elementName() const override { return "hal"; } | 467 | std::string elementName() const override { return "hal"; } |
444 | void mutateNode(const MatrixHal &hal, NodeType *root, DocType *d) const override { | 468 | void mutateNode(const MatrixHal &hal, NodeType *root, DocType *d) const override { |
@@ -477,30 +501,6 @@ struct MatrixKernelConverter : public XmlNodeConverter<MatrixKernel> { | |||
477 | 501 | ||
478 | const MatrixKernelConverter matrixKernelConverter{}; | 502 | const MatrixKernelConverter matrixKernelConverter{}; |
479 | 503 | ||
480 | struct ManfiestHalInterfaceConverter : public XmlNodeConverter<ManifestHalInterface> { | ||
481 | std::string elementName() const override { return "interface"; } | ||
482 | void mutateNode(const ManifestHalInterface &intf, NodeType *root, DocType *d) const override { | ||
483 | appendTextElement(root, "name", intf.name, d); | ||
484 | appendTextElements(root, "instance", intf.instances, d); | ||
485 | } | ||
486 | bool buildObject(ManifestHalInterface *intf, NodeType *root) const override { | ||
487 | std::vector<std::string> instances; | ||
488 | if (!parseTextElement(root, "name", &intf->name) || | ||
489 | !parseTextElements(root, "instance", &instances)) { | ||
490 | return false; | ||
491 | } | ||
492 | intf->instances.clear(); | ||
493 | intf->instances.insert(instances.begin(), instances.end()); | ||
494 | if (intf->instances.size() != instances.size()) { | ||
495 | this->mLastError = "Duplicated instances in " + intf->name; | ||
496 | return false; | ||
497 | } | ||
498 | return true; | ||
499 | } | ||
500 | }; | ||
501 | |||
502 | const ManfiestHalInterfaceConverter manfiestHalInterfaceConverter{}; | ||
503 | |||
504 | struct ManifestHalConverter : public XmlNodeConverter<ManifestHal> { | 504 | struct ManifestHalConverter : public XmlNodeConverter<ManifestHal> { |
505 | std::string elementName() const override { return "hal"; } | 505 | std::string elementName() const override { return "hal"; } |
506 | void mutateNode(const ManifestHal &hal, NodeType *root, DocType *d) const override { | 506 | void mutateNode(const ManifestHal &hal, NodeType *root, DocType *d) const override { |
@@ -510,15 +510,15 @@ struct ManifestHalConverter : public XmlNodeConverter<ManifestHal> { | |||
510 | appendChild(root, transportArchConverter(hal.transportArch, d)); | 510 | appendChild(root, transportArchConverter(hal.transportArch, d)); |
511 | } | 511 | } |
512 | appendChildren(root, versionConverter, hal.versions, d); | 512 | appendChildren(root, versionConverter, hal.versions, d); |
513 | appendChildren(root, manfiestHalInterfaceConverter, iterateValues(hal.interfaces), d); | 513 | appendChildren(root, halInterfaceConverter, iterateValues(hal.interfaces), d); |
514 | } | 514 | } |
515 | bool buildObject(ManifestHal *object, NodeType *root) const override { | 515 | bool buildObject(ManifestHal *object, NodeType *root) const override { |
516 | std::vector<ManifestHalInterface> interfaces; | 516 | std::vector<HalInterface> interfaces; |
517 | if (!parseOptionalAttr(root, "format", HalFormat::HIDL, &object->format) || | 517 | if (!parseOptionalAttr(root, "format", HalFormat::HIDL, &object->format) || |
518 | !parseTextElement(root, "name", &object->name) || | 518 | !parseTextElement(root, "name", &object->name) || |
519 | !parseChild(root, transportArchConverter, &object->transportArch) || | 519 | !parseChild(root, transportArchConverter, &object->transportArch) || |
520 | !parseChildren(root, versionConverter, &object->versions) || | 520 | !parseChildren(root, versionConverter, &object->versions) || |
521 | !parseChildren(root, manfiestHalInterfaceConverter, &interfaces)) { | 521 | !parseChildren(root, halInterfaceConverter, &interfaces)) { |
522 | return false; | 522 | return false; |
523 | } | 523 | } |
524 | object->interfaces.clear(); | 524 | object->interfaces.clear(); |