xref: /freebsd-src/contrib/llvm-project/clang/lib/Tooling/Syntax/TokenBufferTokenManager.cpp (revision fcaf7f8644a9988098ac6be2165bce3ea4786e91)
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 Andric syntax::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