ENUMS(3clc)

πŸ“¦
version 1.0~svn33624 Β· 3 versions
, in ubuntu jammy, ubuntu noble

✨ ENUMERATED TYPES ✨

okay bestie, welcome to the OpenCL Manual section 3clc β€” yeah we're in the library pages now, it's giving very "I read the docs for fun" energy and honestly? iconic. πŸ’…


πŸŽ€ NAME πŸŽ€

Enumerated_Types β€” bestie, this is literally the list of all the enumerated types and the values they're allowed to be. Permitted values only, no rogue vibes allowed. ✨

fr fr, that's the whole NAME section β€” the actual enum-by-enum tea is coming up in the parts after this one, so don't go anywhere. 🫢
  • cl_addressing_mode πŸ¦‹ β€” the permitted values are literally:
    • CL_ADDRESS_NONE
    • CL_ADDRESS_CLAMP_TO_EDGE
    • CL_ADDRESS_CLAMP
    • CL_ADDRESS_REPEAT
    • CL_ADDRESS_MIRRORED_REPEAT
  • cl_bool πŸ’– β€” permitted values, no cap:
    • CL_FALSE
    • CL_TRUE
    • CL_BLOCKING = CL_TRUE
    • CL_NON_BLOCKING = CL_FALSE
Note: Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels.
  • cl_buffer_create_type πŸŽ€ β€” permitted value:
    • CL_BUFFER_CREATE_TYPE_REGION
  • cl_build_status ✨ β€” permitted values:
    • CL_BUILD_SUCCESS
    • CL_BUILD_NONE
    • CL_BUILD_ERROR
    • CL_BUILD_IN_PROGRESS
  • cl_channel_order 🌈 β€” permitted values:
    • CL_A
    • CL_R
    • CL_RG
    • CL_RA
    • CL_RGB
    • CL_RGBA
    • CL_BGRA
    • CL_ARGB
    • CL_INTENSITY
    • CL_LUMINANCE
    • CL_Rx
    • CL_RGx
    • CL_RGBx
  • cl_channel_type πŸ’… β€” permitted values:
    • CL_SNORM_INT8
    • CL_SNORM_INT16
    • CL_UNORM_INT8
    • CL_UNORM_INT16
    • CL_UNORM_SHORT_565
    • CL_UNORM_SHORT_555
    • CL_UNORM_INT_101010
    • CL_SIGNED_INT8
    • CL_SIGNED_INT16
    • CL_SIGNED_INT32
    • CL_UNSIGNED_INT8
    • CL_UNSIGNED_INT16
    • CL_UNSIGNED_INT32
    • CL_HALF_FLOAT
    • CL_FLOAT
  • cl_command_queue_info 🫢 β€” permitted values:
    • CL_QUEUE_CONTEXT
    • CL_QUEUE_DEVICE
    • CL_QUEUE_REFERENCE_COUNT
    • CL_QUEUE_PROPERTIES
  • cl_command_queue_properties ⭐ β€” permitted values:
    • CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE
    • CL_QUEUE_PROFILING_ENABLE
  • cl_command_type πŸ‘‘ β€” permitted values, and yes there are a lot, stay with me:
    • CL_COMMAND_NDRANGE_KERNEL
    • CL_COMMAND_TASK
    • CL_COMMAND_NATIVE_KERNEL
    • CL_COMMAND_READ_BUFFER
    • CL_COMMAND_WRITE_BUFFER
    • CL_COMMAND_COPY_BUFFER
    • CL_COMMAND_READ_IMAGE
    • CL_COMMAND_WRITE_IMAGE
    • CL_COMMAND_COPY_IMAGE
    • CL_COMMAND_COPY_IMAGE_TO_BUFFER
    • CL_COMMAND_COPY_BUFFER_TO_IMAGE
    • CL_COMMAND_MAP_BUFFER
    • CL_COMMAND_MAP_IMAGE
    • CL_COMMAND_UNMAP_MEM_OBJECT
    • CL_COMMAND_MARKER
    • CL_COMMAND_ACQUIRE_GL_OBJECTS
    • CL_COMMAND_RELEASE_GL_OBJECTS
    • CL_COMMAND_READ_BUFFER_RECT
    • CL_COMMAND_WRITE_BUFFER_RECT
    • CL_COMMAND_COPY_BUFFER_RECT
    • CL_COMMAND_USER
    • CL_COMMAND_BARRIER
    • CL_COMMAND_MIGRATE_MEM_OBJECTS

