Convert all Python scripts to use XML namespaces.
authorIan Romanick <idr@us.ibm.com>
Mon, 18 Apr 2005 19:16:07 +0000 (19:16 +0000)
committerIan Romanick <idr@us.ibm.com>
Mon, 18 Apr 2005 19:16:07 +0000 (19:16 +0000)
12 files changed:
src/mesa/glapi/glX_XML.py
src/mesa/glapi/glX_doc.py
src/mesa/glapi/glX_proto_send.py
src/mesa/glapi/glX_proto_size.py
src/mesa/glapi/gl_SPARC_asm.py
src/mesa/glapi/gl_XML.py
src/mesa/glapi/gl_apitemp.py
src/mesa/glapi/gl_enums.py
src/mesa/glapi/gl_offsets.py
src/mesa/glapi/gl_procs.py
src/mesa/glapi/gl_table.py
src/mesa/glapi/gl_x86_asm.py

index e48955e..81c94a5 100644 (file)
@@ -230,8 +230,9 @@ class glXEnum(gl_XML.glEnum):
                gl_XML.glEnum.__init__(self, context, name, attrs)
 
 
-       def startElement(self, name, attrs):
-               if name == "size":
+       def startElementNS(self, name, qname, attrs):
+               [uri, true_name] = name
+               if true_name == "size":
                        [temp_n, c, mode] = self.process_attributes(attrs)
 
                        if temp_n == "Get":
@@ -247,7 +248,7 @@ class glXEnum(gl_XML.glEnum):
 
                                self.context.glx_enum_functions[ n ].append( c, self.value, self.name )
                else:
-                       gl_XML.glEnum.startElement(self, context, name, attrs)
+                       gl_XML.glEnum.startElementNS(self, name, qname, attrs)
                return
 
 
@@ -311,7 +312,7 @@ class glXFunction(gl_XML.glFunction):
        can_be_large = 0
 
        def __init__(self, context, name, attrs):
-               self.vectorequiv = attrs.get('vectorequiv', None)
+               self.vectorequiv = attrs.get((None, 'vectorequiv'), None)
                self.counter = None
                self.output = None
                self.can_be_large = 0
@@ -331,19 +332,20 @@ class glXFunction(gl_XML.glFunction):
                return glXParameterIterator(self.fn_parameters, skip_output, max_order)
 
                
-       def startElement(self, name, attrs):
+       def startElementNS(self, name, qname, attrs):
                """Process elements within a function that are specific to GLX."""
 
-               if name == "glx":
-                       self.glx_rop = int(attrs.get('rop', "0"))
-                       self.glx_sop = int(attrs.get('sop', "0"))
-                       self.glx_vendorpriv = int(attrs.get('vendorpriv', "0"))
-                       self.img_reset = attrs.get('img_reset', None)
+               [uri, true_name] = name
+               if true_name == "glx":
+                       self.glx_rop = int(attrs.get((None, 'rop'), "0"))
+                       self.glx_sop = int(attrs.get((None, 'sop'), "0"))
+                       self.glx_vendorpriv = int(attrs.get((None, 'vendorpriv'), "0"))
+                       self.img_reset = attrs.get((None, 'img_reset'), None)
 
                        # The 'handcode' attribute can be one of 'true',
                        # 'false', 'client', or 'server'.
 
-                       handcode = attrs.get('handcode', "false")
+                       handcode = attrs.get((None, 'handcode'), "false")
                        if handcode == "false":
                                self.server_handcode = 0
                                self.client_handcode = 0
@@ -365,11 +367,12 @@ class glXFunction(gl_XML.glFunction):
                        self.reply_always_array   = gl_XML.is_attr_true( attrs, 'always_array' )
                        self.dimensions_in_reply  = gl_XML.is_attr_true( attrs, 'dimensions_in_reply' )
                else:
-                       gl_XML.glFunction.startElement(self, name, attrs)
+                       gl_XML.glFunction.startElementNS(self, name, qname, attrs)
 
 
-       def endElement(self, name):
-               if name == "function":
+       def endElementNS(self, name, qname):
+               [uri, true_name] = name
+               if true_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
@@ -387,7 +390,7 @@ class glXFunction(gl_XML.glFunction):
 
                                self.ignore = 1
 
