85fdd19205e5cc17aab293530867e60db7dd18b0
[src/app-framework-binder.git] / src / globset.h
1 /*
2  * Copyright (C) 2018, 2019 "IoT.bzh"
3  * Author: José Bollo <jose.bollo@iot.bzh>
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *   http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 #pragma once
19
20 struct globset_handler
21 {
22         /* callback of the handler */
23         void *callback;
24
25         /* closure of the handler */
26         void *closure;
27
28         /* the pattern */
29         char pattern[];
30 };
31
32 struct globset;
33
34 extern struct globset *globset_create();
35
36 extern void globset_destroy(struct globset *set);
37
38 extern int globset_add(
39                         struct globset *set,
40                         const char *pattern,
41                         void *callback,
42                         void *closure);
43
44 extern int globset_del(
45                         struct globset *set,
46                         const char *pattern,
47                         void **closure);
48
49 extern struct globset_handler *globset_search(
50                         struct globset *set,
51                         const char *pattern);
52
53 extern const struct globset_handler *globset_match(
54                         struct globset *set,
55                         const char *text);
56