pod: use {} as object delimited, like json

Use <> for sequence
This commit is contained in:
Wim Taymans 2018-08-30 09:53:29 +02:00
parent ff6a244d8f
commit 2631db14a8
7 changed files with 24 additions and 24 deletions

View file

@ -526,7 +526,7 @@ spa_pod_builder_addv(struct spa_pod_builder *builder,
char t = *format;
next:
switch (t) {
case '<':
case '{':
{
uint32_t type = va_arg(args, uint32_t);
uint32_t id = va_arg(args, uint32_t);
@ -539,7 +539,7 @@ spa_pod_builder_addv(struct spa_pod_builder *builder,
case '(':
spa_pod_builder_push_array(builder);
break;
case '{':
case '<':
{
uint32_t unit = va_arg(args, uint32_t);
spa_pod_builder_push_sequence(builder, unit);
@ -570,7 +570,7 @@ spa_pod_builder_addv(struct spa_pod_builder *builder,
spa_pod_builder_push_prop(builder, key, flags);
if (t == '<' || t == '[')
if (t == '{' || t == '[' || t == '<')
goto next;
n_values = -1;
@ -621,7 +621,7 @@ static inline void *spa_pod_builder_add(struct spa_pod_builder *builder, const c
}
#define SPA_POD_OBJECT(type,id,...) \
"<", type, id, ##__VA_ARGS__, ">"
"{", type, id, ##__VA_ARGS__, "}"
#define SPA_POD_STRUCT(...) \
"[", ##__VA_ARGS__, "]"
@ -630,7 +630,7 @@ static inline void *spa_pod_builder_add(struct spa_pod_builder *builder, const c
":", key, spec, value, ##__VA_ARGS__
#define SPA_POD_SEQUENCE(unit,...) \
"{", unit, ##__VA_ARGS__, "}"
"<", unit, ##__VA_ARGS__, ">"
#define SPA_POD_CONTROL(offset,type,...) \
".", offset, type, ##__VA_ARGS__

View file

@ -208,7 +208,7 @@ static inline int spa_pod_parser_getv(struct spa_pod_parser *parser,
while (format) {
switch (*format) {
case '<':
case '{':
if (pod == NULL || SPA_POD_TYPE(pod) != SPA_TYPE_Object)
return -EINVAL;
if (++parser->depth >= SPA_POD_MAX_DEPTH)
@ -226,7 +226,7 @@ static inline int spa_pod_parser_getv(struct spa_pod_parser *parser,
it = &parser->iter[parser->depth];
spa_pod_iter_init(it, pod, SPA_POD_SIZE(pod), sizeof(struct spa_pod_struct));
goto read_pod;
case ']': case '>':
case ']': case '}':
if (current != NULL)
return -EINVAL;
if (--parser->depth < 0)
@ -312,7 +312,7 @@ static inline int spa_pod_parser_get(struct spa_pod_parser *parser,
({ \
struct spa_pod_parser __p; \
spa_pod_parser_pod(&__p, pod); \
spa_pod_parser_get(&__p, "<", ##__VA_ARGS__, NULL); \
spa_pod_parser_get(&__p, "{", ##__VA_ARGS__, NULL); \
})
#ifdef __cplusplus

View file

@ -161,7 +161,7 @@ fill_item(struct impl *this, snd_ctl_card_info_t *card_info,
name = "Unknown";
spa_pod_builder_add(builder,
"<", SPA_TYPE_OBJECT_MonitorItem, 0,
"{", SPA_TYPE_OBJECT_MonitorItem, 0,
":", SPA_MONITOR_ITEM_id, "s", id,
":", SPA_MONITOR_ITEM_flags, "I", SPA_MONITOR_ITEM_FLAG_NONE,
":", SPA_MONITOR_ITEM_state, "I", SPA_MONITOR_ITEM_STATE_Available,
@ -233,7 +233,7 @@ fill_item(struct impl *this, snd_ctl_card_info_t *card_info,
if ((str = udev_device_get_property_value(dev, "SOUND_FORM_FACTOR")) && *str) {
spa_pod_builder_add(builder, "s", "device.form_factor", "s", str, 0);
}
*item = spa_pod_builder_add(builder, "]>", NULL);
*item = spa_pod_builder_add(builder, "]}", NULL);
return 0;
}

View file

@ -70,7 +70,7 @@ static void fill_item(struct spa_bt_monitor *this, struct spa_bt_transport *tran
char trans[16];
spa_pod_builder_add(builder,
"<", SPA_TYPE_OBJECT_MonitorItem, 0,
"{", SPA_TYPE_OBJECT_MonitorItem, 0,
":", SPA_MONITOR_ITEM_id, "s", transport->path,
":", SPA_MONITOR_ITEM_flags, "I", SPA_MONITOR_ITEM_FLAG_NONE,
":", SPA_MONITOR_ITEM_state, "I", SPA_MONITOR_ITEM_STATE_Available,
@ -90,7 +90,7 @@ static void fill_item(struct spa_bt_monitor *this, struct spa_bt_transport *tran
"s", "bluez5.transport", "s", trans,
NULL);
*result = spa_pod_builder_add(builder, "]>", NULL);
*result = spa_pod_builder_add(builder, "]}", NULL);
}
static uint8_t a2dp_default_bitpool(struct spa_bt_monitor *monitor, uint8_t freq, uint8_t mode) {

View file

@ -98,7 +98,7 @@ static void fill_item(struct impl *this, struct item *item, struct udev_device *
name = "Unknown";
spa_pod_builder_add(builder,
"<", SPA_TYPE_OBJECT_MonitorItem, 0,
"{", SPA_TYPE_OBJECT_MonitorItem, 0,
":", SPA_MONITOR_ITEM_id, "s", udev_device_get_syspath(item->udevice),
":", SPA_MONITOR_ITEM_flags, "I", SPA_MONITOR_ITEM_FLAG_NONE,
":", SPA_MONITOR_ITEM_state, "I", SPA_MONITOR_ITEM_STATE_Available,
@ -156,7 +156,7 @@ static void fill_item(struct impl *this, struct item *item, struct udev_device *
spa_pod_builder_add(builder, "s", "device.capabilities", "s", str, 0);
}
*result = spa_pod_builder_add(builder, "]>", NULL);
*result = spa_pod_builder_add(builder, "]}", NULL);
}
static void impl_on_fd_events(struct spa_source *source)

View file

@ -328,7 +328,7 @@ int main(int argc, char *argv[])
* )
*/
fmt = spa_pod_builder_add(&b,
"<", SPA_TYPE_OBJECT_Format, 0,
"{", SPA_TYPE_OBJECT_Format, 0,
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_video,
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
":", SPA_FORMAT_VIDEO_format, "Ieu", SPA_VIDEO_FORMAT_I420,
@ -340,7 +340,7 @@ int main(int argc, char *argv[])
":", SPA_FORMAT_VIDEO_framerate, "Fru", &SPA_FRACTION(25,1),
2, &SPA_FRACTION(0,1),
&SPA_FRACTION(INT32_MAX,1),
">", NULL);
"}", NULL);
spa_debug_pod(0, spa_debug_types, &fmt->pod);
spa_debug_format(0, NULL, &fmt->pod);

View file

@ -42,7 +42,7 @@ int main(int argc, char *argv[])
spa_pod_builder_init(&b, buffer, sizeof(buffer));
fmt = spa_pod_builder_add(&b,
"<",0,format,
"{",0,format,
" [ i", video, "i",raw,"]"
" :", format, "ieu", I420,
2, I420, YUY2,
@ -52,17 +52,17 @@ int main(int argc, char *argv[])
" :", framerate, "Fru", &SPA_FRACTION(25,1),
2, &SPA_FRACTION(0,1),
&SPA_FRACTION(INT32_MAX, 1),
">", NULL);
"}", NULL);
spa_debug_pod(0, NULL, fmt);
spa_pod_parser_pod(&prs, fmt);
res = spa_pod_parser_get(&prs,
"<"
"{"
" [ i",&media_type,"*i"/*,&media_subtype,*/" ]"
" :", framerate, "V", &pod,
" :", 10, "?V", &pod2,
" :", format, "?i", &fmt_value,
">", NULL);
"}", NULL);
printf("res :%d\n", res);
printf("media-type:%d media-subtype:%d\n", media_type, media_subtype);
@ -73,18 +73,18 @@ int main(int argc, char *argv[])
spa_pod_builder_init(&b, buffer, sizeof(buffer));
pod = spa_pod_builder_add(&b,
"<",0,format,
"{",0,format,
" P", NULL,
" [ i", 44, "i",45,"]"
">", NULL);
"}", NULL);
spa_debug_pod(0, NULL, pod);
spa_pod_parser_pod(&prs, pod);
res = spa_pod_parser_get(&prs,
"<"
"{"
" ?[ i",&media_type,"i",&media_subtype," ]"
" [ i", &video, "i",&raw,"]"
">", NULL);
"}", NULL);
printf("res :%d\n", res);
printf("video:%d raw:%d\n", video, raw);