Line data Source code
1 : //
2 : // Author: Vladimir Migashko <migashko@gmail.com>, (C) 2017
3 : //
4 : // Copyright: See COPYING file that comes with this distribution
5 : //
6 : #pragma once
7 :
8 : #include <wlog/writer/file_writer_options.hpp>
9 : #include <wjson/json.hpp>
10 : #include <wjson/name.hpp>
11 :
12 : namespace wlog{
13 :
14 : struct file_writer_options_json
15 : {
16 6 : JSON_NAME(path)
17 6 : JSON_NAME(sync)
18 6 : JSON_NAME(startup_rotate)
19 6 : JSON_NAME(size_limit)
20 6 : JSON_NAME(time_limit)
21 6 : JSON_NAME(rotation)
22 6 : JSON_NAME(rotation_header)
23 6 : JSON_NAME(rotation_footer)
24 6 : JSON_NAME(unixtime_suffix)
25 :
26 : template<int file_writer_options:: *field>
27 : struct bool_getter
28 : {
29 15 : bool operator()(const file_writer_options& opt) const { return opt.*field!=0; }
30 15 : void operator()(file_writer_options& opt, bool value) const { opt.*field = int(value); }
31 : };
32 :
33 : typedef bool_getter<&file_writer_options::sync> sync;
34 : typedef bool_getter<&file_writer_options::startup_rotate> startup_rotate;
35 : typedef bool_getter<&file_writer_options::rotation_header> rotation_header;
36 : typedef bool_getter<&file_writer_options::rotation_footer> rotation_footer;
37 : typedef bool_getter<&file_writer_options::unixtime_suffix> unixtime_suffix;
38 :
39 : typedef wjson::object<
40 : file_writer_options,
41 : wjson::member_list<
42 : wjson::member<n_path, file_writer_options, std::string, &file_writer_options::path>,
43 : wjson::member_p<n_sync, file_writer_options, bool, sync >,
44 : wjson::member_p<n_startup_rotate, file_writer_options, bool, startup_rotate>,
45 : wjson::member<n_size_limit, file_writer_options, long, &file_writer_options::size_limit>,
46 : wjson::member<n_time_limit, file_writer_options, long, &file_writer_options::time_limit>,
47 : wjson::member<n_rotation, file_writer_options, long, &file_writer_options::rotation>,
48 : wjson::member_p<n_rotation_header, file_writer_options, bool, rotation_header>,
49 : wjson::member_p<n_rotation_footer, file_writer_options, bool, rotation_footer>,
50 : wjson::member_p<n_unixtime_suffix, file_writer_options, bool, unixtime_suffix>
51 : >,
52 : wjson::strict_mode
53 : > type;
54 : typedef type::serializer serializer;
55 : typedef type::target target;
56 : typedef type::member_list member_list;
57 : };
58 :
59 : }
|