bool Parser::IsEndOfInvokedMacro() const { if (Cond_Stack.empty() || (Cond_Stack.back().Cond_Type != INVOKING_MACRO_COND)) return false; POV_PARSER_ASSERT(Cond_Stack.back().PMac != nullptr); bool filePositionsMatch = false; LexemePosition hashPosition = CurrentFilePosition(); if ((Cond_Stack.back().PMac->endPosition.line == hashPosition.line) && (Cond_Stack.back().PMac->endPosition.column == hashPosition.column) && (Cond_Stack.back().PMac->endPosition.offset == hashPosition.offset)) { filePositionsMatch = true; } return filePositionsMatch && (Cond_Stack.back().PMac->source.fileName == mTokenizer.GetInputStreamName()); }