| 
    clang 22.0.0git
    
   | 
 
MacroArgs - An instance of this class captures information about the formal arguments specified to a function-like macro invocation. More...
#include "clang/Lex/MacroArgs.h"
Public Member Functions | |
| void | destroy (Preprocessor &PP) | 
| destroy - Destroy and deallocate the memory for this object.   | |
| bool | ArgNeedsPreexpansion (const Token *ArgTok, Preprocessor &PP) const | 
| ArgNeedsPreexpansion - If we can prove that the argument won't be affected by pre-expansion, return false.   | |
| const Token * | getUnexpArgument (unsigned Arg) const | 
| getUnexpArgument - Return a pointer to the first token of the unexpanded token list for the specified formal.   | |
| const std::vector< Token > & | getPreExpArgument (unsigned Arg, Preprocessor &PP) | 
| getPreExpArgument - Return the pre-expanded form of the specified argument.   | |
| unsigned | getNumMacroArguments () const | 
| getNumMacroArguments - Return the number of arguments the invoked macro expects.   | |
| bool | isVarargsElidedUse () const | 
| isVarargsElidedUse - Return true if this is a C99 style varargs macro invocation and there was no argument specified for the "..." argument.   | |
| bool | invokedWithVariadicArgument (const MacroInfo *const MI, Preprocessor &PP) | 
| Returns true if the macro was defined with a variadic (ellipsis) parameter AND was invoked with at least one token supplied as a variadic argument (after pre-expansion).   | |
| MacroArgs * | deallocate () | 
| deallocate - This should only be called by the Preprocessor when managing its freelist.   | |
Static Public Member Functions | |
| static MacroArgs * | create (const MacroInfo *MI, ArrayRef< Token > UnexpArgTokens, bool VarargsElided, Preprocessor &PP) | 
| MacroArgs ctor function - Create a new MacroArgs object with the specified macro and argument info.   | |
| static unsigned | getArgLength (const Token *ArgPtr) | 
| getArgLength - Given a pointer to an expanded or unexpanded argument, return the number of tokens, not counting the EOF, that make up the argument.   | |
| static Token | StringifyArgument (const Token *ArgToks, Preprocessor &PP, bool Charify, SourceLocation ExpansionLocStart, SourceLocation ExpansionLocEnd) | 
| StringifyArgument - Implement C99 6.10.3.2p2, converting a sequence of tokens into the literal string token that should be produced by the C # preprocessor operator.   | |
MacroArgs - An instance of this class captures information about the formal arguments specified to a function-like macro invocation.
Definition at line 29 of file MacroArgs.h.
| bool MacroArgs::ArgNeedsPreexpansion | ( | const Token * | ArgTok, | 
| Preprocessor & | PP ) const | 
ArgNeedsPreexpansion - If we can prove that the argument won't be affected by pre-expansion, return false.
Otherwise, conservatively return true.
Definition at line 145 of file MacroArgs.cpp.
References clang::Token::getIdentifierInfo(), and clang::Token::isNot().
      
  | 
  static | 
MacroArgs ctor function - Create a new MacroArgs object with the specified macro and argument info.
MacroArgs ctor function - This destroys the vector passed in.
Definition at line 23 of file MacroArgs.cpp.
References clang::MacroInfo::getNumParams(), clang::MacroInfo::isFunctionLike(), and clang::Result.
| MacroArgs * MacroArgs::deallocate | ( | ) | 
deallocate - This should only be called by the Preprocessor when managing its freelist.
Definition at line 90 of file MacroArgs.cpp.
References Next.
| void MacroArgs::destroy | ( | Preprocessor & | PP | ) | 
destroy - Destroy and deallocate the memory for this object.
Definition at line 77 of file MacroArgs.cpp.
getArgLength - Given a pointer to an expanded or unexpanded argument, return the number of tokens, not counting the EOF, that make up the argument.
Definition at line 107 of file MacroArgs.cpp.
References clang::Token::isNot().
Referenced by getPreExpArgument().
      
  | 
  inline | 
getNumMacroArguments - Return the number of arguments the invoked macro expects.
Definition at line 95 of file MacroArgs.h.
Referenced by getPreExpArgument(), getUnexpArgument(), and invokedWithVariadicArgument().
| const std::vector< Token > & MacroArgs::getPreExpArgument | ( | unsigned | Arg, | 
| Preprocessor & | PP ) | 
getPreExpArgument - Return the pre-expanded form of the specified argument.
Definition at line 160 of file MacroArgs.cpp.
References getArgLength(), getNumMacroArguments(), getUnexpArgument(), clang::Preprocessor::Lex(), clang::Preprocessor::RemoveTopOfLexerStack(), clang::Result, and Tok.
Referenced by invokedWithVariadicArgument().
getUnexpArgument - Return a pointer to the first token of the unexpanded token list for the specified formal.
getUnexpArgument - Return the unexpanded tokens for the specified formal.
Definition at line 117 of file MacroArgs.cpp.
References getNumMacroArguments(), and clang::Result.
Referenced by getPreExpArgument().
| bool MacroArgs::invokedWithVariadicArgument | ( | const MacroInfo *const | MI, | 
| Preprocessor & | PP ) | 
Returns true if the macro was defined with a variadic (ellipsis) parameter AND was invoked with at least one token supplied as a variadic argument (after pre-expansion).
Definition at line 135 of file MacroArgs.cpp.
References getNumMacroArguments(), getPreExpArgument(), and clang::MacroInfo::isVariadic().
      
  | 
  inline | 
isVarargsElidedUse - Return true if this is a C99 style varargs macro invocation and there was no argument specified for the "..." argument.
If the argument was specified (even empty) or this isn't a C99 style varargs function, or if in strict mode and the C99 varargs macro had only a ... argument, this returns false.
Definition at line 102 of file MacroArgs.h.
      
  | 
  static | 
StringifyArgument - Implement C99 6.10.3.2p2, converting a sequence of tokens into the literal string token that should be produced by the C # preprocessor operator.
If Charify is true, then it should be turned into a character literal for the Microsoft charize (#@) extension.
Definition at line 207 of file MacroArgs.cpp.
References clang::Preprocessor::CodeCompleteNaturalLanguage(), clang::Preprocessor::CreateString(), clang::Preprocessor::Diag(), clang::Preprocessor::getSpelling(), clang::Invalid, clang::Token::isNot(), clang::tok::isStringLiteral(), memcpy(), clang::Result, clang::Lexer::Stringify(), and Tok.