LCOV - code coverage report
Current view: top level - lps/include/mcrl2/lps - traverser.h (source / functions) Hit Total Coverage
Test: mcrl2_coverage.info.cleaned Lines: 322 361 89.2 %
Date: 2024-04-21 03:44:01 Functions: 57 76 75.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : // Author(s): Wieger Wesselink
       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             : /// \file mcrl2/lps/traverser.h
      10             : /// \brief add your file description here.
      11             : 
      12             : // To avoid circular inclusion problems
      13             : 
      14             : #ifndef MCRL2_LPS_TRAVERSER_H
      15             : #define MCRL2_LPS_TRAVERSER_H
      16             : 
      17             : #include "mcrl2/lps/stochastic_specification.h"
      18             : #include "mcrl2/process/traverser.h"
      19             : 
      20             : namespace mcrl2
      21             : {
      22             : 
      23             : namespace lps
      24             : {
      25             : 
      26             : //--- start generated add_traverser_sort_expressions code ---//
      27             : template <template <class> class Traverser, class Derived>
      28             : struct add_traverser_sort_expressions: public Traverser<Derived>
      29             : {
      30             :   typedef Traverser<Derived> super;
      31             :   using super::enter;
      32             :   using super::leave;
      33             :   using super::apply;
      34             : 
      35        2357 :   void apply(const lps::deadlock& x)
      36             :   {
      37        2357 :     static_cast<Derived&>(*this).enter(x);
      38        2357 :     if (x.has_time())
      39             :     {
      40         401 :       static_cast<Derived&>(*this).apply(x.time());
      41             :     }
      42        2357 :     static_cast<Derived&>(*this).leave(x);
      43        2357 :   }
      44             : 
      45        6108 :   void apply(const lps::multi_action& x)
      46             :   {
      47        6108 :     static_cast<Derived&>(*this).enter(x);
      48        6108 :     static_cast<Derived&>(*this).apply(x.actions());
      49        6108 :     if (x.has_time())
      50             :     {
      51         890 :       static_cast<Derived&>(*this).apply(x.time());
      52             :     }
      53        6108 :     static_cast<Derived&>(*this).leave(x);
      54        6108 :   }
      55             : 
      56        2357 :   void apply(const lps::deadlock_summand& x)
      57             :   {
      58        2357 :     static_cast<Derived&>(*this).enter(x);
      59        2357 :     static_cast<Derived&>(*this).apply(x.summation_variables());
      60        2357 :     static_cast<Derived&>(*this).apply(x.condition());
      61        2357 :     static_cast<Derived&>(*this).apply(x.deadlock());
      62        2357 :     static_cast<Derived&>(*this).leave(x);
      63        2357 :   }
      64             : 
      65         739 :   void apply(const lps::action_summand& x)
      66             :   {
      67         739 :     static_cast<Derived&>(*this).enter(x);
      68         739 :     static_cast<Derived&>(*this).apply(x.summation_variables());
      69         739 :     static_cast<Derived&>(*this).apply(x.condition());
      70         739 :     static_cast<Derived&>(*this).apply(x.multi_action());
      71         739 :     static_cast<Derived&>(*this).apply(x.assignments());
      72         739 :     static_cast<Derived&>(*this).leave(x);
      73         739 :   }
      74             : 
      75         275 :   void apply(const lps::process_initializer& x)
      76             :   {
      77         275 :     static_cast<Derived&>(*this).enter(x);
      78         275 :     static_cast<Derived&>(*this).apply(x.expressions());
      79         275 :     static_cast<Derived&>(*this).leave(x);
      80         275 :   }
      81             : 
      82         275 :   void apply(const lps::linear_process& x)
      83             :   {
      84         275 :     static_cast<Derived&>(*this).enter(x);
      85         275 :     static_cast<Derived&>(*this).apply(x.process_parameters());
      86         275 :     static_cast<Derived&>(*this).apply(x.deadlock_summands());
      87         275 :     static_cast<Derived&>(*this).apply(x.action_summands());
      88         275 :     static_cast<Derived&>(*this).leave(x);
      89         275 :   }
      90             : 
      91         275 :   void apply(const lps::specification& x)
      92             :   {
      93         275 :     static_cast<Derived&>(*this).enter(x);
      94         275 :     static_cast<Derived&>(*this).apply(x.action_labels());
      95         275 :     static_cast<Derived&>(*this).apply(x.global_variables());
      96         275 :     static_cast<Derived&>(*this).apply(x.process());
      97         275 :     static_cast<Derived&>(*this).apply(x.initial_process());
      98         275 :     static_cast<Derived&>(*this).leave(x);
      99         275 :   }
     100             : 
     101        7875 :   void apply(const lps::stochastic_distribution& x)
     102             :   {
     103        7875 :     static_cast<Derived&>(*this).enter(x);
     104        7875 :     static_cast<Derived&>(*this).apply(x.variables());
     105        7875 :     if (x.is_defined()) { static_cast<Derived&>(*this).apply(x.distribution()); }
     106        7875 :     static_cast<Derived&>(*this).leave(x);
     107        7875 :   }
     108             : 
     109        5369 :   void apply(const lps::stochastic_action_summand& x)
     110             :   {
     111        5369 :     static_cast<Derived&>(*this).enter(x);
     112        5369 :     static_cast<Derived&>(*this).apply(x.summation_variables());
     113        5369 :     static_cast<Derived&>(*this).apply(x.condition());
     114        5369 :     static_cast<Derived&>(*this).apply(x.multi_action());
     115        5369 :     static_cast<Derived&>(*this).apply(x.assignments());
     116        5369 :     static_cast<Derived&>(*this).apply(x.distribution());
     117        5369 :     static_cast<Derived&>(*this).leave(x);
     118        5369 :   }
     119             : 
     120        2506 :   void apply(const lps::stochastic_linear_process& x)
     121             :   {
     122        2506 :     static_cast<Derived&>(*this).enter(x);
     123        2506 :     static_cast<Derived&>(*this).apply(x.process_parameters());
     124        2506 :     static_cast<Derived&>(*this).apply(x.deadlock_summands());
     125        2506 :     static_cast<Derived&>(*this).apply(x.action_summands());
     126        2506 :     static_cast<Derived&>(*this).leave(x);
     127        2506 :   }
     128             : 
     129        2506 :   void apply(const lps::stochastic_specification& x)
     130             :   {
     131        2506 :     static_cast<Derived&>(*this).enter(x);
     132        2506 :     static_cast<Derived&>(*this).apply(x.action_labels());
     133        2506 :     static_cast<Derived&>(*this).apply(x.global_variables());
     134        2506 :     static_cast<Derived&>(*this).apply(x.process());
     135        2506 :     static_cast<Derived&>(*this).apply(x.initial_process());
     136        2506 :     static_cast<Derived&>(*this).leave(x);
     137        2506 :   }
     138             : 
     139        2506 :   void apply(const lps::stochastic_process_initializer& x)
     140             :   {
     141        2506 :     static_cast<Derived&>(*this).enter(x);
     142        2506 :     static_cast<Derived&>(*this).apply(x.expressions());
     143        2506 :     static_cast<Derived&>(*this).apply(x.distribution());
     144        2506 :     static_cast<Derived&>(*this).leave(x);
     145        2506 :   }
     146             : 
     147             : };
     148             : 
     149             : /// \\brief Traverser class
     150             : template <typename Derived>
     151             : struct sort_expression_traverser: public add_traverser_sort_expressions<process::sort_expression_traverser, Derived>
     152             : {
     153             : };
     154             : //--- end generated add_traverser_sort_expressions code ---//
     155             : 
     156             : //--- start generated add_traverser_data_expressions code ---//
     157             : template <template <class> class Traverser, class Derived>
     158             : struct add_traverser_data_expressions: public Traverser<Derived>
     159             : {
     160             :   typedef Traverser<Derived> super;
     161             :   using super::enter;
     162             :   using super::leave;
     163             :   using super::apply;
     164             : 
     165        1296 :   void apply(const lps::deadlock& x)
     166             :   {
     167        1296 :     static_cast<Derived&>(*this).enter(x);
     168        1296 :     if (x.has_time())
     169             :     {
     170         112 :       static_cast<Derived&>(*this).apply(x.time());
     171             :     }
     172        1296 :     static_cast<Derived&>(*this).leave(x);
     173        1296 :   }
     174             : 
     175       17983 :   void apply(const lps::multi_action& x)
     176             :   {
     177       17983 :     static_cast<Derived&>(*this).enter(x);
     178       17983 :     static_cast<Derived&>(*this).apply(x.actions());
     179       17983 :     if (x.has_time())
     180             :     {
     181         485 :       static_cast<Derived&>(*this).apply(x.time());
     182             :     }
     183       17983 :     static_cast<Derived&>(*this).leave(x);
     184       17983 :   }
     185             : 
     186        1294 :   void apply(const lps::deadlock_summand& x)
     187             :   {
     188        1294 :     static_cast<Derived&>(*this).enter(x);
     189        1294 :     static_cast<Derived&>(*this).apply(x.condition());
     190        1294 :     static_cast<Derived&>(*this).apply(x.deadlock());
     191        1294 :     static_cast<Derived&>(*this).leave(x);
     192        1294 :   }
     193             : 
     194          90 :   void apply(const lps::action_summand& x)
     195             :   {
     196          90 :     static_cast<Derived&>(*this).enter(x);
     197          90 :     static_cast<Derived&>(*this).apply(x.condition());
     198          90 :     static_cast<Derived&>(*this).apply(x.multi_action());
     199          90 :     static_cast<Derived&>(*this).apply(x.assignments());
     200          90 :     static_cast<Derived&>(*this).leave(x);
     201          90 :   }
     202             : 
     203          18 :   void apply(const lps::process_initializer& x)
     204             :   {
     205          18 :     static_cast<Derived&>(*this).enter(x);
     206          18 :     static_cast<Derived&>(*this).apply(x.expressions());
     207          18 :     static_cast<Derived&>(*this).leave(x);
     208          18 :   }
     209             : 
     210          53 :   void apply(const lps::linear_process& x)
     211             :   {
     212          53 :     static_cast<Derived&>(*this).enter(x);
     213          53 :     static_cast<Derived&>(*this).apply(x.deadlock_summands());
     214          53 :     static_cast<Derived&>(*this).apply(x.action_summands());
     215          53 :     static_cast<Derived&>(*this).leave(x);
     216          53 :   }
     217             : 
     218          18 :   void apply(const lps::specification& x)
     219             :   {
     220          18 :     static_cast<Derived&>(*this).enter(x);
     221          18 :     static_cast<Derived&>(*this).apply(x.process());
     222          18 :     static_cast<Derived&>(*this).apply(x.initial_process());
     223          18 :     static_cast<Derived&>(*this).leave(x);
     224          18 :   }
     225             : 
     226        3302 :   void apply(const lps::stochastic_distribution& x)
     227             :   {
     228        3302 :     static_cast<Derived&>(*this).enter(x);
     229        3302 :     if (x.is_defined()) { static_cast<Derived&>(*this).apply(x.distribution()); }
     230        3302 :     static_cast<Derived&>(*this).leave(x);
     231        3302 :   }
     232             : 
     233        3171 :   void apply(const lps::stochastic_action_summand& x)
     234             :   {
     235        3171 :     static_cast<Derived&>(*this).enter(x);
     236        3171 :     static_cast<Derived&>(*this).apply(x.condition());
     237        3171 :     static_cast<Derived&>(*this).apply(x.multi_action());
     238        3171 :     static_cast<Derived&>(*this).apply(x.assignments());
     239        3171 :     static_cast<Derived&>(*this).apply(x.distribution());
     240        3171 :     static_cast<Derived&>(*this).leave(x);
     241        3171 :   }
     242             : 
     243         824 :   void apply(const lps::stochastic_linear_process& x)
     244             :   {
     245         824 :     static_cast<Derived&>(*this).enter(x);
     246         824 :     static_cast<Derived&>(*this).apply(x.deadlock_summands());
     247         824 :     static_cast<Derived&>(*this).apply(x.action_summands());
     248         824 :     static_cast<Derived&>(*this).leave(x);
     249         824 :   }
     250             : 
     251         823 :   void apply(const lps::stochastic_specification& x)
     252             :   {
     253         823 :     static_cast<Derived&>(*this).enter(x);
     254         823 :     static_cast<Derived&>(*this).apply(x.process());
     255         823 :     static_cast<Derived&>(*this).apply(x.initial_process());
     256         823 :     static_cast<Derived&>(*this).leave(x);
     257         823 :   }
     258             : 
     259         823 :   void apply(const lps::stochastic_process_initializer& x)
     260             :   {
     261         823 :     static_cast<Derived&>(*this).enter(x);
     262         823 :     static_cast<Derived&>(*this).apply(x.expressions());
     263         823 :     static_cast<Derived&>(*this).apply(x.distribution());
     264         823 :     static_cast<Derived&>(*this).leave(x);
     265         823 :   }
     266             : 
     267             : };
     268             : 
     269             : /// \\brief Traverser class
     270             : template <typename Derived>
     271             : struct data_expression_traverser: public add_traverser_data_expressions<process::data_expression_traverser, Derived>
     272             : {
     273             : };
     274             : //--- end generated add_traverser_data_expressions code ---//
     275             : 
     276             : //--- start generated add_traverser_variables code ---//
     277             : template <template <class> class Traverser, class Derived>
     278             : struct add_traverser_variables: public Traverser<Derived>
     279             : {
     280             :   typedef Traverser<Derived> super;
     281             :   using super::enter;
     282             :   using super::leave;
     283             :   using super::apply;
     284             : 
     285          84 :   void apply(const lps::deadlock& x)
     286             :   {
     287          84 :     static_cast<Derived&>(*this).enter(x);
     288          84 :     if (x.has_time())
     289             :     {
     290           0 :       static_cast<Derived&>(*this).apply(x.time());
     291             :     }
     292          84 :     static_cast<Derived&>(*this).leave(x);
     293          84 :   }
     294             : 
     295         616 :   void apply(const lps::multi_action& x)
     296             :   {
     297         616 :     static_cast<Derived&>(*this).enter(x);
     298         616 :     static_cast<Derived&>(*this).apply(x.actions());
     299         616 :     if (x.has_time())
     300             :     {
     301           4 :       static_cast<Derived&>(*this).apply(x.time());
     302             :     }
     303         616 :     static_cast<Derived&>(*this).leave(x);
     304         616 :   }
     305             : 
     306          81 :   void apply(const lps::deadlock_summand& x)
     307             :   {
     308          81 :     static_cast<Derived&>(*this).enter(x);
     309          81 :     static_cast<Derived&>(*this).apply(x.summation_variables());
     310          81 :     static_cast<Derived&>(*this).apply(x.condition());
     311          81 :     static_cast<Derived&>(*this).apply(x.deadlock());
     312          81 :     static_cast<Derived&>(*this).leave(x);
     313          81 :   }
     314             : 
     315         579 :   void apply(const lps::action_summand& x)
     316             :   {
     317         579 :     static_cast<Derived&>(*this).enter(x);
     318         579 :     static_cast<Derived&>(*this).apply(x.summation_variables());
     319         579 :     static_cast<Derived&>(*this).apply(x.condition());
     320         579 :     static_cast<Derived&>(*this).apply(x.multi_action());
     321         579 :     static_cast<Derived&>(*this).apply(x.assignments());
     322         579 :     static_cast<Derived&>(*this).leave(x);
     323         579 :   }
     324             : 
     325         130 :   void apply(const lps::process_initializer& x)
     326             :   {
     327         130 :     static_cast<Derived&>(*this).enter(x);
     328         130 :     static_cast<Derived&>(*this).apply(x.expressions());
     329         130 :     static_cast<Derived&>(*this).leave(x);
     330         130 :   }
     331             : 
     332         130 :   void apply(const lps::linear_process& x)
     333             :   {
     334         130 :     static_cast<Derived&>(*this).enter(x);
     335         130 :     static_cast<Derived&>(*this).apply(x.process_parameters());
     336         130 :     static_cast<Derived&>(*this).apply(x.deadlock_summands());
     337         130 :     static_cast<Derived&>(*this).apply(x.action_summands());
     338         130 :     static_cast<Derived&>(*this).leave(x);
     339         130 :   }
     340             : 
     341         130 :   void apply(const lps::specification& x)
     342             :   {
     343         130 :     static_cast<Derived&>(*this).enter(x);
     344         130 :     static_cast<Derived&>(*this).apply(x.global_variables());
     345         130 :     static_cast<Derived&>(*this).apply(x.process());
     346         130 :     static_cast<Derived&>(*this).apply(x.initial_process());
     347         130 :     static_cast<Derived&>(*this).leave(x);
     348         130 :   }
     349             : 
     350          21 :   void apply(const lps::stochastic_distribution& x)
     351             :   {
     352          21 :     static_cast<Derived&>(*this).enter(x);
     353          21 :     static_cast<Derived&>(*this).apply(x.variables());
     354          21 :     if (x.is_defined()) { static_cast<Derived&>(*this).apply(x.distribution()); }
     355          21 :     static_cast<Derived&>(*this).leave(x);
     356          21 :   }
     357             : 
     358          10 :   void apply(const lps::stochastic_action_summand& x)
     359             :   {
     360          10 :     static_cast<Derived&>(*this).enter(x);
     361          10 :     static_cast<Derived&>(*this).apply(x.summation_variables());
     362          10 :     static_cast<Derived&>(*this).apply(x.condition());
     363          10 :     static_cast<Derived&>(*this).apply(x.multi_action());
     364          10 :     static_cast<Derived&>(*this).apply(x.assignments());
     365          10 :     static_cast<Derived&>(*this).apply(x.distribution());
     366          10 :     static_cast<Derived&>(*this).leave(x);
     367          10 :   }
     368             : 
     369           1 :   void apply(const lps::stochastic_linear_process& x)
     370             :   {
     371           1 :     static_cast<Derived&>(*this).enter(x);
     372           1 :     static_cast<Derived&>(*this).apply(x.process_parameters());
     373           1 :     static_cast<Derived&>(*this).apply(x.deadlock_summands());
     374           1 :     static_cast<Derived&>(*this).apply(x.action_summands());
     375           1 :     static_cast<Derived&>(*this).leave(x);
     376           1 :   }
     377             : 
     378           1 :   void apply(const lps::stochastic_specification& x)
     379             :   {
     380           1 :     static_cast<Derived&>(*this).enter(x);
     381           1 :     static_cast<Derived&>(*this).apply(x.global_variables());
     382           1 :     static_cast<Derived&>(*this).apply(x.process());
     383           1 :     static_cast<Derived&>(*this).apply(x.initial_process());
     384           1 :     static_cast<Derived&>(*this).leave(x);
     385           1 :   }
     386             : 
     387           1 :   void apply(const lps::stochastic_process_initializer& x)
     388             :   {
     389           1 :     static_cast<Derived&>(*this).enter(x);
     390           1 :     static_cast<Derived&>(*this).apply(x.expressions());
     391           1 :     static_cast<Derived&>(*this).apply(x.distribution());
     392           1 :     static_cast<Derived&>(*this).leave(x);
     393           1 :   }
     394             : 
     395             : };
     396             : 
     397             : /// \\brief Traverser class
     398             : template <typename Derived>
     399             : struct variable_traverser: public add_traverser_variables<process::variable_traverser, Derived>
     400             : {
     401             : };
     402             : //--- end generated add_traverser_variables code ---//
     403             : 
     404             : //--- start generated add_traverser_identifier_strings code ---//
     405             : template <template <class> class Traverser, class Derived>
     406             : struct add_traverser_identifier_strings: public Traverser<Derived>
     407             : {
     408             :   typedef Traverser<Derived> super;
     409             :   using super::enter;
     410             :   using super::leave;
     411             :   using super::apply;
     412             : 
     413         288 :   void apply(const lps::deadlock& x)
     414             :   {
     415         288 :     static_cast<Derived&>(*this).enter(x);
     416         288 :     if (x.has_time())
     417             :     {
     418           0 :       static_cast<Derived&>(*this).apply(x.time());
     419             :     }
     420         288 :     static_cast<Derived&>(*this).leave(x);
     421         288 :   }
     422             : 
     423        2959 :   void apply(const lps::multi_action& x)
     424             :   {
     425        2959 :     static_cast<Derived&>(*this).enter(x);
     426        2959 :     static_cast<Derived&>(*this).apply(x.actions());
     427        2959 :     if (x.has_time())
     428             :     {
     429          36 :       static_cast<Derived&>(*this).apply(x.time());
     430             :     }
     431        2959 :     static_cast<Derived&>(*this).leave(x);
     432        2959 :   }
     433             : 
     434         288 :   void apply(const lps::deadlock_summand& x)
     435             :   {
     436         288 :     static_cast<Derived&>(*this).enter(x);
     437         288 :     static_cast<Derived&>(*this).apply(x.summation_variables());
     438         288 :     static_cast<Derived&>(*this).apply(x.condition());
     439         288 :     static_cast<Derived&>(*this).apply(x.deadlock());
     440         288 :     static_cast<Derived&>(*this).leave(x);
     441         288 :   }
     442             : 
     443         488 :   void apply(const lps::action_summand& x)
     444             :   {
     445         488 :     static_cast<Derived&>(*this).enter(x);
     446         488 :     static_cast<Derived&>(*this).apply(x.summation_variables());
     447         488 :     static_cast<Derived&>(*this).apply(x.condition());
     448         488 :     static_cast<Derived&>(*this).apply(x.multi_action());
     449         488 :     static_cast<Derived&>(*this).apply(x.assignments());
     450         488 :     static_cast<Derived&>(*this).leave(x);
     451         488 :   }
     452             : 
     453         209 :   void apply(const lps::process_initializer& x)
     454             :   {
     455         209 :     static_cast<Derived&>(*this).enter(x);
     456         209 :     static_cast<Derived&>(*this).apply(x.expressions());
     457         209 :     static_cast<Derived&>(*this).leave(x);
     458         209 :   }
     459             : 
     460         209 :   void apply(const lps::linear_process& x)
     461             :   {
     462         209 :     static_cast<Derived&>(*this).enter(x);
     463         209 :     static_cast<Derived&>(*this).apply(x.process_parameters());
     464         209 :     static_cast<Derived&>(*this).apply(x.deadlock_summands());
     465         209 :     static_cast<Derived&>(*this).apply(x.action_summands());
     466         209 :     static_cast<Derived&>(*this).leave(x);
     467         209 :   }
     468             : 
     469         209 :   void apply(const lps::specification& x)
     470             :   {
     471         209 :     static_cast<Derived&>(*this).enter(x);
     472         209 :     static_cast<Derived&>(*this).apply(x.action_labels());
     473         209 :     static_cast<Derived&>(*this).apply(x.global_variables());
     474         209 :     static_cast<Derived&>(*this).apply(x.process());
     475         209 :     static_cast<Derived&>(*this).apply(x.initial_process());
     476         209 :     static_cast<Derived&>(*this).leave(x);
     477         209 :   }
     478             : 
     479        2789 :   void apply(const lps::stochastic_distribution& x)
     480             :   {
     481        2789 :     static_cast<Derived&>(*this).enter(x);
     482        2789 :     static_cast<Derived&>(*this).apply(x.variables());
     483        2789 :     if (x.is_defined()) { static_cast<Derived&>(*this).apply(x.distribution()); }
     484        2789 :     static_cast<Derived&>(*this).leave(x);
     485        2789 :   }
     486             : 
     487        2471 :   void apply(const lps::stochastic_action_summand& x)
     488             :   {
     489        2471 :     static_cast<Derived&>(*this).enter(x);
     490        2471 :     static_cast<Derived&>(*this).apply(x.summation_variables());
     491        2471 :     static_cast<Derived&>(*this).apply(x.condition());
     492        2471 :     static_cast<Derived&>(*this).apply(x.multi_action());
     493        2471 :     static_cast<Derived&>(*this).apply(x.assignments());
     494        2471 :     static_cast<Derived&>(*this).apply(x.distribution());
     495        2471 :     static_cast<Derived&>(*this).leave(x);
     496        2471 :   }
     497             : 
     498         319 :   void apply(const lps::stochastic_linear_process& x)
     499             :   {
     500         319 :     static_cast<Derived&>(*this).enter(x);
     501         319 :     static_cast<Derived&>(*this).apply(x.process_parameters());
     502         319 :     static_cast<Derived&>(*this).apply(x.deadlock_summands());
     503         319 :     static_cast<Derived&>(*this).apply(x.action_summands());
     504         319 :     static_cast<Derived&>(*this).leave(x);
     505         319 :   }
     506             : 
     507         318 :   void apply(const lps::stochastic_specification& x)
     508             :   {
     509         318 :     static_cast<Derived&>(*this).enter(x);
     510         318 :     static_cast<Derived&>(*this).apply(x.action_labels());
     511         318 :     static_cast<Derived&>(*this).apply(x.global_variables());
     512         318 :     static_cast<Derived&>(*this).apply(x.process());
     513         318 :     static_cast<Derived&>(*this).apply(x.initial_process());
     514         318 :     static_cast<Derived&>(*this).leave(x);
     515         318 :   }
     516             : 
     517         318 :   void apply(const lps::stochastic_process_initializer& x)
     518             :   {
     519         318 :     static_cast<Derived&>(*this).enter(x);
     520         318 :     static_cast<Derived&>(*this).apply(x.expressions());
     521         318 :     static_cast<Derived&>(*this).apply(x.distribution());
     522         318 :     static_cast<Derived&>(*this).leave(x);
     523         318 :   }
     524             : 
     525             : };
     526             : 
     527             : /// \\brief Traverser class
     528             : template <typename Derived>
     529             : struct identifier_string_traverser: public add_traverser_identifier_strings<process::identifier_string_traverser, Derived>
     530             : {
     531             : };
     532             : //--- end generated add_traverser_identifier_strings code ---//
     533             : 
     534             : //--- start generated add_traverser_action_labels code ---//
     535             : template <template <class> class Traverser, class Derived>
     536             : struct add_traverser_action_labels: public Traverser<Derived>
     537             : {
     538             :   typedef Traverser<Derived> super;
     539             :   using super::enter;
     540             :   using super::leave;
     541             :   using super::apply;
     542             : 
     543           0 :   void apply(const lps::multi_action& x)
     544             :   {
     545           0 :     static_cast<Derived&>(*this).enter(x);
     546           0 :     static_cast<Derived&>(*this).apply(x.actions());
     547           0 :     static_cast<Derived&>(*this).leave(x);
     548           0 :   }
     549             : 
     550           0 :   void apply(const lps::action_summand& x)
     551             :   {
     552           0 :     static_cast<Derived&>(*this).enter(x);
     553           0 :     static_cast<Derived&>(*this).apply(x.multi_action());
     554           0 :     static_cast<Derived&>(*this).leave(x);
     555           0 :   }
     556             : 
     557           0 :   void apply(const lps::linear_process& x)
     558             :   {
     559           0 :     static_cast<Derived&>(*this).enter(x);
     560           0 :     static_cast<Derived&>(*this).apply(x.action_summands());
     561           0 :     static_cast<Derived&>(*this).leave(x);
     562           0 :   }
     563             : 
     564           0 :   void apply(const lps::specification& x)
     565             :   {
     566           0 :     static_cast<Derived&>(*this).enter(x);
     567           0 :     static_cast<Derived&>(*this).apply(x.action_labels());
     568           0 :     static_cast<Derived&>(*this).apply(x.process());
     569           0 :     static_cast<Derived&>(*this).leave(x);
     570           0 :   }
     571             : 
     572           0 :   void apply(const lps::stochastic_action_summand& x)
     573             :   {
     574           0 :     static_cast<Derived&>(*this).enter(x);
     575           0 :     static_cast<Derived&>(*this).apply(x.multi_action());
     576           0 :     static_cast<Derived&>(*this).leave(x);
     577           0 :   }
     578             : 
     579           0 :   void apply(const lps::stochastic_linear_process& x)
     580             :   {
     581           0 :     static_cast<Derived&>(*this).enter(x);
     582           0 :     static_cast<Derived&>(*this).apply(x.action_summands());
     583           0 :     static_cast<Derived&>(*this).leave(x);
     584           0 :   }
     585             : 
     586           0 :   void apply(const lps::stochastic_specification& x)
     587             :   {
     588           0 :     static_cast<Derived&>(*this).enter(x);
     589           0 :     static_cast<Derived&>(*this).apply(x.action_labels());
     590           0 :     static_cast<Derived&>(*this).apply(x.process());
     591           0 :     static_cast<Derived&>(*this).leave(x);
     592           0 :   }
     593             : 
     594             : };
     595             : 
     596             : /// \\brief Traverser class
     597             : template <typename Derived>
     598             : struct action_label_traverser: public add_traverser_action_labels<process::action_label_traverser, Derived>
     599             : {
     600             : };
     601             : //--- end generated add_traverser_action_labels code ---//
     602             : 
     603             : } // namespace lps
     604             : 
     605             : } // namespace mcrl2
     606             : 
     607             : #endif // MCRL2_LPS_TRAVERSER_H

Generated by: LCOV version 1.14