diff options
author | bloodstalker <thabogre@gmail.com> | 2017-05-23 11:46:49 +0000 |
---|---|---|
committer | bloodstalker <thabogre@gmail.com> | 2017-05-23 11:46:49 +0000 |
commit | 886f344694057f864fd211f285d48921348bfe1d (patch) | |
tree | 28c4f99e0776e27cf1b05dfa798a96327bd57096 /mutator-lvl0.h | |
parent | nothing (diff) | |
download | mutator-886f344694057f864fd211f285d48921348bfe1d.tar.gz mutator-886f344694057f864fd211f285d48921348bfe1d.zip |
added xml report classes, there is a problem with a tinyxml2 assert being triggered on inheritance while the same problem doesnt exist when you dont inherit, raised an issue, until that gets sorted out, the report classes are one-offs, took me 2 days
Diffstat (limited to 'mutator-lvl0.h')
-rw-r--r-- | mutator-lvl0.h | 65 |
1 files changed, 61 insertions, 4 deletions
diff --git a/mutator-lvl0.h b/mutator-lvl0.h index 0ec92c5..11049c6 100644 --- a/mutator-lvl0.h +++ b/mutator-lvl0.h @@ -350,16 +350,64 @@ class MutatorLVL0Tests }; /**********************************************************************************************************************/ -class mutagenAncestryReport : public Devi::XMLReportBase +class mutagenAncestryReport// : public Devi::XMLReportBase { public: - mutagenAncestryReport() {} - ~mutagenAncestryReport() {} + mutagenAncestryReport(std::vector<std::vector<std::string>> __dss) : DoomedStrains(__dss) + { + RootPointer = Doc.NewElement("mutagen:Report"); + RootPointer->SetAttribute("xmlns:mutator", "http://www.w3.org/2001/XMLSchema"); + } + + ~mutagenAncestryReport() + { + Doc.InsertEndChild(RootPointer); + } virtual void AddNode(void) - {} + { +#if 1 + XMLElement* MGene = Doc.NewElement("DoomedStrains"); + + for (auto &iter : DoomedStrains) + { + XMLElement* NodeDoomedStrain = Doc.NewElement("DoomedStrain"); + + for (auto &iterer : iter) + { + XMLElement* Child = Doc.NewElement("Strain"); + Child->SetText(iterer.c_str()); + NodeDoomedStrain->InsertEndChild(Child); + } + + MGene->InsertEndChild(NodeDoomedStrain); + } + + RootPointer->InsertEndChild(MGene); +#endif + } + + void CreateReport() + { + Doc.InsertFirstChild(RootPointer); + } + + void SaveReport(const char* __filename) + { + Doc.InsertEndChild(RootPointer); + + XMLError XMLErrorResult = Doc.SaveFile(__filename); + + if (XMLErrorResult != XML_SUCCESS) + { + std::cerr << "could not write xml misra report.\n"; + } + } private: + std::vector<std::vector<std::string>> DoomedStrains; + XMLElement* RootPointer; + XMLDocument Doc; }; /**********************************************************************************************************************/ #define EXTRACT_MUTAGEN @@ -389,6 +437,7 @@ class MutagenExtraction } MutantStrainsAncestry.push_back(LastStrain); + LastStrain.clear(); } void DumpLast(void) @@ -412,6 +461,14 @@ class MutagenExtraction } } + void XMLReport(void) + { + mutagenAncestryReport MAR(MutantStrainsAncestry); + MAR.CreateReport(); + MAR.AddNode(); + MAR.SaveReport("m0.xml"); + } + private: std::vector<std::string> LastStrain; std::vector<std::vector<std::string>> MutantStrainsAncestry; |