1e8556ba3Sopenharmony_ci#ifndef VULKAN_FUCHSIA_H_ 2e8556ba3Sopenharmony_ci#define VULKAN_FUCHSIA_H_ 1 3e8556ba3Sopenharmony_ci 4e8556ba3Sopenharmony_ci/* 5e8556ba3Sopenharmony_ci** Copyright 2015-2024 The Khronos Group Inc. 6e8556ba3Sopenharmony_ci** 7e8556ba3Sopenharmony_ci** SPDX-License-Identifier: Apache-2.0 8e8556ba3Sopenharmony_ci*/ 9e8556ba3Sopenharmony_ci 10e8556ba3Sopenharmony_ci/* 11e8556ba3Sopenharmony_ci** This header is generated from the Khronos Vulkan XML API Registry. 12e8556ba3Sopenharmony_ci** 13e8556ba3Sopenharmony_ci*/ 14e8556ba3Sopenharmony_ci 15e8556ba3Sopenharmony_ci 16e8556ba3Sopenharmony_ci#ifdef __cplusplus 17e8556ba3Sopenharmony_ciextern "C" { 18e8556ba3Sopenharmony_ci#endif 19e8556ba3Sopenharmony_ci 20e8556ba3Sopenharmony_ci 21e8556ba3Sopenharmony_ci 22e8556ba3Sopenharmony_ci// VK_FUCHSIA_imagepipe_surface is a preprocessor guard. Do not pass it to API calls. 23e8556ba3Sopenharmony_ci#define VK_FUCHSIA_imagepipe_surface 1 24e8556ba3Sopenharmony_ci#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1 25e8556ba3Sopenharmony_ci#define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface" 26e8556ba3Sopenharmony_citypedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA; 27e8556ba3Sopenharmony_citypedef struct VkImagePipeSurfaceCreateInfoFUCHSIA { 28e8556ba3Sopenharmony_ci VkStructureType sType; 29e8556ba3Sopenharmony_ci const void* pNext; 30e8556ba3Sopenharmony_ci VkImagePipeSurfaceCreateFlagsFUCHSIA flags; 31e8556ba3Sopenharmony_ci zx_handle_t imagePipeHandle; 32e8556ba3Sopenharmony_ci} VkImagePipeSurfaceCreateInfoFUCHSIA; 33e8556ba3Sopenharmony_ci 34e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); 35e8556ba3Sopenharmony_ci 36e8556ba3Sopenharmony_ci#ifndef VK_NO_PROTOTYPES 37e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA( 38e8556ba3Sopenharmony_ci VkInstance instance, 39e8556ba3Sopenharmony_ci const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, 40e8556ba3Sopenharmony_ci const VkAllocationCallbacks* pAllocator, 41e8556ba3Sopenharmony_ci VkSurfaceKHR* pSurface); 42e8556ba3Sopenharmony_ci#endif 43e8556ba3Sopenharmony_ci 44e8556ba3Sopenharmony_ci 45e8556ba3Sopenharmony_ci// VK_FUCHSIA_external_memory is a preprocessor guard. Do not pass it to API calls. 46e8556ba3Sopenharmony_ci#define VK_FUCHSIA_external_memory 1 47e8556ba3Sopenharmony_ci#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1 48e8556ba3Sopenharmony_ci#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory" 49e8556ba3Sopenharmony_citypedef struct VkImportMemoryZirconHandleInfoFUCHSIA { 50e8556ba3Sopenharmony_ci VkStructureType sType; 51e8556ba3Sopenharmony_ci const void* pNext; 52e8556ba3Sopenharmony_ci VkExternalMemoryHandleTypeFlagBits handleType; 53e8556ba3Sopenharmony_ci zx_handle_t handle; 54e8556ba3Sopenharmony_ci} VkImportMemoryZirconHandleInfoFUCHSIA; 55e8556ba3Sopenharmony_ci 56e8556ba3Sopenharmony_citypedef struct VkMemoryZirconHandlePropertiesFUCHSIA { 57e8556ba3Sopenharmony_ci VkStructureType sType; 58e8556ba3Sopenharmony_ci void* pNext; 59e8556ba3Sopenharmony_ci uint32_t memoryTypeBits; 60e8556ba3Sopenharmony_ci} VkMemoryZirconHandlePropertiesFUCHSIA; 61e8556ba3Sopenharmony_ci 62e8556ba3Sopenharmony_citypedef struct VkMemoryGetZirconHandleInfoFUCHSIA { 63e8556ba3Sopenharmony_ci VkStructureType sType; 64e8556ba3Sopenharmony_ci const void* pNext; 65e8556ba3Sopenharmony_ci VkDeviceMemory memory; 66e8556ba3Sopenharmony_ci VkExternalMemoryHandleTypeFlagBits handleType; 67e8556ba3Sopenharmony_ci} VkMemoryGetZirconHandleInfoFUCHSIA; 68e8556ba3Sopenharmony_ci 69e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); 70e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); 71e8556ba3Sopenharmony_ci 72e8556ba3Sopenharmony_ci#ifndef VK_NO_PROTOTYPES 73e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA( 74e8556ba3Sopenharmony_ci VkDevice device, 75e8556ba3Sopenharmony_ci const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, 76e8556ba3Sopenharmony_ci zx_handle_t* pZirconHandle); 77e8556ba3Sopenharmony_ci 78e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA( 79e8556ba3Sopenharmony_ci VkDevice device, 80e8556ba3Sopenharmony_ci VkExternalMemoryHandleTypeFlagBits handleType, 81e8556ba3Sopenharmony_ci zx_handle_t zirconHandle, 82e8556ba3Sopenharmony_ci VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); 83e8556ba3Sopenharmony_ci#endif 84e8556ba3Sopenharmony_ci 85e8556ba3Sopenharmony_ci 86e8556ba3Sopenharmony_ci// VK_FUCHSIA_external_semaphore is a preprocessor guard. Do not pass it to API calls. 87e8556ba3Sopenharmony_ci#define VK_FUCHSIA_external_semaphore 1 88e8556ba3Sopenharmony_ci#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 89e8556ba3Sopenharmony_ci#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore" 90e8556ba3Sopenharmony_citypedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA { 91e8556ba3Sopenharmony_ci VkStructureType sType; 92e8556ba3Sopenharmony_ci const void* pNext; 93e8556ba3Sopenharmony_ci VkSemaphore semaphore; 94e8556ba3Sopenharmony_ci VkSemaphoreImportFlags flags; 95e8556ba3Sopenharmony_ci VkExternalSemaphoreHandleTypeFlagBits handleType; 96e8556ba3Sopenharmony_ci zx_handle_t zirconHandle; 97e8556ba3Sopenharmony_ci} VkImportSemaphoreZirconHandleInfoFUCHSIA; 98e8556ba3Sopenharmony_ci 99e8556ba3Sopenharmony_citypedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA { 100e8556ba3Sopenharmony_ci VkStructureType sType; 101e8556ba3Sopenharmony_ci const void* pNext; 102e8556ba3Sopenharmony_ci VkSemaphore semaphore; 103e8556ba3Sopenharmony_ci VkExternalSemaphoreHandleTypeFlagBits handleType; 104e8556ba3Sopenharmony_ci} VkSemaphoreGetZirconHandleInfoFUCHSIA; 105e8556ba3Sopenharmony_ci 106e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); 107e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); 108e8556ba3Sopenharmony_ci 109e8556ba3Sopenharmony_ci#ifndef VK_NO_PROTOTYPES 110e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA( 111e8556ba3Sopenharmony_ci VkDevice device, 112e8556ba3Sopenharmony_ci const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); 113e8556ba3Sopenharmony_ci 114e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA( 115e8556ba3Sopenharmony_ci VkDevice device, 116e8556ba3Sopenharmony_ci const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, 117e8556ba3Sopenharmony_ci zx_handle_t* pZirconHandle); 118e8556ba3Sopenharmony_ci#endif 119e8556ba3Sopenharmony_ci 120e8556ba3Sopenharmony_ci 121e8556ba3Sopenharmony_ci// VK_FUCHSIA_buffer_collection is a preprocessor guard. Do not pass it to API calls. 122e8556ba3Sopenharmony_ci#define VK_FUCHSIA_buffer_collection 1 123e8556ba3Sopenharmony_ciVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA) 124e8556ba3Sopenharmony_ci#define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2 125e8556ba3Sopenharmony_ci#define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection" 126e8556ba3Sopenharmony_citypedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA; 127e8556ba3Sopenharmony_ci 128e8556ba3Sopenharmony_citypedef enum VkImageConstraintsInfoFlagBitsFUCHSIA { 129e8556ba3Sopenharmony_ci VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001, 130e8556ba3Sopenharmony_ci VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002, 131e8556ba3Sopenharmony_ci VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004, 132e8556ba3Sopenharmony_ci VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008, 133e8556ba3Sopenharmony_ci VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010, 134e8556ba3Sopenharmony_ci VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF 135e8556ba3Sopenharmony_ci} VkImageConstraintsInfoFlagBitsFUCHSIA; 136e8556ba3Sopenharmony_citypedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA; 137e8556ba3Sopenharmony_citypedef struct VkBufferCollectionCreateInfoFUCHSIA { 138e8556ba3Sopenharmony_ci VkStructureType sType; 139e8556ba3Sopenharmony_ci const void* pNext; 140e8556ba3Sopenharmony_ci zx_handle_t collectionToken; 141e8556ba3Sopenharmony_ci} VkBufferCollectionCreateInfoFUCHSIA; 142e8556ba3Sopenharmony_ci 143e8556ba3Sopenharmony_citypedef struct VkImportMemoryBufferCollectionFUCHSIA { 144e8556ba3Sopenharmony_ci VkStructureType sType; 145e8556ba3Sopenharmony_ci const void* pNext; 146e8556ba3Sopenharmony_ci VkBufferCollectionFUCHSIA collection; 147e8556ba3Sopenharmony_ci uint32_t index; 148e8556ba3Sopenharmony_ci} VkImportMemoryBufferCollectionFUCHSIA; 149e8556ba3Sopenharmony_ci 150e8556ba3Sopenharmony_citypedef struct VkBufferCollectionImageCreateInfoFUCHSIA { 151e8556ba3Sopenharmony_ci VkStructureType sType; 152e8556ba3Sopenharmony_ci const void* pNext; 153e8556ba3Sopenharmony_ci VkBufferCollectionFUCHSIA collection; 154e8556ba3Sopenharmony_ci uint32_t index; 155e8556ba3Sopenharmony_ci} VkBufferCollectionImageCreateInfoFUCHSIA; 156e8556ba3Sopenharmony_ci 157e8556ba3Sopenharmony_citypedef struct VkBufferCollectionConstraintsInfoFUCHSIA { 158e8556ba3Sopenharmony_ci VkStructureType sType; 159e8556ba3Sopenharmony_ci const void* pNext; 160e8556ba3Sopenharmony_ci uint32_t minBufferCount; 161e8556ba3Sopenharmony_ci uint32_t maxBufferCount; 162e8556ba3Sopenharmony_ci uint32_t minBufferCountForCamping; 163e8556ba3Sopenharmony_ci uint32_t minBufferCountForDedicatedSlack; 164e8556ba3Sopenharmony_ci uint32_t minBufferCountForSharedSlack; 165e8556ba3Sopenharmony_ci} VkBufferCollectionConstraintsInfoFUCHSIA; 166e8556ba3Sopenharmony_ci 167e8556ba3Sopenharmony_citypedef struct VkBufferConstraintsInfoFUCHSIA { 168e8556ba3Sopenharmony_ci VkStructureType sType; 169e8556ba3Sopenharmony_ci const void* pNext; 170e8556ba3Sopenharmony_ci VkBufferCreateInfo createInfo; 171e8556ba3Sopenharmony_ci VkFormatFeatureFlags requiredFormatFeatures; 172e8556ba3Sopenharmony_ci VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; 173e8556ba3Sopenharmony_ci} VkBufferConstraintsInfoFUCHSIA; 174e8556ba3Sopenharmony_ci 175e8556ba3Sopenharmony_citypedef struct VkBufferCollectionBufferCreateInfoFUCHSIA { 176e8556ba3Sopenharmony_ci VkStructureType sType; 177e8556ba3Sopenharmony_ci const void* pNext; 178e8556ba3Sopenharmony_ci VkBufferCollectionFUCHSIA collection; 179e8556ba3Sopenharmony_ci uint32_t index; 180e8556ba3Sopenharmony_ci} VkBufferCollectionBufferCreateInfoFUCHSIA; 181e8556ba3Sopenharmony_ci 182e8556ba3Sopenharmony_citypedef struct VkSysmemColorSpaceFUCHSIA { 183e8556ba3Sopenharmony_ci VkStructureType sType; 184e8556ba3Sopenharmony_ci const void* pNext; 185e8556ba3Sopenharmony_ci uint32_t colorSpace; 186e8556ba3Sopenharmony_ci} VkSysmemColorSpaceFUCHSIA; 187e8556ba3Sopenharmony_ci 188e8556ba3Sopenharmony_citypedef struct VkBufferCollectionPropertiesFUCHSIA { 189e8556ba3Sopenharmony_ci VkStructureType sType; 190e8556ba3Sopenharmony_ci void* pNext; 191e8556ba3Sopenharmony_ci uint32_t memoryTypeBits; 192e8556ba3Sopenharmony_ci uint32_t bufferCount; 193e8556ba3Sopenharmony_ci uint32_t createInfoIndex; 194e8556ba3Sopenharmony_ci uint64_t sysmemPixelFormat; 195e8556ba3Sopenharmony_ci VkFormatFeatureFlags formatFeatures; 196e8556ba3Sopenharmony_ci VkSysmemColorSpaceFUCHSIA sysmemColorSpaceIndex; 197e8556ba3Sopenharmony_ci VkComponentMapping samplerYcbcrConversionComponents; 198e8556ba3Sopenharmony_ci VkSamplerYcbcrModelConversion suggestedYcbcrModel; 199e8556ba3Sopenharmony_ci VkSamplerYcbcrRange suggestedYcbcrRange; 200e8556ba3Sopenharmony_ci VkChromaLocation suggestedXChromaOffset; 201e8556ba3Sopenharmony_ci VkChromaLocation suggestedYChromaOffset; 202e8556ba3Sopenharmony_ci} VkBufferCollectionPropertiesFUCHSIA; 203e8556ba3Sopenharmony_ci 204e8556ba3Sopenharmony_citypedef struct VkImageFormatConstraintsInfoFUCHSIA { 205e8556ba3Sopenharmony_ci VkStructureType sType; 206e8556ba3Sopenharmony_ci const void* pNext; 207e8556ba3Sopenharmony_ci VkImageCreateInfo imageCreateInfo; 208e8556ba3Sopenharmony_ci VkFormatFeatureFlags requiredFormatFeatures; 209e8556ba3Sopenharmony_ci VkImageFormatConstraintsFlagsFUCHSIA flags; 210e8556ba3Sopenharmony_ci uint64_t sysmemPixelFormat; 211e8556ba3Sopenharmony_ci uint32_t colorSpaceCount; 212e8556ba3Sopenharmony_ci const VkSysmemColorSpaceFUCHSIA* pColorSpaces; 213e8556ba3Sopenharmony_ci} VkImageFormatConstraintsInfoFUCHSIA; 214e8556ba3Sopenharmony_ci 215e8556ba3Sopenharmony_citypedef struct VkImageConstraintsInfoFUCHSIA { 216e8556ba3Sopenharmony_ci VkStructureType sType; 217e8556ba3Sopenharmony_ci const void* pNext; 218e8556ba3Sopenharmony_ci uint32_t formatConstraintsCount; 219e8556ba3Sopenharmony_ci const VkImageFormatConstraintsInfoFUCHSIA* pFormatConstraints; 220e8556ba3Sopenharmony_ci VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; 221e8556ba3Sopenharmony_ci VkImageConstraintsInfoFlagsFUCHSIA flags; 222e8556ba3Sopenharmony_ci} VkImageConstraintsInfoFUCHSIA; 223e8556ba3Sopenharmony_ci 224e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection); 225e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); 226e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); 227e8556ba3Sopenharmony_citypedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator); 228e8556ba3Sopenharmony_citypedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties); 229e8556ba3Sopenharmony_ci 230e8556ba3Sopenharmony_ci#ifndef VK_NO_PROTOTYPES 231e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA( 232e8556ba3Sopenharmony_ci VkDevice device, 233e8556ba3Sopenharmony_ci const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, 234e8556ba3Sopenharmony_ci const VkAllocationCallbacks* pAllocator, 235e8556ba3Sopenharmony_ci VkBufferCollectionFUCHSIA* pCollection); 236e8556ba3Sopenharmony_ci 237e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA( 238e8556ba3Sopenharmony_ci VkDevice device, 239e8556ba3Sopenharmony_ci VkBufferCollectionFUCHSIA collection, 240e8556ba3Sopenharmony_ci const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); 241e8556ba3Sopenharmony_ci 242e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA( 243e8556ba3Sopenharmony_ci VkDevice device, 244e8556ba3Sopenharmony_ci VkBufferCollectionFUCHSIA collection, 245e8556ba3Sopenharmony_ci const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); 246e8556ba3Sopenharmony_ci 247e8556ba3Sopenharmony_ciVKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA( 248e8556ba3Sopenharmony_ci VkDevice device, 249e8556ba3Sopenharmony_ci VkBufferCollectionFUCHSIA collection, 250e8556ba3Sopenharmony_ci const VkAllocationCallbacks* pAllocator); 251e8556ba3Sopenharmony_ci 252e8556ba3Sopenharmony_ciVKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA( 253e8556ba3Sopenharmony_ci VkDevice device, 254e8556ba3Sopenharmony_ci VkBufferCollectionFUCHSIA collection, 255e8556ba3Sopenharmony_ci VkBufferCollectionPropertiesFUCHSIA* pProperties); 256e8556ba3Sopenharmony_ci#endif 257e8556ba3Sopenharmony_ci 258e8556ba3Sopenharmony_ci#ifdef __cplusplus 259e8556ba3Sopenharmony_ci} 260e8556ba3Sopenharmony_ci#endif 261e8556ba3Sopenharmony_ci 262e8556ba3Sopenharmony_ci#endif 263