Remove unneeded fwd declaration
[libside.git] / include / side / visitor-abi.h
CommitLineData
57553dfd
MD
1// SPDX-License-Identifier: MIT
2/*
3 * Copyright 2022-2023 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
4 */
5
6#ifndef SIDE_VISITOR_ABI_H
7#define SIDE_VISITOR_ABI_H
8
9#include <stdint.h>
10#include <side/macros.h>
11#include <side/endian.h>
12
13struct side_arg;
14struct side_arg_dynamic_field;
15struct side_tracer_visitor_ctx;
16struct side_tracer_dynamic_struct_visitor_ctx;
17
18/* The visitor pattern is a double-dispatch visitor. */
19
20typedef enum side_visitor_status (*side_write_elem_func)(
21 const struct side_tracer_visitor_ctx *tracer_ctx,
22 const struct side_arg *elem);
23typedef enum side_visitor_status (*side_visitor_func)(
24 const struct side_tracer_visitor_ctx *tracer_ctx,
25 void *app_ctx);
26
27struct side_tracer_visitor_ctx {
28 side_write_elem_func write_elem;
29 void *priv; /* Private tracer context. */
30} SIDE_PACKED;
31
32typedef enum side_visitor_status (*side_write_field_func)(
33 const struct side_tracer_dynamic_struct_visitor_ctx *tracer_ctx,
34 const struct side_arg_dynamic_field *dynamic_field);
35typedef enum side_visitor_status (*side_dynamic_struct_visitor_func)(
36 const struct side_tracer_dynamic_struct_visitor_ctx *tracer_ctx,
37 void *app_ctx);
38
39struct side_tracer_dynamic_struct_visitor_ctx {
40 side_write_field_func write_field;
41 void *priv; /* Private tracer context. */
42} SIDE_PACKED;
43
44#endif /* SIDE_VISITOR_ABI_H */
This page took 0.023434 seconds and 4 git commands to generate.