More type cleanups

SPA_ID_* -> SPA_TYPE_*. We use 'type' for all registered types.
ID refers to either a registered type or an enum.
Improve introspection of object ids. Make 0 an invalid enum and
use it to look up the object id type.
Move some type-info files together.
Swap type and id of the object, we first specify the type and then
the id because the meaning of the id depends on the object type.
This commit is contained in:
Wim Taymans 2018-08-27 15:03:11 +02:00
parent 281b65934e
commit 90c1a95eef
117 changed files with 1198 additions and 1272 deletions

View file

@ -26,6 +26,7 @@ extern "C" {
#include <spa/pod/command.h>
/* object id of SPA_TYPE_COMMAND_Node */
enum spa_node_command {
SPA_NODE_COMMAND_Suspend,
SPA_NODE_COMMAND_Pause,
@ -37,11 +38,11 @@ enum spa_node_command {
SPA_NODE_COMMAND_Marker,
};
#define SPA_NODE_COMMAND_ID(cmd) SPA_COMMAND_ID(cmd, SPA_ID_COMMAND_Node)
#define SPA_NODE_COMMAND_ID(cmd) SPA_COMMAND_ID(cmd, SPA_TYPE_COMMAND_Node)
#define SPA_NODE_COMMAND_INIT(id) (struct spa_command) \
{ { sizeof(struct spa_command_body), SPA_ID_Object }, \
{ { id, SPA_ID_COMMAND_Node } } } \
{ { sizeof(struct spa_command_body), SPA_TYPE_Object }, \
{ { SPA_TYPE_COMMAND_Node, id } } } \
#ifdef __cplusplus
} /* extern "C" */

View file

@ -28,13 +28,14 @@ extern "C" {
#include <spa/pod/event.h>
#include <spa/node/node.h>
/* object id of SPA_TYPE_EVENT_Node */
enum spa_node_event {
SPA_NODE_EVENT_Error,
SPA_NODE_EVENT_Buffering,
SPA_NODE_EVENT_RequestRefresh,
};
#define SPA_NODE_EVENT_ID(ev) SPA_EVENT_ID(ev, SPA_ID_EVENT_Node)
#define SPA_NODE_EVENT_ID(ev) SPA_EVENT_ID(ev, SPA_TYPE_EVENT_Node)
#ifdef __cplusplus
} /* extern "C" */

View file

@ -35,8 +35,6 @@ extern "C" {
/** Different IO area types */
enum spa_io_type {
SPA_IO_BASE,
SPA_IO_Buffers,
SPA_IO_ControlRange,
SPA_IO_Clock,

View file

@ -30,22 +30,40 @@ extern "C" {
#include <spa/node/event.h>
#include <spa/node/io.h>
/** Base for IO structures to interface with node ports */
#define SPA_TYPE__IO SPA_TYPE_POINTER_BASE "IO"
#define SPA_TYPE_IO_BASE SPA_TYPE__IO ":"
#define SPA_TYPE__NodeEvent SPA_TYPE_EVENT_BASE "Node"
#define SPA_TYPE_NODE_EVENT_BASE SPA_TYPE__NodeEvent ":"
/** Base for control structures */
#define SPA_TYPE_IO__Control SPA_TYPE_IO_BASE "Control"
#define SPA_TYPE_IO_CONTROL_BASE SPA_TYPE_IO__Control ":"
static const struct spa_type_info spa_type_node_event_id[] = {
{ SPA_NODE_EVENT_Error, SPA_TYPE_NODE_EVENT_BASE "Error", SPA_TYPE_Int, },
{ SPA_NODE_EVENT_Buffering, SPA_TYPE_NODE_EVENT_BASE "Buffering", SPA_TYPE_Int, },
{ SPA_NODE_EVENT_RequestRefresh, SPA_TYPE_NODE_EVENT_BASE "RequestRefresh", SPA_TYPE_Int, },
{ 0, NULL, },
};
/** An io area to exchange buffers with a port */
#define SPA_TYPE_IO__Buffers SPA_TYPE_IO_BASE "Buffers"
static const struct spa_type_info spa_type_node_event[] = {
{ 0, SPA_TYPE_NODE_EVENT_BASE, SPA_TYPE_Enum, spa_type_node_event_id },
{ 0, NULL, },
};
/** IO area with clock information */
#define SPA_TYPE_IO__Clock SPA_TYPE_IO_BASE "Clock"
#define SPA_TYPE__NodeCommand SPA_TYPE_COMMAND_BASE "Node"
#define SPA_TYPE_NODE_COMMAND_BASE SPA_TYPE__NodeCommand ":"
/** IO area with latency information */
#define SPA_TYPE_IO__Latency SPA_TYPE_IO_BASE "Latency"
static const struct spa_type_info spa_type_node_command_id[] = {
{ SPA_NODE_COMMAND_Suspend, SPA_TYPE_NODE_COMMAND_BASE "Suspend", SPA_TYPE_Int, },
{ SPA_NODE_COMMAND_Pause, SPA_TYPE_NODE_COMMAND_BASE "Pause", SPA_TYPE_Int, },
{ SPA_NODE_COMMAND_Start, SPA_TYPE_NODE_COMMAND_BASE "Start", SPA_TYPE_Int, },
{ SPA_NODE_COMMAND_Enable, SPA_TYPE_NODE_COMMAND_BASE "Enable", SPA_TYPE_Int, },
{ SPA_NODE_COMMAND_Disable, SPA_TYPE_NODE_COMMAND_BASE "Disable", SPA_TYPE_Int, },
{ SPA_NODE_COMMAND_Flush, SPA_TYPE_NODE_COMMAND_BASE "Flush", SPA_TYPE_Int, },
{ SPA_NODE_COMMAND_Drain, SPA_TYPE_NODE_COMMAND_BASE "Drain", SPA_TYPE_Int, },
{ SPA_NODE_COMMAND_Marker, SPA_TYPE_NODE_COMMAND_BASE "Marker", SPA_TYPE_Int, },
{ 0, NULL, },
};
static const struct spa_type_info spa_type_node_command[] = {
{ 0, SPA_TYPE_NODE_COMMAND_BASE, SPA_TYPE_Enum, spa_type_node_command_id },
{ 0, NULL, },
};
#ifdef __cplusplus
} /* extern "C" */