#ifndef __PERF_TOOL_H
#define __PERF_TOOL_H

#include <stdbool.h>

struct perf_session;
union perf_event;
struct perf_evlist;
struct perf_evsel;
struct perf_sample;
struct perf_tool;
struct machine;

typedef int (*event_sample)(struct perf_tool *tool, union perf_event *event,
			    struct perf_sample *sample,
			    struct perf_evsel *evsel, struct machine *machine);

typedef int (*event_op)(struct perf_tool *tool, union perf_event *event,
			struct perf_sample *sample, struct machine *machine);

typedef int (*event_attr_op)(union perf_event *event,
			     struct perf_evlist **pevlist);
typedef int (*event_simple_op)(struct perf_tool *tool, union perf_event *event);

typedef int (*event_synth_op)(union perf_event *event,
			      struct perf_session *session);

typedef int (*event_op2)(struct perf_tool *tool, union perf_event *event,
			 struct perf_session *session);

struct perf_tool {
	event_sample	sample,
			read;
	event_op	mmap,
			comm,
			fork,
			exit,
			lost,
			throttle,
			unthrottle;
	event_attr_op	attr;
	event_synth_op	tracing_data;
	event_simple_op	event_type;
	event_op2	finished_round,
			build_id;
	bool		ordered_samples;
	bool		ordering_requires_timestamps;
};

#endif /* __PERF_TOOL_H */