okay so we're still inside the same enum and the values just KEEP. COMING. πŸ’€ bestie this row is a marathon, not a sprint β€” here's the rest of it:

  • CL_COMMAND_FILL_BUFFER
  • CL_COMMAND_FILL_IMAGE
  • CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR
  • CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR
  • CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR
  • CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR
  • CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR
  • CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR

✨ cl_context_info ✨

the context girlies πŸŽ€ every single value:

  • CL_CONTEXT_REFERENCE_COUNT
  • CL_CONTEXT_DEVICES
  • CL_CONTEXT_PROPERTIES
  • CL_CONTEXT_NUM_DEVICES
  • CL_CONTEXT_D3D10_DEVICE_KHR
  • CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR
  • CL_CONTEXT_D3D11_DEVICE_KHR
  • CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR
  • CL_CONTEXT_D3D9_DEVICE_KHR
  • CL_CONTEXT_D3D9EX_DEVICE_KHR
  • CL_CONTEXT_DXVA_DEVICE_KHR
  • CL_GL_CONTEXT_KHR
  • CL_EGL_DISPLAY_KHR
  • CL_GLX_DISPLAY_KHR
  • CL_WGL_HDC_KHR
  • CL_CGL_SHAREGROUP_KHR

🌸 cl_context_properties 🌸

a shorter lil list, but still iconic:

  • CL_CONTEXT_PLATFORM
  • CL_CONTEXT_INTEROP_USER_SYNC
  • CL_GL_CONTEXT_KHR
  • CL_EGL_DISPLAY_KHR
  • CL_GLX_DISPLAY_KHR
  • CL_WGL_HDC_KHR
  • CL_CGL_SHAREGROUP_KHR

πŸ’… cl_d3d10_device_set_khr πŸ’…

nothing on the right side of the table for this one, bestie β€” the row is just vibes and a name. that's it, that's the entry. πŸ™ˆ

// cl_d3d10_device_set_nv

not me showing you a type that's literally commented out in the original β€” yep, that // is right there, i'm keeping it exactly as-is. its values:

  • CL_PREFERRED_DEVICES_FOR_D3D10_KHR
  • CL_ALL_DEVICES_FOR_D3D10_KHR

cl_d3d10_device_source_khr

again, no values listed in the table. empty. silent. mysterious. 🫢

// cl_d3d10_device_source_nv

also commented out, also keeping the // fr fr. its values:

  • CL_D3D10_DEVICE_KHR
  • CL_D3D10_DXGI_ADAPTER_KHR

πŸ”₯ cl_d3d11_device_set_khr πŸ”₯

  • CL_PREFERRED_DEVICES_FOR_D3D10_KHR
  • CL_ALL_DEVICES_FOR_D3D10_KHR
not me messing up, i swear β€” this is literally a d3d11 type and the values still say D3D10. that's what the page says, so that's what you get. copy it character for character, no cap. πŸ’€

πŸ¦‹ cl_d3d11_device_source_khr πŸ¦‹

  • CL_D3D11_DEVICE_KHR
  • CL_D3D11_DXGI_ADAPTER_KHR

⭐ cl_device_affinity_domain ⭐

  • CL_DEVICE_AFFINITY_DOMAIN_NUMA
  • CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE
  • CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE
  • CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE
  • CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE
  • CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE

πŸŽ€ cl_device_exec_capabilities πŸŽ€

  • CL_EXEC_KERNEL
  • CL_EXEC_NATIVE_KERNEL

πŸ’– cl_device_fp_config πŸ’–

the floating point besties, all eight of them:

  • CL_FP_DENORM
  • CL_FP_INF_NAN
  • CL_FP_ROUND_TO_NEAREST
  • CL_FP_ROUND_TO_ZERO
  • CL_FP_ROUND_TO_INF
  • CL_FP_FMA
  • CL_FP_SOFT_FLOAT
  • CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT

πŸ‘‘ cl_device_info πŸ‘‘

okay this one is LONG long β€” it's giving main character energy and we're only partway through it, so hold my hand:

  • CL_DEVICE_TYPE
  • CL_DEVICE_VENDOR_ID
  • CL_DEVICE_MAX_COMPUTE_UNITS
  • CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS
  • CL_DEVICE_MAX_WORK_GROUP_SIZE
  • CL_DEVICE_MAX_WORK_ITEM_SIZES
  • CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR
  • CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT
  • CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT
  • CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG

