ts3plugin_sys/
ts3functions.rs

1// Uses lots of alignment which rustfmt destroys
2#![cfg_attr(rustfmt, rustfmt::skip)]
3
4use std::os::raw::*;
5
6use crate::public_definitions::*;
7use crate::plugin_definitions::*;
8
9/// Functions exported to plugin from main binary
10#[repr(C)]
11pub struct Ts3Functions {
12	pub get_client_lib_version:                         extern fn(result: *mut *mut c_char) -> c_uint,
13	pub get_client_lib_version_number:                  extern fn(result: *mut u64) -> c_uint,
14	pub spawn_new_server_connection_handler:            extern fn(port: c_int, result: *mut u64) -> c_uint,
15	pub destroy_server_connection_handler:              extern fn(server_connection_handler_id: u64) -> c_uint,
16
17	/// Error handling
18	pub get_error_message:                              extern fn(error_code: c_uint, error: *mut *mut c_char) -> c_uint,
19
20	/// Memory management
21	pub free_memory:                                    extern fn(pointer: *mut c_void) -> c_uint,
22
23	/// Logging
24	pub log_message:                                    extern fn(log_message: *const c_char, severity: LogLevel, channel: *const c_char, log_id: u64) -> c_uint,
25
26	/// Sound
27	pub get_playback_device_list:                       extern fn(mode_id: *const c_char, result: *mut *mut *mut *mut c_char) -> c_uint,
28	pub get_playback_mode_list:                         extern fn(result: *mut *mut *mut c_char) -> c_uint,
29	pub get_capture_device_list:                        extern fn(mode_id: *const c_char, result: *mut *mut *mut *mut c_char) -> c_uint,
30	pub get_capture_mode_list:                          extern fn(result: *mut *mut *mut c_char) -> c_uint,
31	pub get_default_playback_device:                    extern fn(mode_id: *const c_char, result: *mut *mut *mut c_char) -> c_uint,
32	pub get_default_playback_mode:                      extern fn(result: *mut *mut c_char) -> c_uint,
33	pub get_default_capture_device:                     extern fn(mode_id: *const c_char, result: *mut *mut *mut c_char) -> c_uint,
34	pub get_default_capture_mode:                       extern fn(result: *mut *mut c_char) -> c_uint,
35	pub open_playback_device:                           extern fn(server_connection_handler_id: u64, mode_id: *const c_char, playback_device: *const c_char) -> c_uint,
36	pub open_capture_device:                            extern fn(server_connection_handler_id: u64, mode_id: *const c_char, capture_device: *const c_char) -> c_uint,
37	pub get_current_playback_device_name:               extern fn(server_connection_handler_id: u64, result: *mut *mut c_char, is_default: *mut c_int) -> c_uint,
38	pub get_current_play_back_mode:                     extern fn(server_connection_handler_id: u64, result: *mut *mut c_char) -> c_uint,
39	pub get_current_capture_device_name:                extern fn(server_connection_handler_id: u64, result: *mut *mut c_char, is_default: *mut c_int) -> c_uint,
40	pub get_current_capture_mode:                       extern fn(server_connection_handler_id: u64, result: *mut *mut c_char) -> c_uint,
41	pub initiate_graceful_playback_shutdown:            extern fn(server_connection_handler_id: u64) -> c_uint,
42	pub close_playback_device:                          extern fn(server_connection_handler_id: u64) -> c_uint,
43	pub close_capture_device:                           extern fn(server_connection_handler_id: u64) -> c_uint,
44	pub activate_capture_device:                        extern fn(server_connection_handler_id: u64) -> c_uint,
45	pub play_wave_file_handle:                          extern fn(server_connection_handler_id: u64, path: *const c_char, play_loop: c_int, wave_handle: *mut u64) -> c_uint,
46	pub pause_wave_file_handle:                         extern fn(server_connection_handler_id: u64, wave_handle: u64, pause: c_int) -> c_uint,
47	pub close_wave_file_handle:                         extern fn(server_connection_handler_id: u64, wave_handle: u64) -> c_uint,
48	pub play_wave_file:                                 extern fn(server_connection_handler_id: u64, path: *const c_char) -> c_uint,
49	pub register_custom_device:                         extern fn(device_id: *const c_char, device_display_name: *const c_char, cap_frequency: c_int, cap_channels: c_int, play_frequency: c_int, play_channels: c_int) -> c_uint,
50	pub unregister_custom_device:                       extern fn(device_id: *const c_char) -> c_uint,
51	pub process_custom_capture_data:                    extern fn(device_name: *const c_char, buffer: *const c_short, samples: c_int) -> c_uint,
52	pub acquire_custom_playback_data:                   extern fn(device_name: *const c_char, buffer: *mut c_short, samples: c_int) -> c_uint,
53
54	/// Preprocessor
55	pub get_pre_processor_info_value_float:             extern fn(server_connection_handler_id: u64, ident: *const c_char, result: *mut c_float) -> c_uint,
56	pub get_pre_processor_config_value:                 extern fn(server_connection_handler_id: u64, ident: *const c_char, result: *mut *mut c_char) -> c_uint,
57	pub set_pre_processor_config_value:                 extern fn(server_connection_handler_id: u64, ident: *const c_char, value: *const c_char) -> c_uint,
58
59	/// Encoder
60	pub get_encode_config_value:                        extern fn(server_connection_handler_id: u64, ident: *const c_char, result: *mut *mut c_char) -> c_uint,
61
62	/// Playback
63	pub get_playback_config_value_as_float:             extern fn(server_connection_handler_id: u64, ident: *const c_char, result: *mut c_float) -> c_uint,
64	pub set_playback_config_value:                      extern fn(server_connection_handler_id: u64, ident: *const c_char, value: *const c_char) -> c_uint,
65	pub set_client_volume_modifier:                     extern fn(server_connection_handler_id: u64, client_id: u16, value: c_float) -> c_uint,
66
67	/// Recording
68	pub start_voice_recording:                          extern fn(server_connection_handler_id: u64) -> c_uint,
69	pub stop_voice_recording:                           extern fn(server_connection_handler_id: u64) -> c_uint,
70
71	/// 3D sound positioning
72	pub systemset3d_listener_attributes:                extern fn(server_connection_handler_id: u64, position: *const Ts3Vector, forward: *const Ts3Vector, up: *const Ts3Vector) -> c_uint,
73	pub set3d_wave_attributes:                          extern fn(server_connection_handler_id: u64, wave_handle: u64, position: *const Ts3Vector) -> c_uint,
74	pub systemset3d_settings:                           extern fn(server_connection_handler_id: u64, distance_factor: c_float, rolloff_scale: c_float) -> c_uint,
75	pub channelset3d_attributes:                        extern fn(server_connection_handler_id: u64, client_id: u16, position: *const Ts3Vector) -> c_uint,
76
77	/// Interaction with the server
78	pub start_connection:                               extern fn(server_connection_handler_id: u64, identity: *const c_char, ip: *const c_char, port: c_uint, nickname: *const c_char, default_channel_array: *const *const c_char, default_channel_password: *const c_char, server_password: *const c_char) -> c_uint,
79	pub stop_connection:                                extern fn(server_connection_handler_id: u64, quit_message: *const c_char) -> c_uint,
80	pub request_client_move:                            extern fn(server_connection_handler_id: u64, client_id: u16, new_channel_id: u64, password: *const c_char, return_code: *const c_char) -> c_uint,
81	pub request_client_variables:                       extern fn(server_connection_handler_id: u64, client_id: u16, return_code: *const c_char) -> c_uint,
82	pub request_client_kick_from_channel:               extern fn(server_connection_handler_id: u64, client_id: u16, kick_reason: *const c_char, return_code: *const c_char) -> c_uint,
83	pub request_client_kick_from_server:                extern fn(server_connection_handler_id: u64, client_id: u16, kick_reason: *const c_char, return_code: *const c_char) -> c_uint,
84	pub request_channel_delete:                         extern fn(server_connection_handler_id: u64, channel_id: u64, force: c_int, return_code: *const c_char) -> c_uint,
85	pub request_channel_move:                           extern fn(server_connection_handler_id: u64, channel_id: u64, new_channel_parent_id: u64, new_channel_order: u64, return_code: *const c_char) -> c_uint,
86	pub request_send_private_text_msg:                  extern fn(server_connection_handler_id: u64, message: *const c_char, target_client_id: u16, return_code: *const c_char) -> c_uint,
87	pub request_send_channel_text_msg:                  extern fn(server_connection_handler_id: u64, message: *const c_char, target_channel_id: u64, return_code: *const c_char) -> c_uint,
88	pub request_send_server_text_msg:                   extern fn(server_connection_handler_id: u64, message: *const c_char, return_code: *const c_char) -> c_uint,
89	pub request_connection_info:                        extern fn(server_connection_handler_id: u64, client_id: u16, return_code: *const c_char) -> c_uint,
90	pub request_client_set_whisper_list:                extern fn(server_connection_handler_id: u64, client_id: u16, target_channel_id_array: *const u64, target_client_id_array: *const u16, return_code: *const c_char) -> c_uint,
91	pub request_channel_subscribe:                      extern fn(server_connection_handler_id: u64, channel_id_array: *const u64, return_code: *const c_char) -> c_uint,
92	pub request_channel_subscribe_all:                  extern fn(server_connection_handler_id: u64, return_code: *const c_char) -> c_uint,
93	pub request_channel_unsubscribe:                    extern fn(server_connection_handler_id: u64, channel_id_array: *const u64, return_code: *const c_char) -> c_uint,
94	pub request_channel_unsubscribe_all:                extern fn(server_connection_handler_id: u64, return_code: *const c_char) -> c_uint,
95	pub request_channel_description:                    extern fn(server_connection_handler_id: u64, channel_id: u64, return_code: *const c_char) -> c_uint,
96	pub request_mute_clients:                           extern fn(server_connection_handler_id: u64, client_id_array: *const u16, return_code: *const c_char) -> c_uint,
97	pub requset_unmute_clients:                         extern fn(server_connection_handler_id: u64, client_id_array: *const u16, return_code: *const c_char) -> c_uint,
98	pub request_client_poke:                            extern fn(server_connection_handler_id: u64, client_id: u16, message: *const c_char, return_code: *const c_char) -> c_uint,
99	pub request_client_ids:                             extern fn(server_connection_handler_id: u64, client_unique_identifier: *const c_char, return_code: *const c_char) -> c_uint,
100	pub client_chat_closed:                             extern fn(server_connection_handler_id: u64, client_unique_identifier: *const c_char, client_id: u16, return_code: *const c_char) -> c_uint,
101	pub client_chat_composing:                          extern fn(server_connection_handler_id: u64, client_id: u16, return_code: *const c_char) -> c_uint,
102	pub request_server_temporary_password_add:          extern fn(server_connection_handler_id: u64, password: *const c_char, description: *const c_char, duration: u64, target_channel_id: u64, target_channel_pw: *const c_char, return_code: *const c_char) -> c_uint,
103	pub request_server_temporary_password_del:          extern fn(server_connection_handler_id: u64, password: *const c_char, return_code: *const c_char) -> c_uint,
104	pub request_server_temporary_password_list:         extern fn(server_connection_handler_id: u64, return_code: *const c_char) -> c_uint,
105
106	/// Access clientlib information
107
108	/// Query own client id
109	pub get_client_id:                                  extern fn(server_connection_handler_id: u64, result: *mut u16) -> c_uint,
110
111	/// Client info
112	pub get_client_self_variable_as_int:                extern fn(server_connection_handler_id: u64, flag: usize, result: *mut c_int) -> c_uint,
113	pub get_client_self_variable_as_string:             extern fn(server_connection_handler_id: u64, flag: usize, result: *mut *mut c_char) -> c_uint,
114	pub set_client_self_variable_as_int:                extern fn(server_connection_handler_id: u64, flag: usize, value: c_int) -> c_uint,
115	pub set_client_self_variable_as_string:             extern fn(server_connection_handler_id: u64, flag: usize, value: *const c_char) -> c_uint,
116	pub flush_client_self_updates:                      extern fn(server_connection_handler_id: u64, return_code: *const c_char) -> c_uint,
117	pub get_client_variable_as_int:                     extern fn(server_connection_handler_id: u64, client_id: u16, flag: usize, result: *mut c_int) -> c_uint,
118	pub get_client_variable_as_uint64:                  extern fn(server_connection_handler_id: u64, client_id: u16, flag: usize, result: *mut u64) -> c_uint,
119	pub get_client_variable_as_string:                  extern fn(server_connection_handler_id: u64, client_id: u16, flag: usize, result: *mut *mut c_char) -> c_uint,
120	pub get_client_list:                                extern fn(server_connection_handler_id: u64, result: *mut *mut u16) -> c_uint,
121	pub get_channel_of_client:                          extern fn(server_connection_handler_id: u64, client_id: u16, result: *mut u64) -> c_uint,
122
123	/// Channel info
124	pub get_channel_variable_as_int:                    extern fn(server_connection_handler_id: u64, channel_id: u64, flag: usize, result: *mut c_int) -> c_uint,
125	pub get_channel_variable_as_uint64:                 extern fn(server_connection_handler_id: u64, channel_id: u64, flag: usize, result: *mut u64) -> c_uint,
126	pub get_channel_variable_as_string:                 extern fn(server_connection_handler_id: u64, channel_id: u64, flag: usize, result: *mut *mut c_char) -> c_uint,
127	pub get_channel_id_from_channel_names:              extern fn(server_connection_handler_id: u64, channel_name_array: *mut *mut c_char, result: *mut u64) -> c_uint,
128	pub set_channel_variable_as_int:                    extern fn(server_connection_handler_id: u64, channel_id: u64, flag: usize, value: c_int) -> c_uint,
129	pub set_channel_variable_as_uint64:                 extern fn(server_connection_handler_id: u64, channel_id: u64, flag: usize, value: u64) -> c_uint,
130	pub set_channel_variable_as_string:                 extern fn(server_connection_handler_id: u64, channel_id: u64, flag: usize, value: *const c_char) -> c_uint,
131	pub flush_channel_updates:                          extern fn(server_connection_handler_id: u64, channel_id: u64, return_code: *const c_char) -> c_uint,
132	pub flush_channel_creation:                         extern fn(server_connection_handler_id: u64, channel_id: u64, return_code: *const c_char) -> c_uint,
133	pub get_channel_list:                               extern fn(server_connection_handler_id: u64, result: *mut *mut u64) -> c_uint,
134	pub get_channel_client_list:                        extern fn(server_connection_handler_id: u64, channel_id: u64, result: *mut *mut u16) -> c_uint,
135	pub get_parent_channel_of_channel:                  extern fn(server_connection_handler_id: u64, channel_id: u64, result: *mut u64) -> c_uint,
136
137	/// Server info
138	pub get_server_connection_handler_list:             extern fn(result: *mut *mut u64) -> c_uint,
139	pub get_server_variable_as_int:                     extern fn(server_connection_handler_id: u64, flag: usize, result: *mut c_int) -> c_uint,
140	pub get_server_variable_as_uint64:                  extern fn(server_connection_handler_id: u64, flag: usize, result: *mut u64) -> c_uint,
141	pub get_server_variable_as_string:                  extern fn(server_connection_handler_id: u64, flag: usize, result: *mut *mut c_char) -> c_uint,
142	pub request_server_variables:                       extern fn(server_connection_handler_id: u64) -> c_uint,
143
144	/// Connection info
145	pub get_connection_status:                          extern fn(server_connection_handler_id: u64, result: *mut c_int) -> c_uint,
146	pub get_connection_variable_as_uint64:              extern fn(server_connection_handler_id: u64, client_id: u16, flag: usize, result: *mut u64) -> c_uint,
147	pub get_connection_variable_as_double:              extern fn(server_connection_handler_id: u64, client_id: u16, flag: usize, result: *mut c_double) -> c_uint,
148	pub get_connection_variable_as_string:              extern fn(server_connection_handler_id: u64, client_id: u16, flag: usize, result: *mut *mut c_char) -> c_uint,
149	pub clean_up_connection_info:                       extern fn(server_connection_handler_id: u64, client_id: u16) -> c_uint,
150
151	/// Client related
152	pub request_client_dbid_from_uid:                   extern fn(server_connection_handler_id: u64, client_unique_identifier: *const c_char, return_code: *const c_char) -> c_uint,
153	pub request_client_name_from_uid:                   extern fn(server_connection_handler_id: u64, client_unique_identifier: *const c_char, return_code: *const c_char) -> c_uint,
154	pub request_client_name_from_dbid:                  extern fn(server_connection_handler_id: u64, client_database_id: u64, return_code: *const c_char) -> c_uint,
155	pub request_client_edit_description:                extern fn(server_connection_handler_id: u64, client_id: u16, client_description: *const c_char, return_code: *const c_char) -> c_uint,
156	pub request_client_set_is_talker:                   extern fn(server_connection_handler_id: u64, client_id: u16, is_talker: c_int, return_code: *const c_char) -> c_uint,
157	pub request_is_talker:                              extern fn(server_connection_handler_id: u64, is_talker_request: c_int, is_talker_request_message: *const c_char, return_code: *const c_char) -> c_uint,
158
159	/// Plugin related
160	pub request_send_client_query_command:              extern fn(server_connection_handler_id: u64, command: *const c_char, return_code: *const c_char) -> c_uint,
161
162	/// Filetransfer
163	pub get_transfer_file_name:                         extern fn(transfer_id: u16, result: *mut *mut c_char) -> c_uint,
164	pub get_transfer_file_path:                         extern fn(transfer_id: u16, result: *mut *mut c_char) -> c_uint,
165	pub get_transfer_file_size:                         extern fn(transfer_id: u16, result: *mut u64) -> c_uint,
166	pub get_transfer_file_size_done:                    extern fn(transfer_id: u16, result: *mut u64) -> c_uint,
167	/// 1 == upload, 0 == download
168	pub is_transfer_sender:                             extern fn(transfer_id: u16, result: *mut c_int) -> c_uint,
169	pub get_transfer_status:                            extern fn(transfer_id: u16, result: *mut c_int) -> c_uint,
170	pub get_current_transfer_speed:                     extern fn(transfer_id: u16, result: *mut c_float) -> c_uint,
171	pub get_average_transfer_speed:                     extern fn(transfer_id: u16, result: *mut c_float) -> c_uint,
172	pub get_transfer_run_time:                          extern fn(transfer_id: u16, result: *mut u64) -> c_uint,
173	pub send_file:                                      extern fn(server_connection_handler_id: u64, channel_id: u64, channel_pw: *const c_char, file: *const c_char, overwrite: c_int, resume: c_int, source_directory: *const c_char, result: *mut u16, return_code: *const c_char) -> c_uint,
174	pub request_file:                                   extern fn(server_connection_handler_id: u64, channel_id: u64, channel_pw: *const c_char, file: *const c_char, overwrite: c_int, resume: c_int, destination_directory: *const c_char, result: *mut u16, return_code: *const c_char) -> c_uint,
175	pub halt_transfer:                                  extern fn(server_connection_handler_id: u64, transfer_id: u16, delete_unfinished_file: c_int, return_code: *const c_char) -> c_uint,
176	pub request_file_list:                              extern fn(server_connection_handler_id: u64, channel_id: u64, channel_pw: *const c_char, path: *const c_char, return_code: *const c_char) -> c_uint,
177	pub request_file_info:                              extern fn(server_connection_handler_id: u64, channel_id: u64, channel_pw: *const c_char, file: *const c_char, return_code: *const c_char) -> c_uint,
178	pub request_delete_file:                            extern fn(server_connection_handler_id: u64, channel_id: u64, channel_pw: *const c_char, file: *mut *const c_char, return_code: *const c_char) -> c_uint,
179	pub request_create_directory:                       extern fn(server_connection_handler_id: u64, channel_id: u64, channel_pw: *const c_char, directory_path: *const char, return_code: *const char) -> c_uint,
180	pub requset_rename_file:                            extern fn(server_connection_handler_id: u64, from_channel_id: u64, channel_pw: *const c_char, to_channel_id: u64, to_channel_pw: *const c_char, old_file: *const c_char, new_file: *const c_char, return_code: *const c_char) -> c_uint,
181
182	/// Offline message management
183	pub request_message_add:                            extern fn(server_connection_handler_id: u64, to_client_uid: *const c_char, subject: *const c_char, message: *const c_char, return_code: *const c_char) -> c_uint,
184	pub request_message_del:                            extern fn(server_connection_handler_id: u64, message_id: u64, return_code: *const c_char) -> c_uint,
185	pub request_message_get:                            extern fn(server_connection_handler_id: u64, message_id: u64, return_code: *const c_char) -> c_uint,
186	pub request_message_list:                           extern fn(server_connection_handler_id: u64, return_code: *const c_char) -> c_uint,
187	pub request_message_update_flag:                    extern fn(server_connection_handler_id: u64, message_id: u64, flag: c_int, return_code: *const c_char) -> c_uint,
188
189	/// Interacting with the server - confirming passwords
190	pub verify_server_password:                         extern fn(server_connection_handler_id: u64, server_password: *const c_char, return_code: *const c_char) -> c_uint,
191	pub verify_channel_password:                        extern fn(server_connection_handler_id: u64, channel_id: u64, channel_password: *const c_char, return_code: *const c_char) -> c_uint,
192
193	/// Interacting with the server - banning
194	pub banclient:                                      extern fn(server_connection_handler_id: u64, client_id: u16, time_in_seconds: u64, ban_reason: *const c_char, return_code: *const c_char) -> c_uint,
195	pub banadd:                                         extern fn(server_connection_handler_id: u64, ip_reg_exp: *const c_char, name_regexp: *const c_char, unique_identity: *const c_char, myts_id: *const c_char, time_in_seconds: u64, ban_reason: *const c_char, return_code: *const c_char) -> c_uint,
196	pub banclient_dbid:                                 extern fn(server_connection_handler_id: u64, client_dbid: u64, time_in_seconds: u64, ban_reason: *const c_char, return_code: *const c_char) -> c_uint,
197	pub bandel:                                         extern fn(server_connection_handler_id: u64, ban_id: u64, return_code: *const c_char) -> c_uint,
198	pub bandelall:                                      extern fn(server_connection_handler_id: u64, return_code: *const c_char) -> c_uint,
199	pub request_ban_list:                               extern fn(server_connection_handler_id: u64, start: u64, duration: c_uint, return_code: *const c_char) -> c_uint,
200
201	/// Interacting with the server - complain
202	pub request_complain_add:                           extern fn(server_connection_handler_id: u64, target_client_database_id: u64, complain_reason: *const c_char, return_code: *const c_char) -> c_uint,
203	pub request_complain_del:                           extern fn(server_connection_handler_id: u64, target_client_database_id: u64, from_client_database_id: u64, return_code: *const c_char) -> c_uint,
204	pub request_complain_del_all:                       extern fn(server_connection_handler_id: u64, target_client_database_id: u64, return_code: *const c_char) -> c_uint,
205	pub request_complain_list:                          extern fn(server_connection_handler_id: u64, target_client_database_id: u64, return_code: *const c_char) -> c_uint,
206
207	/// Permissions
208	pub request_server_group_list:                      extern fn(server_connection_handler_id: u64, return_code: *const c_char) -> c_uint,
209	pub request_server_group_add:                       extern fn(server_connection_handler_id: u64, group_name: *const c_char, group_type: c_int, return_code: *const c_char) -> c_uint,
210	pub request_server_group_del:                       extern fn(server_connection_handler_id: u64, server_group_id: u64, force: c_int, return_code: *const c_char) -> c_uint,
211	pub request_server_group_add_client:                extern fn(server_connection_handler_id: u64, server_group_id: u64, client_database_id: u64, return_code: *const c_char) -> c_uint,
212	pub request_server_group_del_client:                extern fn(server_connection_handler_id: u64, server_group_id: u64, client_database_id: u64, return_code: *const c_char) -> c_uint,
213	pub request_server_groups_by_client_id:             extern fn(server_connection_handler_id: u64, client_database_id: u64, return_code: *const c_char) -> c_uint,
214	pub request_server_group_add_perm:                  extern fn(server_connection_handler_id: u64, server_group_id: u64, continue_on_error: c_int, permission_id_array: *const c_uint, permission_value_array: *const c_int, permission_negated_array: *const c_int, permission_skip_array: *const c_int, array_size: c_int, return_code: *const c_char) -> c_uint,
215	pub request_server_group_del_perm:                  extern fn(server_connection_handler_id: u64, server_group_id: u64, continue_on_error: c_int, permission_id_array: *const c_uint, array_size: c_int, return_code: *const c_char) -> c_uint,
216	pub request_server_group_perm_list:                 extern fn(server_connection_handler_id: u64, server_group_id: u64, return_code: *const c_char) -> c_uint,
217	pub request_server_group_client_list:               extern fn(server_connection_handler_id: u64, server_group_id: u64, with_names: c_int, return_code: *const c_char) -> c_uint,
218	pub request_channel_group_list:                     extern fn(server_connection_handler_id: u64, return_code: *const c_char) -> c_uint,
219	pub request_channel_group_add:                      extern fn(server_connection_handler_id: u64, group_name: *const c_char, group_type: c_int, return_code: *const c_char) -> c_uint,
220	pub request_channel_group_del:                      extern fn(server_connection_handler_id: u64, channel_group_id: u64, force: c_int, return_code: *const c_char) -> c_uint,
221	pub request_channel_group_add_perm:                 extern fn(server_connection_handler_id: u64, channel_group_id: u64, continue_on_error: c_int, permission_id_array: *const c_uint, permission_value_array: *const c_int, array_size: c_int, return_code: *const c_char) -> c_uint,
222	pub request_channel_group_del_perm:                 extern fn(server_connection_handler_id: u64, channel_group_id: u64, continue_on_error: c_int, permission_id_array: *const c_uint, array_size: c_int, return_code: *const c_char) -> c_uint,
223	pub request_channel_group_perm_list:                extern fn(server_connection_handler_id: u64, channel_group_id: u64, return_code: *const c_char) -> c_uint,
224	pub request_set_client_channel_group:               extern fn(server_connection_handler_id: u64, channel_group_id_array: *const u64, channel_id_array: *const u64, client_database_id_array: *const u64, array_size: c_int, return_code: *const c_char) -> c_uint,
225	pub request_channel_add_perm:                       extern fn(server_connection_handler_id: u64, channel_id: u64, permission_id_array: *const c_uint, permission_value_array: *const c_int, array_size: c_int, return_code: *const c_char) -> c_uint,
226	pub request_channel_del_perm:                       extern fn(server_connection_handler_id: u64, channel_id: u64, permission_id_array: *const c_uint, array_size: c_int, return_code: *const c_char) -> c_uint,
227	pub request_channel_perm_list:                      extern fn(server_connection_handler_id: u64, channel_id: u64, return_code: *const c_char) -> c_uint,
228	pub request_client_add_perm:                        extern fn(server_connection_handler_id: u64, client_database_id: u64, permission_id_array: *const c_uint, permission_value_array: *const c_int, permission_skip_array: *const c_int, array_size: c_int, return_code: *const c_char) -> c_uint,
229	pub request_client_del_perm:                        extern fn(server_connection_handler_id: u64, client_database_id: u64, permission_id_array: *const c_uint, array_size: c_int, return_code: *const c_char) -> c_uint,
230	pub request_client_perm_list:                       extern fn(server_connection_handler_id: u64, client_database_id: u64, return_code: *const c_char) -> c_uint,
231	pub request_channel_client_add_perm:                extern fn(server_connection_handler_id: u64, channel_id: u64, client_database_id: u64, permission_id_array: *const c_uint, permission_value_array: *const c_int, array_size: c_int, return_code: *const c_char) -> c_uint,
232	pub request_channel_client_del_perm:                extern fn(server_connection_handler_id: u64, channel_id: u64, client_database_id: u64, permission_id_array: *const c_uint, array_size: c_int, return_code: *const c_char) -> c_uint,
233	pub request_channel_client_perm_list:               extern fn(server_connection_handler_id: u64, channel_id: u64, client_database_id: u64, return_code: *const c_char) -> c_uint,
234	pub priviledge_key_use:                             extern fn(server_connection_handler_id: u64, token_key: *const c_char, return_code: *const c_char) -> c_uint,
235	pub request_permission_list:                        extern fn(server_connection_handler_id: u64, return_code: *const c_char) -> c_uint,
236	pub request_permission_overview:                    extern fn(server_connection_handler_id: u64, client_dbid: u64, channel_id: u64, return_code: *const c_char) -> c_uint,
237
238	/// Helper functions
239	pub client_property_string_to_flag:                 extern fn(client_property_string: *const c_char, result_flag: *mut usize) -> c_uint,
240	pub channel_property_string_to_flag:                extern fn(channel_property_string: *const c_char, result_flag: *mut usize) -> c_uint,
241	pub server_property_string_to_flag:                 extern fn(server_property_string: *const c_char, result_flag: *mut usize) -> c_uint,
242
243	/// Client functions
244	pub get_app_path:                                   extern fn(path: *mut c_char, max_len: usize),
245	pub get_resources_path:                             extern fn(path: *mut c_char, max_len: usize),
246	pub get_config_path:                                extern fn(path: *mut c_char, max_len: usize),
247	pub get_plugin_path:                                extern fn(path: *mut c_char, max_len: usize, plugin_id: *const c_char),
248	pub get_current_server_connection_handler_id:       extern fn() -> u64,
249	pub print_message:                                  extern fn(server_connection_handler_id: u64, message: *const c_char, message_target: MessageTarget),
250	pub print_message_to_current_tab:                   extern fn(message: *const c_char),
251	pub urls_to_bb:                                     extern fn(text: *const c_char, result: *mut c_char, max_len: usize),
252	pub send_plugin_command:                            extern fn(server_connection_handler_id: u64, plugin_id: *const c_char, command: *const c_char, target_mode: c_int, target_ids: *const u16, return_code: *const c_char),
253	pub get_directories:                                extern fn(path: *const c_char, result: *mut c_char, max_len: usize),
254	pub get_server_connect_info:                        extern fn(sc_handler_id: u64, host: *mut c_char, port: *mut c_ushort, password: *mut c_char, max_len: usize) -> c_uint,
255	pub get_channel_connection_info:                    extern fn(sc_handler_id: u64, channel_id: u64, path: *mut c_char, password: *mut c_char, max_len: usize) -> c_uint,
256	pub create_return_code:                             extern fn(plugin_id: *const c_char, return_code: *mut c_char, max_len: usize),
257	pub request_info_update:                            extern fn(sc_handler_id: u64, item_type: ItemType, item_id: u64) -> c_uint,
258	pub get_server_version:                             extern fn(sc_handler_id: u64) -> u64,
259	pub is_whispering:                                  extern fn(sc_handler_id: u64, client_id: u16, result: *mut c_int) -> c_uint,
260	pub is_receiving_whisper:                           extern fn(sc_handler_id: u64, client_id: u16, result: *mut c_int) -> c_uint,
261	pub get_avatar:                                     extern fn(sc_handler_id: u64, client_id: u16, result: *mut c_char, max_len: usize) -> c_uint,
262	pub set_plugin_menu_enabled:                        extern fn(plugin_id: *const c_char, menu_id: c_int, enabled: c_int),
263	pub show_hotkey_setup:                              extern fn(),
264	pub request_hotkey_input_dialog:                    extern fn(plugin_id: *const c_char, *const c_char, c_int, *mut c_void),
265	pub get_hotkey_from_keyword:                        extern fn(plugin_id: *const c_char, keywords: *mut *const c_char, hotkeys: *mut *mut c_char, array_len: usize, hotkey_buf_size: usize) -> c_uint,
266	pub get_client_display_name:                        extern fn(sc_handler_id: u64, client_id: u16, result: *mut c_char, max_len: usize) -> c_uint,
267	pub get_bookmark_list:                              extern fn(list: *mut *mut BookmarkList) -> c_uint,
268	pub get_profile_list:                               extern fn(profile: GuiProfile, default_profile_idx: *mut c_int, result: *mut *mut *mut c_char) -> c_uint,
269	pub gui_connect:                                    extern fn(connect_tab: ConnectTab, server_label: *const c_char, server_address: *const c_char, server_password: *const c_char, nickname: *const c_char, channel: *const c_char, channel_password: *const c_char, capture_profile: *const c_char, playback_profile: *const c_char, hotkey_profile: *const c_char, sound_profile: *const c_char, user_identity: *const c_char, one_time_key: *const c_char, phonetic_name: *const c_char, sc_handler_id: *mut u64) -> c_uint,
270	pub gui_connect_bookmark:                           extern fn(connect_tab: ConnectTab, bookmarkuuid: *const c_char, sc_handler_id: *mut u64) -> c_uint,
271	pub create_bookmark:                                extern fn(bookmarkuuid: *const c_char, server_label: *const c_char, server_address: *const c_char, server_password: *const c_char, nickname: *const c_char, channel: *const c_char, channel_password: *const c_char, capture_profile: *const c_char, playback_profile: *const c_char, hotkey_profile: *const c_char, sound_profile: *const c_char, unique_user_id: *const c_char, one_time_key: *const c_char, phonetic_name: *const c_char) -> c_uint,
272	pub get_permission_id_by_name:                      extern fn(server_connection_handler_id: u64, permission_name: *const c_char, result: *mut c_uint) -> c_uint,
273	pub get_client_needed_permission:                   extern fn(server_connection_handler_id: u64, permission_name: *const c_char, result: *mut c_int) -> c_uint,
274	pub notify_key_event:                               extern fn(plugin_id: *const c_char, key_identifier: *const c_char, up_down: c_int),
275
276	/// Single-Track/Multi-Track recording
277	pub start_recording:                                extern fn(server_connection_handler_id: u64, multitrack: c_int, no_file_selector: c_int, path: *const c_char) -> c_uint,
278	pub stop_recording:                                 extern fn(server_connection_handler_id: u64) -> c_uint,
279
280	/// Convenience functions
281	pub request_clients_move:                           extern fn(server_connection_handler_id: u64, client_id_array: *const u16, new_channel_id: u64, password: *const c_char, return_code: *const c_char) -> c_uint,
282	pub request_clients_kick_from_channel:              extern fn(server_connection_handler_id: u64, client_id_array: *const u16, kick_reason: *const c_char, return_code: *const c_char) -> c_uint,
283	pub request_clients_kick_from_server:               extern fn(server_connection_handler_id: u64, client_id_array: *const u16, kick_reason: *const c_char, return_code: *const c_char) -> c_uint,
284	pub request_mute_clients_temporary:                 extern fn(server_connection_handler_id: u64, client_id_array: *const u16, return_code: *const c_char) -> c_uint,
285	pub request_unmute_clients_temporary:               extern fn(server_connection_handler_id: u64, client_id_array: *const u16, return_code: *const c_char) -> c_uint,
286	pub get_permission_name_by_id:                      extern fn(sc_handler_id: u64, permission_id: c_uint, result: *mut c_char, max_len: usize) -> c_uint,
287	pub client_property_flag_to_string:                 extern fn(client_property_flag: usize, result_string: *mut *mut c_char) -> c_uint,
288	pub channel_property_flag_to_string:                extern fn(client_property_flag: usize, result_string: *mut *mut c_char) -> c_uint,
289	pub server_property_flag_to_string:                 extern fn(client_property_flag: usize, result_string: *mut *mut c_char) -> c_uint,
290
291	/// Server editing
292	pub set_server_variable_as_int:                     extern fn(server_connection_handler_id: u64, flag: usize, value: c_int) -> c_uint,
293	pub set_server_variable_as_uint64:                  extern fn(server_connection_handler_id: u64, flag: usize, value: u64) -> c_uint,
294	pub set_server_variable_as_double:                  extern fn(server_connection_handler_id: u64, flag: usize, value: f64) -> c_uint,
295	pub set_server_variable_as_string:                  extern fn(server_connection_handler_id: u64, flag: usize, value: *const c_char) -> c_uint,
296	pub flush_server_updates:                           extern fn(server_connection_handler_id: u64, return_code: *const c_char) -> c_uint,
297
298	/// Server/Channel group helper functions
299	pub get_server_group_id_by_name:                    extern fn(server_connection_handler_id: u64, group_name: *const c_char, result: *mut c_uint) -> c_uint,
300	pub get_server_group_name_by_id:                    extern fn(sc_handler_id: u64, group_id: c_uint, result: *mut c_char, max_len: usize) -> c_uint,
301	pub get_channel_group_id_by_name:                   extern fn(server_connection_handler_id: u64, group_name: *const c_char, result: *mut c_uint) -> c_uint,
302	pub get_channel_group_name_by_id:                   extern fn(sc_handler_id: u64, group_id: c_uint, result: *mut c_char, max_len: usize) -> c_uint,
303}