5#ifndef SPA_POD_SIMPLIFY_H
6#define SPA_POD_SIMPLIFY_H
21#include <spa/pod/dynamic.h>
25#ifndef SPA_API_POD_SIMPLIFY
27 #define SPA_API_POD_SIMPLIFY SPA_API_IMPL
29 #define SPA_API_POD_SIMPLIFY static inline
44 int res = 0, count = 0;
64 uint32_t i, n_vals1, n_vals2, choice1, choice2, size;
65 const struct spa_pod *vals1, *vals2;
66 void *alt1, *alt2, *a1, *a2;
75 if (vals1->
type != vals2->
type || n_vals1 < 1 || n_vals2 < 1)
90 for (i = 0, a1 = alt1; i < n_vals1; i++, a1 =
SPA_PTROFF(a1,
size,
void)) {
91 if (i == 0 && n_vals1 == 1)
95 for (i = 0, a2 = alt2; i < n_vals2; i++, a2 =
SPA_PTROFF(a2,
size,
void)) {
125 struct spa_pod *p1 = NULL, *p2;
136 p1offs = state.offset;
164 spa_pod_dynamic_builder_continue(&db,
b);
168 spa_pod_dynamic_builder_clean(&db);
171 if (
res >= 0 && result) {
uint32_t int int res
Definition core.h:433
SPA_API_POD_BUILDER void * spa_pod_builder_pop(struct spa_pod_builder *builder, struct spa_pod_frame *frame)
Definition builder.h:213
SPA_API_POD_BUILDER int spa_pod_builder_push_choice(struct spa_pod_builder *builder, struct spa_pod_frame *frame, uint32_t type, uint32_t flags)
Definition builder.h:446
SPA_API_POD_SIMPLIFY int spa_pod_simplify_merge(struct spa_pod_builder *b, const struct spa_pod *pod1, const struct spa_pod *pod2)
Definition simplify.h:46
SPA_API_POD_COMPARE int spa_pod_compare(const struct spa_pod *pod1, const struct spa_pod *pod2)
Definition compare.h:90
SPA_API_POD_BUILDER int spa_pod_builder_child(struct spa_pod_builder *builder, uint32_t size, uint32_t type)
Definition builder.h:268
SPA_API_POD_ITER struct spa_pod * spa_pod_get_values(const struct spa_pod *pod, uint32_t *n_vals, uint32_t *choice)
Definition iter.h:229
SPA_API_POD_BODY int spa_pod_is_struct(const struct spa_pod *pod)
Definition body.h:388
SPA_API_POD_BUILDER void spa_pod_builder_get_state(struct spa_pod_builder *builder, struct spa_pod_builder_state *state)
Definition builder.h:75
SPA_API_POD_ITER const struct spa_pod_prop * spa_pod_object_find_prop(const struct spa_pod_object *pod, const struct spa_pod_prop *start, uint32_t key)
Definition iter.h:254
#define SPA_POD_OBJECT_FOREACH(obj, iter)
Definition iter.h:118
#define SPA_POD_BODY(pod)
Definition pod.h:44
SPA_API_POD_BODY int spa_pod_is_object(const struct spa_pod *pod)
Definition body.h:393
SPA_API_POD_BUILDER int spa_pod_builder_push_struct(struct spa_pod_builder *builder, struct spa_pod_frame *frame)
Definition builder.h:462
SPA_API_POD_BUILDER struct spa_pod * spa_pod_builder_deref(struct spa_pod_builder *builder, uint32_t offset)
Definition builder.h:121
SPA_API_POD_BUILDER int spa_pod_builder_push_object(struct spa_pod_builder *builder, struct spa_pod_frame *frame, uint32_t type, uint32_t id)
Definition builder.h:475
SPA_API_POD_BUILDER void spa_pod_builder_remove(struct spa_pod_builder *builder, uint32_t size)
Definition builder.h:187
SPA_API_POD_BUILDER void spa_pod_builder_reset(struct spa_pod_builder *builder, struct spa_pod_builder_state *state)
Definition builder.h:93
SPA_API_POD_SIMPLIFY int spa_pod_simplify(struct spa_pod_builder *b, struct spa_pod **result, const struct spa_pod *pod)
Definition simplify.h:157
#define SPA_POD_STRUCT_FOREACH(obj, iter)
Definition iter.h:110
#define SPA_POD_PROP_SIZE(prop)
Definition pod.h:224
SPA_API_POD_BUILDER int spa_pod_builder_raw(struct spa_pod_builder *builder, const void *data, uint32_t size)
Definition builder.h:150
SPA_API_POD_BUILDER int spa_pod_builder_raw_padded(struct spa_pod_builder *builder, const void *data, uint32_t size)
Definition builder.h:205
SPA_API_POD_SIMPLIFY int spa_pod_simplify_struct(struct spa_pod_builder *b, const struct spa_pod *pod, uint32_t pod_size)
Definition simplify.h:130
#define SPA_POD_SIZE(pod)
Definition pod.h:35
SPA_API_POD_BUILDER int spa_pod_builder_prop(struct spa_pod_builder *builder, uint32_t key, uint32_t flags)
Definition builder.h:490
@ SPA_CHOICE_None
no choice, first value is current
Definition pod.h:161
@ SPA_CHOICE_Enum
list: default, alternative,...
Definition pod.h:164
#define spa_return_val_if_fail(expr, val)
Definition defs.h:460
#define SPA_PTROFF(ptr_, offset_, type_)
Return the address (buffer + offset) as pointer of type.
Definition defs.h:222
#define SPA_API_POD_SIMPLIFY
Definition simplify.h:36
void * data
Definition builder.h:64
struct spa_pod_builder b
Definition dynamic.h:30
uint32_t type
one of enum spa_type
Definition pod.h:197
uint32_t id
id of the object, depends on the object type
Definition pod.h:198
struct spa_pod_object_body body
Definition pod.h:204
uint32_t key
key of property, list of valid keys depends on the object type
Definition pod.h:228
uint32_t flags
flags for property
Definition pod.h:248
struct spa_pod value
Definition pod.h:249
uint32_t type
Definition pod.h:59
uint32_t size
Definition pod.h:58