Monado OpenXR Runtime
u_extension_list.cpp File Reference

A collection of strings for extensions. More...

#include "u_extension_list.h"
#include "u_extension_list.hpp"
#include <algorithm>
#include <cstring>
#include <string>
#include <string_view>
Include dependency graph for u_extension_list.cpp:

Data Structures

struct  u_extension_list
 
struct  u_extension_list_builder
 
struct  ExtensionSortKey
 Helper class for sorting extension names. More...
 

Enumerations

enum class  ExtensionType { KHR = 0 , EXT = 1 , VENDOR = 2 , EXPERIMENTAL = 3 }
 

Functions

static bool is_experimental_vendor (std::string_view vendor)
 Check if a vendor string represents an experimental extension. More...
 
static ExtensionSortKey get_extension_sort_key (std::string_view name)
 Get the extension type and API prefix for sorting purposes. More...
 
struct u_extension_listu_extension_list_create ()
 
struct u_extension_listu_extension_list_create_from_array (const char *const *arr, uint32_t size)
 
uint32_t u_extension_list_get_size (const struct u_extension_list *uel)
 
const char *const * u_extension_list_get_data (const struct u_extension_list *uel)
 
bool u_extension_list_contains (const struct u_extension_list *uel, const char *str)
 
bool u_extension_list_contains_len (const struct u_extension_list *uel, const char *str, size_t len)
 
void u_extension_list_destroy (struct u_extension_list **list_ptr)
 
struct u_extension_list_builderu_extension_list_builder_create ()
 
struct u_extension_list_builderu_extension_list_builder_create_with_capacity (uint32_t capacity)
 
struct u_extension_list_builderu_extension_list_builder_create_from_array (const char *const *arr, uint32_t size)
 
int u_extension_list_builder_append (struct u_extension_list_builder *uelb, const char *str)
 
int u_extension_list_builder_append_len (struct u_extension_list_builder *uelb, const char *str, size_t len)
 
int u_extension_list_builder_append_array (struct u_extension_list_builder *uelb, const char *const *arr, uint32_t size)
 
int u_extension_list_builder_append_unique (struct u_extension_list_builder *uelb, const char *str)
 
int u_extension_list_builder_append_unique_len (struct u_extension_list_builder *uelb, const char *str, size_t len)
 
struct u_extension_listu_extension_list_builder_build (struct u_extension_list_builder **builder_ptr)
 
struct u_extension_listu_extension_list_builder_build_sorted_for_extensions (struct u_extension_list_builder **builder_ptr)
 
void u_extension_list_builder_destroy (struct u_extension_list_builder **builder_ptr)
 

Detailed Description

A collection of strings for extensions.

Author
Rylie Pavlik rylie.nosp@m..pav.nosp@m.lik@c.nosp@m.olla.nosp@m.bora..nosp@m.com

Function Documentation

◆ get_extension_sort_key()

static ExtensionSortKey get_extension_sort_key ( std::string_view  name)
static

Get the extension type and API prefix for sorting purposes.

Returns an ExtensionSortKey for comparison.

Referenced by xrt::auxiliary::util::ExtensionListBuilder::sortForExtensions().

◆ is_experimental_vendor()

static bool is_experimental_vendor ( std::string_view  vendor)
static

Check if a vendor string represents an experimental extension.

Experimental extensions have vendor codes ending with 'X' optionally followed by digits.

Examples: NVX, AMDX, NVX1, NVX2, INTELX

Special case: QNX is a legitimate vendor (QNX operating system), not experimental.