text: # -*- coding: utf-8 -*-
  
  #-------------------------------------------------------------------------
  # drawElements Quality Program utilities
  # --------------------------------------
  #
  # Copyright 2015 The Android Open Source Project
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #      http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  #
  #-------------------------------------------------------------------------
  
  import os
  import string
  
  from common import *
  from khr_util.format import indentLines
  from khr_util.gen_str_util import addValuePrefix, genStrUtilProtos, genStrUtilImpls
  
  # Bitfield mapping
  BITFIELD_GROUPS = [
  	("APIBits", [
  		"OPENGL_BIT",
  		"OPENGL_ES_BIT",
  		"OPENGL_ES2_BIT",
  		"OPENGL_ES3_BIT_KHR",
  		"OPENVG_BIT"
  		]),
  	("SurfaceBits", [
  		"PBUFFER_BIT",
  		"PIXMAP_BIT",
  		"WINDOW_BIT",
  		"MULTISAMPLE_RESOLVE_BOX_BIT",
  		"SWAP_BEHAVIOR_PRESERVED_BIT",
  		"VG_ALPHA_FORMAT_PRE_BIT",
  		"VG_COLORSPACE_LINEAR_BIT",
  		"LOCK_SURFACE_BIT_KHR",
  		"OPTIMAL_FORMAT_BIT_KHR"
  		])
  ]
  
  # Enum mapping
  ENUM_GROUPS = [
  	("Boolean",			["TRUE", "FALSE"]),
  	("BoolDontCare",	["TRUE", "FALSE", "DONT_CARE"]),
  	("API",				["OPENGL_API", "OPENGL_ES_API", "OPENVG_API"]),
  	("Error", [
  		"SUCCESS",
  		"NOT_INITIALIZED",
  		"BAD_ACCESS",
  		"BAD_ALLOC",
  		"BAD_ATTRIBUTE",
  		"BAD_CONFIG",
  		"BAD_CONTEXT",
  		"BAD_CURRENT_SURFACE",
  		"BAD_DISPLAY",
  		"BAD_MATCH",
  		"BAD_NATIVE_PIXMAP",
  		"BAD_NATIVE_WINDOW",
  		"BAD_PARAMETER",
  		"BAD_SURFACE",
  		"CONTEXT_LOST"
  		]),
  	("ContextAttrib", [
  		"CONFIG_ID",
  		"CONTEXT_CLIENT_TYPE",
  		"CONTEXT_CLIENT_VERSION",
  		"RENDER_BUFFER"
  		]),
  	("ConfigAttrib", [
  		"BUFFER_SIZE",
  		"RED_SIZE",
  		"GREEN_SIZE",
  		"BLUE_SIZE",
  		"LUMINANCE_SIZE",
  		"ALPHA_SIZE",
  		"ALPHA_MASK_SIZE",
  		"BIND_TO_TEXTURE_RGB",
  		"BIND_TO_TEXTURE_RGBA",
  		"COLOR_BUFFER_TYPE",
  		"CONFIG_CAVEAT",
  		"CONFIG_ID",
  		"CONFORMANT",
  		"DEPTH_SIZE",
  		"LEVEL",
  		"MATCH_NATIVE_PIXMAP",
  		"MAX_SWAP_INTERVAL",
  		"MIN_SWAP_INTERVAL",
  		"NATIVE_RENDERABLE",
  		"NATIVE_VISUAL_TYPE",
  		"RENDERABLE_TYPE",
  		"SAMPLE_BUFFERS",
  		"SAMPLES",
  		"STENCIL_SIZE",
  		"SURFACE_TYPE",
  		"TRANSPARENT_TYPE",
  		"TRANSPARENT_RED_VALUE",
  		"TRANSPARENT_GREEN_VALUE",
  		"TRANSPARENT_BLUE_VALUE",
  		"COLOR_COMPONENT_TYPE_EXT"
  		]),
  	("SurfaceAttrib", [
  		"CONFIG_ID",
  		"WIDTH",
  		"HEIGHT",
  		"HORIZONTAL_RESOLUTION",
  		"VERTICAL_RESOLUTION",
  		"LARGEST_PBUFFER",
  		"MIPMAP_TEXTURE",
  		"MIPMAP_LEVEL",
  		"MULTISAMPLE_RESOLVE",
  		"PIXEL_ASPECT_RATIO",
  		"RENDER_BUFFER",
  		"SWAP_BEHAVIOR",
  		"TEXTURE_FORMAT",
  		"TEXTURE_TARGET",
  		"ALPHA_FORMAT",
  		"COLORSPACE"
  		]),
  	("YuvOrder", [
  		"NONE",
  		"YUV_ORDER_YUV_EXT",
  		"YUV_ORDER_YVU_EXT",
  		"YUV_ORDER_YUYV_EXT",
  		"YUV_ORDER_UYVY_EXT",
  		"YUV_ORDER_YVYU_EXT",
  		"YUV_ORDER_VYUY_EXT",
  		"YUV_ORDER_AYUV_EXT",
  		]),
  	("YuvPlaneBpp", [
  		"YUV_PLANE_BPP_0_EXT",
  		"YUV_PLANE_BPP_8_EXT",
  		"YUV_PLANE_BPP_10_EXT",
  		]),
  	("ColorComponentType",	["COLOR_COMPONENT_TYPE_FIXED_EXT", "COLOR_COMPONENT_TYPE_FLOAT_EXT"]),
  	("SurfaceTarget",		["READ", "DRAW"]),
  
  	# ConfigAttrib values
  	("ColorBufferType",		["RGB_BUFFER", "LUMINANCE_BUFFER"]),
  	("ConfigCaveat",		["NONE", "SLOW_CONFIG", "NON_CONFORMANT_CONFIG"]),
  	("TransparentType",		["NONE", "TRANSPARENT_RGB"]),
  
  	# SurfaceAttrib values
  	("MultisampleResolve",	["MULTISAMPLE_RESOLVE_DEFAULT", "MULTISAMPLE_RESOLVE_BOX"]),
  	("RenderBuffer",		["SINGLE_BUFFER", "BACK_BUFFER"]),
  	("SwapBehavior",		["BUFFER_DESTROYED", "BUFFER_PRESERVED"]),
  	("TextureFormat",		["NO_TEXTURE", "TEXTURE_RGB", "TEXTURE_RGBA"]),
  	("TextureTarget",		["NO_TEXTURE", "TEXTURE_2D"]),
  	("AlphaFormat",			["ALPHA_FORMAT_NONPRE", "ALPHA_FORMAT_PRE"]),
  	("Colorspace",			["COLORSPACE_sRGB", "COLORSPACE_LINEAR"])
  ]
  
  def gen (iface):
  	enumGroups		= addValuePrefix(ENUM_GROUPS, "EGL_")
  	bitfieldGroups	= addValuePrefix(BITFIELD_GROUPS, "EGL_")
  	prototypeFile	= os.path.join(EGL_DIR, "egluStrUtilPrototypes.inl")
  	implFile		= os.path.join(EGL_DIR, "egluStrUtil.inl")
  
  	writeInlFile(prototypeFile, indentLines(genStrUtilProtos(iface, enumGroups, bitfieldGroups)))
  	writeInlFile(implFile, genStrUtilImpls(iface, enumGroups, bitfieldGroups))
  