-               return gl_XML.glFunction.endElement(self, name)
+               return gl_XML.glFunction.endElementNS(self, name, qname)
 
 
        def append(self, tag_name, p):
@@ -664,8 +667,9 @@ class GlxProto(gl_XML.FilterGLAPISpecBase):
                self.glx_enum_functions = {}
 
 
-       def endElement(self, name):
-               if name == 'OpenGLAPI':
+       def endElementNS(self, name, qname):
+               [uri, true_name] = name
+               if true_name == 'OpenGLAPI':
                        # Once all the parsing is done, we have to go back and
                        # fix-up some cross references between different
                        # functions.
@@ -680,7 +684,7 @@ class GlxProto(gl_XML.FilterGLAPISpecBase):
                                        else:
                                                raise RuntimeError("Could not find the vector equiv. function %s for %s!" % (f.name, f.vectorequiv))
                else:
-                       gl_XML.FilterGLAPISpecBase.endElement(self, name)
+                       gl_XML.FilterGLAPISpecBase.endElementNS(self, name, qname)
                return
 
 
index dd96a59..ea90d53 100644 (file)
@@ -268,7 +268,7 @@ if __name__ == '__main__':
        dh = PrintGlxProtoText()
 
        parser = make_parser()
-       parser.setFeature(feature_namespaces, 0)
+       parser.setFeature(feature_namespaces, 1)
        parser.setContentHandler(dh)
 
        f = open(file_name)
index 7c31b87..d78e07e 100644 (file)
@@ -890,7 +890,7 @@ if __name__ == '__main__':
                show_usage()
 
        parser = make_parser()
-       parser.setFeature(feature_namespaces, 0)
+       parser.setFeature(feature_namespaces, 1)
        parser.setContentHandler(dh)
 
        f = open(file_name)
index cc28b89..5049545 100644 (file)
@@ -246,8 +246,9 @@ class PrintGlxReqSize_common(glX_XML.GlxProto):
                self.size_functions = []
 
 
-       def endElement(self, name):
-               if name == "function":
+       def endElementNS(self, name, qname):
+               [uri, true_name] = name
+               if true_name == "function":
                        f = self.current_object
                        if f.glx_rop and not f.ignore and f.fn_alias == None and f.vectorequiv == None:
 
@@ -259,7 +260,7 @@ class PrintGlxReqSize_common(glX_XML.GlxProto):
                                                        self.size_functions.append( f )
                                                        break
 
-               glX_XML.GlxProto.endElement(self, name)
+               glX_XML.GlxProto.endElementNS(self, name, qname)
 
 
        def functionIterator(self):
@@ -533,7 +534,7 @@ if __name__ == '__main__':
                show_usage()
 
        parser = make_parser()
-       parser.setFeature(feature_namespaces, 0)
+       parser.setFeature(feature_namespaces, 1)
        parser.setContentHandler(dh)
 
        f = open(file_name)
index c4afc4e..2623e1b 100644 (file)
@@ -124,7 +124,7 @@ if __name__ == '__main__':
                show_usage()
 
        parser = make_parser()
-       parser.setFeature(feature_namespaces, 0)
+       parser.setFeature(feature_namespaces, 1)
        parser.setContentHandler(dh)
 
        f = open(file_name)
index bb6ec2b..38ccc53 100644 (file)
@@ -39,7 +39,7 @@ def is_attr_true( attrs, name ):
        value is 'true', non-zero will be returned.  An exception will be
        raised for any other value."""
 
-       value = attrs.get(name, "false")
+       value = attrs.get((None, name), "false")
        if value == "true":
                return 1
        elif value == "false":
@@ -60,7 +60,7 @@ class glItem:
                context.append(tag_name, self)
                return
        
-       def startElement(self, name, attrs):
+       def startElementNS(self, name, qname, attrs):
                """Generic startElement handler.
                
                The startElement handler is called for all elements except
@@ -70,7 +70,7 @@ class glItem:
                twice."""
                return
 
-       def endElement(self, name):
+       def endElementNS(self, name, qname):
                """Generic endElement handler.
 
                Generic endElement handler.    Returns 1 if the tag containing
