35#ifndef xmldatareader_h
36#define xmldatareader_h
60 std::map<pugi::xml_node,std::vector<size_t>>
newlines;
62 std::map<pugi::xml_node,pugi::xml_document>
docs;
67 std::set<pugi::xml_node>
seen;
72 pugi::xml_document&
loadXml(pugi::xml_node parent,
const std::string& xml);
74 std::tuple<size_t,size_t>
offset2lc(
const std::vector<size_t>& nl,
size_t offset)
const;
75 std::string
loc()
const ;
76 std::string
loc(
const pugi::xml_node&)
const;
78 pugi::xml_node
giveNamedChild(
const pugi::xml_node& parent,
const std::string& name);
87 static bool canRead(
const std::string& xmlFile);
88 InputRecord& giveInputRecord(InputRecordType,
int recordId)
override;
90 bool peekNext(
const std :: string &keyword)
override {
return false; }
91 void finish()
override;
93 void enterGroup(
const std::string& name)
override;
94 void leaveGroup(
const std::string& name)
override;
98 int giveGroupCount(
const std::string& name)
override;
99 int giveCurrentGroupCount();
bool hasFlattenedStructure() override
std::vector< StackItem > stack
pugi::xml_node giveNamedChild(const pugi::xml_node &parent, const std::string &name)
pugi::xml_document & loadXml(pugi::xml_node parent, const std::string &xml)
std::map< pugi::xml_node, std::string > xmlFiles
bool peekNext(const std ::string &keyword) override
int setRecId(int lastRecId)
std::string giveReferenceName() const override
Gives the reference file name (e.g. file name).
std::map< pugi::xml_node, pugi::xml_document > docs
std::tuple< size_t, size_t > offset2lc(const std::vector< size_t > &nl, size_t offset) const
const std::string XiIncludeTag
std::string giveStackPath()
std::shared_ptr< InputRecord > topRecord
std::map< pugi::xml_node, std::vector< size_t > > newlines
InputRecord * giveTopInputRecord() override
pugi::xml_node resolveXiInclude(const pugi::xml_node &n)
XMLDataReader(const std::string &xmlFile)
std::shared_ptr< XMLInputRecord > lastRecord
std::set< pugi::xml_node > seen