45 #define DAV_SYNC_TAGFILTER_AND 1 |
45 #define DAV_SYNC_TAGFILTER_AND 1 |
46 #define DAV_SYNC_TAGFILTER_OR 2 |
46 #define DAV_SYNC_TAGFILTER_OR 2 |
47 #define DAV_SYNC_TAGFILTER_ONE 3 |
47 #define DAV_SYNC_TAGFILTER_ONE 3 |
48 #define DAV_SYNC_TAGFILTER_NONE 4 |
48 #define DAV_SYNC_TAGFILTER_NONE 4 |
49 |
49 |
|
50 #define DAV_SYNC_TAGFILTER_SCOPE_RESOURCE 1 |
|
51 #define DAV_SYNC_TAGFILTER_SCOPE_COLLECTION 2 |
|
52 |
50 typedef struct DavTag { |
53 typedef struct DavTag { |
51 char *name; |
54 char *name; |
52 char *color; |
55 char *color; |
53 } DavTag; |
56 } DavTag; |
54 |
57 |
58 * operator ::= "&" | "|" | "1" | "0" |
61 * operator ::= "&" | "|" | "1" | "0" |
59 */ |
62 */ |
60 typedef struct SyncTagFilter SyncTagFilter; |
63 typedef struct SyncTagFilter SyncTagFilter; |
61 |
64 |
62 struct SyncTagFilter { |
65 struct SyncTagFilter { |
|
66 int scope; |
63 int mode; |
67 int mode; |
64 UcxList* tags; |
68 UcxList* tags; |
65 size_t subfilter_count; |
69 size_t subfilter_count; |
66 SyncTagFilter** subfilters; |
70 SyncTagFilter** subfilters; |
67 }; |
71 }; |
83 UcxBuffer* create_macos_taglist(UcxList *tags); |
87 UcxBuffer* create_macos_taglist(UcxList *tags); |
84 |
88 |
85 |
89 |
86 /* ----------- ----------- tag filter ---------------------- */ |
90 /* ----------- ----------- tag filter ---------------------- */ |
87 |
91 |
88 SyncTagFilter* parse_tagfilter_string(const char* filterstring); |
92 SyncTagFilter* parse_tagfilter_string(const char* filterstring, int scope); |
89 void free_tagfilter(SyncTagFilter* filter); |
93 void free_tagfilter(SyncTagFilter* filter); |
90 |
94 |
91 int matches_tagfilter(UcxList *dav_tags, SyncTagFilter *tagfilter); |
95 int matches_tagfilter(UcxList *dav_tags, SyncTagFilter *tagfilter); |
92 |
96 |
93 #ifdef __cplusplus |
97 #ifdef __cplusplus |