LCOV - code coverage report
Current view: top level - lts/include/mcrl2/lts/detail - transition.h (source / functions) Hit Total Coverage
Test: mcrl2_coverage.info.cleaned Lines: 26 27 96.3 %
Date: 2020-07-11 00:44:39 Functions: 5 5 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : // Author(s): Muck van Weerdenburg, Jan Friso Groote
       2             : // Copyright: see the accompanying file COPYING or copy at
       3             : // https://github.com/mCRL2org/mCRL2/blob/master/COPYING
       4             : //
       5             : // Distributed under the Boost Software License, Version 1.0.
       6             : // (See accompanying file LICENSE_1_0.txt or copy at
       7             : // http://www.boost.org/LICENSE_1_0.txt)
       8             : //
       9             : 
      10             : 
      11             : #ifndef MCRL2_LTS_DETAIL_TRANSITION_H
      12             : #define MCRL2_LTS_DETAIL_TRANSITION_H
      13             : 
      14             : #include <map>
      15             : #include "mcrl2/lts/transition.h"
      16             : 
      17             : namespace mcrl2
      18             : {
      19             : namespace lts
      20             : {
      21             : 
      22             : namespace detail
      23             : {
      24             : 
      25       30527 : inline std::size_t apply_map(const std::size_t n, const std::map<std::size_t,std::size_t>& mapping)
      26             : {
      27       30527 :   const std::map<std::size_t,std::size_t>::const_iterator i=mapping.find(n);
      28       30527 :   if (i==mapping.end())
      29             :   {
      30       30527 :     return n;
      31             :   }
      32           0 :   return i->second;
      33             : }
      34             : 
      35             : class compare_transitions_slt
      36             : {
      37             :   protected:
      38             :     const std::map<std::size_t,std::size_t>& m_hide_action_map;
      39             : 
      40             :   public:
      41         302 :     compare_transitions_slt(const std::map<std::size_t,std::size_t>& hide_action_map)
      42         302 :      : m_hide_action_map(hide_action_map)
      43         302 :     {}
      44             : 
      45        9984 :     bool operator()(const transition& t1, const transition& t2)
      46             :     {
      47        9984 :       if (t1.from() != t2.from())
      48             :       {
      49        8749 :         return t1.from() < t2.from();
      50             :       }
      51             :       else 
      52             :       {
      53        1235 :         const std::size_t n1=apply_map(t1.label(), m_hide_action_map);
      54        1235 :         const std::size_t n2=apply_map(t2.label(), m_hide_action_map);
      55        1235 :         if (n1 != n2)
      56             :         {
      57         777 :           return n1 < n2;
      58             :         }
      59             :         else
      60             :         {
      61         458 :           return t1.to() < t2.to();
      62             :         }
      63             :       }
      64             :     }
      65             : };
      66             : 
      67             : class compare_transitions_lts
      68             : {
      69             :   protected:
      70             :     const std::map<std::size_t,std::size_t>& m_hide_action_map;
      71             : 
      72             :   public:
      73         640 :     compare_transitions_lts(const std::map<std::size_t,std::size_t>& hide_action_map)
      74         640 :      : m_hide_action_map(hide_action_map)
      75         640 :     {}
      76             : 
      77       13745 :     bool operator()(const transition& t1, const transition& t2)
      78             :     {
      79       13745 :       const std::size_t n1=apply_map(t1.label(), m_hide_action_map);
      80       13745 :       const std::size_t n2=apply_map(t2.label(), m_hide_action_map);
      81       13745 :       if (n1 != n2)
      82             :       {
      83        4536 :         return n1 < n2;
      84             :       }
      85        9209 :       else if (t1.to() != t2.to())
      86             :       {
      87        8401 :         return t1.to() < t2.to();
      88             :       }
      89             :       else
      90             :       {
      91         808 :         return t1.from() < t2.from();
      92             :       }
      93             :     }
      94             : };
      95             : 
      96             : } // detail
      97             : } // lts
      98             : } // mcrl2
      99             : 
     100             : #endif

Generated by: LCOV version 1.13