diff options
-rw-r--r-- | include/clang/Lex/Preprocessor.h | 14 | ||||
-rw-r--r-- | lib/Lex/Preprocessor.cpp | 19 |
2 files changed, 19 insertions, 14 deletions
diff --git a/include/clang/Lex/Preprocessor.h b/include/clang/Lex/Preprocessor.h index 1ae0a7ea3f..db9c884662 100644 --- a/include/clang/Lex/Preprocessor.h +++ b/include/clang/Lex/Preprocessor.h @@ -574,19 +574,7 @@ public: /// SmallVector. Note that the returned StringRef may not point to the /// supplied buffer if a copy can be avoided. llvm::StringRef getSpelling(const Token &Tok, - llvm::SmallVectorImpl<char> &Buffer) const { - // Try the fast path. - if (const IdentifierInfo *II = Tok.getIdentifierInfo()) - return II->getName(); - - // Resize the buffer if we need to copy into it. - if (Tok.needsCleaning()) - Buffer.resize(Tok.getLength()); - - const char *Ptr = Buffer.data(); - unsigned Len = getSpelling(Tok, Ptr); - return llvm::StringRef(Ptr, Len); - } + llvm::SmallVectorImpl<char> &Buffer) const; /// getSpellingOfSingleCharacterNumericConstant - Tok is a numeric constant /// with length 1, return the character. diff --git a/lib/Lex/Preprocessor.cpp b/lib/Lex/Preprocessor.cpp index 84ce062a6a..2c6ad6ee46 100644 --- a/lib/Lex/Preprocessor.cpp +++ b/lib/Lex/Preprocessor.cpp @@ -40,7 +40,6 @@ #include "llvm/ADT/SmallVector.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/raw_ostream.h" -#include <cstdio> using namespace clang; //===----------------------------------------------------------------------===// @@ -365,6 +364,24 @@ unsigned Preprocessor::getSpelling(const Token &Tok, return OutBuf-Buffer; } +/// getSpelling - This method is used to get the spelling of a token into a +/// SmallVector. Note that the returned StringRef may not point to the +/// supplied buffer if a copy can be avoided. +llvm::StringRef Preprocessor::getSpelling(const Token &Tok, + llvm::SmallVectorImpl<char> &Buffer) const { + // Try the fast path. + if (const IdentifierInfo *II = Tok.getIdentifierInfo()) + return II->getName(); + + // Resize the buffer if we need to copy into it. + if (Tok.needsCleaning()) + Buffer.resize(Tok.getLength()); + + const char *Ptr = Buffer.data(); + unsigned Len = getSpelling(Tok, Ptr); + return llvm::StringRef(Ptr, Len); +} + /// CreateString - Plop the specified string into a scratch buffer and return a /// location for it. If specified, the source location provides a source /// location for the token. |