1*12c85518Srobert //===- TokenBufferTokenManager.cpp ----------------------------------------===// 2*12c85518Srobert // 3*12c85518Srobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*12c85518Srobert // See https://llvm.org/LICENSE.txt for license information. 5*12c85518Srobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*12c85518Srobert // 7*12c85518Srobert //===----------------------------------------------------------------------===// 8*12c85518Srobert 9*12c85518Srobert #include "clang/Tooling/Syntax/TokenBufferTokenManager.h" 10*12c85518Srobert 11*12c85518Srobert namespace clang { 12*12c85518Srobert namespace syntax { 13*12c85518Srobert constexpr llvm::StringLiteral syntax::TokenBufferTokenManager::Kind; 14*12c85518Srobert 15*12c85518Srobert std::pair<FileID, ArrayRef<syntax::Token>> lexBuffer(std::unique_ptr<llvm::MemoryBuffer> Input)16*12c85518Srobertsyntax::TokenBufferTokenManager::lexBuffer( 17*12c85518Srobert std::unique_ptr<llvm::MemoryBuffer> Input) { 18*12c85518Srobert auto FID = SM.createFileID(std::move(Input)); 19*12c85518Srobert auto It = ExtraTokens.try_emplace(FID, tokenize(FID, SM, LangOpts)); 20*12c85518Srobert assert(It.second && "duplicate FileID"); 21*12c85518Srobert return {FID, It.first->second}; 22*12c85518Srobert } 23*12c85518Srobert 24*12c85518Srobert } // namespace syntax 25*12c85518Srobert } // namespace clang 26