Lines Matching defs:clang

22 #include "clang/AST/ASTContext.h"
23 #include "clang/AST/Attr.h"
24 #include "clang/AST/RecordLayout.h"
104 clang::BuiltinType::Kind builtinTypeKind;
114 {clang::BuiltinType::Bool, DataTypeBoolean,
116 {clang::BuiltinType::Char_U, DataTypeUnsigned8,
118 {clang::BuiltinType::UChar, DataTypeUnsigned8,
120 {clang::BuiltinType::Char16, DataTypeSigned16,
122 {clang::BuiltinType::Char32, DataTypeSigned32,
124 {clang::BuiltinType::UShort, DataTypeUnsigned16,
126 {clang::BuiltinType::UInt, DataTypeUnsigned32,
128 {clang::BuiltinType::ULong, DataTypeUnsigned64,
130 {clang::BuiltinType::ULongLong, DataTypeUnsigned64,
133 {clang::BuiltinType::Char_S, DataTypeSigned8,
135 {clang::BuiltinType::SChar, DataTypeSigned8,
137 {clang::BuiltinType::Short, DataTypeSigned16,
139 {clang::BuiltinType::Int, DataTypeSigned32,
141 {clang::BuiltinType::Long, DataTypeSigned64,
143 {clang::BuiltinType::LongLong, DataTypeSigned64,
145 {clang::BuiltinType::Half, DataTypeFloat16,
147 {clang::BuiltinType::Float, DataTypeFloat32,
149 {clang::BuiltinType::Double, DataTypeFloat64,
180 static const clang::Type *TypeExportableHelper(
181 const clang::Type *T,
182 llvm::SmallPtrSet<const clang::Type*, 8>& SPS,
184 const clang::VarDecl *VD,
185 const clang::RecordDecl *TopLevelRecord,
190 const clang::NamedDecl *ND,
191 const clang::RecordDecl *TopLevelRecord,
208 static const clang::Type *ConstantArrayTypeExportableHelper(
209 const clang::ConstantArrayType *CAT,
210 llvm::SmallPtrSet<const clang::Type*, 8>& SPS,
212 const clang::VarDecl *VD,
213 const clang::RecordDecl *TopLevelRecord,
216 const clang::Type *ElementType = GetConstantArrayElementType(CAT);
222 const clang::ExtVectorType *EVT =
223 static_cast<const clang::ExtVectorType*>(ElementType);
226 const clang::Type *BaseElementType = GetExtVectorElementType(EVT);
248 BuiltinInfo *FindBuiltinType(clang::BuiltinType::Kind builtinTypeKind) {
257 static const clang::Type *TypeExportableHelper(
258 clang::Type const *T,
259 llvm::SmallPtrSet<clang::Type const *, 8> &SPS,
261 clang::VarDecl const *VD,
262 clang::RecordDecl const *TopLevelRecord,
271 const clang::Type *CTI = T->getCanonicalTypeInternal().getTypePtr();
274 case clang::Type::Builtin: {
275 const clang::BuiltinType *BT = static_cast<const clang::BuiltinType*>(CTI);
278 case clang::Type::Record: {
293 clang::RecordDecl *RD = T->getAsStructureType()->getDecl();
320 for (clang::RecordDecl::field_iterator FI = RD->field_begin(),
324 const clang::FieldDecl *FD = *FI;
325 const clang::Type *FT = RSExportType::GetTypeOfDecl(FD);
347 case clang::Type::FunctionProto:
351 case clang::Type::Pointer: {
360 const clang::PointerType *PT = static_cast<const clang::PointerType*>(CTI);
361 const clang::Type *PointeeType = GetPointeeType(PT);
363 if (PointeeType->getTypeClass() == clang::Type::Pointer) {
386 case clang::Type::ExtVector: {
387 const clang::ExtVectorType *EVT =
388 static_cast<const clang::ExtVectorType*>(CTI);
394 const clang::Type *ElementType = GetExtVectorElementType(EVT);
396 if ((ElementType->getTypeClass() != clang::Type::Builtin) ||
403 case clang::Type::ConstantArray: {
404 const clang::ConstantArrayType *CAT =
405 static_cast<const clang::ConstantArrayType*>(CTI);
410 case clang::Type::Enum: {
430 static const clang::Type *TypeExportable(const clang::Type *T,
432 const clang::VarDecl *VD,
434 llvm::SmallPtrSet<const clang::Type*, 8> SPS =
435 llvm::SmallPtrSet<const clang::Type*, 8>();
441 const clang::VarDecl *VD, bool InCompositeType,
448 (VD->getFormalLinkage() == clang::ExternalLinkage)) {
450 const clang::Type *T = GetCanonicalType(VD->getType().getTypePtr());
451 if (T->getTypeClass() != clang::Type::Pointer) {
483 clang::ASTContext &C,
484 const clang::Type *&T,
485 const clang::NamedDecl *ND,
486 clang::SourceLocation Loc,
487 llvm::SmallPtrSet<const clang::Type*, 8>& SPS,
489 clang::RecordDecl *UnionDecl,
499 const clang::Type *CTI = T->getCanonicalTypeInternal().getTypePtr();
502 case clang::Type::Record: {
504 const clang::VarDecl *VD = (ND ? llvm::dyn_cast<clang::VarDecl>(ND) : nullptr);
521 clang::RecordDecl *RD = nullptr;
550 for (clang::RecordDecl::field_iterator FI = RD->field_begin(),
554 const clang::FieldDecl *FD = *FI;
555 const clang::Type *FT = RSExportType::GetTypeOfDecl(FD);
567 case clang::Type::Builtin: {
569 clang::QualType QT = T->getCanonicalTypeInternal();
592 case clang::Type::Pointer: {
624 const clang::PointerType *PT = static_cast<const clang::PointerType*>(CTI);
625 const clang::Type *PointeeType = GetPointeeType(PT);
632 case clang::Type::ExtVector: {
633 const clang::ExtVectorType *EVT =
634 static_cast<const clang::ExtVectorType*>(CTI);
635 const clang::Type *ElementType = GetExtVectorElementType(EVT);
640 ND->getFormalLinkage() == clang::ExternalLinkage) {
650 case clang::Type::ConstantArray: {
651 const clang::ConstantArrayType *CAT = static_cast<const clang::ConstantArrayType*>(CTI);
652 const clang::Type *ElementType = GetConstantArrayElementType(CAT);
678 bool RSExportType::NormalizeType(const clang::Type *&T,
681 const clang::VarDecl *VD,
701 bool RSExportType::ValidateType(slang::RSContext *Context, clang::ASTContext &C,
702 clang::QualType QT, const clang::NamedDecl *ND,
703 clang::SourceLocation Loc,
706 const clang::Type *T = QT.getTypePtr();
707 llvm::SmallPtrSet<const clang::Type*, 8> SPS =
708 llvm::SmallPtrSet<const clang::Type*, 8>();
712 if (auto VD = llvm::dyn_cast_or_null<clang::VarDecl>(ND)) {
713 if (VD->getFormalLinkage() == clang::ExternalLinkage) {
724 clang::VarDecl *VD, unsigned int TargetAPI,
728 (VD->getFormalLinkage() == clang::ExternalLinkage));
731 const clang::Type
732 *RSExportType::GetTypeOfDecl(const clang::DeclaratorDecl *DD) {
734 clang::QualType T = DD->getType();
744 llvm::StringRef RSExportType::GetTypeName(const clang::Type* T) {
749 const clang::Type *CTI = T->getCanonicalTypeInternal().getTypePtr();
752 case clang::Type::Builtin: {
753 const clang::BuiltinType *BT = static_cast<const clang::BuiltinType*>(CTI);
761 case clang::Type::Record: {
762 clang::RecordDecl *RD;
777 for (clang::TagDecl::redecl_iterator RI = RD->redecls_begin(),
791 case clang::Type::Pointer: {
793 const clang::PointerType *P = static_cast<const clang::PointerType*>(CTI);
794 const clang::Type *PT = GetPointeeType(P);
806 case clang::Type::ExtVector: {
807 const clang::ExtVectorType *EVT =
808 static_cast<const clang::ExtVectorType*>(CTI);
812 case clang::Type::ConstantArray : {
826 const clang::Type *T,
837 const clang::Type *CTI = T->getCanonicalTypeInternal().getTypePtr();
841 case clang::Type::Record: {
883 case clang::Type::Builtin: {
887 case clang::Type::Pointer: {
889 static_cast<const clang::PointerType*>(CTI),
895 case clang::Type::ExtVector: {
897 static_cast<const clang::ExtVectorType*>(CTI),
901 case clang::Type::ConstantArray: {
904 static_cast<const clang::ConstantArrayType*>(CTI));
917 RSExportType *RSExportType::Create(RSContext *Context, const clang::Type *T,
918 ExportKind EK, const clang::VarDecl *VD) {
928 const clang::VarDecl *VD) {
980 bool RSExportPrimitiveType::IsPrimitiveType(const clang::Type *T) {
981 if ((T != nullptr) && (T->getTypeClass() == clang::Type::Builtin))
1006 DataType RSExportPrimitiveType::GetRSSpecificType(const clang::Type *T) {
1008 if ((T == nullptr) || (T->getTypeClass() != clang::Type::Record))
1028 bool RSExportPrimitiveType::IsStructureTypeWithRSObject(const clang::Type *T) {
1034 const clang::RecordType *RT = T->getAsStructureType();
1039 const clang::RecordDecl *RD = RT->getDecl();
1047 for (clang::RecordDecl::field_iterator FI = RD->field_begin(),
1053 const clang::FieldDecl *FD = *FI;
1054 const clang::Type *FT = RSExportType::GetTypeOfDecl(FD);
1101 RSExportPrimitiveType::GetDataType(RSContext *Context, const clang::Type *T) {
1106 case clang::Type::Builtin: {
1107 const clang::BuiltinType *BT =
1108 static_cast<const clang::BuiltinType*>(T->getCanonicalTypeInternal().getTypePtr());
1119 case clang::Type::Record: {
1135 const clang::Type *T,
1148 const clang::Type *T) {
1248 const clang::PointerType *PT,
1250 const clang::Type *PointeeType = GetPointeeType(PT);
1253 if (PointeeType->getTypeClass() != clang::Type::Pointer) {
1290 RSExportVectorType::GetTypeName(const clang::ExtVectorType *EVT) {
1291 const clang::Type *ElementType = GetExtVectorElementType(EVT);
1294 if ((ElementType->getTypeClass() != clang::Type::Builtin))
1297 const clang::BuiltinType *BT =
1298 static_cast<const clang::BuiltinType*>(
1318 const clang::ExtVectorType *EVT,
1321 slangAssert(EVT != nullptr && EVT->getTypeClass() == clang::Type::ExtVector);
1323 const clang::Type *ElementType = GetExtVectorElementType(EVT);
1349 const clang::RecordType *RT,
1352 slangAssert((RT != nullptr) && (RT->getTypeClass() == clang::Type::Record));
1357 const clang::RecordDecl* RD = RT->getDecl();
1369 clang::RecordDecl::field_iterator FIT = RD->field_begin();
1370 const clang::FieldDecl *FD = *FIT;
1371 const clang::Type *FT = RSExportType::GetTypeOfDecl(FD);
1372 if ((FT == nullptr) || (FT->getTypeClass() != clang::Type::ConstantArray)) {
1379 const clang::ConstantArrayType *CAT =
1380 static_cast<const clang::ConstantArrayType *>(FT);
1381 const clang::Type *ElementType = GetConstantArrayElementType(CAT);
1383 (ElementType->getTypeClass() != clang::Type::Builtin) ||
1384 (static_cast<const clang::BuiltinType *>(ElementType)->getKind() !=
1385 clang::BuiltinType::Float)) {
1434 const clang::ConstantArrayType *CAT) {
1435 slangAssert(CAT != nullptr && CAT->getTypeClass() == clang::Type::ConstantArray);
1442 const clang::Type *ElementType = GetConstantArrayElementType(CAT);
1476 const clang::RecordType *RT,
1479 slangAssert(RT != nullptr && RT->getTypeClass() == clang::Type::Record);
1481 const clang::RecordDecl *RD = RT->getDecl();
1490 // Struct layout construct by clang. We rely on this for obtaining the
1492 const clang::ASTRecordLayout *RL =
1500 RD->hasAttr<clang::PackedAttr>(),
1506 for (clang::RecordDecl::field_iterator FI = RD->field_begin(),
1512 slangAssert(FI->getKind() == clang::Decl::Field);
1513 clang::FieldDecl *FD = *FI;