From 32aa9d501621f76bbd1ded77977dc2babd2dca21 Mon Sep 17 00:00:00 2001 From: Efi Fogel Date: Sun, 31 Dec 2017 18:51:42 +0200 Subject: [PATCH] Fixed boundary tags --- .../include/CGAL/Arr_tags.h | 649 ++++++++---------- 1 file changed, 278 insertions(+), 371 deletions(-) diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_tags.h b/Arrangement_on_surface_2/include/CGAL/Arr_tags.h index 790659ae99d..46404ce2576 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_tags.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_tags.h @@ -44,11 +44,11 @@ namespace CGAL { struct Arr_boundary_side_tag {}; struct Arr_oblivious_side_tag : public virtual Arr_boundary_side_tag {}; -struct Arr_non_oblivious_side_tag : public virtual Arr_boundary_side_tag {}; -struct Arr_open_side_tag : public virtual Arr_non_oblivious_side_tag {}; -struct Arr_closed_side_tag : public virtual Arr_non_oblivious_side_tag {}; -struct Arr_contracted_side_tag : public virtual Arr_non_oblivious_side_tag {}; -struct Arr_identified_side_tag : public virtual Arr_non_oblivious_side_tag {}; +struct Arr_not_oblivious_side_tag : public virtual Arr_boundary_side_tag {}; +struct Arr_open_side_tag : public virtual Arr_not_oblivious_side_tag {}; +struct Arr_closed_side_tag : public virtual Arr_not_oblivious_side_tag {}; +struct Arr_contracted_side_tag : public virtual Arr_not_oblivious_side_tag {}; +struct Arr_identified_side_tag : public virtual Arr_not_oblivious_side_tag {}; BOOST_MPL_HAS_XXX_TRAIT_DEF(Left_side_category) BOOST_MPL_HAS_XXX_TRAIT_DEF(Bottom_side_category) @@ -58,184 +58,165 @@ BOOST_MPL_HAS_XXX_TRAIT_DEF(Right_side_category) namespace internal { //! type to provide left side tag (is oblivious if not existing) -template < class Traits_, bool B > +template struct Get_left_side_category {}; -template < class Traits_ > -struct Get_left_side_category< Traits_, true > { - typedef typename Traits_::Left_side_category Category; +template +struct Get_left_side_category { + typedef typename Traits_::Left_side_category Category; }; -template < class Traits_ > -struct Get_left_side_category< Traits_, false > { - typedef Arr_oblivious_side_tag Category; +template +struct Get_left_side_category { + typedef Arr_oblivious_side_tag Category; }; -template < class Traits_ > +template struct Arr_complete_left_side_category { public: - typedef Traits_ Traits; - + typedef Traits_ Traits; typedef typename - Get_left_side_category< Traits, has_Left_side_category< Traits >::value >::Category Category; + Get_left_side_category::value>::Category + Category; }; -template < class GeometryTraits_2, bool b > +template struct Validate_left_side_category {}; -template < class GeometryTraits_2 > -struct Validate_left_side_category< GeometryTraits_2, true > { +template +struct Validate_left_side_category { template void missing__Left_side_category() {} }; -template < class GeometryTraits_2 > -struct Validate_left_side_category< GeometryTraits_2, false > { +template +struct Validate_left_side_category { template void missing__Left_side_category() - { - T - missing__Left_side_category__assuming__Arr_oblivious_side_tag__instead; - } + { T missing__Left_side_category__assuming__Arr_oblivious_side_tag__instead; } }; //! type to provide bottom side tag (is oblivious if not existing) -template < class Traits_, bool B > -struct Get_bottom_side_category { +template +struct Get_bottom_side_category {}; + +template +struct Get_bottom_side_category { + typedef typename Traits_::Bottom_side_category Category; }; -template < class Traits_ > -struct Get_bottom_side_category< Traits_, true > { - typedef typename Traits_::Bottom_side_category Category; +template +struct Get_bottom_side_category { + typedef Arr_oblivious_side_tag Category; }; -template < class Traits_ > -struct Get_bottom_side_category< Traits_, false > { - typedef Arr_oblivious_side_tag Category; -}; - -template < class Traits_ > +template struct Arr_complete_bottom_side_category { - public: - - typedef Traits_ Traits; - + typedef Traits_ Traits; typedef typename - Get_bottom_side_category< Traits, has_Bottom_side_category< Traits >::value >::Category - Category; + Get_bottom_side_category::value>::Category + Category; }; -template < class GeometryTraits_2, bool b > +template struct Validate_bottom_side_category {}; -template < class GeometryTraits_2 > -struct Validate_bottom_side_category< GeometryTraits_2, true > { +template +struct Validate_bottom_side_category { template void missing__Bottom_side_category() {} }; -template < class GeometryTraits_2 > -struct Validate_bottom_side_category< GeometryTraits_2, false > { +template +struct Validate_bottom_side_category { template void missing__Bottom_side_category() - { - T - missing__Bottom_side_category__assuming__Arr_oblivious_side_tag__instead; - } + { T missing__Bottom_side_category__assuming__Arr_oblivious_side_tag__instead; } }; - //! type to provide top side tag (is oblivious if not existing) -template < class Traits_, bool B > +template struct Get_top_side_category { }; -template < class Traits_ > -struct Get_top_side_category< Traits_, true > { - typedef typename Traits_::Top_side_category Category; +template +struct Get_top_side_category { + typedef typename Traits_::Top_side_category Category; }; -template < class Traits_ > -struct Get_top_side_category< Traits_, false > { - typedef Arr_oblivious_side_tag Category; +template +struct Get_top_side_category { + typedef Arr_oblivious_side_tag Category; }; -template < class Traits_ > +template struct Arr_complete_top_side_category { - public: - - typedef Traits_ Traits; - + typedef Traits_ Traits; typedef typename - Get_top_side_category< Traits, has_Top_side_category< Traits >::value >::Category Category; + Get_top_side_category::value>::Category + Category; }; -template < class GeometryTraits_2, bool b > +template struct Validate_top_side_category {}; -template < class GeometryTraits_2 > -struct Validate_top_side_category< GeometryTraits_2, true > { +template +struct Validate_top_side_category { template void missing__Top_side_category() {} }; -template < class GeometryTraits_2 > -struct Validate_top_side_category< GeometryTraits_2, false > { +template +struct Validate_top_side_category { template void missing__Top_side_category() - { - T missing__Top_side_category__assuming__Arr_oblivious_side_tag__instead; - } + { T missing__Top_side_category__assuming__Arr_oblivious_side_tag__instead; } }; - //! type to provide right side tag (is oblivious if not existing) -template < class Traits_, bool B > -struct Get_right_side_category { +template +struct Get_right_side_category {}; + +template +struct Get_right_side_category { + typedef typename Traits_::Right_side_category Category; }; -template < class Traits_ > -struct Get_right_side_category< Traits_, true > { - typedef typename Traits_::Right_side_category Category; +template +struct Get_right_side_category { + typedef Arr_oblivious_side_tag Category; }; -template < class Traits_ > -struct Get_right_side_category< Traits_, false > { - typedef Arr_oblivious_side_tag Category; -}; - -template < class Traits_ > +template struct Arr_complete_right_side_category { - public: - - typedef Traits_ Traits; + typedef Traits_ Traits; typedef typename - Get_right_side_category< Traits, has_Right_side_category< Traits >::value >::Category - Category; + Get_right_side_category::value>::Category + Category; }; -template < class GeometryTraits_2, bool b > +template struct Validate_right_side_category {}; -template < class GeometryTraits_2 > -struct Validate_right_side_category< GeometryTraits_2, true > { +template +struct Validate_right_side_category { template void missing__Right_side_category() {} }; -template < class GeometryTraits_2 > -struct Validate_right_side_category< GeometryTraits_2, false > { +template +struct Validate_right_side_category { template void missing__Right_side_category() - { - T - missing__Right_side_category__assuming__Arr_oblivious_side_tag__instead; - } + { T missing__Right_side_category__assuming__Arr_oblivious_side_tag__instead; } }; } // namespace internal @@ -255,198 +236,202 @@ struct Arr_has_open_side_tag : struct Arr_all_sides_open_tag : public virtual Arr_not_all_sides_oblivious_tag{}; -struct Arr_all_sides_non_open_tag {}; -struct Arr_not_all_sides_non_open_tag {}; +struct Arr_all_sides_not_open_tag {}; +struct Arr_not_all_sides_not_open_tag {}; -/*!\brief Struct to determine whether all side tags are "oblivious" +/* The following tags inherit from the Arr_not_all_sides_oblivious_tag; + * They match any parameter space where at least one side of the boundary is not + * oblivious. + * The former matches any parameter space that none of its sides are either + * identified, contracted, or closed. In other words, it matches parameter + * spaces that cannot contain points on their boundaries. + * The latter matches any parameter space that has at least one side that is + * either an identified, contracted, or closed side. In other words, it matches + * any parameter space, the boundary of which may contain a point. */ -template < class ArrLeftSideCategory, class ArrBottomSideCategory, - class ArrTopSideCategory, class ArrRightSideCategory > -struct Arr_are_all_sides_oblivious_tag { +struct Arr_all_sides_not_finite_tag : + public virtual Arr_not_all_sides_oblivious_tag {}; +struct Arr_not_all_sides_not_finite_tag : + public virtual Arr_not_all_sides_oblivious_tag {}; -public: +typedef boost::mpl::bool_ Arr_true; +typedef boost::mpl::bool_ Arr_false; - //! This instance's first template parameter - typedef ArrLeftSideCategory Left_side_category; +template +struct Arr_is_side_oblivious { + typedef ArrSideCategory Side_cat; + typedef boost::is_same Is_same; + typedef boost::mpl::if_ result; +}; - //! This instance's second template parameter - typedef ArrBottomSideCategory Bottom_side_category; +template +struct Arr_is_side_open { + typedef ArrSideCategory Side_cat; + typedef boost::is_same Is_same; + typedef boost::mpl::if_ result; +}; - //! This instance's third template parameter - typedef ArrTopSideCategory Top_side_category; +template +struct Arr_is_side_identified { + typedef ArrSideCategory Side_cat; + typedef boost::is_same Is_same; + typedef boost::mpl::if_ result; +}; - //! This instance's fourth template parameter - typedef ArrRightSideCategory Right_side_category; +template +struct Arr_is_side_contracted { + typedef ArrSideCategory Side_cat; + typedef boost::is_same Is_same; + typedef boost::mpl::if_ result; +}; -private: +template +struct Arr_is_side_closed { + typedef ArrSideCategory Side_cat; + typedef boost::is_same Is_same; + typedef boost::mpl::if_ result; +}; - typedef boost::mpl::bool_< true > true_; - typedef boost::mpl::bool_< false > false_; +/*! Struct to determine whether all side tags are "oblivious" + */ +template +struct Arr_all_sides_oblivious_category { + typedef ArrLeftSideCategory Lef_side_cat; + typedef ArrRightSideCategory Rig_side_cat; + typedef ArrBottomSideCategory Bot_side_cat; + typedef ArrTopSideCategory Top_side_cat; - typedef boost::mpl::if_< - boost::is_same< Left_side_category, Arr_oblivious_side_tag >, - true_, false_ > - Left_oblivious; + typedef typename Arr_is_side_oblivious::result Lef_obl; + typedef typename Arr_is_side_oblivious::result Rig_obl; + typedef typename Arr_is_side_oblivious::result Bot_obl; + typedef typename Arr_is_side_oblivious::result Top_obl; - typedef boost::mpl::if_< - boost::is_same< Bottom_side_category, Arr_oblivious_side_tag >, - true_, false_ > - Bottom_oblivious; - - typedef boost::mpl::if_< - boost::is_same< Top_side_category, Arr_oblivious_side_tag >, - true_, false_ > - Top_oblivious; - - typedef boost::mpl::if_< - boost::is_same< Right_side_category, Arr_oblivious_side_tag >, - true_, false_ > - Right_oblivious; - -public: - - /*!\brief - * boolean tag that is Arr_all_sides_oblivious_tag if all sides are + /*! Boolean tag that is Arr_all_sides_oblivious_tag if all sides are * oblivious, otherwise Arr_not_all_sides_oblivious_tag */ - typedef typename boost::mpl::if_< - boost::mpl::and_< Left_oblivious, Bottom_oblivious, - Top_oblivious, Right_oblivious >, - Arr_all_sides_oblivious_tag, - Arr_not_all_sides_oblivious_tag >::type result; - + typedef typename boost::mpl::if_, + Arr_all_sides_oblivious_tag, + Arr_not_all_sides_oblivious_tag>::type + result; }; -/*!\brief Struct to determine whether all side tags are "non-open" +/*! Struct to determine whether all side tags are "not-open" */ -template < class ArrLeftSideCategory, class ArrBottomSideCategory, - class ArrTopSideCategory, class ArrRightSideCategory > -struct Arr_are_all_sides_non_open_tag { - +template +struct Arr_all_sides_not_open_category { public: - - //! This instance's first template parameter - typedef ArrLeftSideCategory Left_side_category; - - //! This instance's second template parameter - typedef ArrBottomSideCategory Bottom_side_category; - - //! This instance's third template parameter - typedef ArrTopSideCategory Top_side_category; - - //! This instance's fourth template parameter - typedef ArrRightSideCategory Right_side_category; + typedef ArrLeftSideCategory Lef_side_cat; + typedef ArrRightSideCategory Rig_side_cat; + typedef ArrBottomSideCategory Bot_side_cat; + typedef ArrTopSideCategory Top_side_cat; private: + typedef typename Arr_is_side_open::result Lef_ope; + typedef typename Arr_is_side_open::result Rig_ope; + typedef typename Arr_is_side_open::result Bot_ope; + typedef typename Arr_is_side_open::result Top_ope; - typedef boost::mpl::bool_< true > true_; - typedef boost::mpl::bool_< false > false_; - - typedef boost::mpl::if_< - boost::is_same< Left_side_category, Arr_open_side_tag >, - true_, false_ > - Left_open; - - typedef boost::mpl::if_< - boost::is_same< Bottom_side_category, Arr_open_side_tag >, - true_, false_ > - Bottom_open; - - typedef boost::mpl::if_< - boost::is_same< Top_side_category, Arr_open_side_tag >, - true_, false_ > - Top_open; - - typedef boost::mpl::if_< - boost::is_same< Right_side_category, Arr_open_side_tag >, - true_, false_ > - Right_open; + typedef boost::mpl::not_ Lef_not_ope; + typedef boost::mpl::not_ Rig_not_ope; + typedef boost::mpl::not_ Bot_not_ope; + typedef boost::mpl::not_ Top_not_ope; public: - - /*!\brief - * boolean tag that is Arr_all_sides_non_open_tag if all sides are non-open, - * otherwise Arr_not_all_sides_non_open_tag + /*! Boolean tag that is Arr_all_sides_not_open_tag if all sides are not-open, + * otherwise Arr_not_all_sides_not_open_tag */ - typedef typename boost::mpl::if_< - boost::mpl::and_< boost::mpl::not_< Left_open >, - boost::mpl::not_< Bottom_open >, - boost::mpl::not_< Top_open >, - boost::mpl::not_< Right_open > >, - Arr_all_sides_non_open_tag, - Arr_not_all_sides_non_open_tag >::type result; + typedef typename boost::mpl::if_, + Arr_all_sides_not_open_tag, + Arr_not_all_sides_not_open_tag>::type + result; }; - -/*!\brief Struct to check consistent tagging of identifications +/*! Struct to determine one of the following: + * All sides are oblivious, + * not all sides are oblivious, and not all sides are not open, or + * Not all sides are oblivious, and all sides are not open + * One distinct property of parameter spaces that are either oblivious or open + * is that points cannot exist on the boundary of such parameter spaces. */ -template < class ArrLeftSideCategory, class ArrBottomSideCategory, - class ArrTopSideCategory, class ArrRightSideCategory > -struct Arr_sane_identified_tagging { - +template +struct Arr_sides_category { public: - - //! This instance's first template parameter - typedef ArrLeftSideCategory Left_side_category; - - //! This instance's second template parameter - typedef ArrBottomSideCategory Bottom_side_category; - - //! This instance's third template parameter - typedef ArrTopSideCategory Top_side_category; - - //! This instance's fourth template parameter - typedef ArrRightSideCategory Right_side_category; + typedef ArrLeftSideCategory Lef_side_cat; + typedef ArrBottomSideCategory Bot_side_cat; + typedef ArrTopSideCategory Top_side_cat; + typedef ArrRightSideCategory Rig_side_cat; private: + typedef typename Arr_is_side_oblivious::result Lef_obl; + typedef typename Arr_is_side_oblivious::result Rig_obl; + typedef typename Arr_is_side_oblivious::result Bot_obl; + typedef typename Arr_is_side_oblivious::result Top_obl; - typedef boost::mpl::bool_< true > true_; - typedef boost::mpl::bool_< false > false_; + typedef typename Arr_is_side_open::result Lef_ope; + typedef typename Arr_is_side_open::result Rig_ope; + typedef typename Arr_is_side_open::result Bot_ope; + typedef typename Arr_is_side_open::result Top_ope; - typedef boost::mpl::if_< - boost::is_same< Left_side_category, Arr_identified_side_tag >, - true_, false_ > - Left_identified; + typedef boost::mpl::or_ Lef_obl_or_ope; + typedef boost::mpl::or_ Rig_obl_or_ope; + typedef boost::mpl::or_ Bot_obl_or_ope; + typedef boost::mpl::or_ Top_obl_or_ope; - typedef boost::mpl::if_< - boost::is_same< Bottom_side_category, Arr_identified_side_tag >, - true_, false_ > - Bottom_identified; - - typedef boost::mpl::if_< - boost::is_same< Top_side_category, Arr_identified_side_tag >, - true_, false_ > - Top_identified; - - typedef boost::mpl::if_< - boost::is_same< Right_side_category, Arr_identified_side_tag >, - true_, false_ > - Right_identified; - - typedef boost::mpl::and_< Left_identified, Right_identified > LR_identified; - - typedef boost::mpl::and_< Bottom_identified, Top_identified > BT_identified; - - typedef boost::mpl::and_< boost::mpl::not_< Left_identified>, - boost::mpl::not_< Right_identified > > - LR_non_identified; - - typedef boost::mpl::and_< boost::mpl::not_< Bottom_identified >, - boost::mpl::not_< Top_identified > > - BT_non_identified; - - typedef boost::mpl::or_< LR_identified, LR_non_identified > LR_ok; - typedef boost::mpl::or_< BT_identified, BT_non_identified > BT_ok; + typedef typename boost::mpl::if_, + Arr_all_sides_not_finite_tag, + Arr_not_all_sides_not_finite_tag>::type + tmp; public: + typedef typename boost::mpl::if_, + Arr_all_sides_oblivious_tag, tmp>::type + result; +}; - /*!\brief - * boolean tag that is bool_ if opposite sides are either - * both identified or both non-identified, +/*! Struct to check consistent tagging of identifications + */ +template +struct Arr_sane_identified_tagging { + typedef ArrLeftSideCategory Lef_side_cat; + typedef ArrRightSideCategory Rig_side_cat; + typedef ArrBottomSideCategory Bot_side_cat; + typedef ArrTopSideCategory Top_side_cat; + + typedef typename Arr_is_side_identified::result Lef_ide; + typedef typename Arr_is_side_identified::result Rig_ide; + typedef typename Arr_is_side_identified::result Bot_ide; + typedef typename Arr_is_side_identified::result Top_ide; + + typedef boost::mpl::and_ LR_ide; + typedef boost::mpl::and_ BT_ide; + + typedef boost::mpl::not_ Lef_not_ide; + typedef boost::mpl::not_ Rig_not_ide; + typedef boost::mpl::not_ Bot_not_ide; + typedef boost::mpl::not_ Top_not_ide; + + typedef boost::mpl::and_ LR_not_ide; + + typedef boost::mpl::and_ BT_not_ide; + + typedef boost::mpl::or_ LR_ok; + typedef boost::mpl::or_ BT_ok; + + /*! Boolean tag that is bool_ if opposite sides are either + * both identified or both not-identified, * otherwise bool_ */ - typedef boost::mpl::and_< LR_ok, BT_ok > result; - + typedef boost::mpl::and_ result; }; /*! Checks whether one of two boundary sides are identified @@ -454,137 +439,69 @@ public: * as well. Thus: * (i) When Arr_has_identified_sides is used to check whether two opposite * sides are identified, the check for the second side is redundant. - * (ii) When Arr_has_identified_sides is used to check whether two non-opposite + * (ii) When Arr_has_identified_sides is used to check whether two not-opposite * sides are identified, the check applies to all four sides. */ -template +template struct Arr_has_identified_sides { -public: - //! This instance's first template parameter - typedef ArrSideOneCategory Side_one_category; + typedef ArrSideOneCategory Side_one_cat; + typedef ArrSideTwoCategory Side_two_cat; - //! This instance's second template parameter - typedef ArrSideTwoCategory Side_two_category; + typedef typename Arr_is_side_identified::result Side_one_ide; + typedef typename Arr_is_side_identified::result Side_two_ide; -private: - typedef boost::mpl::bool_ true_; - typedef boost::mpl::bool_ false_; - - typedef boost::mpl::if_< - boost::is_same, - true_, false_> - Side_one_identified; - - typedef boost::mpl::if_< - boost::is_same, - true_, false_> - Side_two_identified; - -public: - /*!\brief - * boolean tag that is bool_ if one side is identified, + /*! Boolean tag that is bool_ if one side is identified, * otherwise bool_ */ - typedef boost::mpl::or_ result; + typedef boost::mpl::or_ result; }; /*! Checks whether one of two boundary sides are contracted */ -template +template struct Arr_has_contracted_sides_two { -public: - //! This instance's first template parameter - typedef ArrSideOneCategory Side_one_category; + typedef ArrSideOneCategory Side_one_cat; + typedef ArrSideTwoCategory Side_two_cat; - //! This instance's second template parameter - typedef ArrSideTwoCategory Side_two_category; + typedef typename Arr_is_side_contracted::result Side_one_con; + typedef typename Arr_is_side_contracted::result Side_two_con; -private: - typedef boost::mpl::bool_ true_; - typedef boost::mpl::bool_ false_; - - typedef boost::mpl::if_< - boost::is_same, - true_, false_> - Side_one_contracted; - - typedef boost::mpl::if_< - boost::is_same, - true_, false_> - Side_two_contracted; - -public: - /*!\brief - * boolean tag that is bool_ if one side is identified, + /*!\ Boolean tag that is bool_ if one side is identified, * otherwise bool_ */ - typedef boost::mpl::or_ result; + typedef boost::mpl::or_ result; }; /*! Checks whether one of two boundary sides are closed */ -template +template struct Arr_has_closed_sides_two { -public: - //! This instance's first template parameter - typedef ArrSideOneCategory Side_one_category; + typedef ArrSideOneCategory Side_one_cat; + typedef ArrSideTwoCategory Side_two_cat; - //! This instance's second template parameter - typedef ArrSideTwoCategory Side_two_category; + typedef typename Arr_is_side_closed::result Side_one_clo; + typedef typename Arr_is_side_closed::result Side_two_clo; -private: - typedef boost::mpl::bool_ true_; - typedef boost::mpl::bool_ false_; - - typedef boost::mpl::if_< - boost::is_same, - true_, false_> - Side_one_closed; - - typedef boost::mpl::if_< - boost::is_same, - true_, false_> - Side_two_closed; - -public: - /*!\brief - * boolean tag that is bool_ if one side is identified, + /*! Boolean tag that is bool_ if one side is identified, * otherwise bool_ */ - typedef boost::mpl::or_ result; + typedef boost::mpl::or_ result; }; /*! Checks whether one of two boundary sides are open */ -template +template struct Arr_has_open_sides_two { -public: - //! This instance's first template parameter - typedef ArrSideOneCategory Side_one_category; + typedef ArrSideOneCategory Side_one_cat; + typedef ArrSideTwoCategory Side_two_cat; - //! This instance's second template parameter - typedef ArrSideTwoCategory Side_two_category; + typedef typename Arr_is_side_open::result Side_one_ope; + typedef typename Arr_is_side_open::result Side_two_ope; -private: - typedef boost::mpl::bool_ true_; - typedef boost::mpl::bool_ false_; - - typedef boost::mpl::if_< - boost::is_same, - true_, false_> - Side_one_open; - - typedef boost::mpl::if_< - boost::is_same, - true_, false_> - Side_two_open; - -public: - /*!\brief - * boolean tag that is bool_ if one side is identified, + /*! Boolean tag that is bool_ if one side is identified, * otherwise bool_ */ - typedef boost::mpl::or_ result; + typedef boost::mpl::or_ result; }; /*! Categorizes two boundary sides: @@ -594,34 +511,26 @@ public: * Otherwise if one side is open => Arr_has_open_side_tag * Otherwise => Arr_all_sides_oblivious_tag */ -template < class ArrSideOneCategory, class ArrSideTwoCategory> +template struct Arr_two_sides_category { -public: - //! This instance's first template parameter - typedef ArrSideOneCategory Side_one_category; + typedef ArrSideOneCategory Side_one_cat; + typedef ArrSideTwoCategory Side_two_cat; - //! This instance's second template parameter - typedef ArrSideTwoCategory Side_two_category; - -private: // One of the two sides is identified - typedef typename Arr_has_identified_sides::result + typedef typename Arr_has_identified_sides::result Is_identified; // One of the two sides is contracted - typedef typename Arr_has_contracted_sides_two::result + typedef typename Arr_has_contracted_sides_two::result Is_contracted; // One of the two sides is closed - typedef typename Arr_has_closed_sides_two::result + typedef typename Arr_has_closed_sides_two::result Is_closed; // One of the two sides is open - typedef typename Arr_has_open_sides_two::result + typedef typename Arr_has_open_sides_two::result Is_open; public: @@ -640,10 +549,8 @@ public: * Otherwise if one side is open => Arr_has_open_side_tag * Otherwise (all sides oblivious) => Arr_all_sides_oblivious_tag */ -template < class ArrSideOneCategory, class ArrSideTwoCategory> -struct Arr_all_sides_category { -public: -}; +template +struct Arr_all_sides_category {}; } // namespace CGAL