[cfe-commits] r62019 - /cfe/trunk/tools/ccc/ccclib/Types.py

Daniel Dunbar daniel at zuster.org
Fri Jan 9 17:50:42 PST 2009


Author: ddunbar
Date: Fri Jan  9 19:50:42 2009
New Revision: 62019

URL: http://llvm.org/viewvc/llvm-project?rev=62019&view=rev
Log:
ccc: Add information about whether type can be user specified (a -x
argument) to InputType.

Modified:
    cfe/trunk/tools/ccc/ccclib/Types.py

Modified: cfe/trunk/tools/ccc/ccclib/Types.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Types.py?rev=62019&r1=62018&r2=62019&view=diff

==============================================================================
--- cfe/trunk/tools/ccc/ccclib/Types.py (original)
+++ cfe/trunk/tools/ccc/ccclib/Types.py Fri Jan  9 19:50:42 2009
@@ -3,13 +3,15 @@
     the driver recognizes and control processing."""
     
     def __init__(self, name, preprocess=None, onlyAssemble=False, 
-                 onlyPrecompile=False, tempSuffix=None):
+                 onlyPrecompile=False, tempSuffix=None, 
+                 canBeUserSpecified=False):
         assert preprocess is None or isinstance(preprocess, InputType)
         self.name = name
         self.preprocess = preprocess
         self.onlyAssemble = onlyAssemble
         self.onlyPrecompile = onlyPrecompile
         self.tempSuffix = tempSuffix
+        self.canBeUserSpecified = canBeUserSpecified
 
     def __repr__(self):
         return '%s(%r, %r, %r, %r, %r)' % (self.__class__.__name__,
@@ -17,40 +19,55 @@
                                            self.preprocess, 
                                            self.onlyAssemble,
                                            self.onlyPrecompile,
-                                           self.tempSuffix)
+                                           self.tempSuffix,
+                                           self.canBeUserSpecified)
 
 # C family source language (with and without preprocessing).
-CTypeNoPP = InputType('cpp-output', tempSuffix='i')
-CType = InputType('c', CTypeNoPP)
-ObjCTypeNoPP = InputType('objective-c-cpp-output', tempSuffix='mi')
-ObjCType = InputType('objective-c', ObjCTypeNoPP)
-CXXTypeNoPP = InputType('c++-cpp-output', tempSuffix='ii')
-CXXType = InputType('c++', CXXTypeNoPP)
-ObjCXXTypeNoPP = InputType('objective-c++-cpp-output', tempSuffix='mii')
-ObjCXXType = InputType('c++', ObjCXXTypeNoPP)
+CTypeNoPP = InputType('cpp-output', tempSuffix='i', 
+                      canBeUserSpecified=True)
+CType = InputType('c', CTypeNoPP,
+                  canBeUserSpecified=True)
+ObjCTypeNoPP = InputType('objective-c-cpp-output', tempSuffix='mi',
+                         canBeUserSpecified=True)
+ObjCType = InputType('objective-c', ObjCTypeNoPP, 
+                     canBeUserSpecified=True)
+CXXTypeNoPP = InputType('c++-cpp-output', tempSuffix='ii',
+                        canBeUserSpecified=True)
+CXXType = InputType('c++', CXXTypeNoPP,
+                    canBeUserSpecified=True)
+ObjCXXTypeNoPP = InputType('objective-c++-cpp-output', tempSuffix='mii',
+                           canBeUserSpecified=True)
+ObjCXXType = InputType('objective-c++', ObjCXXTypeNoPP,
+                       canBeUserSpecified=True)
 
 # C family input files to precompile.
 CHeaderNoPPType = InputType('c-header-cpp-output', onlyPrecompile=True, tempSuffix='pch')
-CHeaderType = InputType('c-header', CHeaderNoPPType, onlyPrecompile=True)
+CHeaderType = InputType('c-header', CHeaderNoPPType, onlyPrecompile=True,
+                        canBeUserSpecified=True)
 ObjCHeaderNoPPType = InputType('objective-c-header-cpp-output', onlyPrecompile=True, tempSuffix='pch')
-ObjCHeaderType = InputType('objective-c-header', ObjCHeaderNoPPType, onlyPrecompile=True)
+ObjCHeaderType = InputType('objective-c-header', ObjCHeaderNoPPType, onlyPrecompile=True,
+                           canBeUserSpecified=True)
 CXXHeaderNoPPType = InputType('c++-header-cpp-output', onlyPrecompile=True, tempSuffix='pch')
-CXXHeaderType = InputType('c++-header', CXXHeaderNoPPType, onlyPrecompile=True)
+CXXHeaderType = InputType('c++-header', CXXHeaderNoPPType, onlyPrecompile=True,
+                          canBeUserSpecified=True)
 ObjCXXHeaderNoPPType = InputType('objective-c++-header-cpp-output', onlyPrecompile=True, tempSuffix='pch')
-ObjCXXHeaderType = InputType('objective-c++-header', ObjCXXHeaderNoPPType, onlyPrecompile=True)
+ObjCXXHeaderType = InputType('objective-c++-header', ObjCXXHeaderNoPPType, onlyPrecompile=True,
+                             canBeUserSpecified=True)
 
 # Other languages.
-AdaType = InputType('ada')
-AsmTypeNoPP = InputType('assembler', onlyAssemble=True, tempSuffix='s')
-AsmType = InputType('assembler-with-cpp', AsmTypeNoPP, onlyAssemble=True)
-FortranTypeNoPP = InputType('fortran')
-FortranType = InputType('fortran', FortranTypeNoPP)
-JavaType = InputType('java')
+AdaType = InputType('ada', canBeUserSpecified=True)
+AsmTypeNoPP = InputType('assembler', onlyAssemble=True, tempSuffix='s',
+                        canBeUserSpecified=True)
+AsmType = InputType('assembler-with-cpp', AsmTypeNoPP, onlyAssemble=True,
+                    canBeUserSpecified=True)
+FortranTypeNoPP = InputType('f95', canBeUserSpecified=True)
+FortranType = InputType('f95-cpp-input', FortranTypeNoPP, canBeUserSpecified=True)
+JavaType = InputType('java', canBeUserSpecified=True)
 
 # Misc.
 PCHType = InputType('precompiled-header')
 ObjectType = InputType('object', tempSuffix='o')
-TreelangType = InputType('treelang')
+TreelangType = InputType('treelang', canBeUserSpecified=True)
 ImageType = InputType('image', tempSuffix='out')
 NothingType = InputType('nothing')
 
@@ -116,8 +133,13 @@
     'assembler' : AsmTypeNoPP,
     'assembler-with-cpp' : AsmType,
     'ada' : AdaType,
-    'f95' : FortranType, 
-    'f95-cpp-input' : FortranTypeNoPP,
+    'f95-cpp-input' : FortranType, 
+    'f95' : FortranTypeNoPP,
     'java' : JavaType,
     'treelang' : TreelangType,
 }
+
+# Check that the type specifier map at least matches what the types
+# believe to be true.
+assert not [name for name,type in kTypeSpecifierMap.items()
+            if type and (type.name != name or not type.canBeUserSpecified)]





More information about the cfe-commits mailing list