okay bestie we're BACK and the cl_device_info list is still going because of course it is 😭 this thing has main character energy and refuses to end. here's the rest of the lineup, every single one, no skips, no cuts, we eat the whole plate πŸ’…βœ¨

  • CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT
  • CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE
  • CL_DEVICE_MAX_CLOCK_FREQUENCY
  • CL_DEVICE_ADDRESS_BITS
  • CL_DEVICE_MAX_READ_IMAGE_ARGS
  • CL_DEVICE_MAX_WRITE_IMAGE_ARGS
  • CL_DEVICE_MAX_MEM_ALLOC_SIZE
  • CL_DEVICE_IMAGE2D_MAX_WIDTH
  • CL_DEVICE_IMAGE2D_MAX_HEIGHT
  • CL_DEVICE_IMAGE3D_MAX_WIDTH
  • CL_DEVICE_IMAGE3D_MAX_HEIGHT
  • CL_DEVICE_IMAGE3D_MAX_DEPTH
  • CL_DEVICE_IMAGE_SUPPORT
  • CL_DEVICE_MAX_PARAMETER_SIZE
  • CL_DEVICE_MAX_SAMPLERS
  • CL_DEVICE_MEM_BASE_ADDR_ALIGN
  • CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE
  • CL_DEVICE_SINGLE_FP_CONFIG
  • CL_DEVICE_GLOBAL_MEM_CACHE_TYPE
  • CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE
  • CL_DEVICE_GLOBAL_MEM_CACHE_SIZE
  • CL_DEVICE_GLOBAL_MEM_SIZE
  • CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE
  • CL_DEVICE_MAX_CONSTANT_ARGS
  • CL_DEVICE_LOCAL_MEM_TYPE
  • CL_DEVICE_LOCAL_MEM_SIZE
  • CL_DEVICE_ERROR_CORRECTION_SUPPORT
  • CL_DEVICE_PROFILING_TIMER_RESOLUTION
  • CL_DEVICE_ENDIAN_LITTLE
  • CL_DEVICE_AVAILABLE
  • CL_DEVICE_COMPILER_AVAILABLE
  • CL_DEVICE_EXECUTION_CAPABILITIES
  • CL_DEVICE_QUEUE_PROPERTIES
  • CL_DEVICE_NAME
  • CL_DEVICE_VENDOR
  • CL_DRIVER_VERSION
  • CL_DEVICE_PROFILE
  • CL_DEVICE_VERSION
  • CL_DEVICE_EXTENSIONS
  • CL_DEVICE_PLATFORM
  • CL_DEVICE_DOUBLE_FP_CONFIG
  • CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF
  • CL_DEVICE_HOST_UNIFIED_MEMORY
  • CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR
  • CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT
  • CL_DEVICE_NATIVE_VECTOR_WIDTH_INT
  • CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG
  • CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT
  • CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE
  • CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF
  • CL_DEVICE_OPENCL_C_VERSION
  • CL_DEVICE_LINKER_AVAILABLE
  • CL_DEVICE_BUILT_IN_KERNELS
  • CL_DEVICE_IMAGE_MAX_BUFFER_SIZE
  • CL_DEVICE_IMAGE_MAX_ARRAY_SIZE
  • CL_DEVICE_PARENT_DEVICE
  • CL_DEVICE_PARTITION_MAX_SUB_DEVICES
  • CL_DEVICE_PARTITION_PROPERTIES
  • CL_DEVICE_PARTITION_AFFINITY_DOMAIN
  • CL_DEVICE_PARTITION_TYPE
  • CL_DEVICE_REFERENCE_COUNT
  • CL_DEVICE_PREFERRED_INTEROP_USER_SYNC
  • CL_DEVICE_PRINTF_BUFFER_SIZE

and THAT'S the whole cl_device_info roster, we survived 🫢 take a breath, hydrate, you earned it.


cl_device_local_mem_type 🌸

where does the local memory live, bestie? pick your fighter:

  • CL_GLOBAL
  • CL_LOCAL
  • CL_NONE

cl_device_mem_cache_type πŸ’™

the cache situation, in three flavours:

  • CL_NONE
  • CL_READ_ONLY_CACHE
  • CL_READ_WRITE_CACHE

cl_device_partition_property πŸ¦‹

splitting a device up like it's a group project and everyone's getting a section:

  • CL_DEVICE_PARTITION_EQUALLY
  • CL_DEVICE_PARTITION_BY_COUNTS
  • CL_DEVICE_PARTITION_BY_COUNTS_LIST_END
  • CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN
  • 0

cl_device_type ✨

what kind of device are we even dealing with:

  • CL_DEVICE_TYPE_DEFAULT
  • CL_DEVICE_TYPE_CPU
  • CL_DEVICE_TYPE_GPU
  • CL_DEVICE_TYPE_ACCELERATOR
  • CL_DEVICE_TYPE_CUSTOM
  • CL_DEVICE_TYPE_ALL

