1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "shared/source/helpers/non_copyable_or_moveable.h"
#include "level_zero/tools/source/sysman/linux/xml_parser/xml2_api.h"
#include "level_zero/tools/source/sysman/linux/xml_parser/xml_parser.h"
namespace L0 {
class XmlNodeImp : public XmlNode, NEO::NonCopyableOrMovableClass {
public:
XmlNodeImp() = delete;
XmlNodeImp(Xml2Api *pXml2Api, xmlDocPtr doc, xmlNodePtr node) : pXml2Api(pXml2Api), doc(doc), node(node) {}
~XmlNodeImp() override = default;
std::vector<XmlNode *> xPath(std::string path) override;
std::string getName() override;
std::string getPath() override;
std::string getText() override;
std::string getAttribute(std::string attribute) override;
private:
Xml2Api *pXml2Api = nullptr;
xmlDocPtr doc = nullptr;
xmlNodePtr node = nullptr;
};
class XmlDocImp : public XmlDoc, NEO::NonCopyableOrMovableClass {
public:
XmlDocImp() = delete;
~XmlDocImp() override;
std::vector<XmlNode *> xPath(std::string path) override;
static XmlDoc *parseFile(Xml2Api *pXml2Api, std::string filename);
static XmlDoc *parseBuffer(Xml2Api *pXml2Api, std::string buffer);
private:
XmlDocImp(Xml2Api *pXml2Api, xmlDocPtr doc) : pXml2Api(pXml2Api), doc(doc) {}
Xml2Api *pXml2Api = nullptr;
xmlDocPtr doc = nullptr;
};
class XmlParserImp : public XmlParser, NEO::NonCopyableOrMovableClass {
public:
XmlParserImp();
~XmlParserImp() override;
XmlDoc *parseFile(std::string filename) override;
XmlDoc *parseBuffer(std::string buffer) override;
bool isAvailable() { return nullptr != pXml2Api; }
private:
Xml2Api *pXml2Api = nullptr;
};
} // namespace L0
|