Make sure that functions added to gl_API.xml that do not have any GLX
authorIan Romanick <idr@us.ibm.com>
Mon, 24 Jan 2005 20:08:28 +0000 (20:08 +0000)
committerIan Romanick <idr@us.ibm.com>
Mon, 24 Jan 2005 20:08:28 +0000 (20:08 +0000)
section are marked as ignored.  Also ignore any functions that don't have
assigned dispatch offsets.

Fold Adam Jackson's changes to indirect_size.c into the generator scripts so
that they don't get lost.  "DO NOT EDIT" really means "DO NOT EDIT". ;)

src/mesa/glapi/glX_XML.py
src/mesa/glapi/glX_proto_send.py

index 6da454c..de854a6 100644 (file)
@@ -62,6 +62,10 @@ def printNoinline():
 #    define NOINLINE
 #  endif"""
 
+def printHaveAlias():
+       print """#  if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+#    define HAVE_ALIAS
+#  endif"""
 
 class glXItemFactory(gl_XML.glItemFactory):
        """Factory to create GLX protocol oriented objects derived from glItem."""
@@ -371,6 +375,28 @@ class glXFunction(gl_XML.glFunction):
                        gl_XML.glFunction.startElement(self, name, attrs)
 
 
+       def endElement(self, name):
+               if name == "function":
+                       # Mark any function that does not have GLX protocol
+                       # defined as "ignore".  This prevents bad things from
+                       # happening when people add new functions to the GL
+                       # API XML without adding any GLX section.
+                       #
+                       # This will also mark functions that don't have a
+                       # dispatch offset at ignored.
+
+                       if (self.fn_offset == -1 and not self.fn_alias) or not (self.handcode or self.glx_rop or self.glx_sop or self.glx_vendorpriv or self.vectorequiv or self.fn_alias):
+                               #if not self.ignore:
+                               #       if self.fn_offset == -1:
+                               #               print '/* %s ignored becuase no offset assigned. */' % (self.name)
+                               #       else:
+                               #               print '/* %s ignored becuase no GLX opcode assigned. */' % (self.name)
+
+                               self.ignore = 1
+
+               return gl_XML.glFunction.endElement(self, name)
+
+
        def append(self, tag_name, p):
                gl_XML.glFunction.append(self, tag_name, p)
 
index e7cda2f..32d8d60 100644 (file)
@@ -790,6 +790,8 @@ class PrintGlxSizeStubs(glX_XML.GlxProto):
                print '#include "indirect_size.h"'
                
                print ''
+               glX_XML.printHaveAlias()
+               print ''
                glX_XML.printPure()
                print ''
                glX_XML.printFastcall()