Andrew Scull | 1883487 | 2018-10-12 11:48:09 +0100 | [diff] [blame] | 1 | /* |
Andrew Walbran | 692b325 | 2019-03-07 15:51:31 +0000 | [diff] [blame] | 2 | * Copyright 2018 The Hafnium Authors. |
Andrew Scull | 1883487 | 2018-10-12 11:48:09 +0100 | [diff] [blame] | 3 | * |
Andrew Walbran | e959ec1 | 2020-06-17 15:01:09 +0100 | [diff] [blame] | 4 | * Use of this source code is governed by a BSD-style |
| 5 | * license that can be found in the LICENSE file or at |
| 6 | * https://opensource.org/licenses/BSD-3-Clause. |
Andrew Scull | 1883487 | 2018-10-12 11:48:09 +0100 | [diff] [blame] | 7 | */ |
| 8 | |
Andrew Scull | fbc938a | 2018-08-20 14:09:28 +0100 | [diff] [blame] | 9 | #pragma once |
Wedson Almeida Filho | fdf4afc | 2018-07-19 15:45:21 +0100 | [diff] [blame] | 10 | |
| 11 | #include <stdbool.h> |
| 12 | #include <stddef.h> |
| 13 | #include <stdint.h> |
| 14 | |
| 15 | struct memiter { |
| 16 | const char *next; |
| 17 | const char *limit; |
| 18 | }; |
| 19 | |
| 20 | void memiter_init(struct memiter *it, const void *data, size_t size); |
| 21 | bool memiter_parse_uint(struct memiter *it, uint64_t *value); |
| 22 | bool memiter_parse_str(struct memiter *it, struct memiter *str); |
| 23 | bool memiter_iseq(const struct memiter *it, const char *str); |
Wedson Almeida Filho | 9ee60e9 | 2018-07-23 18:56:56 +0100 | [diff] [blame] | 24 | bool memiter_advance(struct memiter *it, size_t v); |
David Brazdil | b856be6 | 2020-03-25 10:14:55 +0000 | [diff] [blame] | 25 | bool memiter_restrict(struct memiter *it, size_t v); |
| 26 | bool memiter_consume(struct memiter *it, size_t v, struct memiter *newit); |
David Brazdil | 7a462ec | 2019-08-15 12:27:47 +0100 | [diff] [blame] | 27 | |
David Brazdil | 74e9c3b | 2019-08-28 11:09:08 +0100 | [diff] [blame] | 28 | const void *memiter_base(const struct memiter *it); |
| 29 | size_t memiter_size(const struct memiter *it); |