cl_event_info πŸ”₯

all the tea you can ask about an event:

  • CL_EVENT_COMMAND_QUEUE
  • CL_EVENT_COMMAND_TYPE
  • CL_EVENT_REFERENCE_COUNT
  • CL_EVENT_COMMAND_EXECUTION_STATUS
  • CL_EVENT_CONTEXT

  • cl_filter_mode β€” how the sampler grabs texels when it's not landing dead-center: CL_FILTER_NEAREST, CL_FILTER_LINEAR. nearest = it picks one and moves on, linear = it does the lil weighted-average moment πŸ’…
  • cl_gl_context_info β€” for the GL interop girlies: CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR, CL_DEVICES_FOR_GL_CONTEXT_KHR.
  • cl_gl_object_type β€” every flavor of GL thing you can hand over: CL_GL_OBJECT_BUFFER, CL_GL_OBJECT_TEXTURE2D, CL_GL_OBJECT_TEXTURE3D, CL_GL_OBJECT_RENDERBUFFER, CL_GL_OBJECT_TEXTURE2D_ARRAY, CL_GL_OBJECT_TEXTURE1D, CL_GL_OBJECT_TEXTURE1D_ARRAY, CL_GL_OBJECT_TEXTURE_BUFFER. the full set, no skips, we love a complete lineup ✨
  • cl_gl_texture_info β€” texture interrogation questions: CL_GL_TEXTURE_TARGET, CL_GL_MIPMAP_LEVEL.
  • cl_image_info β€” the image gossip pipeline, i.e. everything you can ask about an image object: CL_IMAGE_FORMAT, CL_IMAGE_ELEMENT_SIZE, CL_IMAGE_ROW_PITCH, CL_IMAGE_SLICE_PITCH, CL_IMAGE_WIDTH, CL_IMAGE_HEIGHT, CL_IMAGE_DEPTH, CL_IMAGE_ARRAY_SIZE, CL_IMAGE_BUFFER, CL_IMAGE_NUM_MIP_LEVELS, CL_IMAGE_NUM_SAMPLES, CL_IMAGE_D3D10_SUBRESOURCE_KHR, CL_IMAGE_D3D11_SUBRESOURCE_KHR, CL_IMAGE_DX9_MEDIA_PLANE_KHR.
  • cl_kernel_arg_address_qualifier β€” where your kernel arg actually lives: CL_KERNEL_ARG_ADDRESS_GLOBAL, CL_KERNEL_ARG_ADDRESS_LOCAL, CL_KERNEL_ARG_ADDRESS_CONSTANT, CL_KERNEL_ARG_ADDRESS_PRIVATE.
  • cl_kernel_arg_access_qualifier β€” can you read it, write it, both, or neither bestie: CL_KERNEL_ARG_ACCESS_READ_ONLY, CL_KERNEL_ARG_ACCESS_WRITE_ONLY, CL_KERNEL_ARG_ACCESS_READ_WRITE, CL_KERNEL_ARG_ACCESS_NONE.
  • cl_kernel_arg_info β€” the intel you can pull on a kernel argument: CL_KERNEL_ARG_ADDRESS_QUALIFIER, CL_KERNEL_ARG_ACCESS_QUALIFIER, CL_KERNEL_ARG_TYPE_NAME, CL_KERNEL_ARG_NAME.
  • cl_kernel_info β€” everything you can ask about a kernel itself: CL_KERNEL_FUNCTION_NAME, CL_KERNEL_NUM_ARGS, CL_KERNEL_REFERENCE_COUNT, CL_KERNEL_CONTEXT, CL_KERNEL_PROGRAM, CL_KERNEL_ATTRIBUTES.
  • cl_kernel_work_group_info β€” kernel work-group lore: CL_KERNEL_WORK_GROUP_SIZE, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, CL_KERNEL_LOCAL_MEM_SIZE, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, CL_KERNEL_PRIVATE_MEM_SIZE, CL_KERNEL_GLOBAL_WORK_SIZE.
  • cl_map_flags β€” how you're allowed to touch a mapped region: CL_MAP_READ, CL_MAP_WRITE, CL_MAP_WRITE_INVALIDATE_REGION. the last one is the "don't bother preserving what was there, I'm overwriting it all" energy πŸ’€
  • // cl_media_adapter_set_khr β€” adapter picker values: CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR, CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR.
  • // cl_media_adapter_type_khr β€” which media adapter flavor: CL_D3D9_DEVICE_KHR, CL_D3D9EX_DEVICE_KHR, CL_DXVA_DEVICE_KHR.
  • cl_mem_flags β€” the memory permission slips: CL_MEM_READ_WRITE, CL_MEM_WRITE_ONLY

