115422b2d99be074e1d6ac064b6f791245975da83José Fonseca#!/usr/bin/env python 215422b2d99be074e1d6ac064b6f791245975da83José Fonseca 35479fa34d9acebd55f68c23a278cf382d0e84248José FonsecaCopyRight = ''' 415422b2d99be074e1d6ac064b6f791245975da83José Fonseca/************************************************************************** 515422b2d99be074e1d6ac064b6f791245975da83José Fonseca * 6329814c6ee8a87d67a55ecf197af9d6e6fb7ade0José Fonseca * Copyright 2010 VMware, Inc. 715422b2d99be074e1d6ac064b6f791245975da83José Fonseca * All Rights Reserved. 815422b2d99be074e1d6ac064b6f791245975da83José Fonseca * 915422b2d99be074e1d6ac064b6f791245975da83José Fonseca * Permission is hereby granted, free of charge, to any person obtaining a 1015422b2d99be074e1d6ac064b6f791245975da83José Fonseca * copy of this software and associated documentation files (the 1115422b2d99be074e1d6ac064b6f791245975da83José Fonseca * "Software"), to deal in the Software without restriction, including 1215422b2d99be074e1d6ac064b6f791245975da83José Fonseca * without limitation the rights to use, copy, modify, merge, publish, 1315422b2d99be074e1d6ac064b6f791245975da83José Fonseca * distribute, sub license, and/or sell copies of the Software, and to 1415422b2d99be074e1d6ac064b6f791245975da83José Fonseca * permit persons to whom the Software is furnished to do so, subject to 1515422b2d99be074e1d6ac064b6f791245975da83José Fonseca * the following conditions: 1615422b2d99be074e1d6ac064b6f791245975da83José Fonseca * 1715422b2d99be074e1d6ac064b6f791245975da83José Fonseca * The above copyright notice and this permission notice (including the 1815422b2d99be074e1d6ac064b6f791245975da83José Fonseca * next paragraph) shall be included in all copies or substantial portions 1915422b2d99be074e1d6ac064b6f791245975da83José Fonseca * of the Software. 2015422b2d99be074e1d6ac064b6f791245975da83José Fonseca * 2115422b2d99be074e1d6ac064b6f791245975da83José Fonseca * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 2215422b2d99be074e1d6ac064b6f791245975da83José Fonseca * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 2315422b2d99be074e1d6ac064b6f791245975da83José Fonseca * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 243d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 2515422b2d99be074e1d6ac064b6f791245975da83José Fonseca * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 2615422b2d99be074e1d6ac064b6f791245975da83José Fonseca * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 2715422b2d99be074e1d6ac064b6f791245975da83José Fonseca * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2815422b2d99be074e1d6ac064b6f791245975da83José Fonseca * 2915422b2d99be074e1d6ac064b6f791245975da83José Fonseca **************************************************************************/ 3015422b2d99be074e1d6ac064b6f791245975da83José Fonseca''' 3115422b2d99be074e1d6ac064b6f791245975da83José Fonseca 3215422b2d99be074e1d6ac064b6f791245975da83José Fonseca 3315422b2d99be074e1d6ac064b6f791245975da83José Fonsecaimport sys 3415422b2d99be074e1d6ac064b6f791245975da83José Fonseca 353d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonsecafrom u_format_parse import * 3696bf4aff5bd674bba5d83ab32c46024a686c1a1dJosé Fonsecaimport u_format_pack 3715422b2d99be074e1d6ac064b6f791245975da83José Fonseca 3815422b2d99be074e1d6ac064b6f791245975da83José Fonseca 39dfdf83d714c0d32d9182eb3001cf642aa6cb5c87Michal Kroldef layout_map(layout): 40dfdf83d714c0d32d9182eb3001cf642aa6cb5c87Michal Krol return 'UTIL_FORMAT_LAYOUT_' + str(layout).upper() 4115422b2d99be074e1d6ac064b6f791245975da83José Fonseca 4215422b2d99be074e1d6ac064b6f791245975da83José Fonseca 4342b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonsecadef colorspace_map(colorspace): 4442b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonseca return 'UTIL_FORMAT_COLORSPACE_' + str(colorspace).upper() 4542b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonseca 4642b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonseca 4742b15b26fd946c9511bd4bd5f23ec7e76e15507cJosé Fonsecacolorspace_channels_map = { 487fc75ef7d43038385b5fba73a67f1e4783b045d6José Fonseca 'rgb': ['r', 'g', 'b', 'a'], 497fc75ef7d43038385b5fba73a67f1e4783b045d6José Fonseca 'srgb': ['sr', 'sg', 'sb', 'a'], 507fc75ef7d43038385b5fba73a67f1e4783b045d6José Fonseca 'zs': ['z', 's'], 517fc75ef7d43038385b5fba73a67f1e4783b045d6José Fonseca 'yuv': ['y', 'u', 'v'], 5215422b2d99be074e1d6ac064b6f791245975da83José Fonseca} 5315422b2d99be074e1d6ac064b6f791245975da83José Fonseca 5415422b2d99be074e1d6ac064b6f791245975da83José Fonseca 55092010db3798f9a49ff9184bf238099af849e885José Fonsecatype_map = { 563d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca VOID: "UTIL_FORMAT_TYPE_VOID", 5715422b2d99be074e1d6ac064b6f791245975da83José Fonseca UNSIGNED: "UTIL_FORMAT_TYPE_UNSIGNED", 583d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca SIGNED: "UTIL_FORMAT_TYPE_SIGNED", 593d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca FIXED: "UTIL_FORMAT_TYPE_FIXED", 603d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca FLOAT: "UTIL_FORMAT_TYPE_FLOAT", 6115422b2d99be074e1d6ac064b6f791245975da83José Fonseca} 6215422b2d99be074e1d6ac064b6f791245975da83José Fonseca 6315422b2d99be074e1d6ac064b6f791245975da83José Fonseca 6415422b2d99be074e1d6ac064b6f791245975da83José Fonsecadef bool_map(value): 6515422b2d99be074e1d6ac064b6f791245975da83José Fonseca if value: 6615422b2d99be074e1d6ac064b6f791245975da83José Fonseca return "TRUE" 6715422b2d99be074e1d6ac064b6f791245975da83José Fonseca else: 6815422b2d99be074e1d6ac064b6f791245975da83José Fonseca return "FALSE" 6915422b2d99be074e1d6ac064b6f791245975da83José Fonseca 7015422b2d99be074e1d6ac064b6f791245975da83José Fonseca 7115422b2d99be074e1d6ac064b6f791245975da83José Fonsecaswizzle_map = { 723d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca SWIZZLE_X: "UTIL_FORMAT_SWIZZLE_X", 733d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca SWIZZLE_Y: "UTIL_FORMAT_SWIZZLE_Y", 743d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca SWIZZLE_Z: "UTIL_FORMAT_SWIZZLE_Z", 753d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca SWIZZLE_W: "UTIL_FORMAT_SWIZZLE_W", 763d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca SWIZZLE_0: "UTIL_FORMAT_SWIZZLE_0", 773d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca SWIZZLE_1: "UTIL_FORMAT_SWIZZLE_1", 783d305243938980af520c6d3e0ce02f4ee3a6126cJosé Fonseca SWIZZLE_NONE: "UTIL_FORMAT_SWIZZLE_NONE", 7915422b2d99be074e1d6ac064b6f791245975da83José Fonseca} 8015422b2d99be074e1d6ac064b6f791245975da83José Fonseca 8115422b2d99be074e1d6ac064b6f791245975da83José Fonseca 8215422b2d99be074e1d6ac064b6f791245975da83José Fonsecadef write_format_table(formats): 8315422b2d99be074e1d6ac064b6f791245975da83José Fonseca print '/* This file is autogenerated by u_format_table.py from u_format.csv. Do not edit directly. */' 8415422b2d99be074e1d6ac064b6f791245975da83José Fonseca print 8515422b2d99be074e1d6ac064b6f791245975da83José Fonseca # This will print the copyright message on the top of this file 865479fa34d9acebd55f68c23a278cf382d0e84248José Fonseca print CopyRight.strip() 8715422b2d99be074e1d6ac064b6f791245975da83José Fonseca print 8815422b2d99be074e1d6ac064b6f791245975da83José Fonseca print '#include "u_format.h"' 899388ce41917fa4c706c5e284d960e1ca648ee935José Fonseca print '#include "u_format_s3tc.h"' 908d62b2aca99ba67f794dd682ed1ec49dc8826390Dave Airlie print '#include "u_format_rgtc.h"' 9123f92c20d721aa373d91a949586fd93a92d9f275Marek Olšák print '#include "u_format_latc.h"' 925c31eb78e5fa4c4cfcc82df3c9a2c34fcd4b402cChia-I Wu print '#include "u_format_etc.h"' 9315422b2d99be074e1d6ac064b6f791245975da83José Fonseca print 9496bf4aff5bd674bba5d83ab32c46024a686c1a1dJosé Fonseca 9596bf4aff5bd674bba5d83ab32c46024a686c1a1dJosé Fonseca u_format_pack.generate(formats) 9696bf4aff5bd674bba5d83ab32c46024a686c1a1dJosé Fonseca 9715422b2d99be074e1d6ac064b6f791245975da83José Fonseca for format in formats: 9847e61426586bb9f9f40950e9c4372e4f12bb9ed6José Fonseca print 'const struct util_format_description' 993c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print 'util_format_%s_description = {' % (format.short_name(),) 1003c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " %s," % (format.name,) 1013c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " \"%s\"," % (format.name,) 1024afae877e6914e311340e0b1d3490ec2fed9422fJosé Fonseca print " \"%s\"," % (format.short_name(),) 1033c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " {%u, %u, %u},\t/* block */" % (format.block_width, format.block_height, format.block_size()) 1043c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " %s," % (layout_map(format.layout),) 1053c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " %u,\t/* nr_channels */" % (format.nr_channels(),) 1063c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " %s,\t/* is_array */" % (bool_map(format.is_array()),) 107cfde6c50ae6c3ce7912a3d1231c459d020d77f13José Fonseca print " %s,\t/* is_bitmask */" % (bool_map(format.is_bitmask()),) 1083c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " %s,\t/* is_mixed */" % (bool_map(format.is_mixed()),) 10915422b2d99be074e1d6ac064b6f791245975da83José Fonseca print " {" 11015422b2d99be074e1d6ac064b6f791245975da83José Fonseca for i in range(4): 111092010db3798f9a49ff9184bf238099af849e885José Fonseca channel = format.channels[i] 11215422b2d99be074e1d6ac064b6f791245975da83José Fonseca if i < 3: 11315422b2d99be074e1d6ac064b6f791245975da83José Fonseca sep = "," 11415422b2d99be074e1d6ac064b6f791245975da83José Fonseca else: 11515422b2d99be074e1d6ac064b6f791245975da83José Fonseca sep = "" 1164757325951e35460975e77d70dacf8b6eb10ab11José Fonseca if channel.size: 117a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie print " {%s, %s, %s, %u}%s\t/* %s = %s */" % (type_map[channel.type], bool_map(channel.norm), bool_map(channel.pure), channel.size, sep, "xyzw"[i], channel.name) 1184757325951e35460975e77d70dacf8b6eb10ab11José Fonseca else: 1197ff247712d7c01141756d0999ff86af1e109ce7cJosé Fonseca print " {0, 0, 0, 0}%s" % (sep,) 1203c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " }," 1213c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " {" 12215422b2d99be074e1d6ac064b6f791245975da83José Fonseca for i in range(4): 123092010db3798f9a49ff9184bf238099af849e885José Fonseca swizzle = format.swizzles[i] 12415422b2d99be074e1d6ac064b6f791245975da83José Fonseca if i < 3: 12515422b2d99be074e1d6ac064b6f791245975da83José Fonseca sep = "," 12615422b2d99be074e1d6ac064b6f791245975da83José Fonseca else: 12715422b2d99be074e1d6ac064b6f791245975da83José Fonseca sep = "" 12815422b2d99be074e1d6ac064b6f791245975da83José Fonseca try: 1297fc75ef7d43038385b5fba73a67f1e4783b045d6José Fonseca comment = colorspace_channels_map[format.colorspace][i] 1307fc75ef7d43038385b5fba73a67f1e4783b045d6José Fonseca except (KeyError, IndexError): 13115422b2d99be074e1d6ac064b6f791245975da83José Fonseca comment = 'ignored' 1323c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " %s%s\t/* %s */" % (swizzle_map[swizzle], sep, comment) 13315422b2d99be074e1d6ac064b6f791245975da83José Fonseca print " }," 1343c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " %s," % (colorspace_map(format.colorspace),) 135a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie if format.colorspace != ZS and format.channels[0].pure == False: 136d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " &util_format_%s_unpack_rgba_8unorm," % format.short_name() 137d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " &util_format_%s_pack_rgba_8unorm," % format.short_name() 1388d62b2aca99ba67f794dd682ed1ec49dc8826390Dave Airlie if format.layout == 's3tc' or format.layout == 'rgtc': 139a2d360b91545ad00abec518e8449df5d8d838b13José Fonseca print " &util_format_%s_fetch_rgba_8unorm," % format.short_name() 140a2d360b91545ad00abec518e8449df5d8d838b13José Fonseca else: 141a2d360b91545ad00abec518e8449df5d8d838b13José Fonseca print " NULL, /* fetch_rgba_8unorm */" 142d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " &util_format_%s_unpack_rgba_float," % format.short_name() 143d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " &util_format_%s_pack_rgba_float," % format.short_name() 144d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " &util_format_%s_fetch_rgba_float," % format.short_name() 145d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca else: 146d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " NULL, /* unpack_rgba_8unorm */" 147d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " NULL, /* pack_rgba_8unorm */" 148a2d360b91545ad00abec518e8449df5d8d838b13José Fonseca print " NULL, /* fetch_rgba_8unorm */" 149d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " NULL, /* unpack_rgba_float */" 150d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " NULL, /* pack_rgba_float */" 151d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " NULL, /* fetch_rgba_float */" 152d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca if format.colorspace == ZS and format.swizzles[0] != SWIZZLE_NONE: 153d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " &util_format_%s_unpack_z_32unorm," % format.short_name() 154d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " &util_format_%s_pack_z_32unorm," % format.short_name() 155d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " &util_format_%s_unpack_z_float," % format.short_name() 156d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " &util_format_%s_pack_z_float," % format.short_name() 157d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca else: 158d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " NULL, /* unpack_z_32unorm */" 159d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " NULL, /* pack_z_32unorm */" 160d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " NULL, /* unpack_z_float */" 161d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca print " NULL, /* pack_z_float */" 162d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca if format.colorspace == ZS and format.swizzles[1] != SWIZZLE_NONE: 163866f9b18c68ede63c00917ec9c3dae3524ca8826Dave Airlie print " &util_format_%s_unpack_s_8uint," % format.short_name() 164866f9b18c68ede63c00917ec9c3dae3524ca8826Dave Airlie print " &util_format_%s_pack_s_8uint," % format.short_name() 165d3808b1b1f34dbb826b99102786d94e1baf9d667José Fonseca else: 166866f9b18c68ede63c00917ec9c3dae3524ca8826Dave Airlie print " NULL, /* unpack_s_8uint */" 167866f9b18c68ede63c00917ec9c3dae3524ca8826Dave Airlie print " NULL, /* pack_s_8uint */" 168866f9b18c68ede63c00917ec9c3dae3524ca8826Dave Airlie if format.colorspace != ZS and format.channels[0].pure == True and format.channels[0].type == UNSIGNED: 169a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie print " &util_format_%s_unpack_unsigned, /* unpack_rgba_uint */" % format.short_name() 170a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie print " &util_format_%s_pack_unsigned, /* pack_rgba_uint */" % format.short_name() 171a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie print " &util_format_%s_unpack_signed, /* unpack_rgba_sint */" % format.short_name() 1721ba3240b281fcbbf03372a6e2db68292cb8a8907Marek Olšák print " &util_format_%s_pack_signed, /* pack_rgba_sint */" % format.short_name() 1731ba3240b281fcbbf03372a6e2db68292cb8a8907Marek Olšák print " &util_format_%s_fetch_unsigned, /* fetch_rgba_uint */" % format.short_name() 1741ba3240b281fcbbf03372a6e2db68292cb8a8907Marek Olšák print " NULL /* fetch_rgba_sint */" 175866f9b18c68ede63c00917ec9c3dae3524ca8826Dave Airlie elif format.colorspace != ZS and format.channels[0].pure == True and format.channels[0].type == SIGNED: 176a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie print " &util_format_%s_unpack_unsigned, /* unpack_rgba_uint */" % format.short_name() 177a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie print " &util_format_%s_pack_unsigned, /* pack_rgba_uint */" % format.short_name() 178a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie print " &util_format_%s_unpack_signed, /* unpack_rgba_sint */" % format.short_name() 1791ba3240b281fcbbf03372a6e2db68292cb8a8907Marek Olšák print " &util_format_%s_pack_signed, /* pack_rgba_sint */" % format.short_name() 1801ba3240b281fcbbf03372a6e2db68292cb8a8907Marek Olšák print " NULL, /* fetch_rgba_uint */" 1811ba3240b281fcbbf03372a6e2db68292cb8a8907Marek Olšák print " &util_format_%s_fetch_signed /* fetch_rgba_sint */" % format.short_name() 182a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie else: 183a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie print " NULL, /* unpack_rgba_uint */" 184a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie print " NULL, /* pack_rgba_uint */" 185a441feb757b1be4845ba378f0207dcdc5cc1a407Dave Airlie print " NULL, /* unpack_rgba_sint */" 1861ba3240b281fcbbf03372a6e2db68292cb8a8907Marek Olšák print " NULL, /* pack_rgba_sint */" 1871ba3240b281fcbbf03372a6e2db68292cb8a8907Marek Olšák print " NULL, /* fetch_rgba_uint */" 1881ba3240b281fcbbf03372a6e2db68292cb8a8907Marek Olšák print " NULL /* fetch_rgba_sint */" 1893c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print "};" 1903c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print 19196bf4aff5bd674bba5d83ab32c46024a686c1a1dJosé Fonseca 1923c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print "const struct util_format_description *" 1933c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print "util_format_description(enum pipe_format format)" 1943c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print "{" 1953c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " if (format >= PIPE_FORMAT_COUNT) {" 1963c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " return NULL;" 1973c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " }" 1983c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print 1993c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " switch (format) {" 2003c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca for format in formats: 2013c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " case %s:" % format.name 2023c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " return &util_format_%s_description;" % (format.short_name(),) 2033c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " default:" 2043c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " return NULL;" 2053c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print " }" 20631ff9b0a135bf913ae6b44868bde31534a87802cBrian Paul print "}" 2073c45c4bc44310c1af4f0c06d29eb0a9d39a38837José Fonseca print 20815422b2d99be074e1d6ac064b6f791245975da83José Fonseca 20915422b2d99be074e1d6ac064b6f791245975da83José Fonseca 21015422b2d99be074e1d6ac064b6f791245975da83José Fonsecadef main(): 21115422b2d99be074e1d6ac064b6f791245975da83José Fonseca 21215422b2d99be074e1d6ac064b6f791245975da83José Fonseca formats = [] 21315422b2d99be074e1d6ac064b6f791245975da83José Fonseca for arg in sys.argv[1:]: 21415422b2d99be074e1d6ac064b6f791245975da83José Fonseca formats.extend(parse(arg)) 21515422b2d99be074e1d6ac064b6f791245975da83José Fonseca write_format_table(formats) 21615422b2d99be074e1d6ac064b6f791245975da83José Fonseca 21715422b2d99be074e1d6ac064b6f791245975da83José Fonseca 21815422b2d99be074e1d6ac064b6f791245975da83José Fonsecaif __name__ == '__main__': 21915422b2d99be074e1d6ac064b6f791245975da83José Fonseca main() 220