Skip to main content

aviutl2_sys/
module2.rs

1#![allow(non_snake_case, non_camel_case_types, non_upper_case_globals)]
2
3use std::ffi::c_void;
4use std::os::raw::{c_char, c_double, c_int};
5
6use crate::plugin2::EDIT_SECTION;
7
8/// 引数の型種別
9#[repr(i32)]
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
11pub enum PARAM_TYPE {
12    NONE = -1,
13    NIL = 0,
14    BOOLEAN = 1,
15    LIGHTUSERDATA = 2,
16    NUMBER = 3,
17    STRING = 4,
18    TABLE = 5,
19    FUNCTION = 6,
20    USERDATA = 7,
21    THREAD = 8,
22}
23
24/// スクリプトモジュール引数構造体
25#[repr(C)]
26#[derive(Debug, Clone, Copy)]
27pub struct SCRIPT_MODULE_PARAM {
28    /// 引数の数を取得する
29    /// 戻り値 : 引数の数
30    pub get_param_num: unsafe extern "C" fn() -> c_int,
31
32    /// 引数を整数で取得する
33    /// index : 引数の位置(0〜)
34    /// 戻り値 : 引数の値 (取得出来ない場合は0)
35    pub get_param_int: unsafe extern "C" fn(index: c_int) -> c_int,
36
37    /// 引数を浮動小数点で取得する
38    /// index : 引数の位置(0〜)
39    /// 戻り値 : 引数の値 (取得出来ない場合は0)
40    pub get_param_double: unsafe extern "C" fn(index: c_int) -> c_double,
41
42    /// 引数を文字列(UTF-8)で取得する
43    /// index : 引数の位置(0〜)
44    /// 戻り値 : 引数の値 (取得出来ない場合はnullptr)
45    pub get_param_string: unsafe extern "C" fn(index: c_int) -> *const c_char,
46
47    /// 引数をデータのポインタで取得する ※LightUserData等から取得
48    /// index : 引数の位置(0〜)
49    /// 戻り値 : 引数の値 (取得出来ない場合はnullptr)
50    pub get_param_data: unsafe extern "C" fn(index: c_int) -> *mut c_void,
51
52    /// 引数の連想配列要素を整数で取得する
53    /// index : 引数の位置(0〜)
54    /// key : キー名(UTF-8)
55    /// 戻り値 : 引数の値 (取得出来ない場合は0)
56    pub get_param_table_int: unsafe extern "C" fn(index: c_int, key: *const c_char) -> c_int,
57
58    /// 引数の連想配列要素を浮動小数点で取得する
59    /// index : 引数の位置(0〜)
60    /// key : キー名(UTF-8)
61    /// 戻り値 : 引数の値 (取得出来ない場合は0)
62    pub get_param_table_double: unsafe extern "C" fn(index: c_int, key: *const c_char) -> c_double,
63
64    /// 引数の連想配列要素を文字列(UTF-8)で取得する
65    /// index : 引数の位置(0〜)
66    /// key : キー名(UTF-8)
67    /// 戻り値 : 引数の値 (取得出来ない場合はnullptr)
68    pub get_param_table_string:
69        unsafe extern "C" fn(index: c_int, key: *const c_char) -> *const c_char,
70
71    /// 引数の配列要素の数を取得する
72    /// index : 引数の位置(0〜)
73    /// 戻り値 : 配列要素の数
74    pub get_param_array_num: unsafe extern "C" fn(index: c_int) -> c_int,
75
76    /// 引数の配列要素を整数で取得する
77    /// index : 引数の位置(0〜)
78    /// key : 配列のインデックス(0〜)
79    /// 戻り値 : 引数の値 (取得出来ない場合は0)
80    pub get_param_array_int: unsafe extern "C" fn(index: c_int, key: c_int) -> c_int,
81
82    /// 引数の配列要素を浮動小数点で取得する
83    /// index : 引数の位置(0〜)
84    /// key : 配列のインデックス(0〜)
85    /// 戻り値 : 引数の値 (取得出来ない場合は0)
86    pub get_param_array_double: unsafe extern "C" fn(index: c_int, key: c_int) -> c_double,
87
88    /// 引数の配列要素を文字列(UTF-8)で取得する
89    /// index : 引数の位置(0〜)
90    /// key : 配列のインデックス(0〜)
91    /// 戻り値 : 引数の値 (取得出来ない場合はnullptr)
92    pub get_param_array_string: unsafe extern "C" fn(index: c_int, key: c_int) -> *const c_char,
93
94    /// 整数の戻り値を追加する
95    /// value : 戻り値
96    pub push_result_int: unsafe extern "C" fn(value: c_int),
97
98    /// 浮動小数点の戻り値を追加する
99    /// value : 戻り値
100    pub push_result_double: unsafe extern "C" fn(value: c_double),
101
102    /// 文字列(UTF-8)の戻り値を追加する
103    /// value : 戻り値
104    pub push_result_string: unsafe extern "C" fn(value: *const c_char),
105
106    /// データのポインタの戻り値を追加する ※LightUserDataを返却
107    /// value : 戻り値
108    pub push_result_data: unsafe extern "C" fn(value: *const c_void),
109
110    /// 整数連想配列の戻り値を追加する
111    /// key : キー名(UTF-8)の配列
112    /// value : 戻り値の配列
113    /// num : 配列の要素数
114    pub push_result_table_int:
115        unsafe extern "C" fn(key: *const *const c_char, value: *const c_int, num: c_int),
116
117    /// 浮動小数点連想配列の戻り値を追加する
118    /// key : キー名(UTF-8)の配列
119    /// value : 戻り値の配列
120    /// num : 配列の要素数
121    pub push_result_table_double:
122        unsafe extern "C" fn(key: *const *const c_char, value: *const c_double, num: c_int),
123
124    /// 文字列(UTF-8)連想配列の戻り値を追加する
125    /// key : キー名(UTF-8)の配列
126    /// value : 戻り値の配列
127    /// num : 配列の要素数
128    pub push_result_table_string:
129        unsafe extern "C" fn(key: *const *const c_char, value: *const *const c_char, num: c_int),
130
131    /// 整数配列の戻り値を追加する
132    /// value : 戻り値の配列
133    /// num : 配列の要素数
134    pub push_result_array_int: unsafe extern "C" fn(value: *const c_int, num: c_int),
135
136    /// 浮動小数点配列の戻り値を追加する
137    /// value : 戻り値の配列
138    /// num : 配列の要素数
139    pub push_result_array_double: unsafe extern "C" fn(value: *const c_double, num: c_int),
140
141    /// 文字列(UTF-8)配列の戻り値を追加する
142    /// value : 戻り値の配列
143    /// num : 配列の要素数
144    pub push_result_array_string: unsafe extern "C" fn(value: *const *const c_char, num: c_int),
145
146    /// エラーメッセージを設定する
147    /// 呼び出された関数をエラー終了する場合に設定します
148    /// message : エラーメッセージ(UTF-8)
149    pub set_error: unsafe extern "C" fn(message: *const c_char),
150
151    /// 引数をブール値で取得する
152    /// index : 引数の位置(0〜)
153    /// 戻り値 : 引数の値 (取得出来ない場合はfalse)
154    pub get_param_boolean: unsafe extern "C" fn(index: c_int) -> bool,
155
156    /// ブール値の戻り値を追加する
157    /// value : 戻り値
158    pub push_result_boolean: unsafe extern "C" fn(value: bool),
159
160    /// 引数の連想配列要素をブール値で取得する
161    /// index : 引数の位置(0〜)
162    /// key : キー名(UTF-8)
163    /// 戻り値 : 引数の値 (取得出来ない場合はfalse)
164    pub get_param_table_boolean: unsafe extern "C" fn(index: c_int, key: *const c_char) -> bool,
165
166    /// ブール値配列の戻り値を追加する
167    /// value : 戻り値の配列
168    /// num : 配列の要素数
169    pub push_result_array_boolean: unsafe extern "C" fn(value: *const bool, num: c_int),
170
171    /// ブール値連想配列の戻り値を追加する
172    /// key : キー名(UTF-8)の配列
173    /// value : 戻り値の配列
174    /// num : 配列の要素数
175    pub push_result_table_boolean:
176        unsafe extern "C" fn(key: *const *const c_char, value: *const bool, num: c_int),
177
178    /// 編集セクション関数
179    /// スクリプト処理中は参照系の関数が利用出来ます
180    pub edit: *mut EDIT_SECTION,
181
182    /// 関数を戻り値として追加する
183    /// func : 返却した関数の実行時に呼ばれるコールバック関数
184    /// userdata : 任意のユーザーデータのポインタ
185    pub push_result_function: unsafe extern "C" fn(
186        func: unsafe extern "C" fn(smp: *mut SCRIPT_MODULE_PARAM),
187        userdata: *mut c_void,
188    ),
189
190    /// 新しい関数に差し替えるので廃止します
191    pub deprecated_push_result_meta_table: unsafe extern "C" fn(
192        func_getter: unsafe extern "C" fn(smp: *mut SCRIPT_MODULE_PARAM),
193        func_setter: unsafe extern "C" fn(smp: *mut SCRIPT_MODULE_PARAM),
194        userdata: *mut c_void,
195    ),
196
197    /// 任意のユーザーデータのポインタ
198    /// push_result_function(),push_result_meta_table()の引数の値が格納されます
199    pub userdata: *mut c_void,
200
201    /// メタテーブルの戻り値を追加する
202    /// 任意のメタメソッドのコールバック関数を設定したメタテーブルを返却します
203    /// meta_method_functions : 登録するメタメソッドの一覧 (META_METHOD_FUNCTIONを列挙してメタメソッド名がnullの要素で終端したリストへのポインタ)
204    /// userdata : 任意のユーザーデータのポインタ
205    pub push_result_meta_table: unsafe extern "C" fn(
206        meta_method_functions: *const META_METHOD_FUNCTION,
207        userdata: *mut c_void,
208    ),
209
210    /// 引数のメタテーブルのuserdataのポインタを取得する
211    /// index : 引数の位置(0〜)
212    /// meta_method_functions : 対象のメタテーブルを識別する為のメタメソッドの一覧 ※同一アドレスの場合のみ取得出来ます
213    /// 戻り値 : userdataのポインタ (取得出来ない場合はnullptr)
214    pub get_param_meta_table: unsafe extern "C" fn(
215        index: c_int,
216        meta_method_functions: *mut META_METHOD_FUNCTION,
217    ) -> *mut c_void,
218
219    /// 引数の型を取得します
220    /// index : 引数の位置(0〜)
221    /// 戻り値 : 引数の型
222    pub get_param_type: unsafe extern "C" fn(index: c_int) -> PARAM_TYPE,
223}
224
225/// メタメソッド定義構造体
226#[repr(C)]
227#[derive(Debug, Clone, Copy)]
228pub struct META_METHOD_FUNCTION {
229    /// メタメソッド名 ※luaのメタメソッドを指定出来ます
230    pub method: *const c_char,
231    /// コールバック関数
232    pub func: unsafe extern "C" fn(smp: *mut SCRIPT_MODULE_PARAM),
233}
234
235/// スクリプトモジュール関数定義構造体
236#[repr(C)]
237#[derive(Debug, Clone, Copy)]
238pub struct SCRIPT_MODULE_FUNCTION {
239    /// 関数名
240    pub name: *const u16,
241    /// 関数へのポインタ
242    pub func: unsafe extern "C" fn(smp: *mut SCRIPT_MODULE_PARAM),
243}
244
245/// スクリプトモジュール構造体
246#[repr(C)]
247#[derive(Debug, Clone, Copy)]
248pub struct SCRIPT_MODULE_TABLE {
249    /// スクリプトモジュールの情報
250    pub information: *const u16,
251    /// 登録する関数の一覧 (SCRIPT_MODULE_FUNCTIONを列挙して関数名がnullの要素で終端したリストへのポインタ)
252    pub functions: *const SCRIPT_MODULE_FUNCTION,
253}