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