Skip to content

Commit b445a7a

Browse files
committed
add set and get templates for EnvState
1 parent f924d65 commit b445a7a

1 file changed

Lines changed: 48 additions & 130 deletions

File tree

src/env_state.hpp

Lines changed: 48 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)