@@ -1619,18 +1619,58 @@ bool IsPODType(TCppType_t type) {
1619
1619
return QT.isPODType (getASTContext ());
1620
1620
}
1621
1621
1622
+ bool IsIntegerType (TCppType_t type, Signedness s) {
1623
+ if (!type)
1624
+ return false ;
1625
+ QualType QT = QualType::getFromOpaquePtr (type);
1626
+ switch (s) {
1627
+ case Signedness::kAny :
1628
+ return QT->hasIntegerRepresentation ();
1629
+
1630
+ case Signedness::kSigned :
1631
+ return QT->hasSignedIntegerRepresentation ();
1632
+
1633
+ case Signedness::kUnsigned :
1634
+ return QT->hasUnsignedIntegerRepresentation ();
1635
+ }
1636
+ return false ;
1637
+ }
1638
+
1639
+ bool IsFloatingType (TCppType_t type) {
1640
+ QualType QT = QualType::getFromOpaquePtr (type);
1641
+ return QT->hasFloatingRepresentation ();
1642
+ }
1643
+
1644
+ bool IsSameType (TCppType_t type_a, TCppType_t type_b) {
1645
+ clang::QualType QT1 = clang::QualType::getFromOpaquePtr (type_a);
1646
+ clang::QualType QT2 = clang::QualType::getFromOpaquePtr (type_b);
1647
+ return getASTContext ().hasSameType (QT1, QT2);
1648
+ }
1649
+
1622
1650
bool IsPointerType (TCppType_t type) {
1623
1651
QualType QT = QualType::getFromOpaquePtr (type);
1624
1652
return QT->isPointerType ();
1625
1653
}
1626
1654
1655
+ bool IsVoidPointerType (TCppType_t type) {
1656
+ QualType QT = QualType::getFromOpaquePtr (type);
1657
+ return QT->isVoidPointerType ();
1658
+ }
1659
+
1627
1660
TCppType_t GetPointeeType (TCppType_t type) {
1628
1661
if (!IsPointerType (type))
1629
1662
return nullptr ;
1630
1663
QualType QT = QualType::getFromOpaquePtr (type);
1631
1664
return QT->getPointeeType ().getAsOpaquePtr ();
1632
1665
}
1633
1666
1667
+ TCppType_t GetUnqualifiedType (TCppType_t type) {
1668
+ if (!type)
1669
+ return nullptr ;
1670
+ QualType QT = QualType::getFromOpaquePtr (type);
1671
+ return QT.getUnqualifiedType ().getAsOpaquePtr ();
1672
+ }
1673
+
1634
1674
bool IsReferenceType (TCppType_t type) {
1635
1675
QualType QT = QualType::getFromOpaquePtr (type);
1636
1676
return QT->isReferenceType ();
@@ -1666,6 +1706,8 @@ TCppType_t GetNonReferenceType(TCppType_t type) {
1666
1706
}
1667
1707
1668
1708
TCppType_t GetUnderlyingType (TCppType_t type) {
1709
+ if (!type)
1710
+ return nullptr ;
1669
1711
QualType QT = QualType::getFromOpaquePtr (type);
1670
1712
QT = QT->getCanonicalTypeUnqualified ();
1671
1713
0 commit comments