From eb08e2691b9645883e4f48f0aebf050c3dd65ffb Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Fri, 4 Nov 2016 08:41:43 +0330 Subject: the new file will hold the auxillary code. --- mutator_aux.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 mutator_aux.cpp (limited to 'mutator_aux.cpp') diff --git a/mutator_aux.cpp b/mutator_aux.cpp new file mode 100644 index 0000000..e10ea8e --- /dev/null +++ b/mutator_aux.cpp @@ -0,0 +1,41 @@ + +#include +#include +#include "clang/AST/AST.h" +#include "mutator_aux.h" +#include "clang/Rewrite/Core/Rewriter.h" + +using namespace clang; + +namespace Devi { +/*a simple function that checks the sourcelocations for a macro expansion. returns the sourcelocation without +macro expansion address.*/ +SourceLocation SourceLocationHasMacro (SourceLocation SL, Rewriter &Rewrite, std::string Kind) +{ + /*does the sourcelocation include a macro expansion?*/ + if ( SL.isMacroID() ) + { + /*get the expansion range which is startloc and endloc*/ + std::pair expansionRange = Rewrite.getSourceMgr().getImmediateExpansionRange(SL); + + if (Kind == "start") + { + /*get the startloc.*/ + return (expansionRange.first); + } + else if (Kind == "end") + { + return (expansionRange.second); + } + else + { + std::cout << "the third argument of Devi::SourceLocationHasMacro is invalid." << std::endl; + } + + } + else + { + return (SL); + } +} +} \ No newline at end of file -- cgit v1.2.3