d747d0b881d342c7c9daa1c5207d50a89f6fb99e
[src/app-framework-binder.git] / src / afb-req-itf.h
1 /*
2  * Copyright 2016 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
19 struct afb_req_itf {
20         const char *(*argument)(void *data, const char *name);
21         int (*is_argument_file)(void *data, const char *name);
22         int (*iterate_arguments)(void *data, int (*iterator)(void *closure, const char *key, const char *value, int isfile), void *closure);
23 };
24
25 struct afb_req {
26         const struct afb_req_itf *itf;
27         void *data;
28 };
29
30 static inline const char *afb_req_argument(struct afb_req req, const char *name)
31 {
32         return req.itf->argument(req.data, name);
33 }
34
35 static inline int afb_req_argument_file(struct afb_req req, const char *name)
36 {
37         return req.itf->is_argument_file(req.data, name);
38 }
39
40 static inline int afb_req_iterate_arguments(struct afb_req req, int (*iterator)(void *closure, const char *key, const char *value, int isfile), void *closure)
41 {
42         return req.itf->iterate_arguments(req.data, iterator, closure);
43 }
44
45
46
47