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