…and wrapping up that cl_mem_flags era of the chart, the last few values on the list are:

  • CL_MEM_READ_ONLY
  • CL_MEM_USE_HOST_PTR
  • CL_MEM_ALLOC_HOST_PTR
  • CL_MEM_COPY_HOST_PTR

and now, the rest of the roster, bestie πŸ’–

  • cl_mem_info β€” the full stack of memory-object tea β˜•
    • CL_MEM_TYPE
    • CL_MEM_FLAGS
    • CL_MEM_SIZE
    • CL_MEM_HOST_PTR
    • CL_MEM_MAP_COUNT
    • CL_MEM_REFERENCE_COUNT
    • CL_MEM_CONTEXT
    • CL_MEM_ASSOCIATED_MEMOBJECT
    • CL_MEM_OFFSET
    • CL_MEM_D3D10_RESOURCE_KHR
    • CL_MEM_D3D11_RESOURCE_KHR
    • CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR
    • CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR
  • cl_mem_migration_flags β€” just two icons, both iconic ✨
    • CL_MIGRATE_MEM_OBJECT_HOST
    • CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED
  • cl_mem_object_type β€” every shape a memory object can serve πŸ¦‹
    • CL_MEM_OBJECT_BUFFER
    • CL_MEM_OBJECT_IMAGE2D
    • CL_MEM_OBJECT_IMAGE3D
    • CL_MEM_OBJECT_IMAGE2D_ARRAY
    • CL_MEM_OBJECT_IMAGE1D
    • CL_MEM_OBJECT_IMAGE1D_ARRAY
    • CL_MEM_OBJECT_IMAGE1D_BUFFER
  • cl_platform_info β€” the platform's whole personality 🌈
    • CL_PLATFORM_PROFILE
    • CL_PLATFORM_VERSION
    • CL_PLATFORM_NAME
    • CL_PLATFORM_VENDOR
    • CL_PLATFORM_EXTENSIONS
    • CL_PLATFORM_ICD_SUFFIX_KHR
  • cl_profiling_info β€” the timeline of a command, timestamped and everything ⏱️
    • CL_PROFILING_COMMAND_QUEUED
    • CL_PROFILING_COMMAND_SUBMIT
    • CL_PROFILING_COMMAND_START
    • CL_PROFILING_COMMAND_END
  • cl_program_binary_type β€” what kind of binary era we're in 🧚
    • CL_PROGRAM_BINARY_TYPE_NONE
    • CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT
    • CL_PROGRAM_BINARY_TYPE_LIBRARY
    • CL_PROGRAM_BINARY_TYPE_EXECUTABLE
  • cl_program_build_info β€” how the build went, receipts included 🧾
    • CL_PROGRAM_BUILD_STATUS
    • CL_PROGRAM_BUILD_OPTIONS
    • CL_PROGRAM_BUILD_LOG
    • CL_PROGRAM_BINARY_TYPE
  • cl_program_info β€” literally everything about a program πŸ’…
    • CL_PROGRAM_REFERENCE_COUNT
    • CL_PROGRAM_CONTEXT
    • CL_PROGRAM_NUM_DEVICES
    • CL_PROGRAM_DEVICES
    • CL_PROGRAM_SOURCE
    • CL_PROGRAM_BINARY_SIZES
    • CL_PROGRAM_BINARIES
    • CL_PROGRAM_NUM_KERNELS
    • CL_PROGRAM_KERNEL_NAMES
  • cl_sampler_info β€” and the sampler's lil info dump to close us out πŸŽ€
    • CL_SAMPLER_REFERENCE_COUNT
    • CL_SAMPLER_CONTEXT
    • CL_SAMPLER_NORMALIZED_COORDS
    • CL_SAMPLER_ADDRESSING_MODE
    • CL_SAMPLER_FILTER_MODE

πŸ‘‘ AUTHORS πŸ‘‘

The Khronos Group

like, the whole squad, no cap 🫢


Copyright Β© 2007-2011 The Khronos Group Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are furnished to do so, subject to the condition that this copyright notice and permission notice shall be included in all copies or substantial portions of the Materials.


and that's the whole page, bestie, we ate and left absolutely no crumbs πŸ’–βœ¨ this edition is brought to you by The Khronos Group, dated 01/14/2021, living under the title ENUMERATED TYPES(3clc) πŸ¦‹ go forth and enum, mwah πŸ’…

πŸ“¦ where this page comes from