@@ -90,6 +90,9 @@ namespace cfg
90
90
// Reset defaults
91
91
virtual void from_default () = 0;
92
92
93
+ // Restore default members
94
+ virtual void restore_defaults () = 0;
95
+
93
96
// Convert to string (optional)
94
97
virtual std::string to_string () const
95
98
{
@@ -151,18 +154,23 @@ namespace cfg
151
154
152
155
// Set default values
153
156
void from_default () override ;
157
+
158
+ // Restore default members
159
+ void restore_defaults () override ;
154
160
};
155
161
156
162
class _bool final : public _base
157
163
{
158
164
atomic_t <bool > m_value;
165
+ bool original_def;
159
166
160
167
public:
161
168
bool def;
162
169
163
170
_bool (node* owner, std::string name, bool def = false , bool dynamic = false )
164
171
: _base(type::_bool, owner, std::move(name), dynamic)
165
172
, m_value(def)
173
+ , original_def(def)
166
174
, def(def)
167
175
{
168
176
}
@@ -177,7 +185,15 @@ namespace cfg
177
185
return m_value;
178
186
}
179
187
180
- void from_default () override ;
188
+ void from_default () override
189
+ {
190
+ m_value = def;
191
+ }
192
+
193
+ void restore_defaults () override
194
+ {
195
+ def = original_def;
196
+ }
181
197
182
198
std::string to_string () const override
183
199
{
@@ -220,14 +236,16 @@ namespace cfg
220
236
class _enum : public _base
221
237
{
222
238
atomic_t <T> m_value;
239
+ T original_def;
223
240
224
241
public:
225
- const T def;
242
+ T def;
226
243
227
- _enum (node* owner, const std::string& name, T value = {}, bool dynamic = false )
244
+ _enum (node* owner, const std::string& name, T def = {}, bool dynamic = false )
228
245
: _base(type::_enum, owner, name, dynamic)
229
- , m_value(value)
230
- , def(value)
246
+ , m_value(def)
247
+ , original_def(def)
248
+ , def(def)
231
249
{
232
250
}
233
251
@@ -256,6 +274,11 @@ namespace cfg
256
274
m_value = def;
257
275
}
258
276
277
+ void restore_defaults () override
278
+ {
279
+ def = original_def;
280
+ }
281
+
259
282
std::string to_string () const override
260
283
{
261
284
std::string result;
@@ -300,6 +323,7 @@ namespace cfg
300
323
using int_type = std::conditional_t <Min >= s32{smin} && Max <= s32{smax}, s32, s64>;
301
324
302
325
atomic_t <int_type> m_value;
326
+ int_type original_def;
303
327
304
328
public:
305
329
int_type def;
@@ -311,6 +335,7 @@ namespace cfg
311
335
_int (node* owner, const std::string& name, int_type def = std::min<int_type>(Max, std::max<int_type>(Min, 0 )), bool dynamic = false )
312
336
: _base(type::_int, owner, name, dynamic)
313
337
, m_value(def)
338
+ , original_def(def)
314
339
, def(def)
315
340
{
316
341
}
@@ -330,6 +355,11 @@ namespace cfg
330
355
m_value = def;
331
356
}
332
357
358
+ void restore_defaults () override
359
+ {
360
+ def = original_def;
361
+ }
362
+
333
363
std::string to_string () const override
334
364
{
335
365
return std::to_string (m_value);
@@ -372,6 +402,7 @@ namespace cfg
372
402
373
403
using float_type = f64 ;
374
404
atomic_t <float_type> m_value;
405
+ float_type original_def;
375
406
376
407
public:
377
408
float_type def;
@@ -383,6 +414,7 @@ namespace cfg
383
414
_float (node* owner, const std::string& name, float_type def = std::min<float_type>(Max, std::max<float_type>(Min, 0 )), bool dynamic = false )
384
415
: _base(type::_int, owner, name, dynamic)
385
416
, m_value(def)
417
+ , original_def(def)
386
418
, def(def)
387
419
{
388
420
}
@@ -402,6 +434,11 @@ namespace cfg
402
434
m_value = def;
403
435
}
404
436
437
+ void restore_defaults () override
438
+ {
439
+ def = original_def;
440
+ }
441
+
405
442
std::string to_string () const override
406
443
{
407
444
std::string result;
@@ -464,6 +501,7 @@ namespace cfg
464
501
using int_type = std::conditional_t <Max <= u32 {umax}, u32 , u64 >;
465
502
466
503
atomic_t <int_type> m_value;
504
+ int_type original_def;
467
505
468
506
public:
469
507
int_type def;
@@ -475,6 +513,7 @@ namespace cfg
475
513
uint (node* owner, const std::string& name, int_type def = std::max<int_type>(Min, 0 ), bool dynamic = false )
476
514
: _base(type::uint, owner, name, dynamic)
477
515
, m_value(def)
516
+ , original_def(def)
478
517
, def(def)
479
518
{
480
519
}
@@ -494,6 +533,11 @@ namespace cfg
494
533
m_value = def;
495
534
}
496
535
536
+ void restore_defaults () override
537
+ {
538
+ def = original_def;
539
+ }
540
+
497
541
std::string to_string () const override
498
542
{
499
543
return std::to_string (m_value);
@@ -538,13 +582,15 @@ namespace cfg
538
582
class string : public _base
539
583
{
540
584
atomic_ptr<std::string> m_value;
585
+ std::string original_def;
541
586
542
587
public:
543
588
std::string def;
544
589
545
590
string (node* owner, std::string name, std::string def = {}, bool dynamic = false )
546
591
: _base(type::string, owner, std::move(name), dynamic)
547
592
, m_value(def)
593
+ , original_def(def)
548
594
, def(std::move(def))
549
595
{
550
596
}
@@ -554,7 +600,15 @@ namespace cfg
554
600
return *m_value.load ().get ();
555
601
}
556
602
557
- void from_default () override ;
603
+ void from_default () override
604
+ {
605
+ m_value = def;
606
+ }
607
+
608
+ void restore_defaults () override
609
+ {
610
+ def = original_def;
611
+ }
558
612
559
613
std::string to_string () const override
560
614
{
@@ -595,7 +649,14 @@ namespace cfg
595
649
m_set = std::move (set);
596
650
}
597
651
598
- void from_default () override ;
652
+ void from_default () override
653
+ {
654
+ m_set = {};
655
+ }
656
+
657
+ void restore_defaults () override
658
+ {
659
+ }
599
660
600
661
std::vector<std::string> to_list () const override
601
662
{
@@ -636,6 +697,10 @@ namespace cfg
636
697
void erase (std::string_view key);
637
698
638
699
void from_default () override ;
700
+
701
+ void restore_defaults () override
702
+ {
703
+ }
639
704
};
640
705
641
706
class node_map_entry final : public map_entry
@@ -665,6 +730,10 @@ namespace cfg
665
730
void set_map (map_of_type<logs::level>&& map);
666
731
667
732
void from_default () override ;
733
+
734
+ void restore_defaults () override
735
+ {
736
+ }
668
737
};
669
738
670
739
struct device_info
@@ -702,5 +771,9 @@ namespace cfg
702
771
void set_map (map_of_type<device_info>&& map);
703
772
704
773
void from_default () override ;
774
+
775
+ void restore_defaults () override
776
+ {
777
+ }
705
778
};
706
779
}
0 commit comments