Flesh out the QualifierSet API.
authorJohn McCall <rjmccall@apple.com>
Sat, 25 Jul 2009 04:35:50 +0000 (04:35 +0000)
committerJohn McCall <rjmccall@apple.com>
Sat, 25 Jul 2009 04:35:50 +0000 (04:35 +0000)
llvm-svn: 77046

clang/include/clang/AST/Type.h

index 5ef3539e693a46781735328d7b3bd03c9283f1ea..761f3fc9224dce53db69e3f7ee5e53f410da99c8 100644 (file)
@@ -571,6 +571,30 @@ public:
     CVRMask(0), AddressSpace(0), GCAttrType(QualType::GCNone) {
   }
 
+  void removeConst() { removeCVR(QualType::Const); }
+  void removeVolatile() { removeCVR(QualType::Volatile); }
+  void removeRestrict() { removeCVR(QualType::Restrict); }
+  void removeCVR(unsigned mask) { CVRMask &= ~mask; }
+  void removeAddressSpace() { AddressSpace = 0; }
+  void removeGCAttrType() { GCAttrType = QualType::GCNone; }
+
+  void addConst() { addCVR(QualType::Const); }
+  void addVolatile() { addCVR(QualType::Volatile); }
+  void addRestrict() { addCVR(QualType::Restrict); }
+  void addCVR(unsigned mask) { CVRMask |= mask; }
+  void addAddressSpace(unsigned space) {
+    assert(space);
+    AddressSpace = space;
+  }
+  void addGCAttrType(QualType::GCAttrTypes type) {
+    assert(type);
+    GCAttrType = type;
+  }
+
+  bool empty() {
+    return !CVRMask && !AddressSpace && !GCAttrType;
+  }
+
   /// Collect any qualifiers on the given type and return an
   /// unqualified type.
   const Type *strip(QualType QT) {