chromium/third_party/vulkan-utility-libraries/src/include/vulkan/utility/vk_safe_struct_utils.hpp

/***************************************************************************
 *
 * Copyright (c) 2015-2024 The Khronos Group Inc.
 * Copyright (c) 2015-2024 Valve Corporation
 * Copyright (c) 2015-2024 LunarG, Inc.
 * Copyright (c) 2015-2024 Google Inc.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 ****************************************************************************/

#pragma once
#include <vulkan/vulkan.h>
#include <cassert>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <vector>

namespace vku {

// State that elements in a pNext chain may need to be aware of
struct PNextCopyState {};

void* SafePnextCopy(const void* pNext, PNextCopyState* copy_state = {};
void FreePnextChain(const void* pNext);
char* SafeStringCopy(const char* in_string);

template <typename Base, typename T>
bool AddToPnext(Base& base, const T& data) {}

template <typename Base>
bool RemoveFromPnext(Base& base, VkStructureType t) {}

template <typename CreateInfo>
uint32_t FindExtension(CreateInfo& ci, const char* extension_name) {}

template <typename CreateInfo>
bool AddExtension(CreateInfo& ci, const char* extension_name) {}

template <typename CreateInfo>
bool RemoveExtension(CreateInfo& ci, const char* extension_name) {}

}  // namespace vku