//===- ExtractAPI/DeclarationFragments.h ------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// /// \file /// This file defines the Declaration Fragments related classes. /// /// Declaration Fragments represent parts of a symbol declaration tagged with /// syntactic/semantic information. /// See https://github.com/apple/swift-docc-symbolkit /// //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_EXTRACTAPI_DECLARATION_FRAGMENTS_H #define LLVM_CLANG_EXTRACTAPI_DECLARATION_FRAGMENTS_H #include "clang/AST/ASTContext.h" #include "clang/AST/Decl.h" #include "clang/AST/DeclCXX.h" #include "clang/AST/DeclObjC.h" #include "clang/AST/DeclTemplate.h" #include "clang/AST/ExprCXX.h" #include "clang/AST/TypeLoc.h" #include "clang/Basic/Specifiers.h" #include "clang/Lex/MacroInfo.h" #include <iterator> #include <utility> #include <vector> namespace clang { namespace extractapi { /// DeclarationFragments is a vector of tagged important parts of a symbol's /// declaration. /// /// The fragments sequence can be joined to form spans of declaration text, with /// attached information useful for purposes like syntax-highlighting etc. /// For example: /// \code /// const -> keyword "const" /// int -> type "int" /// pi; -> identifier "pi" /// \endcode class DeclarationFragments { … }; class AccessControl { … }; /// Store function signature information with DeclarationFragments of the /// return type and parameters. class FunctionSignature { … }; /// A factory class to build DeclarationFragments for different kinds of Decl. class DeclarationFragmentsBuilder { … }; template <typename FunctionT> FunctionSignature DeclarationFragmentsBuilder::getFunctionSignature(const FunctionT *Function) { … } } // namespace extractapi } // namespace clang #endif // LLVM_CLANG_EXTRACTAPI_DECLARATION_FRAGMENTS_H