brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 31c0f34 Raw
42 lines · c
1//===--- DefinitionBlockSeparator.h -----------------------------*- 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-exception6//7//===----------------------------------------------------------------------===//8///9/// \file10/// This file declares DefinitionBlockSeparator, a TokenAnalyzer that inserts or11/// removes empty lines separating definition blocks like classes, structs,12/// functions, enums, and namespaces in between.13///14//===----------------------------------------------------------------------===//15 16#ifndef LLVM_CLANG_LIB_FORMAT_DEFINITIONBLOCKSEPARATOR_H17#define LLVM_CLANG_LIB_FORMAT_DEFINITIONBLOCKSEPARATOR_H18 19#include "TokenAnalyzer.h"20#include "WhitespaceManager.h"21 22namespace clang {23namespace format {24class DefinitionBlockSeparator : public TokenAnalyzer {25public:26  DefinitionBlockSeparator(const Environment &Env, const FormatStyle &Style)27      : TokenAnalyzer(Env, Style) {}28 29  std::pair<tooling::Replacements, unsigned>30  analyze(TokenAnnotator &Annotator,31          SmallVectorImpl<AnnotatedLine *> &AnnotatedLines,32          FormatTokenLexer &Tokens) override;33 34private:35  void separateBlocks(SmallVectorImpl<AnnotatedLine *> &Lines,36                      tooling::Replacements &Result, FormatTokenLexer &Tokens);37};38} // namespace format39} // namespace clang40 41#endif42