aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-03-13 23:46:19 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-03-13 23:46:19 +0000
commit4db938ceb72dbaa5f7b50f6420a72629acbf29eb (patch)
tree9ab24ea08b6055d6f1238fc041e8b0258945199c
parent789e220d481371d52bd6265b5c414c5fe277f76b (diff)
Driver: Add types::{isAcceptedByClang,isCXX} predicates.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66986 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Driver/Types.h6
-rw-r--r--lib/Driver/Types.cpp31
2 files changed, 37 insertions, 0 deletions
diff --git a/include/clang/Driver/Types.h b/include/clang/Driver/Types.h
index 9d2313c62b..92520a77b3 100644
--- a/include/clang/Driver/Types.h
+++ b/include/clang/Driver/Types.h
@@ -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);
diff --git a/lib/Driver/Types.cpp b/lib/Driver/Types.cpp
index cef5c811b7..e89e973f3f 100644
--- a/lib/Driver/Types.cpp
+++ b/lib/Driver/Types.cpp
@@ -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);