1*9fc45ca0SDaniel Grumberg //===- ExtractAPI/TypedefUnderlyingTypeResolver.h ---------------*- C++ -*-===// 2*9fc45ca0SDaniel Grumberg // 3*9fc45ca0SDaniel Grumberg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*9fc45ca0SDaniel Grumberg // See https://llvm.org/LICENSE.txt for license information. 5*9fc45ca0SDaniel Grumberg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*9fc45ca0SDaniel Grumberg // 7*9fc45ca0SDaniel Grumberg //===----------------------------------------------------------------------===// 8*9fc45ca0SDaniel Grumberg /// 9*9fc45ca0SDaniel Grumberg /// \file 10*9fc45ca0SDaniel Grumberg /// This file defines the UnderlyingTypeResolver which is a helper type for 11*9fc45ca0SDaniel Grumberg /// resolving the undelrying type for a given QualType and exposing that 12*9fc45ca0SDaniel Grumberg /// information in various forms. 13*9fc45ca0SDaniel Grumberg /// 14*9fc45ca0SDaniel Grumberg //===----------------------------------------------------------------------===// 15*9fc45ca0SDaniel Grumberg 16*9fc45ca0SDaniel Grumberg #ifndef LLVM_CLANG_UNDERLYING_TYPE_RESOLVER_H 17*9fc45ca0SDaniel Grumberg #define LLVM_CLANG_UNDERLYING_TYPE_RESOLVER_H 18*9fc45ca0SDaniel Grumberg 19*9fc45ca0SDaniel Grumberg #include "clang/AST/ASTContext.h" 20*9fc45ca0SDaniel Grumberg #include "clang/AST/Decl.h" 21*9fc45ca0SDaniel Grumberg #include "clang/ExtractAPI/API.h" 22*9fc45ca0SDaniel Grumberg 23*9fc45ca0SDaniel Grumberg #include <string> 24*9fc45ca0SDaniel Grumberg 25*9fc45ca0SDaniel Grumberg namespace clang { 26*9fc45ca0SDaniel Grumberg namespace extractapi { 27*9fc45ca0SDaniel Grumberg 28*9fc45ca0SDaniel Grumberg struct TypedefUnderlyingTypeResolver { 29*9fc45ca0SDaniel Grumberg 30*9fc45ca0SDaniel Grumberg /// Get a SymbolReference for the given type. 31*9fc45ca0SDaniel Grumberg SymbolReference getSymbolReferenceForType(QualType Type, APISet &API) const; 32*9fc45ca0SDaniel Grumberg 33*9fc45ca0SDaniel Grumberg /// Get a USR for the given type. 34*9fc45ca0SDaniel Grumberg std::string getUSRForType(QualType Type) const; 35*9fc45ca0SDaniel Grumberg TypedefUnderlyingTypeResolverTypedefUnderlyingTypeResolver36*9fc45ca0SDaniel Grumberg explicit TypedefUnderlyingTypeResolver(ASTContext &Context) 37*9fc45ca0SDaniel Grumberg : Context(Context) {} 38*9fc45ca0SDaniel Grumberg 39*9fc45ca0SDaniel Grumberg private: 40*9fc45ca0SDaniel Grumberg ASTContext &Context; 41*9fc45ca0SDaniel Grumberg }; 42*9fc45ca0SDaniel Grumberg 43*9fc45ca0SDaniel Grumberg } // namespace extractapi 44*9fc45ca0SDaniel Grumberg } // namespace clang 45*9fc45ca0SDaniel Grumberg 46*9fc45ca0SDaniel Grumberg #endif // LLVM_CLANG_UNDERLYING_TYPE_RESOLVER_H 47