1d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry/*
2d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry * Copyright (C) 2017 The Android Open Source Project
3d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry *
4d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry * Licensed under the Apache License, Version 2.0 (the "License");
5d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry * you may not use this file except in compliance with the License.
6d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry * You may obtain a copy of the License at
7d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry *
8d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry *      http://www.apache.org/licenses/LICENSE-2.0
9d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry *
10d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry * Unless required by applicable law or agreed to in writing, software
11d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry * distributed under the License is distributed on an "AS IS" BASIS,
12d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry * See the License for the specific language governing permissions and
14d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry * limitations under the License.
15d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry *
16d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry * Trivial managed buffer structure
17d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry */
18d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry
19d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry#ifndef ESE_REPLAY_BUFFER_H__
20d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry#define ESE_REPLAY_BUFFER_H__ 1
21d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry
22d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry#include <ctype.h>
23d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry#include <stdint.h>
24d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry#include <stdbool.h>
25d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry#include <stdio.h>
26d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry#include <stdlib.h>
27d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry#include <string.h>
28d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry#include <unistd.h>
29d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry
30d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewrystruct Buffer {
31d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry  uint32_t len;
32d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry  uint32_t size;
33d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry  uint8_t *buffer;
34d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry};
35d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry
36d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewrybool buffer_init(struct Buffer *b, uint32_t len);
37d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewryvoid buffer_free(struct Buffer *b);
38d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewrybool buffer_read_hex(struct Buffer *b, FILE *fp, bool consume_newline);
39d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewryvoid buffer_dump(const struct Buffer *b, const char *prefix, const char *name,
40d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry                 uint32_t limit, FILE *fp);
41d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry
42d9e00e34ac8c0e88d7482ad813a868ce59526e62Will Drewry#endif  /* ESE_REPLAY_BUFFER_H__ */
43