• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_extensions.py using data from registry_xml.py and gl.xml
3 //
4 // Copyright 2021 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // gles_extensions_autogen.h: GLES extension information.
9 
10 #ifndef LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_
11 #define LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_
12 
13 namespace gl
14 {
15 class TextureCapsMap;
16 
17 struct Extensions
18 {
19     Extensions();
20     Extensions(const Extensions &other);
21 
22     Extensions &operator=(const Extensions &other);
23 
24     // Generate a vector of supported extension strings
25     std::vector<std::string> getStrings() const;
26 
27     // Set all texture related extension support based on the supported textures.
28     // Determines support for:
29     // GL_OES_packed_depth_stencil
30     // GL_OES_rgb8_rgba8
31     // GL_EXT_texture_format_BGRA8888
32     // GL_EXT_color_buffer_half_float,
33     // GL_OES_texture_half_float, GL_OES_texture_half_float_linear
34     // GL_OES_texture_float, GL_OES_texture_float_linear
35     // GL_EXT_texture_rg
36     // GL_EXT_texture_type_2_10_10_10_REV
37     // GL_EXT_texture_compression_dxt1, GL_ANGLE_texture_compression_dxt3,
38     // GL_ANGLE_texture_compression_dxt5
39     // GL_KHR_texture_compression_astc_ldr, GL_OES_texture_compression_astc.
40     //     NOTE: GL_KHR_texture_compression_astc_hdr must be enabled separately. Support for the
41     //           HDR profile cannot be determined from the format enums alone.
42     // GL_OES_compressed_ETC1_RGB8_texture
43     // GL_EXT_sRGB
44     // GL_ANGLE_depth_texture, GL_OES_depth32
45     // GL_EXT_color_buffer_float
46     // GL_EXT_texture_norm16
47     // GL_EXT_texture_compression_bptc
48     // GL_EXT_texture_compression_rgtc
49     void setTextureExtensionSupport(const TextureCapsMap &textureCaps);
50 
51     // Helper functions
copyImageAnyExtensions52     bool copyImageAny() const { return (copyImageEXT || copyImageOES); }
depthTextureAnyExtensions53     bool depthTextureAny() const { return (depthTextureANGLE || depthTextureOES); }
drawBuffersIndexedAnyExtensions54     bool drawBuffersIndexedAny() const { return (drawBuffersIndexedEXT || drawBuffersIndexedOES); }
drawElementsBaseVertexAnyExtensions55     bool drawElementsBaseVertexAny() const
56     {
57         return (drawElementsBaseVertexEXT || drawElementsBaseVertexOES);
58     }
framebufferBlitAnyExtensions59     bool framebufferBlitAny() const { return (framebufferBlitANGLE || framebufferBlitNV); }
geometryShaderAnyExtensions60     bool geometryShaderAny() const { return (geometryShaderEXT || geometryShaderOES); }
instancedArraysAnyExtensions61     bool instancedArraysAny() const { return (instancedArraysANGLE || instancedArraysEXT); }
shaderIoBlocksAnyExtensions62     bool shaderIoBlocksAny() const { return (shaderIoBlocksEXT || shaderIoBlocksOES); }
textureBorderClampAnyExtensions63     bool textureBorderClampAny() const { return (textureBorderClampEXT || textureBorderClampOES); }
textureBufferAnyExtensions64     bool textureBufferAny() const { return (textureBufferEXT || textureBufferOES); }
textureCubeMapArrayAnyExtensions65     bool textureCubeMapArrayAny() const
66     {
67         return (textureCubeMapArrayEXT || textureCubeMapArrayOES);
68     }
69 
70     // GLES 2.0+ extensions
71     // --------------------
72 
73     // GL_KHR_blend_equation_advanced
74     bool blendEquationAdvancedKHR = false;
75 
76     // GL_EXT_blend_func_extended
77     bool blendFuncExtendedEXT = false;
78 
79     // GL_EXT_blend_minmax
80     bool blendMinmaxEXT = false;
81 
82     // GL_EXT_buffer_storage
83     bool bufferStorageEXT = false;
84 
85     // GL_EXT_clip_control
86     bool clipControlEXT = false;
87 
88     // GL_EXT_clip_cull_distance
89     bool clipCullDistanceEXT = false;
90 
91     // GL_APPLE_clip_distance
92     bool clipDistanceAPPLE = false;
93 
94     // GL_EXT_color_buffer_float
95     bool colorBufferFloatEXT = false;
96 
97     // GL_EXT_color_buffer_half_float
98     bool colorBufferHalfFloatEXT = false;
99 
100     // GL_OES_compressed_EAC_R11_signed_texture
101     bool compressedEACR11SignedTextureOES = false;
102 
103     // GL_OES_compressed_EAC_R11_unsigned_texture
104     bool compressedEACR11UnsignedTextureOES = false;
105 
106     // GL_OES_compressed_EAC_RG11_signed_texture
107     bool compressedEACRG11SignedTextureOES = false;
108 
109     // GL_OES_compressed_EAC_RG11_unsigned_texture
110     bool compressedEACRG11UnsignedTextureOES = false;
111 
112     // GL_EXT_compressed_ETC1_RGB8_sub_texture
113     bool compressedETC1RGB8SubTextureEXT = false;
114 
115     // GL_OES_compressed_ETC1_RGB8_texture
116     bool compressedETC1RGB8TextureOES = false;
117 
118     // GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture
119     bool compressedETC2PunchthroughARGBA8TextureOES = false;
120 
121     // GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture
122     bool compressedETC2PunchthroughASRGB8AlphaTextureOES = false;
123 
124     // GL_OES_compressed_ETC2_RGB8_texture
125     bool compressedETC2RGB8TextureOES = false;
126 
127     // GL_OES_compressed_ETC2_RGBA8_texture
128     bool compressedETC2RGBA8TextureOES = false;
129 
130     // GL_OES_compressed_ETC2_sRGB8_alpha8_texture
131     bool compressedETC2SRGB8Alpha8TextureOES = false;
132 
133     // GL_OES_compressed_ETC2_sRGB8_texture
134     bool compressedETC2SRGB8TextureOES = false;
135 
136     // GL_EXT_copy_image
137     bool copyImageEXT = false;
138 
139     // GL_OES_copy_image
140     bool copyImageOES = false;
141 
142     // GL_KHR_debug
143     bool debugKHR = false;
144 
145     // GL_EXT_debug_label
146     bool debugLabelEXT = false;
147 
148     // GL_EXT_debug_marker
149     bool debugMarkerEXT = false;
150 
151     // GL_OES_depth24
152     bool depth24OES = false;
153 
154     // GL_OES_depth32
155     bool depth32OES = false;
156 
157     // GL_NV_depth_buffer_float2
158     bool depthBufferFloat2NV = false;
159 
160     // GL_ANGLE_depth_texture
161     bool depthTextureANGLE = false;
162 
163     // GL_OES_depth_texture
164     bool depthTextureOES = false;
165 
166     // GL_OES_depth_texture_cube_map
167     bool depthTextureCubeMapOES = false;
168 
169     // GL_EXT_discard_framebuffer
170     bool discardFramebufferEXT = false;
171 
172     // GL_EXT_disjoint_timer_query
173     bool disjointTimerQueryEXT = false;
174 
175     // GL_EXT_draw_buffers
176     bool drawBuffersEXT = false;
177 
178     // GL_EXT_draw_buffers_indexed
179     bool drawBuffersIndexedEXT = false;
180 
181     // GL_OES_draw_buffers_indexed
182     bool drawBuffersIndexedOES = false;
183 
184     // GL_EXT_draw_elements_base_vertex
185     bool drawElementsBaseVertexEXT = false;
186 
187     // GL_OES_draw_elements_base_vertex
188     bool drawElementsBaseVertexOES = false;
189 
190     // GL_OES_EGL_image
191     bool EGLImageOES = false;
192 
193     // GL_EXT_EGL_image_array
194     bool EGLImageArrayEXT = false;
195 
196     // GL_OES_EGL_image_external
197     bool EGLImageExternalOES = false;
198 
199     // GL_OES_EGL_image_external_essl3
200     bool EGLImageExternalEssl3OES = false;
201 
202     // GL_EXT_EGL_image_external_wrap_modes
203     bool EGLImageExternalWrapModesEXT = false;
204 
205     // GL_EXT_EGL_image_storage
206     bool EGLImageStorageEXT = false;
207 
208     // GL_NV_EGL_stream_consumer_external
209     bool EGLStreamConsumerExternalNV = false;
210 
211     // GL_OES_EGL_sync
212     bool EGLSyncOES = false;
213 
214     // GL_OES_element_index_uint
215     bool elementIndexUintOES = false;
216 
217     // GL_EXT_external_buffer
218     bool externalBufferEXT = false;
219 
220     // GL_OES_fbo_render_mipmap
221     bool fboRenderMipmapOES = false;
222 
223     // GL_NV_fence
224     bool fenceNV = false;
225 
226     // GL_EXT_float_blend
227     bool floatBlendEXT = false;
228 
229     // GL_EXT_frag_depth
230     bool fragDepthEXT = false;
231 
232     // GL_ANGLE_framebuffer_blit
233     bool framebufferBlitANGLE = false;
234 
235     // GL_NV_framebuffer_blit
236     bool framebufferBlitNV = false;
237 
238     // GL_EXT_geometry_shader
239     bool geometryShaderEXT = false;
240 
241     // GL_OES_geometry_shader
242     bool geometryShaderOES = false;
243 
244     // GL_OES_get_program_binary
245     bool getProgramBinaryOES = false;
246 
247     // GL_EXT_gpu_shader5
248     bool gpuShader5EXT = false;
249 
250     // GL_ANGLE_instanced_arrays
251     bool instancedArraysANGLE = false;
252 
253     // GL_EXT_instanced_arrays
254     bool instancedArraysEXT = false;
255 
256     // GL_OES_mapbuffer
257     bool mapbufferOES = false;
258 
259     // GL_EXT_map_buffer_range
260     bool mapBufferRangeEXT = false;
261 
262     // GL_EXT_memory_object
263     bool memoryObjectEXT = false;
264 
265     // GL_EXT_memory_object_fd
266     bool memoryObjectFdEXT = false;
267 
268     // GL_EXT_multi_draw_indirect
269     bool multiDrawIndirectEXT = false;
270 
271     // GL_EXT_multisample_compatibility
272     bool multisampleCompatibilityEXT = false;
273 
274     // GL_EXT_multisampled_render_to_texture
275     bool multisampledRenderToTextureEXT = false;
276 
277     // GL_EXT_multisampled_render_to_texture2
278     bool multisampledRenderToTexture2EXT = false;
279 
280     // GL_OVR_multiview
281     bool multiviewOVR = false;
282 
283     // GL_OVR_multiview2
284     bool multiview2OVR = false;
285 
286     // GL_KHR_no_error
287     bool noErrorKHR = false;
288 
289     // GL_EXT_occlusion_query_boolean
290     bool occlusionQueryBooleanEXT = false;
291 
292     // GL_OES_packed_depth_stencil
293     bool packedDepthStencilOES = false;
294 
295     // GL_ANGLE_pack_reverse_row_order
296     bool packReverseRowOrderANGLE = false;
297 
298     // GL_NV_pack_subimage
299     bool packSubimageNV = false;
300 
301     // GL_KHR_parallel_shader_compile
302     bool parallelShaderCompileKHR = false;
303 
304     // GL_NV_pixel_buffer_object
305     bool pixelBufferObjectNV = false;
306 
307     // GL_EXT_primitive_bounding_box
308     bool primitiveBoundingBoxEXT = false;
309 
310     // GL_EXT_protected_textures
311     bool protectedTexturesEXT = false;
312 
313     // GL_EXT_pvrtc_sRGB
314     bool pvrtcSRGBEXT = false;
315 
316     // GL_NV_read_depth
317     bool readDepthNV = false;
318 
319     // GL_EXT_read_format_bgra
320     bool readFormatBgraEXT = false;
321 
322     // GL_NV_read_stencil
323     bool readStencilNV = false;
324 
325     // GL_OES_rgb8_rgba8
326     bool rgb8Rgba8OES = false;
327 
328     // GL_KHR_robust_buffer_access_behavior
329     bool robustBufferAccessBehaviorKHR = false;
330 
331     // GL_EXT_robustness
332     bool robustnessEXT = false;
333 
334     // GL_NV_robustness_video_memory_purge
335     bool robustnessVideoMemoryPurgeNV = false;
336 
337     // GL_OES_sample_shading
338     bool sampleShadingOES = false;
339 
340     // GL_OES_sample_variables
341     bool sampleVariablesOES = false;
342 
343     // GL_EXT_semaphore
344     bool semaphoreEXT = false;
345 
346     // GL_EXT_semaphore_fd
347     bool semaphoreFdEXT = false;
348 
349     // GL_EXT_separate_shader_objects
350     bool separateShaderObjectsEXT = false;
351 
352     // GL_EXT_shader_framebuffer_fetch_non_coherent
353     bool shaderFramebufferFetchNonCoherentEXT = false;
354 
355     // GL_OES_shader_image_atomic
356     bool shaderImageAtomicOES = false;
357 
358     // GL_EXT_shader_io_blocks
359     bool shaderIoBlocksEXT = false;
360 
361     // GL_OES_shader_io_blocks
362     bool shaderIoBlocksOES = false;
363 
364     // GL_OES_shader_multisample_interpolation
365     bool shaderMultisampleInterpolationOES = false;
366 
367     // GL_EXT_shader_non_constant_global_initializers
368     bool shaderNonConstantGlobalInitializersEXT = false;
369 
370     // GL_NV_shader_noperspective_interpolation
371     bool shaderNoperspectiveInterpolationNV = false;
372 
373     // GL_EXT_shader_texture_lod
374     bool shaderTextureLodEXT = false;
375 
376     // GL_EXT_shadow_samplers
377     bool shadowSamplersEXT = false;
378 
379     // GL_EXT_sRGB
380     bool sRGBEXT = false;
381 
382     // GL_EXT_sRGB_write_control
383     bool sRGBWriteControlEXT = false;
384 
385     // GL_OES_standard_derivatives
386     bool standardDerivativesOES = false;
387 
388     // GL_OES_surfaceless_context
389     bool surfacelessContextOES = false;
390 
391     // GL_ARB_sync
392     bool syncARB = false;
393 
394     // GL_EXT_tessellation_shader
395     bool tessellationShaderEXT = false;
396 
397     // GL_OES_texture_3D
398     bool texture3DOES = false;
399 
400     // GL_EXT_texture_border_clamp
401     bool textureBorderClampEXT = false;
402 
403     // GL_OES_texture_border_clamp
404     bool textureBorderClampOES = false;
405 
406     // GL_EXT_texture_buffer
407     bool textureBufferEXT = false;
408 
409     // GL_OES_texture_buffer
410     bool textureBufferOES = false;
411 
412     // GL_OES_texture_compression_astc
413     bool textureCompressionAstcOES = false;
414 
415     // GL_KHR_texture_compression_astc_hdr
416     bool textureCompressionAstcHdrKHR = false;
417 
418     // GL_KHR_texture_compression_astc_ldr
419     bool textureCompressionAstcLdrKHR = false;
420 
421     // GL_KHR_texture_compression_astc_sliced_3d
422     bool textureCompressionAstcSliced3dKHR = false;
423 
424     // GL_EXT_texture_compression_bptc
425     bool textureCompressionBptcEXT = false;
426 
427     // GL_EXT_texture_compression_dxt1
428     bool textureCompressionDxt1EXT = false;
429 
430     // GL_IMG_texture_compression_pvrtc
431     bool textureCompressionPvrtcIMG = false;
432 
433     // GL_IMG_texture_compression_pvrtc2
434     bool textureCompressionPvrtc2IMG = false;
435 
436     // GL_EXT_texture_compression_rgtc
437     bool textureCompressionRgtcEXT = false;
438 
439     // GL_EXT_texture_compression_s3tc
440     bool textureCompressionS3tcEXT = false;
441 
442     // GL_EXT_texture_compression_s3tc_srgb
443     bool textureCompressionS3tcSrgbEXT = false;
444 
445     // GL_EXT_texture_cube_map_array
446     bool textureCubeMapArrayEXT = false;
447 
448     // GL_OES_texture_cube_map_array
449     bool textureCubeMapArrayOES = false;
450 
451     // GL_EXT_texture_filter_anisotropic
452     bool textureFilterAnisotropicEXT = false;
453 
454     // GL_OES_texture_float
455     bool textureFloatOES = false;
456 
457     // GL_OES_texture_float_linear
458     bool textureFloatLinearOES = false;
459 
460     // GL_EXT_texture_format_BGRA8888
461     bool textureFormatBGRA8888EXT = false;
462 
463     // GL_EXT_texture_format_sRGB_override
464     bool textureFormatSRGBOverrideEXT = false;
465 
466     // GL_OES_texture_half_float
467     bool textureHalfFloatOES = false;
468 
469     // GL_OES_texture_half_float_linear
470     bool textureHalfFloatLinearOES = false;
471 
472     // GL_EXT_texture_norm16
473     bool textureNorm16EXT = false;
474 
475     // GL_OES_texture_npot
476     bool textureNpotOES = false;
477 
478     // GL_EXT_texture_rg
479     bool textureRgEXT = false;
480 
481     // GL_EXT_texture_sRGB_decode
482     bool textureSRGBDecodeEXT = false;
483 
484     // GL_EXT_texture_sRGB_R8
485     bool textureSRGBR8EXT = false;
486 
487     // GL_EXT_texture_sRGB_RG8
488     bool textureSRGBRG8EXT = false;
489 
490     // GL_OES_texture_stencil8
491     bool textureStencil8OES = false;
492 
493     // GL_EXT_texture_storage
494     bool textureStorageEXT = false;
495 
496     // GL_OES_texture_storage_multisample_2d_array
497     bool textureStorageMultisample2dArrayOES = false;
498 
499     // GL_EXT_texture_type_2_10_10_10_REV
500     bool textureType2101010REVEXT = false;
501 
502     // GL_ANGLE_texture_usage
503     bool textureUsageANGLE = false;
504 
505     // GL_ANGLE_translated_shader_source
506     bool translatedShaderSourceANGLE = false;
507 
508     // GL_EXT_unpack_subimage
509     bool unpackSubimageEXT = false;
510 
511     // GL_OES_vertex_array_object
512     bool vertexArrayObjectOES = false;
513 
514     // GL_OES_vertex_half_float
515     bool vertexHalfFloatOES = false;
516 
517     // GL_OES_vertex_type_10_10_10_2
518     bool vertexType1010102OES = false;
519 
520     // GL_WEBGL_video_texture
521     bool videoTextureWEBGL = false;
522 
523     // GL_EXT_YUV_target
524     bool YUVTargetEXT = false;
525 
526     // ANGLE unofficial extensions
527     // ---------------------------
528 
529     // GL_ANGLE_base_vertex_base_instance
530     bool baseVertexBaseInstanceANGLE = false;
531 
532     // GL_ANGLE_base_vertex_base_instance_shader_builtin
533     bool baseVertexBaseInstanceShaderBuiltinANGLE = false;
534 
535     // GL_CHROMIUM_bind_generates_resource
536     bool bindGeneratesResourceCHROMIUM = false;
537 
538     // GL_CHROMIUM_bind_uniform_location
539     bool bindUniformLocationCHROMIUM = false;
540 
541     // GL_ANGLE_client_arrays
542     bool clientArraysANGLE = false;
543 
544     // GL_CHROMIUM_color_buffer_float_rgb
545     bool colorBufferFloatRgbCHROMIUM = false;
546 
547     // GL_CHROMIUM_color_buffer_float_rgba
548     bool colorBufferFloatRgbaCHROMIUM = false;
549 
550     // GL_ANGLE_compressed_texture_etc
551     bool compressedTextureEtcANGLE = false;
552 
553     // GL_CHROMIUM_copy_compressed_texture
554     bool copyCompressedTextureCHROMIUM = false;
555 
556     // GL_CHROMIUM_copy_texture
557     bool copyTextureCHROMIUM = false;
558 
559     // GL_ANGLE_copy_texture_3d
560     bool copyTexture3dANGLE = false;
561 
562     // GL_CHROMIUM_framebuffer_mixed_samples
563     bool framebufferMixedSamplesCHROMIUM = false;
564 
565     // GL_ANGLE_framebuffer_multisample
566     bool framebufferMultisampleANGLE = false;
567 
568     // GL_ANGLE_get_image
569     bool getImageANGLE = false;
570 
571     // GL_ANGLE_get_serialized_context_string
572     bool getSerializedContextStringANGLE = false;
573 
574     // GL_ANGLE_get_tex_level_parameter
575     bool getTexLevelParameterANGLE = false;
576 
577     // GL_CHROMIUM_lose_context
578     bool loseContextCHROMIUM = false;
579 
580     // GL_ANGLE_lossy_etc_decode
581     bool lossyEtcDecodeANGLE = false;
582 
583     // GL_ANGLE_memory_object_flags
584     bool memoryObjectFlagsANGLE = false;
585 
586     // GL_ANGLE_memory_object_fuchsia
587     bool memoryObjectFuchsiaANGLE = false;
588 
589     // GL_ANGLE_memory_size
590     bool memorySizeANGLE = false;
591 
592     // GL_ANGLE_multi_draw
593     bool multiDrawANGLE = false;
594 
595     // GL_ANGLE_multiview_multisample
596     bool multiviewMultisampleANGLE = false;
597 
598     // GL_ANGLE_program_binary
599     bool programBinaryANGLE = false;
600 
601     // GL_ANGLE_program_cache_control
602     bool programCacheControlANGLE = false;
603 
604     // GL_ANGLE_provoking_vertex
605     bool provokingVertexANGLE = false;
606 
607     // GL_ANGLE_relaxed_vertex_attribute_type
608     bool relaxedVertexAttributeTypeANGLE = false;
609 
610     // GL_ANGLE_request_extension
611     bool requestExtensionANGLE = false;
612 
613     // GL_ANGLE_rgbx_internal_format
614     bool rgbxInternalFormatANGLE = false;
615 
616     // GL_ANGLE_robust_client_memory
617     bool robustClientMemoryANGLE = false;
618 
619     // GL_ANGLE_robust_fragment_shader_output
620     bool robustFragmentShaderOutputANGLE = false;
621 
622     // GL_ANGLE_robust_resource_initialization
623     bool robustResourceInitializationANGLE = false;
624 
625     // GL_ANGLE_semaphore_fuchsia
626     bool semaphoreFuchsiaANGLE = false;
627 
628     // GL_CHROMIUM_sync_query
629     bool syncQueryCHROMIUM = false;
630 
631     // GL_ANGLE_texture_compression_dxt3
632     bool textureCompressionDxt3ANGLE = false;
633 
634     // GL_ANGLE_texture_compression_dxt5
635     bool textureCompressionDxt5ANGLE = false;
636 
637     // GL_ANGLE_texture_external_update
638     bool textureExternalUpdateANGLE = false;
639 
640     // GL_CHROMIUM_texture_filtering_hint
641     bool textureFilteringHintCHROMIUM = false;
642 
643     // GL_ANGLE_texture_multisample
644     bool textureMultisampleANGLE = false;
645 
646     // GL_ANGLE_texture_rectangle
647     bool textureRectangleANGLE = false;
648 
649     // GL_ANGLE_vulkan_image
650     bool vulkanImageANGLE = false;
651 
652     // GL_ANGLE_webgl_compatibility
653     bool webglCompatibilityANGLE = false;
654 
655     // GL_ANGLE_yuv_internal_format
656     bool yuvInternalFormatANGLE = false;
657 
658     // GLES 1.0 and 1.1 extensions
659     // ---------------------------
660 
661     // GL_OES_draw_texture
662     bool drawTextureOES = false;
663 
664     // GL_OES_framebuffer_object
665     bool framebufferObjectOES = false;
666 
667     // GL_OES_matrix_palette
668     bool matrixPaletteOES = false;
669 
670     // GL_OES_point_size_array
671     bool pointSizeArrayOES = false;
672 
673     // GL_OES_point_sprite
674     bool pointSpriteOES = false;
675 
676     // GL_OES_query_matrix
677     bool queryMatrixOES = false;
678 
679     // GL_OES_texture_cube_map
680     bool textureCubeMapOES = false;
681 };
682 }  // namespace gl
683 
684 #endif  // LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_
685