// MobileGL - MobileGL/MG_Util/Converters/MGToStr/GLExtensionConverter.cpp
// Copyright (c) 2025-2026 MobileGL-Dev
// Licensed under the GNU Lesser General Public License v3.0:
//   https://www.gnu.org/licenses/gpl-3.0.txt
//   https://www.gnu.org/licenses/lgpl-3.0.txt
// SPDX-License-Identifier: LGPL-3.0-only
// End of Source File Header

#include "GLExtensionConverter.h"

namespace MobileGL {
    namespace MG_Util {
        String ConvertGLExtToString(GLExtension extension) {
            String str;
            switch (extension) {
#define CASE(value)                                                                                                    \
    case value: {                                                                                                      \
        str = #value;                                                                                                  \
        break;                                                                                                         \
    }
                CASE(V_OpenGL10)
                CASE(V_OpenGL11)
                CASE(V_OpenGL12)
                CASE(V_OpenGL13)
                CASE(V_OpenGL14)
                CASE(V_OpenGL15)
                CASE(V_OpenGL20)
                CASE(V_OpenGL21)
                CASE(V_OpenGL30)
                CASE(V_OpenGL31)
                CASE(V_OpenGL32)
                CASE(V_OpenGL33)
                CASE(V_OpenGL40)
                CASE(V_OpenGL41)
                CASE(V_OpenGL42)
                CASE(V_OpenGL43)
                CASE(V_OpenGL44)
                CASE(V_OpenGL45)
                CASE(V_OpenGL46)
                CASE(E_GL_EXT_shader_samples_identical)
                CASE(E_GL_ARB_multitexture)
                CASE(E_GLX_ARB_get_proc_address)
                CASE(E_GL_ARB_transpose_matrix)
                CASE(E_WGL_ARB_buffer_region)
                CASE(E_GL_ARB_multisample)
                CASE(E_GLX_ARB_multisample)
                CASE(E_WGL_ARB_multisample)
                CASE(E_GL_ARB_texture_env_add)
                CASE(E_GL_ARB_texture_cube_map)
                CASE(E_WGL_ARB_extensions_string)
                CASE(E_WGL_ARB_pixel_format)
                CASE(E_WGL_ARB_make_current_read)
                CASE(E_WGL_ARB_pbuffer)
                CASE(E_GL_ARB_texture_compression)
                CASE(E_GL_ARB_texture_border_clamp)
                CASE(E_GL_ARB_point_parameters)
                CASE(E_GL_ARB_vertex_blend)
                CASE(E_GL_ARB_matrix_palette)
                CASE(E_GL_ARB_texture_env_combine)
                CASE(E_GL_ARB_texture_env_crossbar)
                CASE(E_GL_ARB_texture_env_dot3)
                CASE(E_WGL_ARB_render_texture)
                CASE(E_GL_ARB_texture_mirrored_repeat)
                CASE(E_GL_ARB_depth_texture)
                CASE(E_GL_ARB_shadow)
                CASE(E_GL_ARB_shadow_ambient)
                CASE(E_GL_ARB_window_pos)
                CASE(E_GL_ARB_vertex_program)
                CASE(E_GL_ARB_fragment_program)
                CASE(E_GL_ARB_vertex_buffer_object)
                CASE(E_GLX_ARB_vertex_buffer_object)
                CASE(E_GL_ARB_occlusion_query)
                CASE(E_GL_ARB_shader_objects)
                CASE(E_GL_ARB_vertex_shader)
                CASE(E_GL_ARB_fragment_shader)
                CASE(E_GL_ARB_shading_language_100)
                CASE(E_GL_ARB_texture_non_power_of_two)
                CASE(E_GL_ARB_point_sprite)
                CASE(E_GL_ARB_fragment_program_shadow)
                CASE(E_GL_ARB_draw_buffers)
                CASE(E_GL_ARB_texture_rectangle)
                CASE(E_GL_ARB_color_buffer_float)
                CASE(E_GLX_ARB_fbconfig_float)
                CASE(E_WGL_ARB_pixel_format_float)
                CASE(E_GL_ARB_half_float_pixel)
                CASE(E_GL_ARB_texture_float)
                CASE(E_GL_ARB_pixel_buffer_object)
                CASE(E_GL_ARB_depth_buffer_float)
                CASE(E_GL_ARB_draw_instanced)
                CASE(E_GL_ARB_framebuffer_object)
                CASE(E_GL_ARB_framebuffer_sRGB)
                CASE(E_GLX_ARB_framebuffer_sRGB)
                CASE(E_WGL_ARB_framebuffer_sRGB)
                CASE(E_GL_ARB_geometry_shader4)
                CASE(E_GL_ARB_half_float_vertex)
                CASE(E_GL_ARB_instanced_arrays)
                CASE(E_GL_ARB_map_buffer_range)
                CASE(E_GL_ARB_texture_buffer_object)
                CASE(E_GL_ARB_texture_compression_rgtc)
                CASE(E_GL_ARB_texture_rg)
                CASE(E_GL_ARB_vertex_array_object)
                CASE(E_WGL_ARB_create_context)
                CASE(E_GLX_ARB_create_context)
                CASE(E_GL_ARB_uniform_buffer_object)
                CASE(E_GL_ARB_compatibility)
                CASE(E_GL_ARB_copy_buffer)
                CASE(E_GL_ARB_shader_texture_lod)
                CASE(E_GL_ARB_depth_clamp)
                CASE(E_GL_ARB_draw_elements_base_vertex)
                CASE(E_GL_ARB_fragment_coord_conventions)
                CASE(E_GL_ARB_provoking_vertex)
                CASE(E_GL_ARB_seamless_cube_map)
                CASE(E_GL_ARB_sync)
                CASE(E_GL_ARB_texture_multisample)
                CASE(E_GL_ARB_vertex_array_bgra)
                CASE(E_GL_ARB_draw_buffers_blend)
                CASE(E_GL_ARB_sample_shading)
                CASE(E_GL_ARB_texture_cube_map_array)
                CASE(E_GL_ARB_texture_gather)
                CASE(E_GL_ARB_texture_query_lod)
                CASE(E_WGL_ARB_create_context_profile)
                CASE(E_GLX_ARB_create_context_profile)
                CASE(E_GL_ARB_shading_language_include)
                CASE(E_GL_ARB_texture_compression_bptc)
                CASE(E_GL_ARB_blend_func_extended)
                CASE(E_GL_ARB_explicit_attrib_location)
                CASE(E_GL_ARB_occlusion_query2)
                CASE(E_GL_ARB_sampler_objects)
                CASE(E_GL_ARB_shader_bit_encoding)
                CASE(E_GL_ARB_texture_rgb10_a2ui)
                CASE(E_GL_ARB_texture_swizzle)
                CASE(E_GL_ARB_timer_query)
                CASE(E_GL_ARB_vertex_type_2_10_10_10_rev)
                CASE(E_GL_ARB_draw_indirect)
                CASE(E_GL_ARB_gpu_shader5)
                CASE(E_GL_ARB_gpu_shader_fp64)
                CASE(E_GL_ARB_shader_subroutine)
                CASE(E_GL_ARB_tessellation_shader)
                CASE(E_GL_ARB_texture_buffer_object_rgb32)
                CASE(E_GL_ARB_transform_feedback2)
                CASE(E_GL_ARB_transform_feedback3)
                CASE(E_GL_ARB_ES2_compatibility)
                CASE(E_GL_ARB_get_program_binary)
                CASE(E_GL_ARB_separate_shader_objects)
                CASE(E_GL_ARB_shader_precision)
                CASE(E_GL_ARB_vertex_attrib_64bit)
                CASE(E_GL_ARB_viewport_array)
                CASE(E_GLX_ARB_create_context_robustness)
                CASE(E_WGL_ARB_create_context_robustness)
                CASE(E_GL_ARB_cl_event)
                CASE(E_GL_ARB_debug_output)
                CASE(E_GL_ARB_robustness)
                CASE(E_GL_ARB_shader_stencil_export)
                CASE(E_GL_ARB_base_instance)
                CASE(E_GL_ARB_shading_language_420pack)
                CASE(E_GL_ARB_transform_feedback_instanced)
                CASE(E_GL_ARB_compressed_texture_pixel_storage)
                CASE(E_GL_ARB_conservative_depth)
                CASE(E_GL_ARB_internalformat_query)
                CASE(E_GL_ARB_map_buffer_alignment)
                CASE(E_GL_ARB_shader_atomic_counters)
                CASE(E_GL_ARB_shader_image_load_store)
                CASE(E_GL_ARB_shading_language_packing)
                CASE(E_GL_ARB_texture_storage)
                CASE(E_GL_KHR_texture_compression_astc_hdr)
                CASE(E_GL_KHR_texture_compression_astc_ldr)
                CASE(E_GL_KHR_debug)
                CASE(E_GL_ARB_arrays_of_arrays)
                CASE(E_GL_ARB_clear_buffer_object)
                CASE(E_GL_ARB_compute_shader)
                CASE(E_GL_ARB_copy_image)
                CASE(E_GL_ARB_texture_view)
                CASE(E_GL_ARB_vertex_attrib_binding)
                CASE(E_GL_ARB_robustness_isolation)
                CASE(E_GL_ARB_robustness_share_group_isolation)
                CASE(E_GL_ARB_ES3_compatibility)
                CASE(E_GL_ARB_explicit_uniform_location)
                CASE(E_GL_ARB_fragment_layer_viewport)
                CASE(E_GL_ARB_framebuffer_no_attachments)
                CASE(E_GL_ARB_internalformat_query2)
                CASE(E_GL_ARB_invalidate_subdata)
                CASE(E_GL_ARB_multi_draw_indirect)
                CASE(E_GL_ARB_program_interface_query)
                CASE(E_GL_ARB_robust_buffer_access_behavior)
                CASE(E_GL_ARB_shader_image_size)
                CASE(E_GL_ARB_shader_storage_buffer_object)
                CASE(E_GL_ARB_stencil_texturing)
                CASE(E_GL_ARB_texture_buffer_range)
                CASE(E_GL_ARB_texture_query_levels)
                CASE(E_GL_ARB_texture_storage_multisample)
                CASE(E_GLX_ARB_robustness_application_isolation)
                CASE(E_GLX_ARB_robustness_share_group_isolation)
                CASE(E_WGL_ARB_robustness_application_isolation)
                CASE(E_WGL_ARB_robustness_share_group_isolation)
                CASE(E_GL_ARB_buffer_storage)
                CASE(E_GL_ARB_clear_texture)
                CASE(E_GL_ARB_enhanced_layouts)
                CASE(E_GL_ARB_multi_bind)
                CASE(E_GL_ARB_query_buffer_object)
                CASE(E_GL_ARB_texture_mirror_clamp_to_edge)
                CASE(E_GL_ARB_texture_stencil8)
                CASE(E_GL_ARB_vertex_type_10f_11f_11f_rev)
                CASE(E_GL_ARB_bindless_texture)
                CASE(E_GL_ARB_compute_variable_group_size)
                CASE(E_GL_ARB_indirect_parameters)
                CASE(E_GL_ARB_seamless_cubemap_per_texture)
                CASE(E_GL_ARB_shader_draw_parameters)
                CASE(E_GL_ARB_shader_group_vote)
                CASE(E_GL_ARB_sparse_texture)
                CASE(E_GL_ARB_ES3_1_compatibility)
                CASE(E_GL_ARB_clip_control)
                CASE(E_GL_ARB_conditional_render_inverted)
                CASE(E_GL_ARB_cull_distance)
                CASE(E_GL_ARB_derivative_control)
                CASE(E_GL_ARB_direct_state_access)
                CASE(E_GL_ARB_get_texture_sub_image)
                CASE(E_GL_ARB_shader_texture_image_samples)
                CASE(E_GL_ARB_texture_barrier)
                CASE(E_GL_KHR_context_flush_control)
                CASE(E_GLX_ARB_context_flush_control)
                CASE(E_WGL_ARB_context_flush_control)
                CASE(E_GL_KHR_robust_buffer_access_behavior)
                CASE(E_GL_KHR_robustness)
                CASE(E_GL_ARB_pipeline_statistics_query)
                CASE(E_GL_ARB_sparse_buffer)
                CASE(E_GL_ARB_transform_feedback_overflow_query)
                CASE(E_GL_KHR_blend_equation_advanced)
                CASE(E_GL_KHR_blend_equation_advanced_coherent)
                CASE(E_GL_KHR_no_error)
                CASE(E_GL_ARB_ES3_2_compatibility)
                CASE(E_GL_ARB_fragment_shader_interlock)
                CASE(E_GL_ARB_gpu_shader_int64)
                CASE(E_GL_ARB_parallel_shader_compile)
                CASE(E_GL_ARB_post_depth_coverage)
                CASE(E_GL_ARB_sample_locations)
                CASE(E_GL_ARB_shader_atomic_counter_ops)
                CASE(E_GL_ARB_shader_ballot)
                CASE(E_GL_ARB_shader_clock)
                CASE(E_GL_ARB_shader_viewport_layer_array)
                CASE(E_GL_ARB_sparse_texture2)
                CASE(E_GL_ARB_sparse_texture_clamp)
                CASE(E_GL_ARB_texture_filter_minmax)
                CASE(E_GL_KHR_texture_compression_astc_sliced_3d)
                CASE(E_GL_ARB_gl_spirv)
                CASE(E_GLX_ARB_create_context_no_error)
                CASE(E_WGL_ARB_create_context_no_error)
                CASE(E_GL_KHR_parallel_shader_compile)
                CASE(E_GL_ARB_polygon_offset_clamp)
                CASE(E_GL_ARB_spirv_extensions)
                CASE(E_GL_ARB_texture_filter_anisotropic)
                CASE(E_GL_KHR_shader_subgroup)
                CASE(E_GL_EXT_abgr)
                CASE(E_GL_EXT_blend_color)
                CASE(E_GL_EXT_polygon_offset)
                CASE(E_GL_EXT_texture)
                CASE(E_GL_EXT_texture3D)
                CASE(E_GL_SGIS_texture_filter4)
                CASE(E_GL_EXT_subtexture)
                CASE(E_GL_EXT_copy_texture)
                CASE(E_GL_EXT_histogram)
                CASE(E_GL_EXT_convolution)
                CASE(E_GL_SGI_color_matrix)
                CASE(E_GL_SGI_color_table)
                CASE(E_GL_SGIS_pixel_texture)
                CASE(E_GL_SGIS_texture4D)
                CASE(E_GL_SGI_texture_color_table)
                CASE(E_GL_EXT_cmyka)
                CASE(E_GL_EXT_texture_object)
                CASE(E_GL_SGIS_detail_texture)
                CASE(E_GL_SGIS_sharpen_texture)
                CASE(E_GL_EXT_packed_pixels)
                CASE(E_GL_SGIS_texture_lod)
                CASE(E_GL_SGIS_multisample)
                CASE(E_GLX_SGIS_multisample)
                CASE(E_GL_EXT_rescale_normal)
                CASE(E_GLX_EXT_visual_info)
                CASE(E_GL_EXT_vertex_array)
                CASE(E_GL_EXT_misc_attribute)
                CASE(E_GL_SGIS_generate_mipmap)
                CASE(E_GL_SGIX_clipmap)
                CASE(E_GL_SGIX_shadow)
                CASE(E_GL_SGIS_texture_edge_clamp)
                CASE(E_GL_SGIS_texture_border_clamp)
                CASE(E_GL_EXT_blend_minmax)
                CASE(E_GL_EXT_blend_subtract)
                CASE(E_GL_EXT_blend_logic_op)
                CASE(E_GLX_SGI_swap_control)
                CASE(E_GLX_SGI_video_sync)
                CASE(E_GLX_SGI_make_current_read)
                CASE(E_GLX_SGIX_video_source)
                CASE(E_GLX_EXT_visual_rating)
                CASE(E_GL_SGIX_interlace)
                CASE(E_GLX_EXT_import_context)
                CASE(E_GLX_SGIX_fbconfig)
                CASE(E_GLX_SGIX_pbuffer)
                CASE(E_GL_SGIS_texture_select)
                CASE(E_GL_SGIX_sprite)
                CASE(E_GL_SGIX_texture_multi_buffer)
                CASE(E_GL_EXT_point_parameters)
                CASE(E_GL_SGIX_instruments)
                CASE(E_GL_SGIX_texture_scale_bias)
                CASE(E_GL_SGIX_framezoom)
                CASE(E_GL_SGIX_tag_sample_buffer)
                CASE(E_GL_SGIX_reference_plane)
                CASE(E_GL_SGIX_flush_raster)
                CASE(E_GLX_SGI_cushion)
                CASE(E_GL_SGIX_depth_texture)
                CASE(E_GL_SGIS_fog_function)
                CASE(E_GL_SGIX_fog_offset)
                CASE(E_GL_HP_image_transform)
                CASE(E_GL_HP_convolution_border_modes)
                CASE(E_GL_SGIX_texture_add_env)
                CASE(E_GL_EXT_color_subtable)
                CASE(E_GLU_EXT_object_space_tess)
                CASE(E_GL_PGI_vertex_hints)
                CASE(E_GL_PGI_misc_hints)
                CASE(E_GL_EXT_paletted_texture)
                CASE(E_GL_EXT_clip_volume_hint)
                CASE(E_GL_SGIX_list_priority)
                CASE(E_GL_SGIX_ir_instrument1)
                CASE(E_GLX_SGIX_video_resize)
                CASE(E_GL_SGIX_texture_lod_bias)
                CASE(E_GLU_SGI_filter4_parameters)
                CASE(E_GLX_SGIX_dm_buffer)
                CASE(E_GL_SGIX_shadow_ambient)
                CASE(E_GLX_SGIX_swap_group)
                CASE(E_GLX_SGIX_swap_barrier)
                CASE(E_GL_EXT_index_texture)
                CASE(E_GL_EXT_index_material)
                CASE(E_GL_EXT_index_func)
                CASE(E_GL_EXT_index_array_formats)
                CASE(E_GL_EXT_compiled_vertex_array)
                CASE(E_GL_EXT_cull_vertex)
                CASE(E_GLU_EXT_nurbs_tessellator)
                CASE(E_GL_SGIX_ycrcb)
                CASE(E_GL_EXT_fragment_lighting)
                CASE(E_GL_IBM_rasterpos_clip)
                CASE(E_GL_HP_texture_lighting)
                CASE(E_GL_EXT_draw_range_elements)
                CASE(E_GL_WIN_phong_shading)
                CASE(E_GL_WIN_specular_fog)
                CASE(E_GLX_SGIS_color_range)
                CASE(E_GL_SGIS_color_range)
                CASE(E_GL_EXT_light_texture)
                CASE(E_GL_SGIX_blend_alpha_minmax)
                CASE(E_GL_EXT_scene_marker)
                CASE(E_GLX_EXT_scene_marker)
                CASE(E_GL_SGIX_pixel_texture_bits)
                CASE(E_GL_EXT_bgra)
                CASE(E_GL_SGIX_async)
                CASE(E_GL_SGIX_async_pixel)
                CASE(E_GL_SGIX_async_histogram)
                CASE(E_GL_INTEL_texture_scissor)
                CASE(E_GL_INTEL_parallel_arrays)
                CASE(E_GL_HP_occlusion_test)
                CASE(E_GL_EXT_pixel_transform)
                CASE(E_GL_EXT_pixel_transform_color_table)
                CASE(E_GL_EXT_shared_texture_palette)
                CASE(E_GLX_SGIS_blended_overlay)
                CASE(E_GL_EXT_separate_specular_color)
                CASE(E_GL_EXT_secondary_color)
                CASE(E_GL_EXT_texture_env)
                CASE(E_GL_EXT_texture_perturb_normal)
                CASE(E_GL_EXT_multi_draw_arrays)
                CASE(E_GL_SUN_multi_draw_arrays)
                CASE(E_GL_EXT_fog_coord)
                CASE(E_GL_REND_screen_coordinates)
                CASE(E_GL_EXT_coordinate_frame)
                CASE(E_GL_EXT_texture_env_combine)
                CASE(E_GL_APPLE_specular_vector)
                CASE(E_GL_APPLE_transform_hint)
                CASE(E_GL_SUNX_constant_data)
                CASE(E_GL_SUN_global_alpha)
                CASE(E_GL_SUN_triangle_list)
                CASE(E_GL_SUN_vertex)
                CASE(E_WGL_EXT_display_color_table)
                CASE(E_WGL_EXT_extensions_string)
                CASE(E_WGL_EXT_make_current_read)
                CASE(E_WGL_EXT_pixel_format)
                CASE(E_WGL_EXT_pbuffer)
                CASE(E_WGL_EXT_swap_control)
                CASE(E_GL_EXT_blend_func_separate)
                CASE(E_GL_INGR_color_clamp)
                CASE(E_GL_INGR_interlace_read)
                CASE(E_GL_EXT_stencil_wrap)
                CASE(E_WGL_EXT_depth_float)
                CASE(E_GL_EXT_422_pixels)
                CASE(E_GL_NV_texgen_reflection)
                CASE(E_GL_SGIX_texture_range)
                CASE(E_GL_SUN_convolution_border_modes)
                CASE(E_GLX_SUN_get_transparent_index)
                CASE(E_GLX_SGIX_video_resize_float)
                CASE(E_GL_EXT_texture_env_add)
                CASE(E_GL_EXT_texture_lod_bias)
                CASE(E_GL_EXT_texture_filter_anisotropic)
                CASE(E_GL_EXT_vertex_weighting)
                CASE(E_GL_NV_light_max_exponent)
                CASE(E_GL_NV_vertex_array_range)
                CASE(E_GL_NV_register_combiners)
                CASE(E_GL_NV_fog_distance)
                CASE(E_GL_NV_texgen_emboss)
                CASE(E_GL_NV_blend_square)
                CASE(E_GL_NV_texture_env_combine4)
                CASE(E_GL_MESA_resize_buffers)
                CASE(E_GL_MESA_window_pos)
                CASE(E_GL_EXT_texture_compression_s3tc)
                CASE(E_GL_IBM_cull_vertex)
                CASE(E_GL_IBM_multimode_draw_arrays)
                CASE(E_GL_IBM_vertex_array_lists)
                CASE(E_GL_3DFX_texture_compression_FXT1)
                CASE(E_GL_3DFX_multisample)
                CASE(E_GL_3DFX_tbuffer)
                CASE(E_WGL_EXT_multisample)
                CASE(E_GL_EXT_multisample)
                CASE(E_GL_SGIX_vertex_preclip)
                CASE(E_GL_SGIX_vertex_preclip_hint)
                CASE(E_GL_SGIX_convolution_accuracy)
                CASE(E_GL_SGIX_resample)
                CASE(E_GL_SGIS_point_line_texgen)
                CASE(E_GL_SGIS_texture_color_mask)
                CASE(E_GLX_MESA_copy_sub_buffer)
                CASE(E_GLX_MESA_pixmap_colormap)
                CASE(E_GLX_MESA_release_buffers)
                CASE(E_GLX_MESA_set_3dfx_mode)
                CASE(E_GL_EXT_texture_env_dot3)
                CASE(E_GL_ATI_texture_mirror_once)
                CASE(E_GL_NV_fence)
                CASE(E_GL_IBM_static_data)
                CASE(E_GL_IBM_texture_mirrored_repeat)
                CASE(E_GL_NV_evaluators)
                CASE(E_GL_NV_packed_depth_stencil)
                CASE(E_GL_NV_register_combiners2)
                CASE(E_GL_NV_texture_compression_vtc)
                CASE(E_GL_NV_texture_rectangle)
                CASE(E_GL_NV_texture_shader)
                CASE(E_GL_NV_texture_shader2)
                CASE(E_GL_NV_vertex_array_range2)
                CASE(E_GL_NV_vertex_program)
                CASE(E_GLX_SGIX_visual_select_group)
                CASE(E_GL_SGIX_texture_coordinate_clamp)
                CASE(E_GLX_OML_swap_method)
                CASE(E_GLX_OML_sync_control)
                CASE(E_GL_OML_interlace)
                CASE(E_GL_OML_subsample)
                CASE(E_GL_OML_resample)
                CASE(E_WGL_OML_sync_control)
                CASE(E_GL_NV_copy_depth_to_color)
                CASE(E_GL_ATI_envmap_bumpmap)
                CASE(E_GL_ATI_fragment_shader)
                CASE(E_GL_ATI_pn_triangles)
                CASE(E_GL_ATI_vertex_array_object)
                CASE(E_GL_EXT_vertex_shader)
                CASE(E_GL_ATI_vertex_streams)
                CASE(E_WGL_I3D_digital_video_control)
                CASE(E_WGL_I3D_gamma)
                CASE(E_WGL_I3D_genlock)
                CASE(E_WGL_I3D_image_buffer)
                CASE(E_WGL_I3D_swap_frame_lock)
                CASE(E_WGL_I3D_swap_frame_usage)
                CASE(E_GL_ATI_element_array)
                CASE(E_GL_SUN_mesh_array)
                CASE(E_GL_SUN_slice_accum)
                CASE(E_GL_NV_multisample_filter_hint)
                CASE(E_GL_NV_depth_clamp)
                CASE(E_GL_NV_occlusion_query)
                CASE(E_GL_NV_point_sprite)
                CASE(E_WGL_NV_render_depth_texture)
                CASE(E_WGL_NV_render_texture_rectangle)
                CASE(E_GL_NV_texture_shader3)
                CASE(E_GL_NV_vertex_program1_1)
                CASE(E_GL_EXT_shadow_funcs)
                CASE(E_GL_EXT_stencil_two_side)
                CASE(E_GL_ATI_text_fragment_shader)
                CASE(E_GL_APPLE_client_storage)
                CASE(E_GL_APPLE_element_array)
                CASE(E_GL_APPLE_fence)
                CASE(E_GL_APPLE_vertex_array_object)
                CASE(E_GL_APPLE_vertex_array_range)
                CASE(E_GL_APPLE_ycbcr_422)
                CASE(E_GL_S3_s3tc)
                CASE(E_GL_ATI_draw_buffers)
                CASE(E_WGL_ATI_pixel_format_float)
                CASE(E_GL_ATI_texture_env_combine3)
                CASE(E_GL_ATI_texture_float)
                CASE(E_GL_NV_float_buffer)
                CASE(E_WGL_NV_float_buffer)
                CASE(E_GL_NV_fragment_program)
                CASE(E_GL_NV_half_float)
                CASE(E_GL_NV_pixel_data_range)
                CASE(E_GL_NV_primitive_restart)
                CASE(E_GL_NV_texture_expand_normal)
                CASE(E_GL_NV_vertex_program2)
                CASE(E_GL_ATI_map_object_buffer)
                CASE(E_GL_ATI_separate_stencil)
                CASE(E_GL_ATI_vertex_attrib_array_object)
                CASE(E_GL_OES_byte_coordinates)
                CASE(E_GL_OES_fixed_point)
                CASE(E_GL_OES_single_precision)
                CASE(E_GL_OES_compressed_paletted_texture)
                CASE(E_GL_OES_read_format)
                CASE(E_GL_OES_query_matrix)
                CASE(E_GL_EXT_depth_bounds_test)
                CASE(E_GL_EXT_texture_mirror_clamp)
                CASE(E_GL_EXT_blend_equation_separate)
                CASE(E_GL_MESA_pack_invert)
                CASE(E_GL_MESA_ycbcr_texture)
                CASE(E_GL_EXT_pixel_buffer_object)
                CASE(E_GL_NV_fragment_program_option)
                CASE(E_GL_NV_fragment_program2)
                CASE(E_GL_NV_vertex_program2_option)
                CASE(E_GL_NV_vertex_program3)
                CASE(E_GLX_SGIX_hyperpipe)
                CASE(E_GLX_MESA_agp_offset)
                CASE(E_GL_EXT_texture_compression_dxt1)
                CASE(E_GL_EXT_framebuffer_object)
                CASE(E_GL_GREMEDY_string_marker)
                CASE(E_GL_EXT_packed_depth_stencil)
                CASE(E_WGL_3DL_stereo_control)
                CASE(E_GL_EXT_stencil_clear_tag)
                CASE(E_GL_EXT_texture_sRGB)
                CASE(E_GL_EXT_framebuffer_blit)
                CASE(E_GL_EXT_framebuffer_multisample)
                CASE(E_GL_MESAX_texture_stack)
                CASE(E_GL_EXT_timer_query)
                CASE(E_GL_EXT_gpu_program_parameters)
                CASE(E_GL_APPLE_flush_buffer_range)
                CASE(E_GL_NV_gpu_program4)
                CASE(E_GL_NV_geometry_program4)
                CASE(E_GL_EXT_geometry_shader4)
                CASE(E_GL_NV_vertex_program4)
                CASE(E_GL_EXT_gpu_shader4)
                CASE(E_GL_EXT_draw_instanced)
                CASE(E_GL_EXT_packed_float)
                CASE(E_GLX_EXT_fbconfig_packed_float)
                CASE(E_WGL_EXT_pixel_format_packed_float)
                CASE(E_GL_EXT_texture_array)
                CASE(E_GL_EXT_texture_buffer_object)
                CASE(E_GL_EXT_texture_compression_latc)
                CASE(E_GL_EXT_texture_compression_rgtc)
                CASE(E_GL_EXT_texture_shared_exponent)
                CASE(E_GL_NV_depth_buffer_float)
                CASE(E_GL_NV_fragment_program4)
                CASE(E_GL_NV_framebuffer_multisample_coverage)
                CASE(E_GL_EXT_framebuffer_sRGB)
                CASE(E_GLX_EXT_framebuffer_sRGB)
                CASE(E_WGL_EXT_framebuffer_sRGB)
                CASE(E_GL_NV_geometry_shader4)
                CASE(E_GL_NV_parameter_buffer_object)
                CASE(E_GL_EXT_draw_buffers2)
                CASE(E_GL_NV_transform_feedback)
                CASE(E_GL_EXT_bindable_uniform)
                CASE(E_GL_EXT_texture_integer)
                CASE(E_GLX_EXT_texture_from_pixmap)
                CASE(E_GL_GREMEDY_frame_terminator)
                CASE(E_GL_NV_conditional_render)
                CASE(E_GL_NV_present_video)
                CASE(E_GLX_NV_present_video)
                CASE(E_WGL_NV_present_video)
                CASE(E_GLX_NV_video_out)
                CASE(E_WGL_NV_video_output)
                CASE(E_GLX_NV_swap_group)
                CASE(E_WGL_NV_swap_group)
                CASE(E_GL_EXT_transform_feedback)
                CASE(E_GL_EXT_direct_state_access)
                CASE(E_GL_EXT_vertex_array_bgra)
                CASE(E_WGL_NV_gpu_affinity)
                CASE(E_GL_EXT_texture_swizzle)
                CASE(E_GL_NV_explicit_multisample)
                CASE(E_GL_NV_transform_feedback2)
                CASE(E_GL_ATI_meminfo)
                CASE(E_GL_AMD_performance_monitor)
                CASE(E_WGL_AMD_gpu_association)
                CASE(E_GL_AMD_texture_texture4)
                CASE(E_GL_AMD_vertex_shader_tessellator)
                CASE(E_GL_EXT_provoking_vertex)
                CASE(E_GL_EXT_texture_snorm)
                CASE(E_GL_AMD_draw_buffers_blend)
                CASE(E_GL_APPLE_texture_range)
                CASE(E_GL_APPLE_float_pixels)
                CASE(E_GL_APPLE_vertex_program_evaluators)
                CASE(E_GL_APPLE_aux_depth_stencil)
                CASE(E_GL_APPLE_object_purgeable)
                CASE(E_GL_APPLE_row_bytes)
                CASE(E_GL_APPLE_rgb_422)
                CASE(E_GL_NV_video_capture)
                CASE(E_GLX_NV_video_capture)
                CASE(E_WGL_NV_video_capture)
                CASE(E_GL_EXT_swap_control)
                CASE(E_GL_NV_copy_image)
                CASE(E_GLX_NV_copy_image)
                CASE(E_WGL_NV_copy_image)
                CASE(E_GL_EXT_separate_shader_objects)
                CASE(E_GL_NV_parameter_buffer_object2)
                CASE(E_GL_NV_shader_buffer_load)
                CASE(E_GL_NV_vertex_buffer_unified_memory)
                CASE(E_GL_NV_texture_barrier)
                CASE(E_GL_AMD_shader_stencil_export)
                CASE(E_GL_AMD_seamless_cubemap_per_texture)
                CASE(E_GLX_INTEL_swap_event)
                CASE(E_GL_AMD_conservative_depth)
                CASE(E_GL_EXT_shader_image_load_store)
                CASE(E_GL_EXT_vertex_attrib_64bit)
                CASE(E_GL_NV_gpu_program5)
                CASE(E_GL_NV_gpu_shader5)
                CASE(E_GL_NV_shader_buffer_store)
                CASE(E_GL_NV_tessellation_program5)
                CASE(E_GL_NV_vertex_attrib_integer_64bit)
                CASE(E_GL_NV_multisample_coverage)
                CASE(E_GL_AMD_name_gen_delete)
                CASE(E_GL_AMD_debug_output)
                CASE(E_GL_NV_vdpau_interop)
                CASE(E_GL_AMD_transform_feedback3_lines_triangles)
                CASE(E_GLX_AMD_gpu_association)
                CASE(E_GLX_EXT_create_context_es2_profile)
                CASE(E_GLX_EXT_create_context_es_profile)
                CASE(E_WGL_EXT_create_context_es2_profile)
                CASE(E_WGL_EXT_create_context_es_profile)
                CASE(E_GL_AMD_depth_clamp_separate)
                CASE(E_GL_EXT_texture_sRGB_decode)
                CASE(E_GL_NV_texture_multisample)
                CASE(E_GL_AMD_blend_minmax_factor)
                CASE(E_GL_AMD_sample_positions)
                CASE(E_GL_EXT_x11_sync_object)
                CASE(E_WGL_NV_DX_interop)
                CASE(E_GL_AMD_multi_draw_indirect)
                CASE(E_GL_EXT_framebuffer_multisample_blit_scaled)
                CASE(E_GL_NV_path_rendering)
                CASE(E_GL_AMD_pinned_memory)
                CASE(E_WGL_NV_DX_interop2)
                CASE(E_GL_AMD_stencil_operation_extended)
                CASE(E_GLX_EXT_swap_control_tear)
                CASE(E_WGL_EXT_swap_control_tear)
                CASE(E_GL_AMD_vertex_shader_viewport_index)
                CASE(E_GL_AMD_vertex_shader_layer)
                CASE(E_GL_NV_bindless_texture)
                CASE(E_GL_NV_shader_atomic_float)
                CASE(E_GL_AMD_query_buffer_object)
                CASE(E_GL_NV_compute_program5)
                CASE(E_GL_NV_shader_storage_buffer_object)
                CASE(E_GL_NV_shader_atomic_counters)
                CASE(E_GL_NV_deep_texture3D)
                CASE(E_GL_NVX_conditional_render)
                CASE(E_GL_AMD_sparse_texture)
                CASE(E_GLX_EXT_buffer_age)
                CASE(E_GL_AMD_shader_trinary_minmax)
                CASE(E_GL_INTEL_map_texture)
                CASE(E_GL_NV_draw_texture)
                CASE(E_GL_AMD_interleaved_elements)
                CASE(E_GL_NV_bindless_multi_draw_indirect)
                CASE(E_GL_NV_blend_equation_advanced)
                CASE(E_GL_NV_blend_equation_advanced_coherent)
                CASE(E_GL_NV_gpu_program5_mem_extended)
                CASE(E_GL_AMD_shader_atomic_counter_ops)
                CASE(E_WGL_NV_delay_before_swap)
                CASE(E_GL_EXT_shader_integer_mix)
                CASE(E_GL_NVX_gpu_memory_info)
                CASE(E_GL_EXT_debug_label)
                CASE(E_GL_EXT_debug_marker)
                CASE(E_GL_INTEL_fragment_shader_ordering)
                CASE(E_GL_AMD_occlusion_query_event)
                CASE(E_GL_INTEL_performance_query)
                CASE(E_GL_AMD_shader_stencil_value_export)
                CASE(E_GLX_NV_delay_before_swap)
                CASE(E_GLX_MESA_query_renderer)
                CASE(E_GL_NV_shader_thread_group)
                CASE(E_GL_NV_shader_thread_shuffle)
                CASE(E_GL_EXT_shader_image_load_formatted)
                CASE(E_GL_AMD_transform_feedback4)
                CASE(E_GL_AMD_gpu_shader_int64)
                CASE(E_GLX_EXT_stereo_tree)
                CASE(E_GL_AMD_gcn_shader)
                CASE(E_GL_AMD_framebuffer_sample_positions)
                CASE(E_GL_NV_shader_atomic_int64)
                CASE(E_GL_NV_bindless_multi_draw_indirect_count)
                CASE(E_GLX_NV_copy_buffer)
                CASE(E_GL_NV_uniform_buffer_unified_memory)
                CASE(E_GL_EXT_polygon_offset_clamp)
                CASE(E_GL_EXT_post_depth_coverage)
                CASE(E_GL_EXT_raster_multisample)
                CASE(E_GL_EXT_sparse_texture2)
                CASE(E_GL_EXT_texture_filter_minmax)
                CASE(E_GL_NV_conservative_raster)
                CASE(E_GL_NV_fill_rectangle)
                CASE(E_GL_NV_fragment_coverage_to_color)
                CASE(E_GL_NV_fragment_shader_interlock)
                CASE(E_GL_NV_framebuffer_mixed_samples)
                CASE(E_GL_NV_geometry_shader_passthrough)
                CASE(E_GL_NV_path_rendering_shared_edge)
                CASE(E_GL_NV_sample_locations)
                CASE(E_GL_NV_sample_mask_override_coverage)
                CASE(E_GL_NV_shader_atomic_fp16_vector)
                CASE(E_GL_NV_internalformat_sample_query)
                CASE(E_GL_NV_viewport_array2)
                CASE(E_GL_NV_command_list)
                CASE(E_GL_OVR_multiview)
                CASE(E_GL_OVR_multiview2)
                CASE(E_GL_NV_conservative_raster_dilate)
                CASE(E_GL_INTEL_framebuffer_CMAA)
                CASE(E_GLX_EXT_libglvnd)
                CASE(E_GL_NV_viewport_swizzle)
                CASE(E_GL_NV_robustness_video_memory_purge)
                CASE(E_GL_AMD_shader_explicit_vertex_parameter)
                CASE(E_GL_NV_clip_space_w_scaling)
                CASE(E_GL_NV_conservative_raster_pre_snap_triangles)
                CASE(E_GL_NV_shader_atomic_float64)
                CASE(E_GL_NV_stereo_view_rendering)
                CASE(E_GL_EXT_window_rectangles)
                CASE(E_GL_INTEL_conservative_rasterization)
                CASE(E_GL_NVX_blend_equation_advanced_multi_draw_buffers)
                CASE(E_GL_NVX_linked_gpu_multicast)
                CASE(E_GL_NV_gpu_multicast)
                CASE(E_GL_MESA_shader_integer_functions)
                CASE(E_GL_AMD_gpu_shader_half_float)
                CASE(E_GL_AMD_shader_ballot)
                CASE(E_WGL_EXT_colorspace)
                CASE(E_GL_SGIX_pixel_texture)
                CASE(E_GL_NV_alpha_to_coverage_dither_control)
                CASE(E_GL_NV_draw_vulkan_image)
                CASE(E_GL_AMD_texture_gather_bias_lod)
                CASE(E_GL_EXT_memory_object)
                CASE(E_GL_EXT_semaphore)
                CASE(E_GL_EXT_memory_object_fd)
                CASE(E_GL_EXT_semaphore_fd)
                CASE(E_GL_EXT_memory_object_win32)
                CASE(E_GL_EXT_semaphore_win32)
                CASE(E_GL_EXT_win32_keyed_mutex)
                CASE(E_GL_AMD_gpu_shader_int16)
                CASE(E_GL_EXT_external_buffer)
                CASE(E_GL_NV_texture_rectangle_compressed)
                CASE(E_GL_NV_blend_minmax_factor)
                CASE(E_GL_NV_query_resource)
                CASE(E_GL_NV_query_resource_tag)
                CASE(E_GL_AMD_shader_image_load_store_lod)
                CASE(E_GLX_MESA_swap_control)
                CASE(E_GL_MESA_tile_raster_order)
                CASE(E_GL_MESA_program_binary_formats)
                CASE(E_GL_NV_conservative_raster_pre_snap)
                CASE(E_GL_NV_conservative_raster_underestimation)
                CASE(E_GL_AMD_gpu_shader_half_float_fetch)
                CASE(E_GL_EXT_shader_framebuffer_fetch)
                CASE(E_GL_EXT_shader_framebuffer_fetch_non_coherent)
                CASE(E_GL_INTEL_blackhole_render)
                CASE(E_GL_EXT_EGL_image_storage)
                CASE(E_GL_AMD_framebuffer_multisample_advanced)
                CASE(E_GL_NV_memory_attachment)
                CASE(E_GL_NV_compute_shader_derivatives)
                CASE(E_GL_NV_fragment_shader_barycentric)
                CASE(E_GL_NV_mesh_shader)
                CASE(E_GL_NV_representative_fragment_test)
                CASE(E_GL_NV_scissor_exclusive)
                CASE(E_GL_NV_shader_texture_footprint)
                CASE(E_GL_NV_shading_rate_image)
                CASE(E_WGL_ATI_render_texture_rectangle)
                CASE(E_GL_NV_vdpau_interop2)
                CASE(E_GL_EXT_texture_sRGB_R8)
                CASE(E_GLX_EXT_context_priority)
                CASE(E_GL_EXT_multiview_timer_query)
                CASE(E_GL_EXT_multiview_texture_multisample)
                CASE(E_GL_EXT_multiview_tessellation_geometry_shader)
                CASE(E_GL_EXT_texture_shadow_lod)
                CASE(E_GL_MESA_framebuffer_flip_y)
                CASE(E_GL_NVX_progress_fence)
                CASE(E_WGL_NV_multigpu_context)
                CASE(E_GL_NVX_gpu_multicast2)
                CASE(E_GL_NV_shader_subgroup_partitioned)
                CASE(E_GLX_NV_multigpu_context)
                CASE(E_GL_EXT_EGL_sync)
                CASE(E_GL_INTEL_shader_integer_functions2)
                CASE(E_GL_MESA_framebuffer_flip_x)
                CASE(E_GL_MESA_framebuffer_swap_xy)
                CASE(E_GL_NV_memory_object_sparse)
                CASE(E_GL_NV_timeline_semaphore)
                CASE(E_GLX_EXT_get_drawable_type)
                CASE(E_GLX_EXT_no_config_context)
                CASE(E_GL_NV_primitive_shading_rate)
                CASE(E_GL_EXT_texture_sRGB_RG8)
                CASE(E_GL_EXT_texture_storage)
                CASE(E_GL_EXT_framebuffer_blit_layers)
                CASE(E_GL_NV_uniform_buffer_std430_layout)
                CASE(E_GL_MESA_texture_const_bandwidth)
            }
            str.erase(0, 2);
            return str;
        }
    } // namespace MG_Util
} // namespace MobileGL