Browse Source

make compatible with semi-new interrogate

David Rose 24 years ago
parent
commit
711bd70f9d

+ 2 - 2
direct/src/ffi/FFIEnvironment.py

@@ -22,8 +22,8 @@ class FFIEnvironment:
         except KeyError:
         except KeyError:
             raise 'Type not found in FFIEnvironment'
             raise 'Type not found in FFIEnvironment'
     
     
-    def addGlobalFunction(self, typeDescriptor):
-        self.globalFunctions.append(typeDescriptor)
+    def addGlobalFunction(self, typeDescriptors):
+        self.globalFunctions.extend(typeDescriptors)
     def addDowncastFunction(self, typeDescriptor):
     def addDowncastFunction(self, typeDescriptor):
         self.downcastFunctions.append(typeDescriptor)
         self.downcastFunctions.append(typeDescriptor)
     def addGlobalValue(self, typeDescriptor):
     def addGlobalValue(self, typeDescriptor):

+ 10 - 4
direct/src/ffi/FFIInterrogateDatabase.py

@@ -59,7 +59,8 @@ def outputGlobalFileImports(file, methodList, CModuleName):
         if (not (method.typeDescriptor.moduleName in CModuleList)):
         if (not (method.typeDescriptor.moduleName in CModuleList)):
             CModuleList.append(method.typeDescriptor.moduleName)
             CModuleList.append(method.typeDescriptor.moduleName)
     for CModuleName in CModuleList:
     for CModuleName in CModuleList:
-        file.write('import ' + CModuleName + '\n')
+        if CModuleName:
+            file.write('import ' + CModuleName + '\n')
 
 
     moduleList = []
     moduleList = []
     for method in methodList:
     for method in methodList:
@@ -85,7 +86,8 @@ def outputGlobalFileImports(file, methodList, CModuleName):
 
 
     
     
     for moduleName in moduleList:
     for moduleName in moduleList:
-        file.write('import ' + moduleName + '\n')
+        if moduleName:
+            file.write('import ' + moduleName + '\n')
     
     
     file.write('\n')
     file.write('\n')
 
 
@@ -130,7 +132,8 @@ def outputImportFileImports(file, typeList, CModuleName):
 
 
     file.write('# Import classes\n')
     file.write('# Import classes\n')
     for moduleName in moduleList:
     for moduleName in moduleList:
-        file.write('import ' + moduleName + '\n')    
+        if moduleName:
+            file.write('import ' + moduleName + '\n')    
     file.write('\n')
     file.write('\n')
 
 
     file.write('# Import the global module file into our name space\n')
     file.write('# Import the global module file into our name space\n')
@@ -219,6 +222,7 @@ def getTypeName(typeIndex, scoped=0):
 
 
     if not name:
     if not name:
         FFIConstants.notify.warning('typeIndex: ' + `typeIndex` + ' typeName: ' + typeName + ' has no name')
         FFIConstants.notify.warning('typeIndex: ' + `typeIndex` + ' typeName: ' + typeName + ' has no name')
+        name = "UnnamedType"
 
 
     return name
     return name
 
 
@@ -625,13 +629,15 @@ class FFIInterrogateDatabase:
         descriptors = self.constructFunctionTypeDescriptors(globalIndex)
         descriptors = self.constructFunctionTypeDescriptors(globalIndex)
         if (len(descriptors) == 0):
         if (len(descriptors) == 0):
             return None
             return None
+        funcSpecs = []
         for descriptor in descriptors:
         for descriptor in descriptors:
             funcSpec = FFISpecs.GlobalFunctionSpecification()
             funcSpec = FFISpecs.GlobalFunctionSpecification()
             funcSpec.typeDescriptor = descriptor
             funcSpec.typeDescriptor = descriptor
             funcSpec.name = FFIRename.methodNameFromCppName(
             funcSpec.name = FFIRename.methodNameFromCppName(
                 funcSpec.typeDescriptor.foreignTypeName)
                 funcSpec.typeDescriptor.foreignTypeName)
             funcSpec.index = globalIndex
             funcSpec.index = globalIndex
-            return funcSpec
+            funcSpecs.append(funcSpec)
+        return funcSpecs
         
         
     def addGlobalFunctions(self, CModuleName):
     def addGlobalFunctions(self, CModuleName):
         numGlobals = interrogate_number_of_global_functions()
         numGlobals = interrogate_number_of_global_functions()

+ 3 - 2
direct/src/ffi/FFITypes.py

@@ -602,8 +602,9 @@ class ClassTypeDescriptor(BaseTypeDescriptor):
 
 
         indent(file, 0, '# Import all the C modules this class uses\n')
         indent(file, 0, '# Import all the C modules this class uses\n')
         for moduleName in self.getCModules():
         for moduleName in self.getCModules():
-            indent(file, 0, 'import ' + moduleName + '\n')            
-            indent(file, 0, 'import ' + moduleName + 'Downcasts\n')
+            if moduleName:
+                indent(file, 0, 'import ' + moduleName + '\n')            
+                indent(file, 0, 'import ' + moduleName + 'Downcasts\n')
         indent(file, 0, '\n')
         indent(file, 0, '\n')
         indent(file, 0, 'import FFIExternalObject\n')
         indent(file, 0, 'import FFIExternalObject\n')