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