@@ -87,7 +87,7 @@ class glItem:
                associated with an object, even the element that started the
                object.  See the description of startElement an example."""
 
-               if name == self.tag_name:
+               if name == (None, self.tag_name):
                        return 1
                else:
                        return 0
@@ -102,12 +102,12 @@ class glEnum( glItem ):
        This class is not complete, and is not really used yet."""
 
        def __init__(self, context, name, attrs):
-               self.value = int(attrs.get('value', "0x0000"), 0)
+               self.value = int(attrs.get((None, 'value'), "0x0000"), 0)
 
-               enum_name = "GL_" + attrs.get('name', None)
+               enum_name = "GL_" + attrs.get((None, 'name'), None)
                glItem.__init__(self, name, enum_name, context)
 
-               temp = attrs.get('count', None)
+               temp = attrs.get((None, 'count'), None)
                self.default_count = 0
                if temp == "?":
                        self.default_count = -1
@@ -122,9 +122,9 @@ class glEnum( glItem ):
 
 
        def process_attributes(self, attrs):
-               name = attrs.get('name', None)
+               name = attrs.get((None, 'name'), None)
 
-               temp = attrs.get('count', None)
+               temp = attrs.get((None, 'count'), None)
                if temp == None:
                        c = self.default_count
                else:
@@ -133,7 +133,7 @@ class glEnum( glItem ):
                        except Exception,e:
                                raise RuntimeError('Invalid count value "%s" for enum "%s" in function "%s" when an integer was expected.' % (temp, self.name, n))
 
-               mode_str = attrs.get('mode', "set")
+               mode_str = attrs.get((None, 'mode'), "set")
                if mode_str == "set":
                        mode = 1
                elif mode_str == "get":
@@ -148,10 +148,10 @@ class glType( glItem ):
        """Subclass of glItem for representing GL types."""
 
        def __init__(self, context, name, attrs):
-               self.size = int(attrs.get('size', "0"))
-               self.glx_name = attrs.get('glx_name', "")
+               self.size = int(attrs.get((None, 'size'), "0"))
+               self.glx_name = attrs.get((None, 'glx_name'), "")
 
-               type_name = "GL" + attrs.get('name', None)
+               type_name = "GL" + attrs.get((None, 'name'), None)
                glItem.__init__(self, name, type_name, context)
 
 
@@ -166,10 +166,10 @@ class glParameter( glItem ):
        is_pointer = 0
 
        def __init__(self, context, name, attrs):
-               p_name = attrs.get('name', None)
-               self.p_type_string = attrs.get('type', None)
+               p_name = attrs.get((None, 'name'), None)
+               self.p_type_string = attrs.get((None, 'type'), None)
 
-               temp = attrs.get('variable_param', None)
+               temp = attrs.get((None, 'variable_param'), None)
                if temp:
                        self.count_parameter_list = temp.split( ' ' )
                else:
@@ -185,7 +185,7 @@ class glParameter( glItem ):
                # statement will throw an exception, and the except block will
                # take over.
 
-               c = attrs.get('count', "0")
+               c = attrs.get((None, 'count'), "0")
                try: 
                        self.p_count = int(c)
                        self.counter = None
@@ -193,27 +193,27 @@ class glParameter( glItem ):
                        self.p_count = 0
                        self.counter = c
 
-               self.count_scale = int(attrs.get('count_scale', "1"))
-                       
+               self.count_scale = int(attrs.get((None, 'count_scale'), "1"))
+
                self.is_counter = is_attr_true( attrs, 'counter' )
                self.is_output  = is_attr_true( attrs, 'output' )
 
 
                # Pixel data has special parameters.
 
-               self.width      = attrs.get('img_width',  None)
-               self.height     = attrs.get('img_height', None)
-               self.depth      = attrs.get('img_depth',  None)
-               self.extent     = attrs.get('img_extent', None)
+               self.width      = attrs.get((None, 'img_width'),  None)
+               self.height     = attrs.get((None, 'img_height'), None)
+               self.depth      = attrs.get((None, 'img_depth'),  None)
+               self.extent     = attrs.get((None, 'img_extent'), None)
 
