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