aboutsummaryrefslogtreecommitdiffstats
path: root/mutator-lvl0.h
diff options
context:
space:
mode:
authorbloodstalker <thabogre@gmail.com>2017-05-23 11:46:49 +0000
committerbloodstalker <thabogre@gmail.com>2017-05-23 11:46:49 +0000
commit886f344694057f864fd211f285d48921348bfe1d (patch)
tree28c4f99e0776e27cf1b05dfa798a96327bd57096 /mutator-lvl0.h
parentnothing (diff)
downloadmutator-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.h65
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;