]> granicus.if.org Git - clang/commitdiff
Driver: Add types::{isAcceptedByClang,isCXX} predicates.
authorDaniel Dunbar <daniel@zuster.org>
Fri, 13 Mar 2009 23:46:19 +0000 (23:46 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Fri, 13 Mar 2009 23:46:19 +0000 (23:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66986 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Types.h
lib/Driver/Types.cpp

index 9d2313c62bcb9957f8e5b304b612f4ebcb0a2c41..92520a77b33bcf571659e01cbff96a3a599d9e5d 100644 (file)
@@ -56,6 +56,12 @@ namespace types {
   /// types).
   bool canLipoType(ID Id);
 
+  /// isAcceptedByClang - Can clang handle this input type.
+  bool isAcceptedByClang(ID Id);
+
+  /// isCXX - Is this a "C++" input (C++ and Obj-C++ sources and headers).
+  bool isCXX(ID Id);
+
   /// lookupTypeForExtension - Lookup the type to use for the file
   /// extension \arg Ext.
   ID lookupTypeForExtension(const char *Ext);
index cef5c811b7bc7061c3bff22b75809d54fab0cd8d..e89e973f3f530dd57a53222a74b9471f28ad7355 100644 (file)
@@ -69,6 +69,37 @@ bool types::canLipoType(ID Id) {
           Id == TY_Object); 
 }
 
+bool types::isAcceptedByClang(ID Id) {
+  switch (Id) {
+  default:
+    return false;
+
+  case TY_Asm:
+  case TY_C: case TY_PP_C:
+  case TY_ObjC: case TY_PP_ObjC:
+  case TY_CXX: case TY_PP_CXX:
+  case TY_ObjCXX: case TY_PP_ObjCXX:
+  case TY_CHeader: case TY_PP_CHeader:
+  case TY_ObjCHeader: case TY_PP_ObjCHeader:
+  case TY_CXXHeader: case TY_PP_CXXHeader:
+  case TY_ObjCXXHeader: case TY_PP_ObjCXXHeader:
+    return true;
+  }
+}
+
+bool types::isCXX(ID Id) {
+  switch (Id) {
+  default:
+    return false;
+
+  case TY_CXX: case TY_PP_CXX:
+  case TY_ObjCXX: case TY_PP_ObjCXX:
+  case TY_CXXHeader: case TY_PP_CXXHeader:
+  case TY_ObjCXXHeader: case TY_PP_ObjCXXHeader:
+    return true;
+  }
+}
+
 types::ID types::lookupTypeForExtension(const char *Ext) {
   unsigned N = strlen(Ext);