LCOV - code coverage report
Current view: top level - wlogjson - file_writer_options_json.hpp (source / functions) Hit Total Coverage
Test: wlog-coverage.info Lines: 11 11 100.0 %
Date: 2019-09-12 Functions: 19 19 100.0 %

          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             : }

Generated by: LCOV version 1.10