summaryrefslogtreecommitdiff
path: root/vapi/orc-0.4.vapi
blob: 1c252c4c949c49457b5fcd46b332aad0f923231c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
[CCode (lower_case_cprefix = "orc_", cheader_filename = "orc/orc.h")]
namespace Orc {
	[Compact]
	public class Program {
		public Program ();
		public Program.dss (int size1, int size2, int size3);

		public unowned string get_name ();

		public void add_temporary (int size, owned string name);
		public void add_source (int size, owned string name);
		public void add_destination (int size, owned string name);
		public void add_constant (int size, owned string name);
		public void add_accumulator (int size, owned string name);
		public void add_parameter (int size, owned string name);

		public void append (string opcode, int arg0, int arg1, int arg2);
		public void append_str (string opcode, string arg0, string arg1, string arg2);
		public void append_ds (string opcode, int arg0, int arg1);
		public void append_ds_str (string opcode, string arg0, string arg1);

		public Orc.CompileResult compile ();

		public string get_asm_code ();
		public int find_var_by_name (string name);

		public void set_2d();
	}

	[Compact]
	public class Compiler {
	}

	[CCode (has_type_id = false)]
	public enum CompileResult {
		OK,
		UNKNOWN_COMPILE,
		MISSING_RULE,
		UNKNOWN_PARSE,
		PARSE,
		VARIABLE;

		[CCode (cname = "ORC_COMPILE_RESULT_IS_SUCCESSFUL")]
		public bool is_successful ();
		[CCode (cname = "ORC_COMPILE_RESULT_IS_FATAL")]
		public bool is_fatal ();
	}

	[Compact]
	public class Executor {
		[CCode (cname = "orc_executor_new")]
		public Executor (Orc.Program p);

		public void set_array (int _var, void* ptr);
		public void set_array_str (string _var, void* ptr);

		public void set_n (int n);

		public void emulate ();
		public void run ();

		public int get_accumulator (int n);
		public int get_accumulator_str (string name);
		public int set_param (int n, int val);
		public int set_param_str (string name, int val);

		public void set_program (Orc.Program p);

		public void set_2d ();
		public void set_m (int n);
		public void set_stride (int _var, int stride);
	}

	[CCode (cprefix = "ORC_DEBUG_", has_type_id = false)]
	public enum DebugLevel {
		NONE,
		ERROR,
		WARNING,
		INFO,
		DEBUG,
		LOG
	}

	namespace Debug {
		public void set_level (Orc.DebugLevel l);
	}

	public static void init ();
}