1 /**
2  * \file
3  */
4 
5 #ifndef __MONO_CALLSPEC_H__
6 #define __MONO_CALLSPEC_H__
7 #include <glib.h>
8 #include <mono/utils/mono-compiler.h>
9 
10 typedef enum {
11 	MONO_TRACEOP_ALL,
12 	MONO_TRACEOP_PROGRAM,
13 	MONO_TRACEOP_METHOD,
14 	MONO_TRACEOP_ASSEMBLY,
15 	MONO_TRACEOP_CLASS,
16 	MONO_TRACEOP_NAMESPACE,
17 	MONO_TRACEOP_EXCEPTION,
18 	MONO_TRACEOP_WRAPPER,
19 } MonoTraceOpcode;
20 
21 typedef struct {
22 	MonoTraceOpcode op;
23 	int exclude;
24 	void *data, *data2;
25 } MonoTraceOperation;
26 
27 typedef struct {
28 	int len;
29 	gboolean enabled;
30 	MonoTraceOperation *ops;
31 } MonoCallSpec;
32 
33 G_BEGIN_DECLS
34 
35 MONO_PROFILER_API gboolean mono_callspec_parse		(const char *options,
36 							 MonoCallSpec *spec,
37 							 char **errstr);
38 MONO_PROFILER_API void     mono_callspec_cleanup	(MonoCallSpec *spec);
39 MONO_PROFILER_API gboolean mono_callspec_eval_exception	(MonoClass *klass,
40 							 MonoCallSpec *spec);
41 MONO_PROFILER_API gboolean mono_callspec_eval		(MonoMethod *method,
42 							 const MonoCallSpec *spec);
43 void			   mono_callspec_set_assembly	(MonoAssembly *assembly);
44 
45 G_END_DECLS
46 
47 #endif /* __MONO_CALLSPEC_H__ */
48