String literals cannot exceed 65535 characters for MSVC. Instead of
emiting a string, emit an array of characters.
v2: fix indentation and add comment in the gl_enums.py file about this
ugliness.
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
print '# define LONGSTRING'
print '#endif'
print ''
- print 'LONGSTRING static const char enum_string_table[] = '
+ print 'LONGSTRING static const char enum_string_table[] = {'
+ # We express the very long concatenation of enum strings as an array
+ # of characters rather than as a string literal to work-around MSVC's
+ # 65535 character limit.
for enum in sorted_enum_values:
(name, pri) = self.enum_table[enum]
- print ' "%s\\0"' % (name)
+ print " ",
+ for ch in name:
+ print "'%c'," % ch,
+ print "'\\0',"
+
string_offsets[ enum ] = i
i += len(name) + 1
- print ' ;'
+ print '};'
print ''