1use crate::*;
2
3pub struct ExtismFunctions {
4 pub input_load_u8: FunctionIndex,
5 pub input_load_u64: FunctionIndex,
6 pub input_length: FunctionIndex,
7 pub length: FunctionIndex,
8 pub length_unsafe: FunctionIndex,
9 pub alloc: FunctionIndex,
10 pub free: FunctionIndex,
11 pub output_set: FunctionIndex,
12 pub error_set: FunctionIndex,
13 pub config_get: FunctionIndex,
14 pub var_get: FunctionIndex,
15 pub var_set: FunctionIndex,
16 pub store_u8: FunctionIndex,
17 pub load_u8: FunctionIndex,
18 pub store_u64: FunctionIndex,
19 pub load_u64: FunctionIndex,
20 pub http_request: FunctionIndex,
21 pub http_status_code: FunctionIndex,
22 pub log_info: FunctionIndex,
23 pub log_debug: FunctionIndex,
24 pub log_warn: FunctionIndex,
25 pub log_error: FunctionIndex,
26}
27
28impl<'a> Module<'a> {
29 pub fn link_extism(&mut self) -> ExtismFunctions {
30 let input_load_u8 = self.import(
31 "extism:host/env",
32 "input_load_u8",
33 None,
34 [ValType::I64],
35 [ValType::I32],
36 );
37 let input_load_u64 = self.import(
38 "extism:host/env",
39 "input_load_u64",
40 None,
41 [ValType::I64],
42 [ValType::I64],
43 );
44 let input_length = self.import("extism:host/env", "input_length", None, [], [ValType::I64]);
45 let length = self.import(
46 "extism:host/env",
47 "length",
48 None,
49 [ValType::I64],
50 [ValType::I64],
51 );
52 let length_unsafe = self.import(
53 "extism:host/env",
54 "length_unsafe",
55 None,
56 [ValType::I64],
57 [ValType::I64],
58 );
59 let alloc = self.import(
60 "extism:host/env",
61 "alloc",
62 None,
63 [ValType::I64],
64 [ValType::I64],
65 );
66 let free = self.import("extism:host/env", "free", None, [ValType::I64], []);
67 let output_set = self.import(
68 "extism:host/env",
69 "output_set",
70 None,
71 [ValType::I64, ValType::I64],
72 [],
73 );
74 let error_set = self.import("extism:host/env", "error_set", None, [ValType::I64], []);
75 let config_get = self.import(
76 "extism:host/env",
77 "config_get",
78 None,
79 [ValType::I64],
80 [ValType::I64],
81 );
82 let var_get = self.import(
83 "extism:host/env",
84 "var_get",
85 None,
86 [ValType::I64],
87 [ValType::I64],
88 );
89 let var_set = self.import(
90 "extism:host/env",
91 "var_set",
92 None,
93 [ValType::I64, ValType::I64],
94 [],
95 );
96 let store_u8 = self.import(
97 "extism:host/env",
98 "store_u8",
99 None,
100 [ValType::I64, ValType::I32],
101 [],
102 );
103 let load_u8 = self.import(
104 "extism:host/env",
105 "load_u8",
106 None,
107 [ValType::I64],
108 [ValType::I32],
109 );
110 let store_u64 = self.import(
111 "extism:host/env",
112 "store_u64",
113 None,
114 [ValType::I64, ValType::I64],
115 [],
116 );
117 let load_u64 = self.import(
118 "extism:host/env",
119 "load_u64",
120 None,
121 [ValType::I64],
122 [ValType::I64],
123 );
124 let http_request = self.import(
125 "extism:host/env",
126 "http_request",
127 None,
128 [ValType::I64, ValType::I64],
129 [ValType::I64],
130 );
131 let http_status_code = self.import(
132 "extism:host/env",
133 "http_status_code",
134 None,
135 [],
136 [ValType::I32],
137 );
138
139 let log_info = self.import("extism:host/env", "log_info", None, [ValType::I64], []);
140 let log_debug = self.import("extism:host/env", "log_info", None, [ValType::I64], []);
141 let log_warn = self.import("extism:host/env", "log_info", None, [ValType::I64], []);
142 let log_error = self.import("extism:host/env", "log_info", None, [ValType::I64], []);
143
144 ExtismFunctions {
145 input_load_u8,
146 input_load_u64,
147 input_length,
148 length,
149 length_unsafe,
150 alloc,
151 free,
152 output_set,
153 error_set,
154 config_get,
155 var_get,
156 var_set,
157 store_u8,
158 load_u8,
159 store_u64,
160 load_u64,
161 http_request,
162 http_status_code,
163 log_info,
164 log_debug,
165 log_warn,
166 log_error,
167 }
168 }
169}