packer.py revision fcded3b75bf930c68355adc3e3757e35e9cabde4
45e9809aff7304721fddb95654901b32195c9c7avboxsync# Copyright (c) 2001, Stanford University
45e9809aff7304721fddb95654901b32195c9c7avboxsync# All rights reserved.
45e9809aff7304721fddb95654901b32195c9c7avboxsync# See the file LICENSE.txt for information on redistributing this software.
45e9809aff7304721fddb95654901b32195c9c7avboxsync# This script generates the packer.c file from the gl_header.parsed file.
45e9809aff7304721fddb95654901b32195c9c7avboxsyncdef WriteData( offset, arg_type, arg_name, is_swapped ):
45e9809aff7304721fddb95654901b32195c9c7avboxsync """Return a string to write a variable to the packing buffer."""
45e9809aff7304721fddb95654901b32195c9c7avboxsync retval = "\tWRITE_NETWORK_POINTER( %d, (void *) %s );" % (offset, arg_name )
45e9809aff7304721fddb95654901b32195c9c7avboxsync if arg_type == "GLfloat" or arg_type == "GLclampf":
45e9809aff7304721fddb95654901b32195c9c7avboxsync retval = "\tWRITE_DATA( %d, GLuint, SWAPFLOAT(%s) );" % (offset, arg_name)
45e9809aff7304721fddb95654901b32195c9c7avboxsync elif arg_type == "GLdouble" or arg_type == "GLclampd":
45e9809aff7304721fddb95654901b32195c9c7avboxsync retval = "\tWRITE_SWAPPED_DOUBLE( %d, %s );" % (offset, arg_name)
45e9809aff7304721fddb95654901b32195c9c7avboxsync retval = "\tWRITE_DATA( %d, %s, %s );" % (offset, arg_type, arg_name)
45e9809aff7304721fddb95654901b32195c9c7avboxsync retval = "\tWRITE_DATA( %d, %s, SWAP16(%s) );" % (offset, arg_type, arg_name)
45e9809aff7304721fddb95654901b32195c9c7avboxsync retval = "\tWRITE_DATA( %d, %s, SWAP32(%s) );" % (offset, arg_type, arg_name)
45e9809aff7304721fddb95654901b32195c9c7avboxsync if arg_type == "GLdouble" or arg_type == "GLclampd":
45e9809aff7304721fddb95654901b32195c9c7avboxsync retval = "\tWRITE_DOUBLE( %d, %s );" % (offset, arg_name)
45e9809aff7304721fddb95654901b32195c9c7avboxsync retval = "\tWRITE_DATA( %d, %s, %s );" % (offset, arg_type, arg_name)
45e9809aff7304721fddb95654901b32195c9c7avboxsync print >>sys.stderr, "no retval for %s %s" % (arg_name, arg_type)
45e9809aff7304721fddb95654901b32195c9c7avboxsync m = re.search( r"^(Color|Normal)([1234])(ub|b|us|s|ui|i|f|d)$", func_name )
45e9809aff7304721fddb95654901b32195c9c7avboxsync print "\tpc->current.c.%s.%s = data_ptr;" % (name,type)
45e9809aff7304721fddb95654901b32195c9c7avboxsync m = re.search( r"^(SecondaryColor)(3)(ub|b|us|s|ui|i|f|d)EXT$", func_name )
45e9809aff7304721fddb95654901b32195c9c7avboxsync print "\tpc->current.c.%s.%s = data_ptr;" % (name,type)
45e9809aff7304721fddb95654901b32195c9c7avboxsync m = re.search( r"^(TexCoord)([1234])(ub|b|us|s|ui|i|f|d)$", func_name )
45e9809aff7304721fddb95654901b32195c9c7avboxsync print "\tpc->current.c.%s.%s[0] = data_ptr;" % (name,type)
45e9809aff7304721fddb95654901b32195c9c7avboxsync m = re.search( r"^(MultiTexCoord)([1234])(ub|b|us|s|ui|i|f|d)ARB$", func_name )
if is_swapped:
print 'void PACK_APIENTRY crPack%sSWAP( %s )' % (func_name, apiutil.MakeDeclarationStringWithContext('CR_PACKER_CONTEXT', params))
print 'void PACK_APIENTRY crPack%s( %s )' % (func_name, apiutil.MakeDeclarationStringWithContext('CR_PACKER_CONTEXT', params))
if not func_name:
if bail_out:
print '\tcrError ( "%s needs to be special cased %d %d!");' % (func_name, vecSize, can_have_pointers)
if is_extended:
if is_extended:
if is_extended:
if is_extended:
/* DO NOT EDIT - THIS FILE GENERATED BY THE packer.py SCRIPT */