libobs_wrapper\data\traits/
setters.rs1use crate::{
2 data::ObsDataPointers,
3 run_with_obs,
4 utils::{ObsError, ObsString},
5};
6
7pub trait ObsDataSetters: ObsDataPointers {
8 fn set_string<T: Into<ObsString> + Send + Sync, K: Into<ObsString> + Send + Sync>(
11 &mut self,
12 key: T,
13 value: K,
14 ) -> Result<&mut Self, ObsError> {
15 let key = key.into();
16 let value = value.into();
17
18 let data_ptr = self.as_ptr();
19
20 run_with_obs!(self.runtime(), (data_ptr, key, value), move || {
21 unsafe {
22 libobs::obs_data_set_string(data_ptr.get_ptr(), key.as_ptr().0, value.as_ptr().0)
24 }
25 })?;
26
27 Ok(self)
28 }
29
30 fn set_int<T: Into<ObsString> + Sync + Send>(
33 &mut self,
34 key: T,
35 value: i64,
36 ) -> Result<&mut Self, ObsError> {
37 let key = key.into();
38 let data_ptr = self.as_ptr();
39
40 run_with_obs!(self.runtime(), (key, data_ptr), move || {
41 unsafe {
42 libobs::obs_data_set_int(data_ptr.get_ptr(), key.as_ptr().0, value);
44 }
45 })?;
46
47 Ok(self)
48 }
49
50 fn set_bool<T: Into<ObsString> + Sync + Send>(
53 &mut self,
54 key: T,
55 value: bool,
56 ) -> Result<&mut Self, ObsError> {
57 let key = key.into();
58
59 let data_ptr = self.as_ptr();
60 run_with_obs!(self.runtime(), (key, data_ptr), move || {
61 unsafe {
62 libobs::obs_data_set_bool(data_ptr.get_ptr(), key.as_ptr().0, value);
64 }
65 })?;
66
67 Ok(self)
68 }
69
70 fn set_double<T: Into<ObsString> + Sync + Send>(
73 &mut self,
74 key: T,
75 value: f64,
76 ) -> Result<&mut Self, ObsError> {
77 let key = key.into();
78 let data_ptr = self.as_ptr();
79
80 run_with_obs!(self.runtime(), (key, data_ptr), move || {
81 unsafe {
82 libobs::obs_data_set_double(data_ptr.get_ptr(), key.as_ptr().0, value);
84 }
85 })?;
86
87 Ok(self)
88 }
89}