diff options
author | bloodstalker <thabogre@gmail.com> | 2017-05-18 18:38:59 +0000 |
---|---|---|
committer | bloodstalker <thabogre@gmail.com> | 2017-05-18 18:38:59 +0000 |
commit | 06ff3b7d590d9253a02803b6a3e5dbf9bb13cb9d (patch) | |
tree | e733f1f9b83c1ae2a55ae3f2de7e1533ea084256 | |
parent | added a new option for mutagen extraction (diff) | |
download | mutator-06ff3b7d590d9253a02803b6a3e5dbf9bb13cb9d.tar.gz mutator-06ff3b7d590d9253a02803b6a3e5dbf9bb13cb9d.zip |
added a class for mutagen extraction
-rw-r--r-- | mutator-lvl0.h | 31 |
1 files changed, 31 insertions, 0 deletions
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 <string> #include <vector> #include <unordered_map> +/*clang headers*/ +#include "clang/AST/ASTContext.h" +#include "clang/AST/ASTTypeTraits.h" /**********************************************************************************************************************/ /*externals*/ std::map<std::string,bool> 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<std::string> 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<std::vector<std::string>> MutantStrainsAncestry; +}; +/**********************************************************************************************************************/ #endif /**********************************************************************************************************************/ /*last line intentionally left blank*/ |