1 | # Copyright (c) 2001, Stanford University
|
---|
2 | # All rights reserved.
|
---|
3 | #
|
---|
4 | # See the file LICENSE.txt for information on redistributing this software.
|
---|
5 |
|
---|
6 | from __future__ import print_function
|
---|
7 | import sys, string
|
---|
8 |
|
---|
9 | sys.path.append( "../glapi_parser" )
|
---|
10 | import apiutil
|
---|
11 |
|
---|
12 |
|
---|
13 | if len(sys.argv) != 2:
|
---|
14 | print >> sys.stderr, "Usage: %s <filename>" % sys.argv[0]
|
---|
15 | sys.exit(-1)
|
---|
16 |
|
---|
17 | file = open(sys.argv[1])
|
---|
18 |
|
---|
19 | print("/* THIS FILE IS AUTOGENERATED FROM %s BY pack_swap.py */\n\n" % sys.argv[1])
|
---|
20 |
|
---|
21 | for line in file.readlines():
|
---|
22 | line = line.rstrip()
|
---|
23 | if line.find( "crPackAlloc" ) != -1 or line.find( "crPackFree" ) != -1:
|
---|
24 | print(line)
|
---|
25 | continue
|
---|
26 | elif line.find( "crPack" ) != -1:
|
---|
27 | fun_index = line.find( "crPack" )
|
---|
28 | paren_index = line.find( "(", fun_index )
|
---|
29 | space_index = line.find( " ", fun_index )
|
---|
30 | quote_index = line.find( '"', fun_index )
|
---|
31 | if paren_index == -1:
|
---|
32 | paren_index = 1000000; # HACK HACK
|
---|
33 | if space_index == -1:
|
---|
34 | space_index = 1000000; # HACK HACK
|
---|
35 | if quote_index == -1:
|
---|
36 | quote_index = 1000000; # HACK HACK
|
---|
37 | the_index = min( min( paren_index, space_index ), quote_index )
|
---|
38 | print("%sSWAP%s" % (line[:the_index], line[the_index:]))
|
---|
39 | elif line.find("WRITE_DATA_AI") != -1:
|
---|
40 | lparen_index = line.find( "(" )
|
---|
41 | rparen_index = line.rfind( ")" )
|
---|
42 | args = list(map( str.strip, line[lparen_index+1:rparen_index].split( "," ) ))
|
---|
43 | indentation = line[:line.find( "WRITE_DATA_AI" )]
|
---|
44 | if apiutil.sizeof(args[0]) == 1:
|
---|
45 | print("%sWRITE_DATA_AI(%s, %s);" % (indentation, args[0], args[1]))
|
---|
46 | elif apiutil.sizeof(args[0]) == 2:
|
---|
47 | print("%sWRITE_DATA_AI(%s, SWAP16(%s) );" % (indentation, args[0], args[1]))
|
---|
48 | elif args[0] == 'GLfloat' or args[0] == 'GLclampf':
|
---|
49 | print("%sWRITE_DATA_AI(GLuint, SWAPFLOAT(%s) );" % (indentation, args[0]))
|
---|
50 | elif apiutil.sizeof(args[0]) == 4:
|
---|
51 | print("%sWRITE_DATA_AI(%s, SWAP32(%s));" % (indentation, args[0], args[1]))
|
---|
52 | else:
|
---|
53 | print >> sys.stderr, "UNKNOWN TYPE FOR WRITE_DATA: %s" % args[1]
|
---|
54 | sys.exit(-1)
|
---|
55 | elif line.find( "WRITE_DATA" ) != -1:
|
---|
56 | lparen_index = line.find( "(" )
|
---|
57 | rparen_index = line.rfind( ")" )
|
---|
58 | args = list(map( str.strip, line[lparen_index+1:rparen_index].split( "," ) ))
|
---|
59 | indentation = line[:line.find( "WRITE_DATA" )]
|
---|
60 | if apiutil.sizeof(args[1]) == 1:
|
---|
61 | print("%sWRITE_DATA(%s, %s, %s);" % (indentation, args[0], args[1], args[2]))
|
---|
62 | elif apiutil.sizeof(args[1]) == 2:
|
---|
63 | print("%sWRITE_DATA(%s, %s, SWAP16(%s));" % (indentation, args[0], args[1], args[2]))
|
---|
64 | elif args[1] == 'GLfloat' or args[1] == 'GLclampf':
|
---|
65 | print("%sWRITE_DATA(%s, GLuint, SWAPFLOAT(%s));" % (indentation, args[0], args[2]))
|
---|
66 | elif apiutil.sizeof(args[1]) == 4:
|
---|
67 | print("%sWRITE_DATA(%s, %s, SWAP32(%s));" % (indentation, args[0], args[1], args[2]))
|
---|
68 | else:
|
---|
69 | print >> sys.stderr, "UNKNOWN TYPE FOR WRITE_DATA: %s" % args[1]
|
---|
70 | sys.exit(-1)
|
---|
71 | elif line.find( "WRITE_DOUBLE" ) != -1:
|
---|
72 | print(line.replace( "WRITE_DOUBLE", "WRITE_SWAPPED_DOUBLE" ))
|
---|
73 | else:
|
---|
74 | print(line)
|
---|