2 * Copyright (c) 2018 Samsung Electronics Co., Ltd.
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
8 * http://floralicense.org/license/
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.
17 #include "messages/reader.h"
23 void reader_init_static(reader_t *reader, const char *data, size_t length)
30 void reader_reset(reader_t *reader)
35 int reader_read_int32(reader_t *reader, int32_t *value)
37 if (reader->offset + sizeof(*value) > reader->len)
40 *value = be32toh(*(uint32_t*)&reader->data[reader->offset]);
42 reader->offset += sizeof(*value);
46 int reader_read_int64(reader_t *reader, int64_t *value)
48 if (reader->offset + sizeof(*value) > reader->len)
51 *value = be64toh(*(int64_t*)&reader->data[reader->offset]);
53 reader->offset += sizeof(*value);
57 int reader_read_bool(reader_t *reader, bool *value)
61 if (reader_read_char(reader, &val)) {
65 *value = val ? true : false;
69 int reader_read_char(reader_t *reader, char *value)
71 if (reader->offset + sizeof(*value) > reader->len)
74 *value = *(char*)&reader->data[reader->offset];
76 reader->offset += sizeof(*value);
80 int reader_read_string(reader_t *reader, char **value)
85 if (reader_read_int32(reader, &len)) {
97 if (reader->offset + len > reader->len)
100 ret = (char*)malloc(sizeof(char) * (len + 1));
105 memcpy(ret, &reader->data[reader->offset], len);
106 reader->offset += len;