Ported messages from gear racing controller
[apps/native/gear-racing-car.git] / inc / messages / reader.h
1 /*
2  * Copyright (c) 2018 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Flora License, Version 1.1 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://floralicense.org/license/
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef READER_H
18 #define READER_H
19
20 #include <stdlib.h>
21 #include <stdbool.h>
22
23 typedef struct _reader reader_t;
24
25 /**
26  * @brief reader object
27  */
28 struct _reader
29 {
30         const char *data;
31         size_t offset;
32         size_t len;
33 };
34
35 /**
36  * @brief Initialzies reader over buffer
37  *
38  * @param[in] reader reader object
39  * @param[in] data buffer
40  * @param[in] length length of the @data
41  */
42 void reader_init_static(reader_t *reader, const char *data, size_t length);
43
44 /**
45  * @brief Start reading buffer from the begining
46  *
47  * @param[in] reader reader object
48  */
49 void reader_reset(reader_t *reader);
50
51 /** * @brief Reads 32-bit integer value from buffer
52  *
53  * @param[in] reader reader object
54  * @param[out] value output value
55  *
56  * @return 0 on success, other value on failure.
57  */
58 int reader_read_int32(reader_t *reader, int32_t *value);
59
60 /**
61  * @brief Reads 64-bit integer value from buffer
62  *
63  * @param[in] reader reader object
64  * @param[out] value output value
65  *
66  * @return 0 on success, other value on failure.
67  */
68 int reader_read_int64(reader_t *reader, int64_t *value);
69
70 /**
71  * @brief Reads character value from buffer
72  *
73  * @param[in] reader reader object
74  * @param[out] value output value
75  *
76  * @return 0 on success, other value on failure.
77  */
78 int reader_read_char(reader_t *reader, char *value);
79
80 /**
81  * @brief Reads boolean value from buffer
82  *
83  * @param[in] reader reader object
84  * @param[out] value output value
85  *
86  * @return 0 on success, other value on failure.
87  */
88 int reader_read_bool(reader_t *reader, bool *value);
89
90 /**
91  * @brief Reads string value from buffer
92  *
93  * @param[in] reader reader object
94  * @param[out] value output value
95  *
96  * @return 0 on success, other value on failure.
97  * @note value should be released with @free
98  */
99 int reader_read_string(reader_t *reader, char **value);
100
101 #endif /* end of include guard: READER_H */