Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/* WirePlumber
*
* Copyright © 2020 Collabora Ltd.
* @author George Kiagiadakis <george.kiagiadakis@collabora.com>
*
* SPDX-License-Identifier: MIT
*/
#ifndef __WIREPLUMBER_OBJECT_INTEREST_H__
#define __WIREPLUMBER_OBJECT_INTEREST_H__
#include <glib-object.h>
#include "defs.h"
#include "properties.h"
G_BEGIN_DECLS
/**
* WpConstraintType:
* @WP_CONSTRAINT_TYPE_NONE: invalid constraint type
* @WP_CONSTRAINT_TYPE_PW_GLOBAL_PROPERTY: constraint applies
* to a PipeWire global property of the object (the ones returned by
* wp_proxy_get_global_properties())
* @WP_CONSTRAINT_TYPE_PW_PROPERTY: constraint applies
* to a PipeWire property of the object (the ones returned by
* wp_proxy_get_properties())
* @WP_CONSTRAINT_TYPE_G_PROPERTY: constraint applies to a #GObject
* property of the object
*/
typedef enum {
WP_CONSTRAINT_TYPE_NONE = 0,
WP_CONSTRAINT_TYPE_PW_GLOBAL_PROPERTY,
WP_CONSTRAINT_TYPE_PW_PROPERTY,
WP_CONSTRAINT_TYPE_G_PROPERTY,
} WpConstraintType;
/**
* WpConstraintVerb:
* @WP_CONSTRAINT_VERB_EQUALS: `=` the subject's value must equal the
* constraint's value
* @WP_CONSTRAINT_VERB_IN_LIST: `c` the subject's value must equal at least
* one of the values in the list given as the constraint's value
* @WP_CONSTRAINT_VERB_IN_RANGE: `~` the subject's value must be a number
* in the range defined by the constraint's value
* @WP_CONSTRAINT_VERB_MATCHES: `#` the subject's value must match the
* pattern specified in the constraint's value
* @WP_CONSTRAINT_VERB_IS_PRESENT: `+` the subject property must exist
* @WP_CONSTRAINT_VERB_IS_ABSENT: `-` the subject property must not exist
*/
typedef enum {
WP_CONSTRAINT_VERB_EQUALS = '=',
WP_CONSTRAINT_VERB_IN_LIST = 'c',
WP_CONSTRAINT_VERB_IN_RANGE = '~',
WP_CONSTRAINT_VERB_MATCHES = '#',
WP_CONSTRAINT_VERB_IS_PRESENT = '+',
WP_CONSTRAINT_VERB_IS_ABSENT = '-',
} WpConstraintVerb;
/**
* WP_TYPE_OBJECT_INTEREST:
*
* The #WpObjectInterest #GType
*/
#define WP_TYPE_OBJECT_INTEREST (wp_object_interest_get_type ())
WP_API
GType wp_object_interest_get_type (void) G_GNUC_CONST;
typedef struct _WpObjectInterest WpObjectInterest;
WP_API
WpObjectInterest * wp_object_interest_new (GType gtype, ...) G_GNUC_NULL_TERMINATED;
WP_API
WpObjectInterest * wp_object_interest_new_valist (GType gtype, va_list * args);
WP_API
WpObjectInterest * wp_object_interest_new_type (GType gtype);
WP_API
void wp_object_interest_add_constraint (WpObjectInterest * self,
WpConstraintType type, const gchar * subject,
WpConstraintVerb verb, GVariant * value);
WP_API
WpObjectInterest * wp_object_interest_copy (WpObjectInterest * self);
WP_API
void wp_object_interest_free (WpObjectInterest * self);
WP_API
gboolean wp_object_interest_validate (WpObjectInterest * self, GError ** error);
WP_API
gboolean wp_object_interest_matches (WpObjectInterest * self, gpointer object);
WP_API
gboolean wp_object_interest_matches_full (WpObjectInterest * self,
GType object_type, gpointer object, WpProperties * pw_props,
WpProperties * pw_global_props);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WpObjectInterest, wp_object_interest_free)
G_END_DECLS
#endif