-               self.img_xoff   = attrs.get('img_xoff',   None)
-               self.img_yoff   = attrs.get('img_yoff',   None)
-               self.img_zoff   = attrs.get('img_zoff',   None)
-               self.img_woff   = attrs.get('img_woff',   None)
+               self.img_xoff   = attrs.get((None, 'img_xoff'),   None)
+               self.img_yoff   = attrs.get((None, 'img_yoff'),   None)
+               self.img_zoff   = attrs.get((None, 'img_zoff'),   None)
+               self.img_woff   = attrs.get((None, 'img_woff'),   None)
 
-               self.img_format = attrs.get('img_format', None)
-               self.img_type   = attrs.get('img_type',   None)
-               self.img_target = attrs.get('img_target', None)
+               self.img_format = attrs.get((None, 'img_format'), None)
+               self.img_type   = attrs.get((None, 'img_type'),   None)
+               self.img_target = attrs.get((None, 'img_target'), None)
 
                self.img_pad_dimensions = is_attr_true( attrs, 'img_pad_dimensions' )
                self.img_null_flag      = is_attr_true( attrs, 'img_null_flag' )
@@ -351,19 +351,19 @@ class glParameterIterator:
 
 class glFunction( glItem ):
        def __init__(self, context, name, attrs):
-               self.fn_alias = attrs.get('alias', None)
+               self.fn_alias = attrs.get((None, 'alias'), None)
                self.fn_parameters = []
                self.image = None
                self.count_parameter_list = []
                self.fn_return_type = "void"
 
-               temp = attrs.get('offset', None)
+               temp = attrs.get((None, 'offset'), None)
                if temp == None or temp == "?":
                        self.fn_offset = -1
                else:
                        self.fn_offset = int(temp)
 
-               fn_name = attrs.get('name', None)
+               fn_name = attrs.get((None, 'name'), None)
                if self.fn_alias != None:
                        self.real_name = self.fn_alias
                else:
@@ -380,19 +380,20 @@ class glFunction( glItem ):
                return glParameterIterator(self.fn_parameters)
 
 
-       def startElement(self, name, attrs):
-               if name == "param":
+       def startElementNS(self, name, qname, attrs):
+               [uri, true_name] = name
+               if true_name == "param":
                        try:
-                               self.context.factory.create(self, name, attrs)
+                               self.context.factory.create(self, true_name, attrs)
                        except RuntimeError:
                                print "Error with parameter '%s' in function '%s'." \
-                                       % (attrs.get('name','(unknown)'), self.name)
+                                       % (attrs.get((None, 'name'),'(unknown)'), self.name)
                                raise
-               elif name == "return":
-                       self.set_return_type(attrs.get('type', None))
+               elif true_name == "return":
+                       self.set_return_type(attrs.get((None, 'type'), None))
 
 
-       def endElement(self, name):
+       def endElementNS(self, name, qname):
                """Handle the end of a <function> element.
 
                At the end of a <function> element, there is some semantic
@@ -400,7 +401,8 @@ class glFunction( glItem ):
                exceptions from being thrown elsewhere in the code.
                """
 
-               if name == "function":
+               [uri, true_name] = name
+               if true_name == "function":
                        for p in self.variable_length_parameters:
                                if p.counter:
                                        counter = self.parameters_by_name[ p.counter ]
@@ -607,16 +609,21 @@ class FilterGLAPISpecBase(saxutils.XMLFilterBase):
                        # offset, then we do not need to track it.  These are
                        # functions that don't have an assigned offset
 
-                       if obj.fn_offset >= 0 or obj.fn_alias != None:
-                               if obj.fn_offset >= 0:
-                                       index = obj.fn_offset
-                               else:
-                                       index = self.next_alias
-                                       self.next_alias -= 1
+                       if not self.functions_by_name.has_key(obj.name):
+                               self.functions_by_name[obj.name] = obj
 
-                               self.functions[index] = obj
+                               if obj.fn_offset >= 0 or obj.fn_alias != None:
+                                       if obj.fn_offset >= 0:
+                                               index = obj.fn_offset
+                                       else:
+                                               index = self.next_alias
+                                               self.next_alias -= 1
 
