return self.type_expr.format_string()
-# Regular expression used to parse "mesa_name" attributes. A
-# mesa_name attribute describes how to adjust a GL function name
-# suffix to obtain the name of the function in Mesa that implements
-# the functionality. The attribute string consists of a part preceded
-# by a "-", indicating the suffix to remove, and a part preceded by a
-# "+" indicating the suffix to add. Either part is optional.
-#
-# For example:
-#
-# <function name="EnableIndexedEXT" mesa_name="-EXT">...</function>
-# <function name="IsProgramNV" mesa_name="-NV+ARB">...</function>
-#
-# means that EnableIndexedEXT is implemented by a Mesa function called
-# _mesa_EnableIndexed, and IsProgramNV is implemented by a Mesa function
-# called _mesa_IsProgramARB.
-#
-# Note: the prefix "_mesa_" is handled separately, by the "exec"
-# attribute.
-name_modification_regexp = re.compile(
- r'^(-(?P<minus>[a-zA-Z0-9_]+))?(\+(?P<plus>[a-zA-Z0-9_]+))?$')
-
-
-# Interpret a "mesa_name" attribute (see above) to determine the
-# appropriate suffix for the Mesa function implementing a piece of GL
-# functionality, and return the properly suffixed name.
-def interpret_name_modification(name, mod):
- m = name_modification_regexp.match(mod)
- if m is None:
- raise Exception('Unintelligible mesa_name property: {0!r}'.format(mod))
- new_name = name
- if m.group('minus'):
- if not new_name.endswith(m.group('minus')):
- raise Exception(
- 'Cannot subtract suffix {0!r} from function {1}'.format(
- m.group('minus'), name))
- new_name = new_name[:-len(m.group('minus'))]
- if m.group('plus'):
- new_name += m.group('plus')
- return new_name
-
-
class gl_function( gl_item ):
def __init__(self, element, context):
self.context = context
self.exec_flavor = 'mesa'
self.desktop = True
self.deprecated = None
- self.mesa_name = None
# self.entry_point_api_map[name][api] is a decimal value
# indicating the earliest version of the given API in which
else:
true_name = name
- # Only try to set the offset and mesa_name when a
- # non-alias entry-point is being processed.
+ # Only try to set the offset when a non-alias entry-point
+ # is being processed.
offset = element.nsProp( "offset", None )
if offset:
if offset == "assign":
self.assign_offset = 1
- mesa_name = element.nsProp('mesa_name', None)
- if mesa_name is None:
- self.mesa_name = name
- else:
- self.mesa_name = interpret_name_modification(name, mesa_name)
-
if not self.name:
self.name = true_name
# dynamically.
continue
settings_by_condition[condition].append(
- 'SET_{0}(exec, {1}{2});'.format(f.name, prefix, f.mesa_name))
+ 'SET_{0}(exec, {1}{0});'.format(f.name, prefix, f.name))
# Print out an if statement for each unique condition, with
# the SET_* calls nested inside it.
for condition in sorted(settings_by_condition.keys()):