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/modal_formula/normalize_sorts.h 10 : /// \brief add your file description here. 11 : 12 : #ifndef MCRL2_MODAL_FORMULA_NORMALIZE_SORTS_H 13 : #define MCRL2_MODAL_FORMULA_NORMALIZE_SORTS_H 14 : 15 : #include "mcrl2/data/normalize_sorts.h" 16 : #include "mcrl2/modal_formula/builder.h" 17 : 18 : namespace mcrl2 19 : { 20 : 21 : namespace action_formulas 22 : { 23 : 24 : template <typename T> 25 : void normalize_sorts(T& x, 26 : const data::sort_specification& sortspec, 27 : typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value>::type* = 0 28 : ) 29 : { 30 : core::make_update_apply_builder<action_formulas::sort_expression_builder>(data::detail::normalize_sorts_function(sortspec)).update(x); 31 : } 32 : 33 : template <typename T> 34 : T normalize_sorts(const T& x, 35 : const data::sort_specification& sortspec, 36 : typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value>::type* = nullptr 37 : ) 38 : { 39 : T result; 40 : core::make_update_apply_builder<action_formulas::sort_expression_builder>(data::detail::normalize_sorts_function(sortspec)).apply(result, x); 41 : return result; 42 : } 43 : 44 : } // namespace action_formulas 45 : 46 : namespace regular_formulas 47 : { 48 : 49 : template <typename T> 50 : void normalize_sorts(T& x, 51 : const data::sort_specification& sortspec, 52 : typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value>::type* = 0 53 : ) 54 : { 55 : core::make_update_apply_builder<regular_formulas::sort_expression_builder>(data::detail::normalize_sorts_function(sortspec)).update(x); 56 : } 57 : 58 : template <typename T> 59 : T normalize_sorts(const T& x, 60 : const data::sort_specification& sortspec, 61 : typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value>::type* = nullptr 62 : ) 63 : { 64 : T result; 65 : core::make_update_apply_builder<regular_formulas::sort_expression_builder>(data::detail::normalize_sorts_function(sortspec)).apply(result, x); 66 : return result; 67 : } 68 : 69 : } // namespace regular_formulas 70 : 71 : namespace state_formulas 72 : { 73 : 74 : template <typename T> 75 : void normalize_sorts(T& x, 76 : const data::sort_specification& sortspec, 77 : typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value>::type* = 0 78 : ) 79 : { 80 : core::make_update_apply_builder<state_formulas::sort_expression_builder>(data::detail::normalize_sorts_function(sortspec)).update(x); 81 : } 82 : 83 : template <typename T> 84 179 : T normalize_sorts(const T& x, 85 : const data::sort_specification& sortspec, 86 : typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value>::type* = nullptr 87 : ) 88 : { 89 179 : T result; 90 179 : core::make_update_apply_builder<state_formulas::sort_expression_builder>(data::detail::normalize_sorts_function(sortspec)).apply(result, x); 91 179 : return result; 92 0 : } 93 : 94 : } // namespace state_formulas 95 : 96 : } // namespace mcrl2 97 : 98 : #endif // MCRL2_MODAL_FORMULA_NORMALIZE_SORTS_H