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