From 51f5fe3f2527cd1640d798d8d134268b14de3e86 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Sat, 27 Feb 2010 17:05:45 +0000 Subject: [PATCH] Move method out-of-line. I thought this would be a candidate for inlining but I was wrong. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97330 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Lex/Preprocessor.h | 14 +------------- 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 &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 &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 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 &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. -- 2.40.0