Loading...
Searching...
No Matches
types.h
Go to the documentation of this file.
/* Simple Plugin API */
/* SPDX-FileCopyrightText: Copyright © 2018 Wim Taymans */
/* SPDX-License-Identifier: MIT */
#ifndef SPA_DEBUG_TYPES_H
#define SPA_DEBUG_TYPES_H
#include <spa/utils/type-info.h>
#include <string.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef SPA_API_DEBUG_TYPES
#ifdef SPA_API_IMPL
#define SPA_API_DEBUG_TYPES SPA_API_IMPL
#else
#define SPA_API_DEBUG_TYPES static inline
#endif
#endif
SPA_API_DEBUG_TYPES const struct spa_type_info *spa_debug_type_find(const struct spa_type_info *info, uint32_t type)
{
const struct spa_type_info *res;
if (info == NULL)
info = SPA_TYPE_ROOT;
while (info && info->name) {
if (info->type == SPA_ID_INVALID) {
if (info->values && (res = spa_debug_type_find(info->values, type)))
return res;
}
else if (info->type == type)
return info;
info++;
}
return NULL;
}
SPA_API_DEBUG_TYPES const char *spa_debug_type_short_name(const char *name)
{
return spa_type_short_name(name);
}
SPA_API_DEBUG_TYPES const char *spa_debug_type_find_name(const struct spa_type_info *info, uint32_t type)
{
if ((info = spa_debug_type_find(info, type)) == NULL)
return NULL;
return info->name;
}
SPA_API_DEBUG_TYPES const char *spa_debug_type_find_short_name(const struct spa_type_info *info, uint32_t type)
{
const char *str;
if ((str = spa_debug_type_find_name(info, type)) == NULL)
return NULL;
return spa_debug_type_short_name(str);
}
SPA_API_DEBUG_TYPES uint32_t spa_debug_type_find_type(const struct spa_type_info *info, const char *name)
{
if (info == NULL)
info = SPA_TYPE_ROOT;
while (info && info->name) {
uint32_t res;
if (strcmp(info->name, name) == 0)
return info->type;
if (info->values && (res = spa_debug_type_find_type(info->values, name)) != SPA_ID_INVALID)
return res;
info++;
}
return SPA_ID_INVALID;
}
SPA_API_DEBUG_TYPES const struct spa_type_info *spa_debug_type_find_short(const struct spa_type_info *info, const char *name)
{
while (info && info->name) {
if (strcmp(spa_debug_type_short_name(info->name), name) == 0)
return info;
if (strcmp(info->name, name) == 0)
return info;
if (info->type != 0 && info->type == (uint32_t)atoi(name))
return info;
info++;
}
return NULL;
}
SPA_API_DEBUG_TYPES uint32_t spa_debug_type_find_type_short(const struct spa_type_info *info, const char *name)
{
if ((info = spa_debug_type_find_short(info, name)) == NULL)
return SPA_ID_INVALID;
return info->type;
}
* \}
*/
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* SPA_DEBUG_NODE_H */
res
uint32_t int int res
Definition core.h:433
spa_debug_type_find_short
SPA_API_DEBUG_TYPES const struct spa_type_info * spa_debug_type_find_short(const struct spa_type_info *info, const char *name)
Definition types.h:92
spa_debug_type_find_short_name
SPA_API_DEBUG_TYPES const char * spa_debug_type_find_short_name(const struct spa_type_info *info, uint32_t type)
Definition types.h:68
SPA_API_DEBUG_TYPES
#define SPA_API_DEBUG_TYPES
Definition types.h:32
spa_debug_type_find_type_short
SPA_API_DEBUG_TYPES uint32_t spa_debug_type_find_type_short(const struct spa_type_info *info, const char *name)
Definition types.h:106
spa_debug_type_find
SPA_API_DEBUG_TYPES const struct spa_type_info * spa_debug_type_find(const struct spa_type_info *info, uint32_t type)
Definition types.h:37
spa_debug_type_find_type
SPA_API_DEBUG_TYPES uint32_t spa_debug_type_find_type(const struct spa_type_info *info, const char *name)
Definition types.h:76
spa_debug_type_short_name
SPA_API_DEBUG_TYPES const char * spa_debug_type_short_name(const char *name)
Definition types.h:56
spa_debug_type_find_name
SPA_API_DEBUG_TYPES const char * spa_debug_type_find_name(const struct spa_type_info *info, uint32_t type)
Definition types.h:61
spa_type_short_name
SPA_API_TYPE const char * spa_type_short_name(const char *name)
Definition type.h:168
SPA_TYPE_ROOT
#define SPA_TYPE_ROOT
Definition type-info.h:34
SPA_ID_INVALID
#define SPA_ID_INVALID
Definition defs.h:250
string.h
spa/utils/string.h
spa_type_info
Definition type.h:156
spa_type_info::type
uint32_t type
Definition type.h:157
type-info.h
spa/utils/type-info.h