LCOV - code coverage report
Current view: top level - src/libs/tools/include/merging - mergetask.hpp (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 19 19 100.0 %
Date: 2019-09-12 12:28:41 Functions: 5 5 100.0 %

          Line data    Source code
       1             : /**
       2             :  * @file
       3             :  *
       4             :  * @brief Models a merge task
       5             :  *
       6             :  * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
       7             :  *
       8             :  */
       9             : 
      10             : #ifndef MERGETASK_HPP_
      11             : #define MERGETASK_HPP_
      12             : 
      13             : #include <kdb.h>
      14             : 
      15             : 
      16             : namespace kdb
      17             : {
      18             : 
      19             : namespace tools
      20             : {
      21             : 
      22             : namespace merging
      23             : {
      24             : 
      25        8172 : class MergeKeys
      26             : {
      27             : public:
      28             :         const KeySet keys;
      29             :         const Key parent;
      30             : 
      31             : protected:
      32        8172 :         MergeKeys (const KeySet & _keys, const Key & _parentKey) : keys (_keys), parent (_parentKey)
      33             :         {
      34        2724 :         }
      35             : };
      36             : 
      37         908 : class BaseMergeKeys : public MergeKeys
      38             : {
      39             : public:
      40         908 :         BaseMergeKeys (const KeySet & _keys, const Key & _parentKey) : MergeKeys (_keys, _parentKey)
      41             :         {
      42             :         }
      43             : };
      44             : 
      45         908 : class TheirMergeKeys : public MergeKeys
      46             : {
      47             : public:
      48         908 :         TheirMergeKeys (const KeySet & _keys, const Key & _parentKey) : MergeKeys (_keys, _parentKey)
      49             :         {
      50             :         }
      51             : };
      52             : 
      53         908 : class OurMergeKeys : public MergeKeys
      54             : {
      55             : public:
      56         908 :         OurMergeKeys (const KeySet & _keys, const Key & _parentKey) : MergeKeys (_keys, _parentKey)
      57             :         {
      58             :         }
      59             : };
      60             : 
      61             : class MergeTask
      62             : {
      63             : public:
      64             :         KeySet base;
      65             :         KeySet ours;
      66             :         KeySet theirs;
      67             :         Key baseParent;
      68             :         Key ourParent;
      69             :         Key theirParent;
      70             :         Key mergeRoot;
      71             : 
      72             :         /**
      73             :          * @param _base the KeySet containing the base keys and the base parentKey
      74             :          * @param _ours the KeySet containing our keys and our parentKey
      75             :          * @param _theirs the KeySet containing their keys and their parentKey
      76             :          * @param _mergeRoot the parentKey for the merged keys
      77             :          */
      78         908 :         MergeTask (const BaseMergeKeys & _base, const OurMergeKeys & _ours, const TheirMergeKeys & _theirs, const Key & _mergeRoot)
      79         908 :         : base (_base.keys), ours (_ours.keys), theirs (_theirs.keys), baseParent (_base.parent), ourParent (_ours.parent),
      80        7264 :           theirParent (_theirs.parent), mergeRoot (_mergeRoot)
      81             :         {
      82         908 :         }
      83             : 
      84         908 :         ~MergeTask ()
      85        7264 :         {
      86         908 :         }
      87             : 
      88         434 :         MergeTask reverse () const
      89             :         {
      90        3038 :                 return MergeTask (BaseMergeKeys (base, baseParent), OurMergeKeys (theirs, theirParent), TheirMergeKeys (ours, ourParent),
      91        1302 :                                   mergeRoot);
      92             :         }
      93             : };
      94             : } // namespace merging
      95             : } // namespace tools
      96             : } // namespace kdb
      97             : 
      98             : #endif /* MERGETASK_HPP_ */

Generated by: LCOV version 1.13