-                       self.functions_by_name[obj.name] = obj
+                                       self.functions[index] = obj
+                       else:
+                               # We should do some checking here to make
+                               # sure the functions are an identical match.
+                               pass
 
                elif object_type == "type":
                        self.types[obj.name] = obj
@@ -624,7 +631,7 @@ class FilterGLAPISpecBase(saxutils.XMLFilterBase):
                return
 
 
-       def startElement(self, name, attrs):
+       def startElementNS(self, name, qname, attrs):
                """Start a new element in the XML stream.
                
                Starts a new element.  There are three types of elements that
@@ -640,24 +647,26 @@ class FilterGLAPISpecBase(saxutils.XMLFilterBase):
                additional XML data, GLX protocol information,  that the base
                classes do not know about."""
 
-               if self.current_object != None:
-                       self.current_object.startElement(name, attrs)
-               elif name == "category":
-                       self.current_category = attrs.get('name', "")
-               elif name == "include":
-                       self.next_include = attrs.get('name', "")
-               else:
-                       self.current_object = self.factory.create(self, name, attrs)
+               [uri, true_name] = name
+               if uri is None:
+                       if self.current_object != None:
+                               self.current_object.startElementNS(name, qname, attrs)
+                       elif true_name == "category":
+                               self.current_category = attrs.get((None, 'name'), "")
+                       elif true_name == "include":
+                               self.next_include = attrs.get((None, 'name'), "")
+                       else:
+                               self.current_object = self.factory.create(self, true_name, attrs)
                return
 
 
-       def endElement(self, name):
+       def endElementNS(self, name, qname):
                if self.current_object != None:
-                       if self.current_object.endElement(name):
+                       if self.current_object.endElementNS(name, qname):
                                self.current_object = None
                elif name == "include":
                        parser = make_parser()
-                       parser.setFeature(feature_namespaces, 0)
+                       parser.setFeature(feature_namespaces, 1)
                        parser.setContentHandler(self)
 
                        f = open(self.next_include)
index d89440a..4c4bcd4 100644 (file)
@@ -218,7 +218,7 @@ if __name__ == '__main__':
        dh = PrintGlOffsets()
 
        parser = make_parser()
-       parser.setFeature(feature_namespaces, 0)
+       parser.setFeature(feature_namespaces, 1)
        parser.setContentHandler(dh)
 
        f = open(file_name)
index 2237b7d..177c95f 100644 (file)
@@ -237,7 +237,7 @@ if __name__ == '__main__':
        dh = PrintGlEnums()
 
        parser = make_parser()
-       parser.setFeature(feature_namespaces, 0)
+       parser.setFeature(feature_namespaces, 1)
        parser.setContentHandler(dh)
 
        f = open(file_name)
index f5bd7f4..95657b8 100644 (file)
@@ -67,7 +67,7 @@ if __name__ == '__main__':
        dh = PrintGlOffsets()
 
        parser = make_parser()
-       parser.setFeature(feature_namespaces, 0)
+       parser.setFeature(feature_namespaces, 1)
        parser.setContentHandler(dh)
 
        f = open(file_name)
index a9fdd18..b5d51b0 100644 (file)
@@ -149,7 +149,7 @@ if __name__ == '__main__':
        dh = PrintGlProcs( long_string )
 
        parser = make_parser()
-       parser.setFeature(feature_namespaces, 0)
+       parser.setFeature(feature_namespaces, 1)
        parser.setContentHandler(dh)
 
        f = open(file_name)
index 49a8af7..30dcd41 100644 (file)
@@ -84,7 +84,7 @@ if __name__ == '__main__':
        dh = PrintGlTable()
 
        parser = make_parser()
-       parser.setFeature(feature_namespaces, 0)
+       parser.setFeature(feature_namespaces, 1)
        parser.setContentHandler(dh)
 
        f = open(file_name)
index 442069b..02dafa5 100644 (file)
@@ -248,7 +248,7 @@ if __name__ == '__main__':
                show_usage()
 
        parser = make_parser()
-       parser.setFeature(feature_namespaces, 0)
+       parser.setFeature(feature_namespaces, 1)
        parser.setContentHandler(dh)
 
        f = open(file_name)