@@ -50,173 +50,97 @@ struct EnvState {
5050 ptr (f_env_state_ctor, f_env_state_dtor)
5151 {}
5252
53- static void set_temperature ( const EnvState &self, double &temperature) {
54- f_env_state_set_temperature (
55- self. ptr . f_arg (),
56- &temperature
57- ) ;
53+ template < typename T = double , typename Func>
54+ static T get_value ( const EnvState &self, Func func) {
55+ T value{};
56+ func (self. ptr . f_arg (), &value);
57+ return value ;
5858 }
5959
60- static auto temp (const EnvState &self) {
61- double temperature;
60+ template <typename T = double , typename Func>
61+ static void set_value (const EnvState &self, Func func, T value) {
62+ func (self.ptr .f_arg (), &value);
63+ }
6264
63- f_env_state_get_temperature (
64- self.ptr .f_arg (),
65- &temperature
66- );
67- return temperature;
65+ static double temp (const EnvState &self) {
66+ return get_value (self, f_env_state_get_temperature);
6867 }
6968
70- static auto rh (const EnvState &self) {
71- double rel_humid;
69+ static void set_temperature (const EnvState &self, double temperature) {
70+ set_value (self, f_env_state_set_temperature, temperature);
71+ }
7272
73- f_env_state_get_rel_humid (
74- self.ptr .f_arg (),
75- &rel_humid
76- );
77- return rel_humid;
73+ static auto rh (const EnvState &self) {
74+ return get_value (self, f_env_state_get_rel_humid);
7875 }
79-
76+
8077 static void set_height (const EnvState &self, const double height) {
81- f_env_state_set_height (
82- self.ptr .f_arg (),
83- &height
84- );
78+ set_value (self, f_env_state_set_height, height);
8579 }
8680
87- static auto get_height (const EnvState &self) {
88- double height;
89-
90- f_env_state_get_height (
91- self.ptr .f_arg (),
92- &height
93- );
94- return height;
81+ static double get_height (const EnvState &self) {
82+ return get_value (self, f_env_state_get_height);
9583 }
9684
97- static void set_additive_kernel_coefficient (const EnvState &self, const double additive_kernel_coefficient) {
98- f_env_state_set_additive_kernel_coefficient (
99- self.ptr .f_arg (),
100- &additive_kernel_coefficient
101- );
85+ static void set_additive_kernel_coefficient (
86+ const EnvState &self,
87+ const double additive_kernel_coefficient)
88+ {
89+ set_value (
90+ self,
91+ f_env_state_set_additive_kernel_coefficient,
92+ additive_kernel_coefficient);
10293 }
103-
104- static auto get_additive_kernel_coefficient (const EnvState &self) {
105- double additive_kernel_coefficient;
106-
107- f_env_state_get_additive_kernel_coefficient (
108- self.ptr .f_arg (),
109- &additive_kernel_coefficient
110- );
111- return additive_kernel_coefficient;
94+ static double get_additive_kernel_coefficient (const EnvState &self) {
95+ return get_value (self, f_env_state_get_additive_kernel_coefficient);
11296 }
11397
11498 static void set_pressure (const EnvState &self, const double pressure) {
115- f_env_state_set_pressure (
116- self.ptr .f_arg (),
117- &pressure
118- );
99+ set_value (self, f_env_state_set_pressure, pressure);
119100 }
120101
121- static auto get_pressure (const EnvState &self) {
122- double pressure;
123-
124- f_env_state_get_pressure (
125- self.ptr .f_arg (),
126- &pressure
127- );
128- return pressure;
102+ static double get_pressure (const EnvState &self) {
103+ return get_value (self, f_env_state_get_pressure);
129104 }
130105
131106 static auto get_elapsed_time (const EnvState &self) {
132- double elapsed_time;
133-
134- f_env_state_get_elapsed_time (
135- self.ptr .f_arg (),
136- &elapsed_time
137- );
138- return elapsed_time;
107+ return get_value (self, f_env_state_get_elapsed_time);
139108 }
140109
141110 static auto get_start_time (const EnvState &self) {
142- double start_time;
143-
144- f_env_state_get_start_time (
145- self.ptr .f_arg (),
146- &start_time
147- );
148- return start_time;
111+ return get_value (self, f_env_state_get_start_time);
149112 }
150113
151114 static auto air_density (const EnvState &self) {
152- double air_density;
153-
154- f_env_state_air_dens (
155- self.ptr .f_arg (),
156- &air_density
157- );
158- return air_density;
115+ return get_value (self, f_env_state_air_dens);
159116 }
160117
161118 static auto air_molar_density (const EnvState &self) {
162- double air_molar_density;
163-
164- f_env_state_air_molar_dens (
165- self.ptr .f_arg (),
166- &air_molar_density
167- );
168- return air_molar_density;
169- }
170-
171- static void set_latitude (const EnvState &self, const double latitude) {
172- f_env_state_set_latitude (
173- self.ptr .f_arg (),
174- &latitude
175- );
119+ return get_value (self, f_env_state_air_molar_dens);
176120 }
177121
178122 static auto get_latitude (const EnvState &self) {
179- double latitude;
180-
181- f_env_state_get_latitude (
182- self.ptr .f_arg (),
183- &latitude
184- );
185- return latitude;
123+ return get_value (self, f_env_state_get_latitude);
186124 }
187125
188- static void set_longitude (const EnvState &self, const double longitude) {
189- f_env_state_set_longitude (
190- self.ptr .f_arg (),
191- &longitude
192- );
126+ static void set_latitude (const EnvState &self, const double latitude) {
127+ set_value (self, f_env_state_set_latitude, latitude);
193128 }
194129
195130 static auto get_longitude (const EnvState &self) {
196- double longitude;
197-
198- f_env_state_get_longitude (
199- self.ptr .f_arg (),
200- &longitude
201- );
202- return longitude;
131+ return get_value (self, f_env_state_get_longitude);
203132 }
204133
205- static void set_altitude (const EnvState &self, const double altitude) {
206- f_env_state_set_altitude (
207- self.ptr .f_arg (),
208- &altitude
209- );
134+ static void set_longitude (const EnvState &self, const double longitude) {
135+ set_value (self, f_env_state_set_longitude, longitude);
210136 }
211137
212138 static auto get_altitude (const EnvState &self) {
213- double altitude;
139+ return get_value (self, f_env_state_get_altitude);
140+ }
214141
215- f_env_state_get_altitude (
216- self.ptr .f_arg (),
217- &altitude
218- );
219- return altitude;
142+ static void set_altitude (const EnvState &self, const double altitude) {
143+ set_value (self, f_env_state_set_altitude, altitude);
220144 }
221145
222146 static auto ppb_to_conc (const EnvState &self, const double ppb) {
@@ -242,13 +166,7 @@ struct EnvState {
242166 }
243167
244168 static auto sat_vapor_pressure (const EnvState &self) {
245- double sat_vapor_pressure;
246-
247- f_env_state_sat_vapor_pressure (
248- self.ptr .f_arg (),
249- &sat_vapor_pressure
250- );
251- return sat_vapor_pressure;
169+ return get_value (self, f_env_state_sat_vapor_pressure);
252170 }
253171
254172};
0 commit comments