From 06ff3b7d590d9253a02803b6a3e5dbf9bb13cb9d Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Thu, 18 May 2017 23:08:59 +0430 Subject: added a class for mutagen extraction --- mutator-lvl0.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/mutator-lvl0.h b/mutator-lvl0.h index 20b26db..31bea3e 100644 --- a/mutator-lvl0.h +++ b/mutator-lvl0.h @@ -30,6 +30,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.* #include #include #include +/*clang headers*/ +#include "clang/AST/ASTContext.h" +#include "clang/AST/ASTTypeTraits.h" /**********************************************************************************************************************/ /*externals*/ std::map MC2OptsMap = { @@ -345,6 +348,34 @@ class MutatorLVL0Tests }; /**********************************************************************************************************************/ +#define EXTRACT_MUTAGEN + +class MutagenExtraction +{ + public: + MutagenExtraction() {} + + void ExtractAncestry(clang::ast_type_traits::DynTypedNode __dtn, clang::ASTContext &__astx) + { + clang::ASTContext::DynTypedNodeList DNL = __astx.getParents(__dtn); + + std::vector temp; + + temp.push_back(DNL[0].getNodeKind().asStringRef().str()); + + while (__astx.getParents(__dtn)[0].getNodeKind().asStringRef().str() != "FunctionDecl") + { + DNL = __astx.getParents(__dtn); + temp.push_back(DNL[0].getNodeKind().asStringRef().str()); + } + + MutantStrainsAncestry.push_back(temp); + } + + private: + std::vector> MutantStrainsAncestry; +}; +/**********************************************************************************************************************/ #endif /**********************************************************************************************************************/ /*last line intentionally left blank*/ -- cgit v1.2.3