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