5#ifndef SPA_POD_COMPARE_H
6#define SPA_POD_COMPARE_H
23#ifndef SPA_API_POD_COMPARE
25 #define SPA_API_POD_COMPARE SPA_API_IMPL
27 #define SPA_API_POD_COMPARE static inline
42 return SPA_CMP(!!*(int32_t *)r1, !!*(int32_t *)r2);
44 return SPA_CMP(*(uint32_t *)r1, *(uint32_t *)r2);
46 return SPA_CMP(*(int32_t *)r1, *(int32_t *)r2);
48 return SPA_CMP(*(int64_t *)r1, *(int64_t *)r2);
50 return SPA_CMP(*(
float *)r1, *(
float *)r2);
52 return SPA_CMP(*(
double *)r1, *(
double *)r2);
54 return strcmp((
char *)r1, (
char *)r2);
56 return memcmp((
char *)r1, (
char *)r2, size);
61 if (rec1->
width == rec2->width && rec1->
height == rec2->height)
63 else if (rec1->
width < rec2->width || rec1->
height < rec2->height)
73 n1 = ((uint64_t) f1->
num) * f2->
denom;
74 n2 = ((uint64_t) f2->num) * f1->
denom;
87 uint32_t n_vals1, n_vals2;
88 uint32_t choice1, choice2;
96 if (n_vals1 != n_vals2)
#define SPA_API_POD_COMPARE
Definition compare.h:34
uint32_t int int res
Definition core.h:433
#define SPA_POD_BODY_CONST(pod)
Definition pod.h:41
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_ITER struct spa_pod * spa_pod_get_values(const struct spa_pod *pod, uint32_t *n_vals, uint32_t *choice)
Definition iter.h:363
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:404
SPA_API_POD_COMPARE int spa_pod_compare_value(uint32_t type, const void *r1, const void *r2, uint32_t size)
Definition compare.h:43
#define SPA_POD_OBJECT_FOREACH(obj, iter)
Definition iter.h:124
#define SPA_POD_BODY(pod)
Definition pod.h:39
#define SPA_POD_TYPE(pod)
Definition pod.h:28
SPA_API_POD_ITER void * spa_pod_next(const void *iter)
Definition iter.h:52
#define SPA_POD_BODY_SIZE(pod)
Definition pod.h:26
SPA_API_POD_ITER bool spa_pod_is_inside(const void *pod, uint32_t size, const void *iter)
Definition iter.h:44
@ SPA_TYPE_Int
Definition type.h:45
@ SPA_TYPE_Rectangle
Definition type.h:51
@ SPA_TYPE_Long
Definition type.h:46
@ SPA_TYPE_Bool
Definition type.h:43
@ SPA_TYPE_Bytes
Definition type.h:50
@ SPA_TYPE_Object
Definition type.h:56
@ SPA_TYPE_Float
Definition type.h:47
@ SPA_TYPE_Fraction
Definition type.h:52
@ SPA_TYPE_None
Definition type.h:42
@ SPA_TYPE_Double
Definition type.h:48
@ SPA_TYPE_Id
Definition type.h:44
@ SPA_TYPE_Array
Definition type.h:54
@ SPA_TYPE_String
Definition type.h:49
@ SPA_TYPE_Struct
Definition type.h:55
#define spa_return_val_if_fail(expr, val)
Definition defs.h:456
#define SPA_CMP(a, b)
3-way comparison.
Definition defs.h:209
uint32_t num
Definition defs.h:138
uint32_t denom
Definition defs.h:139
uint32_t key
key of property, list of valid keys depends on the object type
Definition pod.h:209
struct spa_pod value
Definition pod.h:226
uint32_t width
Definition defs.h:117
uint32_t height
Definition defs.h:118