diff --git a/libMEDSannotation/include/MEDS_FPTRShadowAnnotation.hpp b/libMEDSannotation/include/MEDS_FPTRShadowAnnotation.hpp index e682e893d642f2330fb2aac92aa3c0079abaad0a..b6647248ecc7fa7363eefb5cb39b77f688020a80 100644 --- a/libMEDSannotation/include/MEDS_FPTRShadowAnnotation.hpp +++ b/libMEDSannotation/include/MEDS_FPTRShadowAnnotation.hpp @@ -70,6 +70,8 @@ class MEDS_FPTRShadowAnnotation : public MEDS_ShadowAnnotation const RegisterName getRegister() const; const string& getExpression() const { return m_expression; } + const bool isFunctionPointerShadow() const { return m_functionPointerShadow; } + const bool isCriticalArgumentShadow() const { return m_criticalArgumentShadow; } private: void parse(); void setExpression(const string p_expression) { @@ -80,9 +82,14 @@ class MEDS_FPTRShadowAnnotation : public MEDS_ShadowAnnotation int parseRegisterOffset(const char*); void parseRegister(const char *p_buf, RegisterName *p_register, int *p_registerOffset); + void setFunctionPointerShadow(const bool p_val) { m_functionPointerShadow = p_val; } + void setCriticalArgumentShadow(const bool p_val) { m_criticalArgumentShadow = p_val; } + private: string m_rawInputLine; string m_expression; + bool m_functionPointerShadow; + bool m_criticalArgumentShadow; }; } diff --git a/libMEDSannotation/src/MEDS_FPTRShadowAnnotation.cpp b/libMEDSannotation/src/MEDS_FPTRShadowAnnotation.cpp index 156a4494f1d3db9cdcac5abd6c7e577aec493979..cedd24f16b8b9e06c31117cb51f1f335bbb058d1 100644 --- a/libMEDSannotation/src/MEDS_FPTRShadowAnnotation.cpp +++ b/libMEDSannotation/src/MEDS_FPTRShadowAnnotation.cpp @@ -61,11 +61,15 @@ using namespace MEDS_Annotation; MEDS_FPTRShadowAnnotation::MEDS_FPTRShadowAnnotation() : MEDS_ShadowAnnotation() { setInvalid(); + setCriticalArgumentShadow(false); + setFunctionPointerShadow(false); } MEDS_FPTRShadowAnnotation::MEDS_FPTRShadowAnnotation(const string &p_rawLine) : MEDS_ShadowAnnotation() { setInvalid(); + setCriticalArgumentShadow(false); + setFunctionPointerShadow(false); m_rawInputLine=p_rawLine; parse(); } @@ -79,10 +83,16 @@ void MEDS_FPTRShadowAnnotation::parse() setDefineShadowId(); if (m_rawInputLine.find(MEDS_ANNOT_ARGSHADOW)!=string::npos) + { + setCriticalArgumentShadow(true); setDefineShadowId(); + } if (m_rawInputLine.find(MEDS_ANNOT_FPTRCHECK)!=string::npos) + { + setFunctionPointerShadow(true); setCheckShadowId(); + } if (m_rawInputLine.find(MEDS_ANNOT_ARGCHECK)!=string::npos) setCheckShadowId();