Line data Source code
1 : // Author(s): Jeroen van der Wulp, 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/process/traverser.h 10 : /// \brief add your file description here. 11 : 12 : // To avoid circular inclusion problems 13 : #ifndef MCRL2_PROCESS_SPECIFICATION_H 14 : #include "mcrl2/process/process_specification.h" 15 : #endif 16 : 17 : #ifndef MCRL2_PROCESS_TRAVERSER_H 18 : #define MCRL2_PROCESS_TRAVERSER_H 19 : 20 : #include "mcrl2/data/traverser.h" 21 : 22 : #include "mcrl2/process/untyped_multi_action.h" 23 : // #include "mcrl2/process/timed_multi_action.h" 24 : 25 : namespace mcrl2 26 : { 27 : 28 : namespace process 29 : { 30 : 31 : //--- start generated add_traverser_sort_expressions code ---// 32 : template <template <class> class Traverser, class Derived> 33 : struct add_traverser_sort_expressions: public Traverser<Derived> 34 : { 35 : typedef Traverser<Derived> super; 36 : using super::enter; 37 : using super::leave; 38 : using super::apply; 39 : 40 19451 : void apply(const process::action_label& x) 41 : { 42 19451 : static_cast<Derived&>(*this).enter(x); 43 19451 : static_cast<Derived&>(*this).apply(x.sorts()); 44 19451 : static_cast<Derived&>(*this).leave(x); 45 19451 : } 46 : 47 13 : void apply(const process::process_specification& x) 48 : { 49 13 : static_cast<Derived&>(*this).enter(x); 50 13 : static_cast<Derived&>(*this).apply(x.action_labels()); 51 13 : static_cast<Derived&>(*this).apply(x.global_variables()); 52 13 : static_cast<Derived&>(*this).apply(x.equations()); 53 13 : static_cast<Derived&>(*this).apply(x.init()); 54 13 : static_cast<Derived&>(*this).leave(x); 55 13 : } 56 : 57 2780 : void apply(const process::process_identifier& x) 58 : { 59 2780 : static_cast<Derived&>(*this).enter(x); 60 2780 : static_cast<Derived&>(*this).apply(x.variables()); 61 2780 : static_cast<Derived&>(*this).leave(x); 62 2780 : } 63 : 64 892 : void apply(const process::process_equation& x) 65 : { 66 892 : static_cast<Derived&>(*this).enter(x); 67 892 : static_cast<Derived&>(*this).apply(x.identifier()); 68 892 : static_cast<Derived&>(*this).apply(x.formal_parameters()); 69 892 : static_cast<Derived&>(*this).apply(x.expression()); 70 892 : static_cast<Derived&>(*this).leave(x); 71 892 : } 72 : 73 0 : void apply(const process::untyped_multi_action& x) 74 : { 75 0 : static_cast<Derived&>(*this).enter(x); 76 0 : static_cast<Derived&>(*this).apply(x.actions()); 77 0 : static_cast<Derived&>(*this).leave(x); 78 0 : } 79 : 80 9455 : void apply(const process::action& x) 81 : { 82 9455 : static_cast<Derived&>(*this).enter(x); 83 9455 : static_cast<Derived&>(*this).apply(x.label()); 84 9455 : static_cast<Derived&>(*this).apply(x.arguments()); 85 9455 : static_cast<Derived&>(*this).leave(x); 86 9455 : } 87 : 88 1769 : void apply(const process::process_instance& x) 89 : { 90 1769 : static_cast<Derived&>(*this).enter(x); 91 1769 : static_cast<Derived&>(*this).apply(x.identifier()); 92 1769 : static_cast<Derived&>(*this).apply(x.actual_parameters()); 93 1769 : static_cast<Derived&>(*this).leave(x); 94 1769 : } 95 : 96 119 : void apply(const process::process_instance_assignment& x) 97 : { 98 119 : static_cast<Derived&>(*this).enter(x); 99 119 : static_cast<Derived&>(*this).apply(x.identifier()); 100 119 : static_cast<Derived&>(*this).apply(x.assignments()); 101 119 : static_cast<Derived&>(*this).leave(x); 102 119 : } 103 : 104 369 : void apply(const process::delta& x) 105 : { 106 369 : static_cast<Derived&>(*this).enter(x); 107 : // skip 108 369 : static_cast<Derived&>(*this).leave(x); 109 369 : } 110 : 111 113 : void apply(const process::tau& x) 112 : { 113 113 : static_cast<Derived&>(*this).enter(x); 114 : // skip 115 113 : static_cast<Derived&>(*this).leave(x); 116 113 : } 117 : 118 488 : void apply(const process::sum& x) 119 : { 120 488 : static_cast<Derived&>(*this).enter(x); 121 488 : static_cast<Derived&>(*this).apply(x.variables()); 122 488 : static_cast<Derived&>(*this).apply(x.operand()); 123 488 : static_cast<Derived&>(*this).leave(x); 124 488 : } 125 : 126 0 : void apply(const process::block& x) 127 : { 128 0 : static_cast<Derived&>(*this).enter(x); 129 0 : static_cast<Derived&>(*this).apply(x.operand()); 130 0 : static_cast<Derived&>(*this).leave(x); 131 0 : } 132 : 133 24 : void apply(const process::hide& x) 134 : { 135 24 : static_cast<Derived&>(*this).enter(x); 136 24 : static_cast<Derived&>(*this).apply(x.operand()); 137 24 : static_cast<Derived&>(*this).leave(x); 138 24 : } 139 : 140 0 : void apply(const process::rename& x) 141 : { 142 0 : static_cast<Derived&>(*this).enter(x); 143 0 : static_cast<Derived&>(*this).apply(x.operand()); 144 0 : static_cast<Derived&>(*this).leave(x); 145 0 : } 146 : 147 121 : void apply(const process::comm& x) 148 : { 149 121 : static_cast<Derived&>(*this).enter(x); 150 121 : static_cast<Derived&>(*this).apply(x.operand()); 151 121 : static_cast<Derived&>(*this).leave(x); 152 121 : } 153 : 154 67 : void apply(const process::allow& x) 155 : { 156 67 : static_cast<Derived&>(*this).enter(x); 157 67 : static_cast<Derived&>(*this).apply(x.operand()); 158 67 : static_cast<Derived&>(*this).leave(x); 159 67 : } 160 : 161 321 : void apply(const process::sync& x) 162 : { 163 321 : static_cast<Derived&>(*this).enter(x); 164 321 : static_cast<Derived&>(*this).apply(x.left()); 165 321 : static_cast<Derived&>(*this).apply(x.right()); 166 321 : static_cast<Derived&>(*this).leave(x); 167 321 : } 168 : 169 334 : void apply(const process::at& x) 170 : { 171 334 : static_cast<Derived&>(*this).enter(x); 172 334 : static_cast<Derived&>(*this).apply(x.operand()); 173 334 : static_cast<Derived&>(*this).apply(x.time_stamp()); 174 334 : static_cast<Derived&>(*this).leave(x); 175 334 : } 176 : 177 1743 : void apply(const process::seq& x) 178 : { 179 1743 : static_cast<Derived&>(*this).enter(x); 180 1743 : static_cast<Derived&>(*this).apply(x.left()); 181 1743 : static_cast<Derived&>(*this).apply(x.right()); 182 1743 : static_cast<Derived&>(*this).leave(x); 183 1743 : } 184 : 185 277 : void apply(const process::if_then& x) 186 : { 187 277 : static_cast<Derived&>(*this).enter(x); 188 277 : static_cast<Derived&>(*this).apply(x.condition()); 189 277 : static_cast<Derived&>(*this).apply(x.then_case()); 190 277 : static_cast<Derived&>(*this).leave(x); 191 277 : } 192 : 193 121 : void apply(const process::if_then_else& x) 194 : { 195 121 : static_cast<Derived&>(*this).enter(x); 196 121 : static_cast<Derived&>(*this).apply(x.condition()); 197 121 : static_cast<Derived&>(*this).apply(x.then_case()); 198 121 : static_cast<Derived&>(*this).apply(x.else_case()); 199 121 : static_cast<Derived&>(*this).leave(x); 200 121 : } 201 : 202 0 : void apply(const process::bounded_init& x) 203 : { 204 0 : static_cast<Derived&>(*this).enter(x); 205 0 : static_cast<Derived&>(*this).apply(x.left()); 206 0 : static_cast<Derived&>(*this).apply(x.right()); 207 0 : static_cast<Derived&>(*this).leave(x); 208 0 : } 209 : 210 320 : void apply(const process::merge& x) 211 : { 212 320 : static_cast<Derived&>(*this).enter(x); 213 320 : static_cast<Derived&>(*this).apply(x.left()); 214 320 : static_cast<Derived&>(*this).apply(x.right()); 215 320 : static_cast<Derived&>(*this).leave(x); 216 320 : } 217 : 218 0 : void apply(const process::left_merge& x) 219 : { 220 0 : static_cast<Derived&>(*this).enter(x); 221 0 : static_cast<Derived&>(*this).apply(x.left()); 222 0 : static_cast<Derived&>(*this).apply(x.right()); 223 0 : static_cast<Derived&>(*this).leave(x); 224 0 : } 225 : 226 475 : void apply(const process::choice& x) 227 : { 228 475 : static_cast<Derived&>(*this).enter(x); 229 475 : static_cast<Derived&>(*this).apply(x.left()); 230 475 : static_cast<Derived&>(*this).apply(x.right()); 231 475 : static_cast<Derived&>(*this).leave(x); 232 475 : } 233 : 234 112 : void apply(const process::stochastic_operator& x) 235 : { 236 112 : static_cast<Derived&>(*this).enter(x); 237 112 : static_cast<Derived&>(*this).apply(x.variables()); 238 112 : static_cast<Derived&>(*this).apply(x.distribution()); 239 112 : static_cast<Derived&>(*this).apply(x.operand()); 240 112 : static_cast<Derived&>(*this).leave(x); 241 112 : } 242 : 243 0 : void apply(const process::untyped_process_assignment& x) 244 : { 245 0 : static_cast<Derived&>(*this).enter(x); 246 0 : static_cast<Derived&>(*this).apply(x.assignments()); 247 0 : static_cast<Derived&>(*this).leave(x); 248 0 : } 249 : 250 9312 : void apply(const process::process_expression& x) 251 : { 252 9312 : static_cast<Derived&>(*this).enter(x); 253 9312 : if (data::is_untyped_data_parameter(x)) 254 : { 255 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<data::untyped_data_parameter>(x)); 256 : } 257 9312 : else if (process::is_action(x)) 258 : { 259 2453 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::action>(x)); 260 : } 261 6859 : else if (process::is_process_instance(x)) 262 : { 263 1785 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance>(x)); 264 : } 265 5074 : else if (process::is_process_instance_assignment(x)) 266 : { 267 127 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance_assignment>(x)); 268 : } 269 4947 : else if (process::is_delta(x)) 270 : { 271 373 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::delta>(x)); 272 : } 273 4574 : else if (process::is_tau(x)) 274 : { 275 119 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::tau>(x)); 276 : } 277 4455 : else if (process::is_sum(x)) 278 : { 279 492 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sum>(x)); 280 : } 281 3963 : else if (process::is_block(x)) 282 : { 283 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::block>(x)); 284 : } 285 3963 : else if (process::is_hide(x)) 286 : { 287 24 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::hide>(x)); 288 : } 289 3939 : else if (process::is_rename(x)) 290 : { 291 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::rename>(x)); 292 : } 293 3939 : else if (process::is_comm(x)) 294 : { 295 122 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::comm>(x)); 296 : } 297 3817 : else if (process::is_allow(x)) 298 : { 299 70 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::allow>(x)); 300 : } 301 3747 : else if (process::is_sync(x)) 302 : { 303 321 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sync>(x)); 304 : } 305 3426 : else if (process::is_at(x)) 306 : { 307 336 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::at>(x)); 308 : } 309 3090 : else if (process::is_seq(x)) 310 : { 311 1758 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::seq>(x)); 312 : } 313 1332 : else if (process::is_if_then(x)) 314 : { 315 281 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then>(x)); 316 : } 317 1051 : else if (process::is_if_then_else(x)) 318 : { 319 125 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then_else>(x)); 320 : } 321 926 : else if (process::is_bounded_init(x)) 322 : { 323 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::bounded_init>(x)); 324 : } 325 926 : else if (process::is_merge(x)) 326 : { 327 336 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::merge>(x)); 328 : } 329 590 : else if (process::is_left_merge(x)) 330 : { 331 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::left_merge>(x)); 332 : } 333 590 : else if (process::is_choice(x)) 334 : { 335 477 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::choice>(x)); 336 : } 337 113 : else if (process::is_stochastic_operator(x)) 338 : { 339 113 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::stochastic_operator>(x)); 340 : } 341 0 : else if (process::is_untyped_process_assignment(x)) 342 : { 343 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::untyped_process_assignment>(x)); 344 : } 345 9312 : static_cast<Derived&>(*this).leave(x); 346 9312 : } 347 : 348 : }; 349 : 350 : /// \\brief Traverser class 351 : template <typename Derived> 352 : struct sort_expression_traverser: public add_traverser_sort_expressions<data::sort_expression_traverser, Derived> 353 : { 354 : }; 355 : //--- end generated add_traverser_sort_expressions code ---// 356 : 357 : //--- start generated add_traverser_data_expressions code ---// 358 : template <template <class> class Traverser, class Derived> 359 : struct add_traverser_data_expressions: public Traverser<Derived> 360 : { 361 : typedef Traverser<Derived> super; 362 : using super::enter; 363 : using super::leave; 364 : using super::apply; 365 : 366 0 : void apply(const process::process_specification& x) 367 : { 368 0 : static_cast<Derived&>(*this).enter(x); 369 0 : static_cast<Derived&>(*this).apply(x.equations()); 370 0 : static_cast<Derived&>(*this).apply(x.init()); 371 0 : static_cast<Derived&>(*this).leave(x); 372 0 : } 373 : 374 0 : void apply(const process::process_equation& x) 375 : { 376 0 : static_cast<Derived&>(*this).enter(x); 377 0 : static_cast<Derived&>(*this).apply(x.expression()); 378 0 : static_cast<Derived&>(*this).leave(x); 379 0 : } 380 : 381 0 : void apply(const process::untyped_multi_action& x) 382 : { 383 0 : static_cast<Derived&>(*this).enter(x); 384 0 : static_cast<Derived&>(*this).apply(x.actions()); 385 0 : static_cast<Derived&>(*this).leave(x); 386 0 : } 387 : 388 50315 : void apply(const process::action& x) 389 : { 390 50315 : static_cast<Derived&>(*this).enter(x); 391 50315 : static_cast<Derived&>(*this).apply(x.arguments()); 392 50315 : static_cast<Derived&>(*this).leave(x); 393 50315 : } 394 : 395 1 : void apply(const process::process_instance& x) 396 : { 397 1 : static_cast<Derived&>(*this).enter(x); 398 1 : static_cast<Derived&>(*this).apply(x.actual_parameters()); 399 1 : static_cast<Derived&>(*this).leave(x); 400 1 : } 401 : 402 0 : void apply(const process::process_instance_assignment& x) 403 : { 404 0 : static_cast<Derived&>(*this).enter(x); 405 0 : static_cast<Derived&>(*this).apply(x.assignments()); 406 0 : static_cast<Derived&>(*this).leave(x); 407 0 : } 408 : 409 0 : void apply(const process::delta& x) 410 : { 411 0 : static_cast<Derived&>(*this).enter(x); 412 : // skip 413 0 : static_cast<Derived&>(*this).leave(x); 414 0 : } 415 : 416 0 : void apply(const process::tau& x) 417 : { 418 0 : static_cast<Derived&>(*this).enter(x); 419 : // skip 420 0 : static_cast<Derived&>(*this).leave(x); 421 0 : } 422 : 423 0 : void apply(const process::sum& x) 424 : { 425 0 : static_cast<Derived&>(*this).enter(x); 426 0 : static_cast<Derived&>(*this).apply(x.operand()); 427 0 : static_cast<Derived&>(*this).leave(x); 428 0 : } 429 : 430 0 : void apply(const process::block& x) 431 : { 432 0 : static_cast<Derived&>(*this).enter(x); 433 0 : static_cast<Derived&>(*this).apply(x.operand()); 434 0 : static_cast<Derived&>(*this).leave(x); 435 0 : } 436 : 437 0 : void apply(const process::hide& x) 438 : { 439 0 : static_cast<Derived&>(*this).enter(x); 440 0 : static_cast<Derived&>(*this).apply(x.operand()); 441 0 : static_cast<Derived&>(*this).leave(x); 442 0 : } 443 : 444 0 : void apply(const process::rename& x) 445 : { 446 0 : static_cast<Derived&>(*this).enter(x); 447 0 : static_cast<Derived&>(*this).apply(x.operand()); 448 0 : static_cast<Derived&>(*this).leave(x); 449 0 : } 450 : 451 0 : void apply(const process::comm& x) 452 : { 453 0 : static_cast<Derived&>(*this).enter(x); 454 0 : static_cast<Derived&>(*this).apply(x.operand()); 455 0 : static_cast<Derived&>(*this).leave(x); 456 0 : } 457 : 458 0 : void apply(const process::allow& x) 459 : { 460 0 : static_cast<Derived&>(*this).enter(x); 461 0 : static_cast<Derived&>(*this).apply(x.operand()); 462 0 : static_cast<Derived&>(*this).leave(x); 463 0 : } 464 : 465 0 : void apply(const process::sync& x) 466 : { 467 0 : static_cast<Derived&>(*this).enter(x); 468 0 : static_cast<Derived&>(*this).apply(x.left()); 469 0 : static_cast<Derived&>(*this).apply(x.right()); 470 0 : static_cast<Derived&>(*this).leave(x); 471 0 : } 472 : 473 0 : void apply(const process::at& x) 474 : { 475 0 : static_cast<Derived&>(*this).enter(x); 476 0 : static_cast<Derived&>(*this).apply(x.operand()); 477 0 : static_cast<Derived&>(*this).apply(x.time_stamp()); 478 0 : static_cast<Derived&>(*this).leave(x); 479 0 : } 480 : 481 0 : void apply(const process::seq& x) 482 : { 483 0 : static_cast<Derived&>(*this).enter(x); 484 0 : static_cast<Derived&>(*this).apply(x.left()); 485 0 : static_cast<Derived&>(*this).apply(x.right()); 486 0 : static_cast<Derived&>(*this).leave(x); 487 0 : } 488 : 489 0 : void apply(const process::if_then& x) 490 : { 491 0 : static_cast<Derived&>(*this).enter(x); 492 0 : static_cast<Derived&>(*this).apply(x.condition()); 493 0 : static_cast<Derived&>(*this).apply(x.then_case()); 494 0 : static_cast<Derived&>(*this).leave(x); 495 0 : } 496 : 497 0 : void apply(const process::if_then_else& x) 498 : { 499 0 : static_cast<Derived&>(*this).enter(x); 500 0 : static_cast<Derived&>(*this).apply(x.condition()); 501 0 : static_cast<Derived&>(*this).apply(x.then_case()); 502 0 : static_cast<Derived&>(*this).apply(x.else_case()); 503 0 : static_cast<Derived&>(*this).leave(x); 504 0 : } 505 : 506 0 : void apply(const process::bounded_init& x) 507 : { 508 0 : static_cast<Derived&>(*this).enter(x); 509 0 : static_cast<Derived&>(*this).apply(x.left()); 510 0 : static_cast<Derived&>(*this).apply(x.right()); 511 0 : static_cast<Derived&>(*this).leave(x); 512 0 : } 513 : 514 0 : void apply(const process::merge& x) 515 : { 516 0 : static_cast<Derived&>(*this).enter(x); 517 0 : static_cast<Derived&>(*this).apply(x.left()); 518 0 : static_cast<Derived&>(*this).apply(x.right()); 519 0 : static_cast<Derived&>(*this).leave(x); 520 0 : } 521 : 522 0 : void apply(const process::left_merge& x) 523 : { 524 0 : static_cast<Derived&>(*this).enter(x); 525 0 : static_cast<Derived&>(*this).apply(x.left()); 526 0 : static_cast<Derived&>(*this).apply(x.right()); 527 0 : static_cast<Derived&>(*this).leave(x); 528 0 : } 529 : 530 0 : void apply(const process::choice& x) 531 : { 532 0 : static_cast<Derived&>(*this).enter(x); 533 0 : static_cast<Derived&>(*this).apply(x.left()); 534 0 : static_cast<Derived&>(*this).apply(x.right()); 535 0 : static_cast<Derived&>(*this).leave(x); 536 0 : } 537 : 538 0 : void apply(const process::stochastic_operator& x) 539 : { 540 0 : static_cast<Derived&>(*this).enter(x); 541 0 : static_cast<Derived&>(*this).apply(x.distribution()); 542 0 : static_cast<Derived&>(*this).apply(x.operand()); 543 0 : static_cast<Derived&>(*this).leave(x); 544 0 : } 545 : 546 0 : void apply(const process::untyped_process_assignment& x) 547 : { 548 0 : static_cast<Derived&>(*this).enter(x); 549 0 : static_cast<Derived&>(*this).apply(x.assignments()); 550 0 : static_cast<Derived&>(*this).leave(x); 551 0 : } 552 : 553 1767 : void apply(const process::process_expression& x) 554 : { 555 1767 : static_cast<Derived&>(*this).enter(x); 556 1767 : if (data::is_untyped_data_parameter(x)) 557 : { 558 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<data::untyped_data_parameter>(x)); 559 : } 560 1767 : else if (process::is_action(x)) 561 : { 562 1767 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::action>(x)); 563 : } 564 0 : else if (process::is_process_instance(x)) 565 : { 566 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance>(x)); 567 : } 568 0 : else if (process::is_process_instance_assignment(x)) 569 : { 570 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance_assignment>(x)); 571 : } 572 0 : else if (process::is_delta(x)) 573 : { 574 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::delta>(x)); 575 : } 576 0 : else if (process::is_tau(x)) 577 : { 578 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::tau>(x)); 579 : } 580 0 : else if (process::is_sum(x)) 581 : { 582 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sum>(x)); 583 : } 584 0 : else if (process::is_block(x)) 585 : { 586 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::block>(x)); 587 : } 588 0 : else if (process::is_hide(x)) 589 : { 590 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::hide>(x)); 591 : } 592 0 : else if (process::is_rename(x)) 593 : { 594 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::rename>(x)); 595 : } 596 0 : else if (process::is_comm(x)) 597 : { 598 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::comm>(x)); 599 : } 600 0 : else if (process::is_allow(x)) 601 : { 602 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::allow>(x)); 603 : } 604 0 : else if (process::is_sync(x)) 605 : { 606 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sync>(x)); 607 : } 608 0 : else if (process::is_at(x)) 609 : { 610 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::at>(x)); 611 : } 612 0 : else if (process::is_seq(x)) 613 : { 614 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::seq>(x)); 615 : } 616 0 : else if (process::is_if_then(x)) 617 : { 618 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then>(x)); 619 : } 620 0 : else if (process::is_if_then_else(x)) 621 : { 622 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then_else>(x)); 623 : } 624 0 : else if (process::is_bounded_init(x)) 625 : { 626 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::bounded_init>(x)); 627 : } 628 0 : else if (process::is_merge(x)) 629 : { 630 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::merge>(x)); 631 : } 632 0 : else if (process::is_left_merge(x)) 633 : { 634 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::left_merge>(x)); 635 : } 636 0 : else if (process::is_choice(x)) 637 : { 638 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::choice>(x)); 639 : } 640 0 : else if (process::is_stochastic_operator(x)) 641 : { 642 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::stochastic_operator>(x)); 643 : } 644 0 : else if (process::is_untyped_process_assignment(x)) 645 : { 646 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::untyped_process_assignment>(x)); 647 : } 648 1767 : static_cast<Derived&>(*this).leave(x); 649 1767 : } 650 : 651 : }; 652 : 653 : /// \\brief Traverser class 654 : template <typename Derived> 655 : struct data_expression_traverser: public add_traverser_data_expressions<data::data_expression_traverser, Derived> 656 : { 657 : }; 658 : //--- end generated add_traverser_data_expressions code ---// 659 : 660 : //--- start generated add_traverser_process_expressions code ---// 661 : template <template <class> class Traverser, class Derived> 662 : struct add_traverser_process_expressions: public Traverser<Derived> 663 : { 664 : typedef Traverser<Derived> super; 665 : using super::enter; 666 : using super::leave; 667 : using super::apply; 668 : 669 : void apply(const process::process_specification& x) 670 : { 671 : static_cast<Derived&>(*this).enter(x); 672 : static_cast<Derived&>(*this).apply(x.equations()); 673 : static_cast<Derived&>(*this).apply(x.init()); 674 : static_cast<Derived&>(*this).leave(x); 675 : } 676 : 677 : void apply(const process::process_equation& x) 678 : { 679 : static_cast<Derived&>(*this).enter(x); 680 : static_cast<Derived&>(*this).apply(x.expression()); 681 : static_cast<Derived&>(*this).leave(x); 682 : } 683 : 684 888 : void apply(const process::action& x) 685 : { 686 888 : static_cast<Derived&>(*this).enter(x); 687 : // skip 688 888 : static_cast<Derived&>(*this).leave(x); 689 888 : } 690 : 691 164 : void apply(const process::process_instance& x) 692 : { 693 164 : static_cast<Derived&>(*this).enter(x); 694 : // skip 695 164 : static_cast<Derived&>(*this).leave(x); 696 164 : } 697 : 698 310 : void apply(const process::process_instance_assignment& x) 699 : { 700 310 : static_cast<Derived&>(*this).enter(x); 701 : // skip 702 310 : static_cast<Derived&>(*this).leave(x); 703 310 : } 704 : 705 141 : void apply(const process::delta& x) 706 : { 707 141 : static_cast<Derived&>(*this).enter(x); 708 : // skip 709 141 : static_cast<Derived&>(*this).leave(x); 710 141 : } 711 : 712 74 : void apply(const process::tau& x) 713 : { 714 74 : static_cast<Derived&>(*this).enter(x); 715 : // skip 716 74 : static_cast<Derived&>(*this).leave(x); 717 74 : } 718 : 719 256 : void apply(const process::sum& x) 720 : { 721 256 : static_cast<Derived&>(*this).enter(x); 722 256 : static_cast<Derived&>(*this).apply(x.operand()); 723 254 : static_cast<Derived&>(*this).leave(x); 724 254 : } 725 : 726 0 : void apply(const process::block& x) 727 : { 728 0 : static_cast<Derived&>(*this).enter(x); 729 0 : static_cast<Derived&>(*this).apply(x.operand()); 730 0 : static_cast<Derived&>(*this).leave(x); 731 0 : } 732 : 733 0 : void apply(const process::hide& x) 734 : { 735 0 : static_cast<Derived&>(*this).enter(x); 736 0 : static_cast<Derived&>(*this).apply(x.operand()); 737 0 : static_cast<Derived&>(*this).leave(x); 738 0 : } 739 : 740 0 : void apply(const process::rename& x) 741 : { 742 0 : static_cast<Derived&>(*this).enter(x); 743 0 : static_cast<Derived&>(*this).apply(x.operand()); 744 0 : static_cast<Derived&>(*this).leave(x); 745 0 : } 746 : 747 0 : void apply(const process::comm& x) 748 : { 749 0 : static_cast<Derived&>(*this).enter(x); 750 0 : static_cast<Derived&>(*this).apply(x.operand()); 751 0 : static_cast<Derived&>(*this).leave(x); 752 0 : } 753 : 754 4 : void apply(const process::allow& x) 755 : { 756 4 : static_cast<Derived&>(*this).enter(x); 757 4 : static_cast<Derived&>(*this).apply(x.operand()); 758 4 : static_cast<Derived&>(*this).leave(x); 759 4 : } 760 : 761 4 : void apply(const process::sync& x) 762 : { 763 4 : static_cast<Derived&>(*this).enter(x); 764 4 : static_cast<Derived&>(*this).apply(x.left()); 765 4 : static_cast<Derived&>(*this).apply(x.right()); 766 4 : static_cast<Derived&>(*this).leave(x); 767 4 : } 768 : 769 12 : void apply(const process::at& x) 770 : { 771 12 : static_cast<Derived&>(*this).enter(x); 772 12 : static_cast<Derived&>(*this).apply(x.operand()); 773 12 : static_cast<Derived&>(*this).leave(x); 774 12 : } 775 : 776 472 : void apply(const process::seq& x) 777 : { 778 472 : static_cast<Derived&>(*this).enter(x); 779 470 : static_cast<Derived&>(*this).apply(x.left()); 780 470 : static_cast<Derived&>(*this).apply(x.right()); 781 470 : static_cast<Derived&>(*this).leave(x); 782 470 : } 783 : 784 780 : void apply(const process::if_then& x) 785 : { 786 780 : static_cast<Derived&>(*this).enter(x); 787 780 : static_cast<Derived&>(*this).apply(x.then_case()); 788 778 : static_cast<Derived&>(*this).leave(x); 789 778 : } 790 : 791 0 : void apply(const process::if_then_else& x) 792 : { 793 0 : static_cast<Derived&>(*this).enter(x); 794 0 : static_cast<Derived&>(*this).apply(x.then_case()); 795 0 : static_cast<Derived&>(*this).apply(x.else_case()); 796 0 : static_cast<Derived&>(*this).leave(x); 797 0 : } 798 : 799 0 : void apply(const process::bounded_init& x) 800 : { 801 0 : static_cast<Derived&>(*this).enter(x); 802 0 : static_cast<Derived&>(*this).apply(x.left()); 803 0 : static_cast<Derived&>(*this).apply(x.right()); 804 0 : static_cast<Derived&>(*this).leave(x); 805 0 : } 806 : 807 23 : void apply(const process::merge& x) 808 : { 809 23 : static_cast<Derived&>(*this).enter(x); 810 23 : static_cast<Derived&>(*this).apply(x.left()); 811 23 : static_cast<Derived&>(*this).apply(x.right()); 812 23 : static_cast<Derived&>(*this).leave(x); 813 23 : } 814 : 815 0 : void apply(const process::left_merge& x) 816 : { 817 0 : static_cast<Derived&>(*this).enter(x); 818 0 : static_cast<Derived&>(*this).apply(x.left()); 819 0 : static_cast<Derived&>(*this).apply(x.right()); 820 0 : static_cast<Derived&>(*this).leave(x); 821 0 : } 822 : 823 337 : void apply(const process::choice& x) 824 : { 825 337 : static_cast<Derived&>(*this).enter(x); 826 337 : static_cast<Derived&>(*this).apply(x.left()); 827 337 : static_cast<Derived&>(*this).apply(x.right()); 828 337 : static_cast<Derived&>(*this).leave(x); 829 337 : } 830 : 831 20 : void apply(const process::stochastic_operator& x) 832 : { 833 20 : static_cast<Derived&>(*this).enter(x); 834 20 : static_cast<Derived&>(*this).apply(x.operand()); 835 20 : static_cast<Derived&>(*this).leave(x); 836 20 : } 837 : 838 0 : void apply(const process::untyped_process_assignment& x) 839 : { 840 0 : static_cast<Derived&>(*this).enter(x); 841 : // skip 842 0 : static_cast<Derived&>(*this).leave(x); 843 0 : } 844 : 845 4270 : void apply(const process::process_expression& x) 846 : { 847 4270 : static_cast<Derived&>(*this).enter(x); 848 4270 : if (data::is_untyped_data_parameter(x)) 849 : { 850 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<data::untyped_data_parameter>(x)); 851 : } 852 4270 : else if (process::is_action(x)) 853 : { 854 888 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::action>(x)); 855 : } 856 3382 : else if (process::is_process_instance(x)) 857 : { 858 172 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance>(x)); 859 : } 860 3210 : else if (process::is_process_instance_assignment(x)) 861 : { 862 310 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance_assignment>(x)); 863 : } 864 2900 : else if (process::is_delta(x)) 865 : { 866 141 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::delta>(x)); 867 : } 868 2759 : else if (process::is_tau(x)) 869 : { 870 74 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::tau>(x)); 871 : } 872 2685 : else if (process::is_sum(x)) 873 : { 874 256 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sum>(x)); 875 : } 876 2429 : else if (process::is_block(x)) 877 : { 878 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::block>(x)); 879 : } 880 2429 : else if (process::is_hide(x)) 881 : { 882 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::hide>(x)); 883 : } 884 2429 : else if (process::is_rename(x)) 885 : { 886 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::rename>(x)); 887 : } 888 2429 : else if (process::is_comm(x)) 889 : { 890 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::comm>(x)); 891 : } 892 2429 : else if (process::is_allow(x)) 893 : { 894 4 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::allow>(x)); 895 : } 896 2425 : else if (process::is_sync(x)) 897 : { 898 6 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sync>(x)); 899 : } 900 2419 : else if (process::is_at(x)) 901 : { 902 12 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::at>(x)); 903 : } 904 2407 : else if (process::is_seq(x)) 905 : { 906 914 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::seq>(x)); 907 : } 908 1493 : else if (process::is_if_then(x)) 909 : { 910 780 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then>(x)); 911 : } 912 713 : else if (process::is_if_then_else(x)) 913 : { 914 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then_else>(x)); 915 : } 916 713 : else if (process::is_bounded_init(x)) 917 : { 918 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::bounded_init>(x)); 919 : } 920 713 : else if (process::is_merge(x)) 921 : { 922 24 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::merge>(x)); 923 : } 924 689 : else if (process::is_left_merge(x)) 925 : { 926 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::left_merge>(x)); 927 : } 928 689 : else if (process::is_choice(x)) 929 : { 930 669 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::choice>(x)); 931 : } 932 20 : else if (process::is_stochastic_operator(x)) 933 : { 934 20 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::stochastic_operator>(x)); 935 : } 936 0 : else if (process::is_untyped_process_assignment(x)) 937 : { 938 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::untyped_process_assignment>(x)); 939 : } 940 4264 : static_cast<Derived&>(*this).leave(x); 941 4264 : } 942 : 943 : }; 944 : 945 : /// \\brief Traverser class 946 : template <typename Derived> 947 : struct process_expression_traverser: public add_traverser_process_expressions<core::traverser, Derived> 948 : { 949 : }; 950 : //--- end generated add_traverser_process_expressions code ---// 951 : 952 : //--- start generated add_traverser_variables code ---// 953 : template <template <class> class Traverser, class Derived> 954 : struct add_traverser_variables: public Traverser<Derived> 955 : { 956 : typedef Traverser<Derived> super; 957 : using super::enter; 958 : using super::leave; 959 : using super::apply; 960 : 961 : void apply(const process::process_specification& x) 962 : { 963 : static_cast<Derived&>(*this).enter(x); 964 : static_cast<Derived&>(*this).apply(x.global_variables()); 965 : static_cast<Derived&>(*this).apply(x.equations()); 966 : static_cast<Derived&>(*this).apply(x.init()); 967 : static_cast<Derived&>(*this).leave(x); 968 : } 969 : 970 1 : void apply(const process::process_identifier& x) 971 : { 972 1 : static_cast<Derived&>(*this).enter(x); 973 1 : static_cast<Derived&>(*this).apply(x.variables()); 974 1 : static_cast<Derived&>(*this).leave(x); 975 1 : } 976 : 977 : void apply(const process::process_equation& x) 978 : { 979 : static_cast<Derived&>(*this).enter(x); 980 : static_cast<Derived&>(*this).apply(x.identifier()); 981 : static_cast<Derived&>(*this).apply(x.formal_parameters()); 982 : static_cast<Derived&>(*this).apply(x.expression()); 983 : static_cast<Derived&>(*this).leave(x); 984 : } 985 : 986 0 : void apply(const process::untyped_multi_action& x) 987 : { 988 0 : static_cast<Derived&>(*this).enter(x); 989 0 : static_cast<Derived&>(*this).apply(x.actions()); 990 0 : static_cast<Derived&>(*this).leave(x); 991 0 : } 992 : 993 547 : void apply(const process::action& x) 994 : { 995 547 : static_cast<Derived&>(*this).enter(x); 996 547 : static_cast<Derived&>(*this).apply(x.arguments()); 997 547 : static_cast<Derived&>(*this).leave(x); 998 547 : } 999 : 1000 1 : void apply(const process::process_instance& x) 1001 : { 1002 1 : static_cast<Derived&>(*this).enter(x); 1003 1 : static_cast<Derived&>(*this).apply(x.identifier()); 1004 1 : static_cast<Derived&>(*this).apply(x.actual_parameters()); 1005 1 : static_cast<Derived&>(*this).leave(x); 1006 1 : } 1007 : 1008 0 : void apply(const process::process_instance_assignment& x) 1009 : { 1010 0 : static_cast<Derived&>(*this).enter(x); 1011 0 : static_cast<Derived&>(*this).apply(x.identifier()); 1012 0 : static_cast<Derived&>(*this).apply(x.assignments()); 1013 0 : static_cast<Derived&>(*this).leave(x); 1014 0 : } 1015 : 1016 0 : void apply(const process::delta& x) 1017 : { 1018 0 : static_cast<Derived&>(*this).enter(x); 1019 : // skip 1020 0 : static_cast<Derived&>(*this).leave(x); 1021 0 : } 1022 : 1023 0 : void apply(const process::tau& x) 1024 : { 1025 0 : static_cast<Derived&>(*this).enter(x); 1026 : // skip 1027 0 : static_cast<Derived&>(*this).leave(x); 1028 0 : } 1029 : 1030 0 : void apply(const process::sum& x) 1031 : { 1032 0 : static_cast<Derived&>(*this).enter(x); 1033 0 : static_cast<Derived&>(*this).apply(x.variables()); 1034 0 : static_cast<Derived&>(*this).apply(x.operand()); 1035 0 : static_cast<Derived&>(*this).leave(x); 1036 0 : } 1037 : 1038 0 : void apply(const process::block& x) 1039 : { 1040 0 : static_cast<Derived&>(*this).enter(x); 1041 0 : static_cast<Derived&>(*this).apply(x.operand()); 1042 0 : static_cast<Derived&>(*this).leave(x); 1043 0 : } 1044 : 1045 0 : void apply(const process::hide& x) 1046 : { 1047 0 : static_cast<Derived&>(*this).enter(x); 1048 0 : static_cast<Derived&>(*this).apply(x.operand()); 1049 0 : static_cast<Derived&>(*this).leave(x); 1050 0 : } 1051 : 1052 0 : void apply(const process::rename& x) 1053 : { 1054 0 : static_cast<Derived&>(*this).enter(x); 1055 0 : static_cast<Derived&>(*this).apply(x.operand()); 1056 0 : static_cast<Derived&>(*this).leave(x); 1057 0 : } 1058 : 1059 0 : void apply(const process::comm& x) 1060 : { 1061 0 : static_cast<Derived&>(*this).enter(x); 1062 0 : static_cast<Derived&>(*this).apply(x.operand()); 1063 0 : static_cast<Derived&>(*this).leave(x); 1064 0 : } 1065 : 1066 0 : void apply(const process::allow& x) 1067 : { 1068 0 : static_cast<Derived&>(*this).enter(x); 1069 0 : static_cast<Derived&>(*this).apply(x.operand()); 1070 0 : static_cast<Derived&>(*this).leave(x); 1071 0 : } 1072 : 1073 0 : void apply(const process::sync& x) 1074 : { 1075 0 : static_cast<Derived&>(*this).enter(x); 1076 0 : static_cast<Derived&>(*this).apply(x.left()); 1077 0 : static_cast<Derived&>(*this).apply(x.right()); 1078 0 : static_cast<Derived&>(*this).leave(x); 1079 0 : } 1080 : 1081 0 : void apply(const process::at& x) 1082 : { 1083 0 : static_cast<Derived&>(*this).enter(x); 1084 0 : static_cast<Derived&>(*this).apply(x.operand()); 1085 0 : static_cast<Derived&>(*this).apply(x.time_stamp()); 1086 0 : static_cast<Derived&>(*this).leave(x); 1087 0 : } 1088 : 1089 1 : void apply(const process::seq& x) 1090 : { 1091 1 : static_cast<Derived&>(*this).enter(x); 1092 1 : static_cast<Derived&>(*this).apply(x.left()); 1093 1 : static_cast<Derived&>(*this).apply(x.right()); 1094 1 : static_cast<Derived&>(*this).leave(x); 1095 1 : } 1096 : 1097 0 : void apply(const process::if_then& x) 1098 : { 1099 0 : static_cast<Derived&>(*this).enter(x); 1100 0 : static_cast<Derived&>(*this).apply(x.condition()); 1101 0 : static_cast<Derived&>(*this).apply(x.then_case()); 1102 0 : static_cast<Derived&>(*this).leave(x); 1103 0 : } 1104 : 1105 0 : void apply(const process::if_then_else& x) 1106 : { 1107 0 : static_cast<Derived&>(*this).enter(x); 1108 0 : static_cast<Derived&>(*this).apply(x.condition()); 1109 0 : static_cast<Derived&>(*this).apply(x.then_case()); 1110 0 : static_cast<Derived&>(*this).apply(x.else_case()); 1111 0 : static_cast<Derived&>(*this).leave(x); 1112 0 : } 1113 : 1114 0 : void apply(const process::bounded_init& x) 1115 : { 1116 0 : static_cast<Derived&>(*this).enter(x); 1117 0 : static_cast<Derived&>(*this).apply(x.left()); 1118 0 : static_cast<Derived&>(*this).apply(x.right()); 1119 0 : static_cast<Derived&>(*this).leave(x); 1120 0 : } 1121 : 1122 0 : void apply(const process::merge& x) 1123 : { 1124 0 : static_cast<Derived&>(*this).enter(x); 1125 0 : static_cast<Derived&>(*this).apply(x.left()); 1126 0 : static_cast<Derived&>(*this).apply(x.right()); 1127 0 : static_cast<Derived&>(*this).leave(x); 1128 0 : } 1129 : 1130 0 : void apply(const process::left_merge& x) 1131 : { 1132 0 : static_cast<Derived&>(*this).enter(x); 1133 0 : static_cast<Derived&>(*this).apply(x.left()); 1134 0 : static_cast<Derived&>(*this).apply(x.right()); 1135 0 : static_cast<Derived&>(*this).leave(x); 1136 0 : } 1137 : 1138 0 : void apply(const process::choice& x) 1139 : { 1140 0 : static_cast<Derived&>(*this).enter(x); 1141 0 : static_cast<Derived&>(*this).apply(x.left()); 1142 0 : static_cast<Derived&>(*this).apply(x.right()); 1143 0 : static_cast<Derived&>(*this).leave(x); 1144 0 : } 1145 : 1146 0 : void apply(const process::stochastic_operator& x) 1147 : { 1148 0 : static_cast<Derived&>(*this).enter(x); 1149 0 : static_cast<Derived&>(*this).apply(x.variables()); 1150 0 : static_cast<Derived&>(*this).apply(x.distribution()); 1151 0 : static_cast<Derived&>(*this).apply(x.operand()); 1152 0 : static_cast<Derived&>(*this).leave(x); 1153 0 : } 1154 : 1155 0 : void apply(const process::untyped_process_assignment& x) 1156 : { 1157 0 : static_cast<Derived&>(*this).enter(x); 1158 0 : static_cast<Derived&>(*this).apply(x.assignments()); 1159 0 : static_cast<Derived&>(*this).leave(x); 1160 0 : } 1161 : 1162 3 : void apply(const process::process_expression& x) 1163 : { 1164 3 : static_cast<Derived&>(*this).enter(x); 1165 3 : if (data::is_untyped_data_parameter(x)) 1166 : { 1167 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<data::untyped_data_parameter>(x)); 1168 : } 1169 3 : else if (process::is_action(x)) 1170 : { 1171 1 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::action>(x)); 1172 : } 1173 2 : else if (process::is_process_instance(x)) 1174 : { 1175 1 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance>(x)); 1176 : } 1177 1 : else if (process::is_process_instance_assignment(x)) 1178 : { 1179 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance_assignment>(x)); 1180 : } 1181 1 : else if (process::is_delta(x)) 1182 : { 1183 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::delta>(x)); 1184 : } 1185 1 : else if (process::is_tau(x)) 1186 : { 1187 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::tau>(x)); 1188 : } 1189 1 : else if (process::is_sum(x)) 1190 : { 1191 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sum>(x)); 1192 : } 1193 1 : else if (process::is_block(x)) 1194 : { 1195 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::block>(x)); 1196 : } 1197 1 : else if (process::is_hide(x)) 1198 : { 1199 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::hide>(x)); 1200 : } 1201 1 : else if (process::is_rename(x)) 1202 : { 1203 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::rename>(x)); 1204 : } 1205 1 : else if (process::is_comm(x)) 1206 : { 1207 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::comm>(x)); 1208 : } 1209 1 : else if (process::is_allow(x)) 1210 : { 1211 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::allow>(x)); 1212 : } 1213 1 : else if (process::is_sync(x)) 1214 : { 1215 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sync>(x)); 1216 : } 1217 1 : else if (process::is_at(x)) 1218 : { 1219 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::at>(x)); 1220 : } 1221 1 : else if (process::is_seq(x)) 1222 : { 1223 1 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::seq>(x)); 1224 : } 1225 0 : else if (process::is_if_then(x)) 1226 : { 1227 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then>(x)); 1228 : } 1229 0 : else if (process::is_if_then_else(x)) 1230 : { 1231 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then_else>(x)); 1232 : } 1233 0 : else if (process::is_bounded_init(x)) 1234 : { 1235 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::bounded_init>(x)); 1236 : } 1237 0 : else if (process::is_merge(x)) 1238 : { 1239 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::merge>(x)); 1240 : } 1241 0 : else if (process::is_left_merge(x)) 1242 : { 1243 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::left_merge>(x)); 1244 : } 1245 0 : else if (process::is_choice(x)) 1246 : { 1247 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::choice>(x)); 1248 : } 1249 0 : else if (process::is_stochastic_operator(x)) 1250 : { 1251 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::stochastic_operator>(x)); 1252 : } 1253 0 : else if (process::is_untyped_process_assignment(x)) 1254 : { 1255 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::untyped_process_assignment>(x)); 1256 : } 1257 3 : static_cast<Derived&>(*this).leave(x); 1258 3 : } 1259 : 1260 : }; 1261 : 1262 : /// \\brief Traverser class 1263 : template <typename Derived> 1264 : struct variable_traverser: public add_traverser_variables<data::variable_traverser, Derived> 1265 : { 1266 : }; 1267 : //--- end generated add_traverser_variables code ---// 1268 : 1269 : //--- start generated add_traverser_identifier_strings code ---// 1270 : template <template <class> class Traverser, class Derived> 1271 : struct add_traverser_identifier_strings: public Traverser<Derived> 1272 : { 1273 : typedef Traverser<Derived> super; 1274 : using super::enter; 1275 : using super::leave; 1276 : using super::apply; 1277 : 1278 12477 : void apply(const process::action_label& x) 1279 : { 1280 12477 : static_cast<Derived&>(*this).enter(x); 1281 12477 : static_cast<Derived&>(*this).apply(x.name()); 1282 12477 : static_cast<Derived&>(*this).apply(x.sorts()); 1283 12477 : static_cast<Derived&>(*this).leave(x); 1284 12477 : } 1285 : 1286 877 : void apply(const process::process_specification& x) 1287 : { 1288 877 : static_cast<Derived&>(*this).enter(x); 1289 877 : static_cast<Derived&>(*this).apply(x.action_labels()); 1290 877 : static_cast<Derived&>(*this).apply(x.global_variables()); 1291 877 : static_cast<Derived&>(*this).apply(x.equations()); 1292 877 : static_cast<Derived&>(*this).apply(x.init()); 1293 877 : static_cast<Derived&>(*this).leave(x); 1294 877 : } 1295 : 1296 2742 : void apply(const process::process_identifier& x) 1297 : { 1298 2742 : static_cast<Derived&>(*this).enter(x); 1299 2742 : static_cast<Derived&>(*this).apply(x.name()); 1300 2742 : static_cast<Derived&>(*this).apply(x.variables()); 1301 2742 : static_cast<Derived&>(*this).leave(x); 1302 2742 : } 1303 : 1304 882 : void apply(const process::process_equation& x) 1305 : { 1306 882 : static_cast<Derived&>(*this).enter(x); 1307 882 : static_cast<Derived&>(*this).apply(x.identifier()); 1308 882 : static_cast<Derived&>(*this).apply(x.formal_parameters()); 1309 882 : static_cast<Derived&>(*this).apply(x.expression()); 1310 882 : static_cast<Derived&>(*this).leave(x); 1311 882 : } 1312 : 1313 0 : void apply(const process::rename_expression& x) 1314 : { 1315 0 : static_cast<Derived&>(*this).enter(x); 1316 0 : static_cast<Derived&>(*this).apply(x.source()); 1317 0 : static_cast<Derived&>(*this).apply(x.target()); 1318 0 : static_cast<Derived&>(*this).leave(x); 1319 0 : } 1320 : 1321 194 : void apply(const process::communication_expression& x) 1322 : { 1323 194 : static_cast<Derived&>(*this).enter(x); 1324 194 : static_cast<Derived&>(*this).apply(x.action_name()); 1325 194 : static_cast<Derived&>(*this).apply(x.name()); 1326 194 : static_cast<Derived&>(*this).leave(x); 1327 194 : } 1328 : 1329 373 : void apply(const process::action_name_multiset& x) 1330 : { 1331 373 : static_cast<Derived&>(*this).enter(x); 1332 373 : static_cast<Derived&>(*this).apply(x.names()); 1333 373 : static_cast<Derived&>(*this).leave(x); 1334 373 : } 1335 : 1336 0 : void apply(const process::untyped_multi_action& x) 1337 : { 1338 0 : static_cast<Derived&>(*this).enter(x); 1339 0 : static_cast<Derived&>(*this).apply(x.actions()); 1340 0 : static_cast<Derived&>(*this).leave(x); 1341 0 : } 1342 : 1343 8621 : void apply(const process::action& x) 1344 : { 1345 8621 : static_cast<Derived&>(*this).enter(x); 1346 8621 : static_cast<Derived&>(*this).apply(x.label()); 1347 8621 : static_cast<Derived&>(*this).apply(x.arguments()); 1348 8621 : static_cast<Derived&>(*this).leave(x); 1349 8621 : } 1350 : 1351 1739 : void apply(const process::process_instance& x) 1352 : { 1353 1739 : static_cast<Derived&>(*this).enter(x); 1354 1739 : static_cast<Derived&>(*this).apply(x.identifier()); 1355 1739 : static_cast<Derived&>(*this).apply(x.actual_parameters()); 1356 1739 : static_cast<Derived&>(*this).leave(x); 1357 1739 : } 1358 : 1359 121 : void apply(const process::process_instance_assignment& x) 1360 : { 1361 121 : static_cast<Derived&>(*this).enter(x); 1362 121 : static_cast<Derived&>(*this).apply(x.identifier()); 1363 121 : static_cast<Derived&>(*this).apply(x.assignments()); 1364 121 : static_cast<Derived&>(*this).leave(x); 1365 121 : } 1366 : 1367 367 : void apply(const process::delta& x) 1368 : { 1369 367 : static_cast<Derived&>(*this).enter(x); 1370 : // skip 1371 367 : static_cast<Derived&>(*this).leave(x); 1372 367 : } 1373 : 1374 113 : void apply(const process::tau& x) 1375 : { 1376 113 : static_cast<Derived&>(*this).enter(x); 1377 : // skip 1378 113 : static_cast<Derived&>(*this).leave(x); 1379 113 : } 1380 : 1381 471 : void apply(const process::sum& x) 1382 : { 1383 471 : static_cast<Derived&>(*this).enter(x); 1384 471 : static_cast<Derived&>(*this).apply(x.variables()); 1385 471 : static_cast<Derived&>(*this).apply(x.operand()); 1386 471 : static_cast<Derived&>(*this).leave(x); 1387 471 : } 1388 : 1389 0 : void apply(const process::block& x) 1390 : { 1391 0 : static_cast<Derived&>(*this).enter(x); 1392 0 : static_cast<Derived&>(*this).apply(x.block_set()); 1393 0 : static_cast<Derived&>(*this).apply(x.operand()); 1394 0 : static_cast<Derived&>(*this).leave(x); 1395 0 : } 1396 : 1397 24 : void apply(const process::hide& x) 1398 : { 1399 24 : static_cast<Derived&>(*this).enter(x); 1400 24 : static_cast<Derived&>(*this).apply(x.hide_set()); 1401 24 : static_cast<Derived&>(*this).apply(x.operand()); 1402 24 : static_cast<Derived&>(*this).leave(x); 1403 24 : } 1404 : 1405 0 : void apply(const process::rename& x) 1406 : { 1407 0 : static_cast<Derived&>(*this).enter(x); 1408 0 : static_cast<Derived&>(*this).apply(x.rename_set()); 1409 0 : static_cast<Derived&>(*this).apply(x.operand()); 1410 0 : static_cast<Derived&>(*this).leave(x); 1411 0 : } 1412 : 1413 121 : void apply(const process::comm& x) 1414 : { 1415 121 : static_cast<Derived&>(*this).enter(x); 1416 121 : static_cast<Derived&>(*this).apply(x.comm_set()); 1417 121 : static_cast<Derived&>(*this).apply(x.operand()); 1418 121 : static_cast<Derived&>(*this).leave(x); 1419 121 : } 1420 : 1421 68 : void apply(const process::allow& x) 1422 : { 1423 68 : static_cast<Derived&>(*this).enter(x); 1424 68 : static_cast<Derived&>(*this).apply(x.allow_set()); 1425 68 : static_cast<Derived&>(*this).apply(x.operand()); 1426 68 : static_cast<Derived&>(*this).leave(x); 1427 68 : } 1428 : 1429 321 : void apply(const process::sync& x) 1430 : { 1431 321 : static_cast<Derived&>(*this).enter(x); 1432 321 : static_cast<Derived&>(*this).apply(x.left()); 1433 321 : static_cast<Derived&>(*this).apply(x.right()); 1434 321 : static_cast<Derived&>(*this).leave(x); 1435 321 : } 1436 : 1437 332 : void apply(const process::at& x) 1438 : { 1439 332 : static_cast<Derived&>(*this).enter(x); 1440 332 : static_cast<Derived&>(*this).apply(x.operand()); 1441 332 : static_cast<Derived&>(*this).apply(x.time_stamp()); 1442 332 : static_cast<Derived&>(*this).leave(x); 1443 332 : } 1444 : 1445 1725 : void apply(const process::seq& x) 1446 : { 1447 1725 : static_cast<Derived&>(*this).enter(x); 1448 1725 : static_cast<Derived&>(*this).apply(x.left()); 1449 1725 : static_cast<Derived&>(*this).apply(x.right()); 1450 1725 : static_cast<Derived&>(*this).leave(x); 1451 1725 : } 1452 : 1453 255 : void apply(const process::if_then& x) 1454 : { 1455 255 : static_cast<Derived&>(*this).enter(x); 1456 255 : static_cast<Derived&>(*this).apply(x.condition()); 1457 255 : static_cast<Derived&>(*this).apply(x.then_case()); 1458 255 : static_cast<Derived&>(*this).leave(x); 1459 255 : } 1460 : 1461 121 : void apply(const process::if_then_else& x) 1462 : { 1463 121 : static_cast<Derived&>(*this).enter(x); 1464 121 : static_cast<Derived&>(*this).apply(x.condition()); 1465 121 : static_cast<Derived&>(*this).apply(x.then_case()); 1466 121 : static_cast<Derived&>(*this).apply(x.else_case()); 1467 121 : static_cast<Derived&>(*this).leave(x); 1468 121 : } 1469 : 1470 0 : void apply(const process::bounded_init& x) 1471 : { 1472 0 : static_cast<Derived&>(*this).enter(x); 1473 0 : static_cast<Derived&>(*this).apply(x.left()); 1474 0 : static_cast<Derived&>(*this).apply(x.right()); 1475 0 : static_cast<Derived&>(*this).leave(x); 1476 0 : } 1477 : 1478 320 : void apply(const process::merge& x) 1479 : { 1480 320 : static_cast<Derived&>(*this).enter(x); 1481 320 : static_cast<Derived&>(*this).apply(x.left()); 1482 320 : static_cast<Derived&>(*this).apply(x.right()); 1483 320 : static_cast<Derived&>(*this).leave(x); 1484 320 : } 1485 : 1486 0 : void apply(const process::left_merge& x) 1487 : { 1488 0 : static_cast<Derived&>(*this).enter(x); 1489 0 : static_cast<Derived&>(*this).apply(x.left()); 1490 0 : static_cast<Derived&>(*this).apply(x.right()); 1491 0 : static_cast<Derived&>(*this).leave(x); 1492 0 : } 1493 : 1494 464 : void apply(const process::choice& x) 1495 : { 1496 464 : static_cast<Derived&>(*this).enter(x); 1497 464 : static_cast<Derived&>(*this).apply(x.left()); 1498 464 : static_cast<Derived&>(*this).apply(x.right()); 1499 464 : static_cast<Derived&>(*this).leave(x); 1500 464 : } 1501 : 1502 112 : void apply(const process::stochastic_operator& x) 1503 : { 1504 112 : static_cast<Derived&>(*this).enter(x); 1505 112 : static_cast<Derived&>(*this).apply(x.variables()); 1506 112 : static_cast<Derived&>(*this).apply(x.distribution()); 1507 112 : static_cast<Derived&>(*this).apply(x.operand()); 1508 112 : static_cast<Derived&>(*this).leave(x); 1509 112 : } 1510 : 1511 0 : void apply(const process::untyped_process_assignment& x) 1512 : { 1513 0 : static_cast<Derived&>(*this).enter(x); 1514 0 : static_cast<Derived&>(*this).apply(x.name()); 1515 0 : static_cast<Derived&>(*this).apply(x.assignments()); 1516 0 : static_cast<Derived&>(*this).leave(x); 1517 0 : } 1518 : 1519 9047 : void apply(const process::process_expression& x) 1520 : { 1521 9047 : static_cast<Derived&>(*this).enter(x); 1522 9047 : if (data::is_untyped_data_parameter(x)) 1523 : { 1524 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<data::untyped_data_parameter>(x)); 1525 : } 1526 9047 : else if (process::is_action(x)) 1527 : { 1528 2373 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::action>(x)); 1529 : } 1530 6674 : else if (process::is_process_instance(x)) 1531 : { 1532 1739 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance>(x)); 1533 : } 1534 4935 : else if (process::is_process_instance_assignment(x)) 1535 : { 1536 121 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance_assignment>(x)); 1537 : } 1538 4814 : else if (process::is_delta(x)) 1539 : { 1540 367 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::delta>(x)); 1541 : } 1542 4447 : else if (process::is_tau(x)) 1543 : { 1544 113 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::tau>(x)); 1545 : } 1546 4334 : else if (process::is_sum(x)) 1547 : { 1548 471 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sum>(x)); 1549 : } 1550 3863 : else if (process::is_block(x)) 1551 : { 1552 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::block>(x)); 1553 : } 1554 3863 : else if (process::is_hide(x)) 1555 : { 1556 24 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::hide>(x)); 1557 : } 1558 3839 : else if (process::is_rename(x)) 1559 : { 1560 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::rename>(x)); 1561 : } 1562 3839 : else if (process::is_comm(x)) 1563 : { 1564 121 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::comm>(x)); 1565 : } 1566 3718 : else if (process::is_allow(x)) 1567 : { 1568 68 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::allow>(x)); 1569 : } 1570 3650 : else if (process::is_sync(x)) 1571 : { 1572 321 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sync>(x)); 1573 : } 1574 3329 : else if (process::is_at(x)) 1575 : { 1576 332 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::at>(x)); 1577 : } 1578 2997 : else if (process::is_seq(x)) 1579 : { 1580 1725 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::seq>(x)); 1581 : } 1582 1272 : else if (process::is_if_then(x)) 1583 : { 1584 255 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then>(x)); 1585 : } 1586 1017 : else if (process::is_if_then_else(x)) 1587 : { 1588 121 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then_else>(x)); 1589 : } 1590 896 : else if (process::is_bounded_init(x)) 1591 : { 1592 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::bounded_init>(x)); 1593 : } 1594 896 : else if (process::is_merge(x)) 1595 : { 1596 320 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::merge>(x)); 1597 : } 1598 576 : else if (process::is_left_merge(x)) 1599 : { 1600 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::left_merge>(x)); 1601 : } 1602 576 : else if (process::is_choice(x)) 1603 : { 1604 464 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::choice>(x)); 1605 : } 1606 112 : else if (process::is_stochastic_operator(x)) 1607 : { 1608 112 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::stochastic_operator>(x)); 1609 : } 1610 0 : else if (process::is_untyped_process_assignment(x)) 1611 : { 1612 0 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::untyped_process_assignment>(x)); 1613 : } 1614 9047 : static_cast<Derived&>(*this).leave(x); 1615 9047 : } 1616 : 1617 : }; 1618 : 1619 : /// \\brief Traverser class 1620 : template <typename Derived> 1621 : struct identifier_string_traverser: public add_traverser_identifier_strings<data::identifier_string_traverser, Derived> 1622 : { 1623 : }; 1624 : //--- end generated add_traverser_identifier_strings code ---// 1625 : 1626 : //--- start generated add_traverser_action_labels code ---// 1627 : template <template <class> class Traverser, class Derived> 1628 : struct add_traverser_action_labels: public Traverser<Derived> 1629 : { 1630 : typedef Traverser<Derived> super; 1631 : using super::enter; 1632 : using super::leave; 1633 : using super::apply; 1634 : 1635 : void apply(const process::action_label& x) 1636 : { 1637 : static_cast<Derived&>(*this).enter(x); 1638 : // skip 1639 : static_cast<Derived&>(*this).leave(x); 1640 : } 1641 : 1642 : void apply(const process::process_specification& x) 1643 : { 1644 : static_cast<Derived&>(*this).enter(x); 1645 : static_cast<Derived&>(*this).apply(x.action_labels()); 1646 : static_cast<Derived&>(*this).apply(x.equations()); 1647 : static_cast<Derived&>(*this).apply(x.init()); 1648 : static_cast<Derived&>(*this).leave(x); 1649 : } 1650 : 1651 : void apply(const process::process_equation& x) 1652 : { 1653 : static_cast<Derived&>(*this).enter(x); 1654 : static_cast<Derived&>(*this).apply(x.expression()); 1655 : static_cast<Derived&>(*this).leave(x); 1656 : } 1657 : 1658 0 : void apply(const process::action& x) 1659 : { 1660 0 : static_cast<Derived&>(*this).enter(x); 1661 0 : static_cast<Derived&>(*this).apply(x.label()); 1662 0 : static_cast<Derived&>(*this).leave(x); 1663 0 : } 1664 : 1665 : void apply(const process::process_instance& x) 1666 : { 1667 : static_cast<Derived&>(*this).enter(x); 1668 : // skip 1669 : static_cast<Derived&>(*this).leave(x); 1670 : } 1671 : 1672 : void apply(const process::process_instance_assignment& x) 1673 : { 1674 : static_cast<Derived&>(*this).enter(x); 1675 : // skip 1676 : static_cast<Derived&>(*this).leave(x); 1677 : } 1678 : 1679 : void apply(const process::delta& x) 1680 : { 1681 : static_cast<Derived&>(*this).enter(x); 1682 : // skip 1683 : static_cast<Derived&>(*this).leave(x); 1684 : } 1685 : 1686 : void apply(const process::tau& x) 1687 : { 1688 : static_cast<Derived&>(*this).enter(x); 1689 : // skip 1690 : static_cast<Derived&>(*this).leave(x); 1691 : } 1692 : 1693 : void apply(const process::sum& x) 1694 : { 1695 : static_cast<Derived&>(*this).enter(x); 1696 : static_cast<Derived&>(*this).apply(x.operand()); 1697 : static_cast<Derived&>(*this).leave(x); 1698 : } 1699 : 1700 : void apply(const process::block& x) 1701 : { 1702 : static_cast<Derived&>(*this).enter(x); 1703 : static_cast<Derived&>(*this).apply(x.operand()); 1704 : static_cast<Derived&>(*this).leave(x); 1705 : } 1706 : 1707 : void apply(const process::hide& x) 1708 : { 1709 : static_cast<Derived&>(*this).enter(x); 1710 : static_cast<Derived&>(*this).apply(x.operand()); 1711 : static_cast<Derived&>(*this).leave(x); 1712 : } 1713 : 1714 : void apply(const process::rename& x) 1715 : { 1716 : static_cast<Derived&>(*this).enter(x); 1717 : static_cast<Derived&>(*this).apply(x.operand()); 1718 : static_cast<Derived&>(*this).leave(x); 1719 : } 1720 : 1721 : void apply(const process::comm& x) 1722 : { 1723 : static_cast<Derived&>(*this).enter(x); 1724 : static_cast<Derived&>(*this).apply(x.operand()); 1725 : static_cast<Derived&>(*this).leave(x); 1726 : } 1727 : 1728 : void apply(const process::allow& x) 1729 : { 1730 : static_cast<Derived&>(*this).enter(x); 1731 : static_cast<Derived&>(*this).apply(x.operand()); 1732 : static_cast<Derived&>(*this).leave(x); 1733 : } 1734 : 1735 : void apply(const process::sync& x) 1736 : { 1737 : static_cast<Derived&>(*this).enter(x); 1738 : static_cast<Derived&>(*this).apply(x.left()); 1739 : static_cast<Derived&>(*this).apply(x.right()); 1740 : static_cast<Derived&>(*this).leave(x); 1741 : } 1742 : 1743 : void apply(const process::at& x) 1744 : { 1745 : static_cast<Derived&>(*this).enter(x); 1746 : static_cast<Derived&>(*this).apply(x.operand()); 1747 : static_cast<Derived&>(*this).leave(x); 1748 : } 1749 : 1750 : void apply(const process::seq& x) 1751 : { 1752 : static_cast<Derived&>(*this).enter(x); 1753 : static_cast<Derived&>(*this).apply(x.left()); 1754 : static_cast<Derived&>(*this).apply(x.right()); 1755 : static_cast<Derived&>(*this).leave(x); 1756 : } 1757 : 1758 : void apply(const process::if_then& x) 1759 : { 1760 : static_cast<Derived&>(*this).enter(x); 1761 : static_cast<Derived&>(*this).apply(x.then_case()); 1762 : static_cast<Derived&>(*this).leave(x); 1763 : } 1764 : 1765 : void apply(const process::if_then_else& x) 1766 : { 1767 : static_cast<Derived&>(*this).enter(x); 1768 : static_cast<Derived&>(*this).apply(x.then_case()); 1769 : static_cast<Derived&>(*this).apply(x.else_case()); 1770 : static_cast<Derived&>(*this).leave(x); 1771 : } 1772 : 1773 : void apply(const process::bounded_init& x) 1774 : { 1775 : static_cast<Derived&>(*this).enter(x); 1776 : static_cast<Derived&>(*this).apply(x.left()); 1777 : static_cast<Derived&>(*this).apply(x.right()); 1778 : static_cast<Derived&>(*this).leave(x); 1779 : } 1780 : 1781 : void apply(const process::merge& x) 1782 : { 1783 : static_cast<Derived&>(*this).enter(x); 1784 : static_cast<Derived&>(*this).apply(x.left()); 1785 : static_cast<Derived&>(*this).apply(x.right()); 1786 : static_cast<Derived&>(*this).leave(x); 1787 : } 1788 : 1789 : void apply(const process::left_merge& x) 1790 : { 1791 : static_cast<Derived&>(*this).enter(x); 1792 : static_cast<Derived&>(*this).apply(x.left()); 1793 : static_cast<Derived&>(*this).apply(x.right()); 1794 : static_cast<Derived&>(*this).leave(x); 1795 : } 1796 : 1797 : void apply(const process::choice& x) 1798 : { 1799 : static_cast<Derived&>(*this).enter(x); 1800 : static_cast<Derived&>(*this).apply(x.left()); 1801 : static_cast<Derived&>(*this).apply(x.right()); 1802 : static_cast<Derived&>(*this).leave(x); 1803 : } 1804 : 1805 : void apply(const process::stochastic_operator& x) 1806 : { 1807 : static_cast<Derived&>(*this).enter(x); 1808 : static_cast<Derived&>(*this).apply(x.operand()); 1809 : static_cast<Derived&>(*this).leave(x); 1810 : } 1811 : 1812 : void apply(const process::untyped_process_assignment& x) 1813 : { 1814 : static_cast<Derived&>(*this).enter(x); 1815 : // skip 1816 : static_cast<Derived&>(*this).leave(x); 1817 : } 1818 : 1819 : void apply(const process::process_expression& x) 1820 : { 1821 : static_cast<Derived&>(*this).enter(x); 1822 : if (data::is_untyped_data_parameter(x)) 1823 : { 1824 : static_cast<Derived&>(*this).apply(atermpp::down_cast<data::untyped_data_parameter>(x)); 1825 : } 1826 : else if (process::is_action(x)) 1827 : { 1828 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::action>(x)); 1829 : } 1830 : else if (process::is_process_instance(x)) 1831 : { 1832 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance>(x)); 1833 : } 1834 : else if (process::is_process_instance_assignment(x)) 1835 : { 1836 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::process_instance_assignment>(x)); 1837 : } 1838 : else if (process::is_delta(x)) 1839 : { 1840 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::delta>(x)); 1841 : } 1842 : else if (process::is_tau(x)) 1843 : { 1844 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::tau>(x)); 1845 : } 1846 : else if (process::is_sum(x)) 1847 : { 1848 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sum>(x)); 1849 : } 1850 : else if (process::is_block(x)) 1851 : { 1852 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::block>(x)); 1853 : } 1854 : else if (process::is_hide(x)) 1855 : { 1856 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::hide>(x)); 1857 : } 1858 : else if (process::is_rename(x)) 1859 : { 1860 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::rename>(x)); 1861 : } 1862 : else if (process::is_comm(x)) 1863 : { 1864 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::comm>(x)); 1865 : } 1866 : else if (process::is_allow(x)) 1867 : { 1868 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::allow>(x)); 1869 : } 1870 : else if (process::is_sync(x)) 1871 : { 1872 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::sync>(x)); 1873 : } 1874 : else if (process::is_at(x)) 1875 : { 1876 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::at>(x)); 1877 : } 1878 : else if (process::is_seq(x)) 1879 : { 1880 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::seq>(x)); 1881 : } 1882 : else if (process::is_if_then(x)) 1883 : { 1884 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then>(x)); 1885 : } 1886 : else if (process::is_if_then_else(x)) 1887 : { 1888 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::if_then_else>(x)); 1889 : } 1890 : else if (process::is_bounded_init(x)) 1891 : { 1892 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::bounded_init>(x)); 1893 : } 1894 : else if (process::is_merge(x)) 1895 : { 1896 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::merge>(x)); 1897 : } 1898 : else if (process::is_left_merge(x)) 1899 : { 1900 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::left_merge>(x)); 1901 : } 1902 : else if (process::is_choice(x)) 1903 : { 1904 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::choice>(x)); 1905 : } 1906 : else if (process::is_stochastic_operator(x)) 1907 : { 1908 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::stochastic_operator>(x)); 1909 : } 1910 : else if (process::is_untyped_process_assignment(x)) 1911 : { 1912 : static_cast<Derived&>(*this).apply(atermpp::down_cast<process::untyped_process_assignment>(x)); 1913 : } 1914 : static_cast<Derived&>(*this).leave(x); 1915 : } 1916 : 1917 : }; 1918 : 1919 : /// \\brief Traverser class 1920 : template <typename Derived> 1921 : struct action_label_traverser: public add_traverser_action_labels<core::traverser, Derived> 1922 : { 1923 : }; 1924 : //--- end generated add_traverser_action_labels code ---// 1925 : 1926 : } // namespace process 1927 : 1928 : } // namespace mcrl2 1929 : 1930 : #endif // MCRL2_PROCESS_TRAVERSER_H