<gh_stars>100-1000
# Copyright (c) 2001, Stanford University
# All rights reserved.
#
# See the file LICENSE.txt for information on redistributing this software.

# This script generates the include/state/cr_currentpointers.h file.

from __future__ import print_function
import sys
sys.path.append( "../glapi_parser" )
import apiutil

from pack_currenttypes import *

apiutil.CopyrightC()

print("""
/* DO NOT EDIT - THIS FILE GENERATED BY THE pack_currentheader.py SCRIPT */

#ifndef CR_CURRENT_H
#define CR_CURRENT_H

#include "state/cr_limits.h"
""")

sorted_keys = sorted(current_fns.keys())

for k in sorted_keys:
	name = k.lower();
	print("typedef struct {")
	if 'array' in current_fns[k]:
		print("\tconst unsigned char *ptr[%s];" % current_fns[k]['array'])
	else:
		print("\tconst unsigned char *ptr;")
	for type in current_fns[k]['types']:
		for size in current_fns[k]['sizes']:
			if 'array' in current_fns[k]:
				print("\tconst unsigned char *%s%d[%s];" % (type, size, current_fns[k]['array']))
			else:
				print("\tconst unsigned char *%s%d;" % (type, size))
	print("} GL%s_p;\n" % name)

print("typedef	struct attrs {")
for k in sorted_keys:
	name = k.lower()
	field = '%s%s' % (k[:1].lower(),k[1:])
	print("\tGL%s_p %s;" % (name,field))
print("	} CRCurrentStateAttr;")
	

print("typedef struct {")
print("""
	CRCurrentStateAttr c;
	unsigned char *vtx_op;
	unsigned char *vtx_data;
	unsigned char *begin_op;
	unsigned char *begin_data;
	unsigned int vtx_count;
	unsigned int vtx_max;
	unsigned int vtx_count_begin;
	unsigned int attribsUsedMask;
    unsigned int changedVertexAttrib;
} CRCurrentStatePointers;

#endif /* CR_CURRENT_H */
""")
