clang
20.0.0git
lib
Format
TokenAnalyzer.h
Go to the documentation of this file.
1
//===--- TokenAnalyzer.h - Analyze Token Streams ----------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
///
9
/// \file
10
/// This file declares an abstract TokenAnalyzer, and associated helper
11
/// classes. TokenAnalyzer can be extended to generate replacements based on
12
/// an annotated and pre-processed token stream.
13
///
14
//===----------------------------------------------------------------------===//
15
16
#ifndef LLVM_CLANG_LIB_FORMAT_TOKENANALYZER_H
17
#define LLVM_CLANG_LIB_FORMAT_TOKENANALYZER_H
18
19
#include "
AffectedRangeManager.h
"
20
#include "
FormatTokenLexer.h
"
21
#include "
TokenAnnotator.h
"
22
23
namespace
clang
{
24
namespace
format {
25
26
class
Environment
{
27
public
:
28
// This sets up an virtual file system with file \p FileName containing the
29
// fragment \p Code. Assumes that \p Code starts at \p FirstStartColumn,
30
// that the next lines of \p Code should start at \p NextStartColumn, and
31
// that \p Code should end at \p LastStartColumn if it ends in newline.
32
// See also the documentation of clang::format::internal::reformat.
33
Environment
(StringRef Code, StringRef
FileName
,
unsigned
FirstStartColumn = 0,
34
unsigned
NextStartColumn = 0,
unsigned
LastStartColumn = 0);
35
36
FileID
getFileID
()
const
{
return
ID; }
37
38
SourceManager
&
getSourceManager
()
const
{
return
SM; }
39
40
ArrayRef<CharSourceRange>
getCharRanges
()
const
{
return
CharRanges; }
41
42
// Returns the column at which the fragment of code managed by this
43
// environment starts.
44
unsigned
getFirstStartColumn
()
const
{
return
FirstStartColumn; }
45
46
// Returns the column at which subsequent lines of the fragment of code
47
// managed by this environment should start.