types: work on types

Move static pod types to type system
work on type info for types
Move the event and command ids to an enum to make it easier to extend
later.
This commit is contained in:
Wim Taymans 2018-08-24 10:53:09 +02:00
parent fca3e1d85d
commit 805e3bb6c1
82 changed files with 812 additions and 924 deletions

View file

@ -114,7 +114,7 @@ struct spa_fraction {
#define SPA_TIME_INVALID ((int64_t)INT64_MIN)
#define SPA_IDX_INVALID ((unsigned int)-1)
#define SPA_ID_INVALID ((uint32_t)0xffffffff)
//#define SPA_ID_INVALID ((uint32_t)0xffffffff)
#define SPA_NSEC_PER_SEC (1000000000ll)
#define SPA_NSEC_PER_MSEC (1000000ll)

View file

@ -26,22 +26,6 @@ extern "C" {
#include <spa/utils/defs.h>
#define SPA_TYPE_BASE "Spa:"
#define SPA_TYPE__Enum SPA_TYPE_BASE "Enum"
#define SPA_TYPE_ENUM_BASE SPA_TYPE__Enum ":"
#define SPA_TYPE__Flags SPA_TYPE_BASE "Flags"
#define SPA_TYPE_FLAGS_BASE SPA_TYPE__Flags ":"
#define SPA_TYPE__Pointer SPA_TYPE_BASE "Pointer"
#define SPA_TYPE_POINTER_BASE SPA_TYPE__Pointer ":"
#define SPA_TYPE__Interface SPA_TYPE_BASE "Interface"
#define SPA_TYPE_INTERFACE_BASE SPA_TYPE__Interface ":"
#define SPA_TYPE__Object SPA_TYPE_BASE "Object"
#define SPA_TYPE_OBJECT_BASE SPA_TYPE__Object ":"
static inline bool spa_type_is_a(const char *type, const char *parent)
{
@ -55,6 +39,82 @@ struct spa_type_info {
const struct spa_type_info *values;
};
#define SPA_TYPE_BASE "Spa:"
#define SPA_TYPE__Flags SPA_TYPE_BASE "Flags"
#define SPA_TYPE_FLAGS_BASE SPA_TYPE__Flags ":"
#define SPA_TYPE__Enum SPA_TYPE_BASE "Enum"
#define SPA_TYPE_ENUM_BASE SPA_TYPE__Enum ":"
#define SPA_TYPE__Pod SPA_TYPE_BASE "Pod"
#define SPA_TYPE_POD_BASE SPA_TYPE__Pod ":"
#define SPA_TYPE__Struct SPA_TYPE_POD_BASE "Struct"
#define SPA_TYPE_STRUCT_BASE SPA_TYPE__Struct ":"
#define SPA_TYPE__Object SPA_TYPE_POD_BASE "Object"
#define SPA_TYPE_OBJECT_BASE SPA_TYPE__Object ":"
#define SPA_TYPE__Pointer SPA_TYPE_BASE "Pointer"
#define SPA_TYPE_POINTER_BASE SPA_TYPE__Pointer ":"
#define SPA_TYPE__Interface SPA_TYPE_POINTER_BASE "Interface"
#define SPA_TYPE_INTERFACE_BASE SPA_TYPE__Interface ":"
#define SPA_TYPE__Event SPA_TYPE_OBJECT_BASE "Event"
#define SPA_TYPE_EVENT_BASE SPA_TYPE__Event ":"
#include <spa/monitor/type-info.h>
#include <spa/node/type-info.h>
static const struct spa_type_info spa_types[] = {
{ SPA_ID_INVALID, "*invalid*", SPA_ID_INVALID, },
/* Basic types */
{ SPA_ID_BASE, SPA_TYPE_BASE, SPA_ID_BASE, },
{ SPA_ID_None, SPA_TYPE_BASE "None", SPA_ID_None, },
{ SPA_ID_Bool, SPA_TYPE_BASE "Bool", SPA_ID_Bool, },
{ SPA_ID_Enum, SPA_TYPE__Enum, SPA_ID_Int, },
{ SPA_ID_Int, SPA_TYPE_BASE "Int", SPA_ID_Int, },
{ SPA_ID_Long, SPA_TYPE_BASE "Long", SPA_ID_Long, },
{ SPA_ID_Float, SPA_TYPE_BASE "Float", SPA_ID_Float, },
{ SPA_ID_Double, SPA_TYPE_BASE "Double", SPA_ID_Double, },
{ SPA_ID_String, SPA_TYPE_BASE "String", SPA_ID_String, },
{ SPA_ID_Bytes, SPA_TYPE_BASE "Bytes", SPA_ID_Bytes, },
{ SPA_ID_Rectangle, SPA_TYPE_BASE "Rectangle", SPA_ID_Rectangle, },
{ SPA_ID_Fraction, SPA_TYPE_BASE "Fraction", SPA_ID_Fraction, },
{ SPA_ID_Bitmap, SPA_TYPE_BASE "Bitmap", SPA_ID_Bitmap, },
{ SPA_ID_Array, SPA_TYPE_BASE "Array", SPA_ID_Array, },
{ SPA_ID_Pod, SPA_TYPE__Pod, SPA_ID_Pod, },
{ SPA_ID_Struct, SPA_TYPE__Struct, SPA_ID_Pod, },
{ SPA_ID_Object, SPA_TYPE__Object, SPA_ID_Pod, },
{ SPA_ID_Sequence, SPA_TYPE_POD_BASE "Sequence", SPA_ID_Pod, },
{ SPA_ID_Pointer, SPA_TYPE__Pointer, SPA_ID_Pointer, },
{ SPA_ID_Fd, SPA_TYPE_BASE "Fd", SPA_ID_Fd, },
{ SPA_ID_Prop, SPA_TYPE_POD_BASE "Prop", SPA_ID_Pod, },
{ SPA_ID_INTERFACE_BASE, SPA_TYPE__Interface, SPA_ID_Pointer, },
{ SPA_ID_INTERFACE_Handle, SPA_TYPE_INTERFACE_BASE "Handle", SPA_ID_INTERFACE_BASE, },
{ SPA_ID_INTERFACE_HandleFactory, SPA_TYPE_INTERFACE_BASE "HandleFactory", SPA_ID_INTERFACE_BASE, },
{ SPA_ID_INTERFACE_Log, SPA_TYPE_INTERFACE_BASE "Log", SPA_ID_INTERFACE_BASE, },
{ SPA_ID_INTERFACE_Loop, SPA_TYPE_INTERFACE_BASE "Loop", SPA_ID_INTERFACE_BASE, },
{ SPA_ID_INTERFACE_LoopControl, SPA_TYPE_INTERFACE_BASE "LoopControl", SPA_ID_INTERFACE_BASE, },
{ SPA_ID_INTERFACE_LoopUtils, SPA_TYPE_INTERFACE_BASE "LoopUtils", SPA_ID_INTERFACE_BASE, },
{ SPA_ID_INTERFACE_DataLoop, SPA_TYPE_INTERFACE_BASE "DataLoop", SPA_ID_INTERFACE_BASE, },
{ SPA_ID_INTERFACE_MainLoop, SPA_TYPE_INTERFACE_BASE "MainLoop", SPA_ID_INTERFACE_BASE, },
{ SPA_ID_INTERFACE_DBus, SPA_TYPE_INTERFACE_BASE "DBus", SPA_ID_INTERFACE_BASE, },
{ SPA_ID_INTERFACE_Monitor, SPA_TYPE_INTERFACE_BASE "Monitor", SPA_ID_INTERFACE_BASE, },
{ SPA_ID_INTERFACE_Node, SPA_TYPE_INTERFACE_BASE "Node", SPA_ID_INTERFACE_BASE, },
{ SPA_ID_EVENT_BASE, SPA_TYPE__Event, SPA_ID_Object, },
{ SPA_ID_EVENT_Monitor, SPA_TYPE_EVENT_BASE "Monitor", SPA_ID_EVENT_BASE, },
{ SPA_ID_EVENT_Node, SPA_TYPE_EVENT_BASE "Node", SPA_ID_EVENT_BASE, },
{ 0, NULL, }
};
#ifdef __cplusplus
} /* extern "C" */
#endif

View file

@ -27,8 +27,33 @@ extern "C" {
#include <spa/utils/defs.h>
enum {
SPA_ID_UNASSIGNED = 0,
SPA_ID_INVALID = 0xffffffff,
/* Basic types */
SPA_ID_BASE = 0x00000,
SPA_ID_None,
SPA_ID_Bool,
SPA_ID_Enum,
SPA_ID_Int,
SPA_ID_Long,
SPA_ID_Float,
SPA_ID_Double,
SPA_ID_String,
SPA_ID_Bytes,
SPA_ID_Rectangle,
SPA_ID_Fraction,
SPA_ID_Bitmap,
SPA_ID_Array,
SPA_ID_Struct,
SPA_ID_Object,
SPA_ID_Sequence,
SPA_ID_Pointer,
SPA_ID_Fd,
SPA_ID_Prop,
SPA_ID_Pod,
/* Interfaces */
SPA_ID_INTERFACE_BASE = 0x10000,
SPA_ID_INTERFACE_Handle,
SPA_ID_INTERFACE_HandleFactory,
SPA_ID_INTERFACE_Log,
@ -42,27 +67,16 @@ enum {
SPA_ID_INTERFACE_Node,
/* Events */
SPA_ID_EVENT_BASE = 0x10000,
SPA_ID_EVENT_MONITOR_Added,
SPA_ID_EVENT_MONITOR_Removed,
SPA_ID_EVENT_MONITOR_Changed,
SPA_ID_EVENT_NODE_Error,
SPA_ID_EVENT_NODE_Buffering,
SPA_ID_EVENT_NODE_RequestRefresh,
SPA_ID_EVENT_BASE = 0x20000,
SPA_ID_EVENT_Monitor,
SPA_ID_EVENT_Node,
/* Commands */
SPA_ID_COMMAND_BASE = 0x20000,
SPA_ID_COMMAND_NODE_Suspend,
SPA_ID_COMMAND_NODE_Pause,
SPA_ID_COMMAND_NODE_Start,
SPA_ID_COMMAND_NODE_Enable,
SPA_ID_COMMAND_NODE_Disable,
SPA_ID_COMMAND_NODE_Flush,
SPA_ID_COMMAND_NODE_Drain,
SPA_ID_COMMAND_NODE_Marker,
SPA_ID_COMMAND_BASE = 0x30000,
SPA_ID_COMMAND_Node,
/* Objects */
SPA_ID_OBJECT_BASE = 0x30000,
SPA_ID_OBJECT_BASE = 0x40000,
SPA_ID_OBJECT_MonitorItem,
SPA_ID_OBJECT_ParamList,
@ -92,6 +106,12 @@ enum {
SPA_ID_PARAM_Meta, /**< allowed metadata for buffers */
SPA_ID_PARAM_IO, /**< configurable IO areas */
/* Pointers */
SPA_ID_POINTER_BASE = 0x60000,
SPA_ID_POINTER_Buffer,
SPA_ID_POINTER_Meta,
SPA_ID_POINTER_Dict,
/* vendor extensions */
SPA_ID_VENDOR_PipeWire = 0x01000000,