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

          Line data    Source code
       1             : /**
       2             :  * @file
       3             :  *
       4             :  * @brief Models a merge conflict
       5             :  *
       6             :  * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
       7             :  *
       8             :  */
       9             : 
      10             : #ifndef MERGECONFLICT_HPP_
      11             : #define MERGECONFLICT_HPP_
      12             : 
      13             : #include <string>
      14             : #include <toolexcept.hpp>
      15             : 
      16             : namespace kdb
      17             : {
      18             : 
      19             : namespace tools
      20             : {
      21             : 
      22             : namespace merging
      23             : {
      24             : 
      25           0 : class InvalidConflictOperation : public ToolException
      26             : {
      27             : public:
      28           0 :         explicit InvalidConflictOperation (std::string message) : ToolException (message){};
      29             : };
      30             : 
      31             : enum ConflictOperation
      32             : {
      33             :         CONFLICT_ADD, ///< Conflict because of adding key
      34             :         CONFLICT_DELETE,
      35             :         CONFLICT_MODIFY,
      36             :         CONFLICT_META,
      37             :         CONFLICT_SAME
      38             : };
      39             : 
      40             : class MergeConflictOperation
      41             : {
      42             : public:
      43         784 :         static std::string getFromTag (enum ConflictOperation operation)
      44             :         {
      45         784 :                 switch (operation)
      46             :                 {
      47             :                 case CONFLICT_ADD:
      48         494 :                         return "CONFLICT_ADD";
      49             :                 case CONFLICT_DELETE:
      50         130 :                         return "CONFLICT_DELETE";
      51             :                 case CONFLICT_MODIFY:
      52         204 :                         return "CONFLICT_MODIFY";
      53             :                 case CONFLICT_META:
      54          24 :                         return "CONFLICT_META";
      55             :                 case CONFLICT_SAME:
      56         716 :                         return "CONFLICT_SAME";
      57             :                 }
      58             : 
      59           0 :                 return "unknown";
      60             :         }
      61             : 
      62        1388 :         static ConflictOperation getFromName (std::string name)
      63             :         {
      64        1388 :                 if (name == "CONFLICT_ADD") return CONFLICT_ADD;
      65         926 :                 if (name == "CONFLICT_DELETE") return CONFLICT_DELETE;
      66         804 :                 if (name == "CONFLICT_MODIFY") return CONFLICT_MODIFY;
      67         690 :                 if (name == "CONFLICT_META") return CONFLICT_META;
      68         682 :                 if (name == "CONFLICT_SAME") return CONFLICT_SAME;
      69           0 :                 throw InvalidConflictOperation ("The conflict operation \"" + name + "\" is unknown");
      70             :         }
      71             : };
      72             : } // namespace merging
      73             : } // namespace tools
      74             : } // namespace kdb
      75             : 
      76             : #endif /* MERGECONFLICT_HPP_ */

Generated by: LCOV version 1.13