12#ifndef CLANG_SEMA_HLSLEXTERNALSEMASOURCE_H
13#define CLANG_SEMA_HLSLEXTERNALSEMASOURCE_H
15#include "llvm/ADT/DenseMap.h"
24 Sema *SemaPtr =
nullptr;
28 using CompletionFunction = std::function<void(
CXXRecordDecl *)>;
29 llvm::DenseMap<CXXRecordDecl *, CompletionFunction> Completions;
31 void defineHLSLVectorAlias();
32 void defineTrivialHLSLTypes();
33 void forwardDeclareHLSLTypes();
Represents a C++ struct/union/class.
virtual void CompleteType(TagDecl *Tag)
Gives the external AST source an opportunity to complete an incomplete type.
An abstract interface that should be implemented by external AST sources that also provide informatio...
void CompleteType(TagDecl *Tag) override
Complete an incomplete HLSL builtin type.
void ForgetSema() override
Inform the semantic consumer that Sema is no longer available.
void InitializeSema(Sema &S) override
Initialize the semantic source with the Sema instance being used to perform semantic analysis on the ...
~HLSLExternalSemaSource() override
Represent a C++ namespace.
Sema - This implements semantic analysis and AST building for C.
Represents the declaration of a struct/union/class/enum.