mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-19 04:08:25 +02:00
Added the ability to get the size of a parameter as a string. Changed the
meaning of "variable length array" to include variables that are "counted" instead of just ones that use an enum to map to a count. Added glParameter to the glItemFactory.
This commit is contained in:
parent
9001d67309
commit
4f0a75e724
1 changed files with 25 additions and 4 deletions
|
|
@ -193,7 +193,7 @@ class glParameter( glItem ):
|
|||
to glCallLists, are not variable length arrays in this
|
||||
sense."""
|
||||
|
||||
return self.p_count_parameters != None
|
||||
return (self.p_count_parameters != None) or (self.counter != None)
|
||||
|
||||
|
||||
def is_array(self):
|
||||
|
|
@ -211,7 +211,7 @@ class glParameter( glItem ):
|
|||
glDeleteTextures), or a general variable length vector."""
|
||||
|
||||
if self.is_array():
|
||||
if self.is_variable_length_array():
|
||||
if self.p_count_parameters != None:
|
||||
return "compsize"
|
||||
elif self.counter != None:
|
||||
return self.counter
|
||||
|
|
@ -222,13 +222,32 @@ class glParameter( glItem ):
|
|||
|
||||
|
||||
def size(self):
|
||||
if self.is_variable_length_array():
|
||||
if self.p_count_parameters != None or self.counter != None or self.is_output:
|
||||
return 0
|
||||
elif self.p_count == 0:
|
||||
return self.p_type.size
|
||||
else:
|
||||
return self.p_type.size * self.p_count
|
||||
|
||||
def size_string(self):
|
||||
s = self.size()
|
||||
if s == 0:
|
||||
a_prod = "compsize"
|
||||
b_prod = self.p_type.size
|
||||
|
||||
if self.p_count_parameters == None and self.counter != None:
|
||||
a_prod = self.counter
|
||||
elif self.p_count_parameters != None and self.counter == None:
|
||||
pass
|
||||
elif self.p_count_parameters != None and self.counter != None:
|
||||
b_prod = self.counter
|
||||
else:
|
||||
raise RuntimeError("Parameter '%s' to function '%s' has size 0." % (self.name, self.context.name))
|
||||
|
||||
return "(%s * %s)" % (a_prod, b_prod)
|
||||
else:
|
||||
return str(s)
|
||||
|
||||
|
||||
class glParameterIterator:
|
||||
"""Class to iterate over a list of glParameters.
|
||||
|
|
@ -283,7 +302,7 @@ class glFunction( glItem ):
|
|||
def startElement(self, name, attrs):
|
||||
if name == "param":
|
||||
try:
|
||||
glParameter(self, name, attrs)
|
||||
self.context.factory.create(self, name, attrs)
|
||||
except RuntimeError:
|
||||
print "Error with parameter '%s' in function '%s'." \
|
||||
% (attrs.get('name','(unknown)'), self.name)
|
||||
|
|
@ -326,6 +345,8 @@ class glItemFactory:
|
|||
return glType(context, name, attrs)
|
||||
elif name == "enum":
|
||||
return glEnum(context, name, attrs)
|
||||
elif name == "param":
|
||||
return glParameter(context, name, attrs)
|
||||
else:
|
||||
return None
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue