include/vk_value_serialization.hpp
std::string processEnumPrefix(std::string_view typeName) {
  // Flag Bits
  std::size_t flagBitsSize = strlen("FlagBits");
  if (typeName.size() > flagBitsSize) {
    if (strncmp(typeName.data() + typeName.size() - flagBitsSize, "FlagBits", flagBitsSize) == 0) {
      typeName = typeName.substr(0, typeName.size() - strlen("FlagBits"));
    }
  }
  // Flags
  std::size_t flagsSize = strlen("Flags");
  if (typeName.size() > flagsSize) {
    if (strncmp(typeName.data() + typeName.size() - flagsSize, "Flags", flagsSize) == 0) {
      typeName = typeName.substr(0, typeName.size() - strlen("Flags"));
    }
  }

  std::string retStr;
  for (auto it = typeName.begin(); it != typeName.end(); ++it) {
    if (it == typeName.begin()) {
      retStr += ::toupper(*it);
    } else if (::isupper(*it)) {
      retStr += '_';
      retStr += *it;
    } else {
      retStr += toupper(*it);
    }
  }
  retStr += '_';

  return retStr;
}
/**
 * @brief Converts a Vulkan Flag typename into the prefix that is used for it's enums
 * @param typeName Name of the type to generate the Vk enum prefix for
 * @return Generated prefix string
 *
 * Any capitalized letters except for the first has an underscore inserted before it, an underscore
 * is added to the end, and all characters are converted to upper case.
 *
 * It also removed the 'Flags' or 'FlagBits' suffixes.
 */
@brief Converts a Vulkan Flag typename into the prefix that is used for it's enums
@param typeName Name of the type to generate the Vk enum prefix for
@return Generated prefix string

Any capitalized letters except for the first has an underscore inserted before it, an underscore
is added to the end, and all characters are converted to upper case.

It also removed the 'Flags' or 'FlagBits' suffixes.
@brief Converts a Vulkan Flag typename into the prefix that is used for it ' s enums @param typeName Name of the type to generate the Vk enum prefix for @return Generated prefix string Any capitalized letters except for the first has an underscore inserted before it an underscore is added to the end and all characters are converted to upper case . It also removed the ' Flags ' or ' FlagBits ' suffixes .
std::string processEnumPrefix(std::string_view typeName) {
  std::size_t flagBitsSize = strlen("FlagBits");
  if (typeName.size() > flagBitsSize) {
    if (strncmp(typeName.data() + typeName.size() - flagBitsSize, "FlagBits", flagBitsSize) == 0) {
      typeName = typeName.substr(0, typeName.size() - strlen("FlagBits"));
    }
  }
  std::size_t flagsSize = strlen("Flags");
  if (typeName.size() > flagsSize) {
    if (strncmp(typeName.data() + typeName.size() - flagsSize, "Flags", flagsSize) == 0) {
      typeName = typeName.substr(0, typeName.size() - strlen("Flags"));
    }
  }
  std::string retStr;
  for (auto it = typeName.begin(); it != typeName.end(); ++it) {
    if (it == typeName.begin()) {
      retStr += ::toupper(*it);
    } else if (::isupper(*it)) {
      retStr += '_';
      retStr += *it;
    } else {
      retStr += toupper(*it);
    }
  }
  retStr += '_';
  return retStr;
}
std :: string processEnumPrefix ( std :: string_view typeName ) { std :: size_t flagBitsSize = strlen ( " " ) ; if ( typeName . size ( ) > flagBitsSize ) { if ( strncmp ( typeName . data ( ) + typeName . size ( ) - flagBitsSize , " " , flagBitsSize ) == 0 ) { typeName = typeName . substr ( 0 , typeName . size ( ) - strlen ( " " ) ) ; } } std :: size_t flagsSize = strlen ( " " ) ; if ( typeName . size ( ) > flagsSize ) { if ( strncmp ( typeName . data ( ) + typeName . size ( ) - flagsSize , " " , flagsSize ) == 0 ) { typeName = typeName . substr ( 0 , typeName . size ( ) - strlen ( " " ) ) ; } } std :: string retStr ; for ( auto it = typeName . begin ( ) ; it != typeName . end ( ) ; ++ it ) { if ( it == typeName . begin ( ) ) { retStr += :: toupper ( * it ) ; } else if ( :: isupper ( * it ) ) { retStr += ' ' ; retStr += * it ; } else { retStr += toupper ( * it ) ; } } retStr += ' ' ; return retStr ; }
@brief Converts a Vulkan Flag typename into the prefix that is used for it's enums
 @param typeName Name of the type to generate the Vk enum prefix for
 @return Generated prefix string
@brief Converts a Vulkan Flag typename into the prefix that is used for it ' s enums @param typeName Name of the type to generate the Vk enum prefix for @return Generated prefix string
// Flag Bits // Flags