// Copyright (c) 2003,2004 INRIA Sophia-Antipolis (France) and // Notre Dame University (U.S.A.). All rights reserved. // // This file is part of CGAL (www.cgal.org); you may redistribute it under // the terms of the Q Public License version 1.0. // See the file LICENSE.QPL distributed with CGAL. // // Licensees holding a valid commercial license may use this file in // accordance with the commercial license agreement provided with the software. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // // $Source: /CVSROOT/CGAL/Packages/Segment_Voronoi_diagram_2/include/CGAL/Segment_Voronoi_diagram_filtered_traits_2.h,v $ // $Revision: 1.20 $ $Date: 2004/06/22 17:20:55 $ // $Name: $ // // Author(s) : Menelaos Karavelas #ifndef CGAL_SEGMENT_VORONOI_DIAGRAM_FILTERED_TRAITS_2_H #define CGAL_SEGMENT_VORONOI_DIAGRAM_FILTERED_TRAITS_2_H #include #include // includes for the default parameters of the filtered traits #ifdef CGAL_USE_GMP #include #else #include #include #endif #include #include #include #include CGAL_BEGIN_NAMESPACE #if defined(__sun) && defined(__SUNPRO_CC) // workaround for the Sun CC-5.30 compiler; it does not like default // template parameters that are themselves templates and have // templated classes as parameters, which have then nested types as // arguments... oooof!!! // // In case you did understand what I just described you are most // probably crazy... If you did not, look below to see what kind of // code CC-5.30 did not like. namespace CGALi { template struct SVD_SUNPRO_CC_Interval_converter : public Cartesian_converter > { }; } #endif namespace CGALi { template struct SVD_Concept_check_tags {}; template struct SVD_Concept_check_tags { SVD_Concept_check_tags() { THE_2ND_TEMPLATE_PARAMETER_MUST_EITHER_BE_Field_tag_OR_Sqrt_field_tag ( D() ); } }; template struct SVD_Concept_check_tags { SVD_Concept_check_tags() { THE_4TH_TEMPLATE_PARAMETER_MUST_EITHER_BE_Field_tag_OR_Sqrt_field_tag ( D() ); } }; template struct SVD_Concept_check_tags { SVD_Concept_check_tags() { THE_6TH_TEMPLATE_PARAMETER_MUST_EITHER_BE_Field_tag_OR_Sqrt_field_tag ( D() ); } }; //------------------------------------------------------------------------- template struct SVD_Concept_check_tags { SVD_Concept_check_tags() { THE_2ND_TEMPLATE_PARAMETER_MUST_EITHER_BE_Field_tag_OR_Sqrt_field_tag ( D() ); } }; template struct SVD_Concept_check_tags { SVD_Concept_check_tags() { THE_4TH_TEMPLATE_PARAMETER_MUST_EITHER_BE_Field_tag_OR_Sqrt_field_tag ( D() ); } }; template struct SVD_Concept_check_tags { SVD_Concept_check_tags() { THE_6TH_TEMPLATE_PARAMETER_MUST_EITHER_BE_Field_tag_OR_Sqrt_field_tag ( D() ); } }; //========================================================================= template struct SVD_Concept_check_tags_wi {}; template struct SVD_Concept_check_tags_wi { SVD_Concept_check_tags_wi() { THE_2ND_TEMPLATE_PARAMETER_MUST_EITHER_BE_Ring_tag_OR_Sqrt_field_tag ( D() ); } }; template struct SVD_Concept_check_tags_wi { SVD_Concept_check_tags_wi() { THE_4TH_TEMPLATE_PARAMETER_MUST_EITHER_BE_Ring_tag_OR_Sqrt_field_tag ( D() ); } }; template struct SVD_Concept_check_tags_wi { SVD_Concept_check_tags_wi() { THE_6TH_TEMPLATE_PARAMETER_MUST_EITHER_BE_Ring_tag_OR_Sqrt_field_tag ( D() ); } }; //------------------------------------------------------------------------- template struct SVD_Concept_check_tags_wi { SVD_Concept_check_tags_wi() { THE_2ND_TEMPLATE_PARAMETER_MUST_EITHER_BE_Ring_tag_OR_Sqrt_field_tag ( D() ); } }; template struct SVD_Concept_check_tags_wi { SVD_Concept_check_tags_wi() { THE_4TH_TEMPLATE_PARAMETER_MUST_EITHER_BE_Ring_tag_OR_Sqrt_field_tag ( D() ); } }; template struct SVD_Concept_check_tags_wi { SVD_Concept_check_tags_wi() { THE_6TH_TEMPLATE_PARAMETER_MUST_EITHER_BE_Ring_tag_OR_Sqrt_field_tag ( D() ); } }; } //----------------------------------------------------------------------- //----------------------------------------------------------------------- //----------------------------------------------------------------------- //----------------------------------------------------------------------- // the filtered Traits classes //----------------------------------------------------------------------- //----------------------------------------------------------------------- //----------------------------------------------------------------------- //----------------------------------------------------------------------- // this traits class does support intersecting segments template, #else class EK = Simple_cartesian< Quotient >, #endif class EK_MTag = Field_tag, class FK = Simple_cartesian< Interval_nt >, class FK_MTag = Sqrt_field_tag, class C2E = Cartesian_converter, #if defined(__sun) && defined(__SUNPRO_CC) class C2F = CGALi::SVD_SUNPRO_CC_Interval_converter > #else class C2F = Cartesian_converter > > #endif struct Segment_Voronoi_diagram_filtered_traits_2 : public Segment_Voronoi_diagram_filtered_traits_base_2 { public: Segment_Voronoi_diagram_filtered_traits_2() { CGALi::SVD_Concept_check_tags(); CGALi::SVD_Concept_check_tags(); CGALi::SVD_Concept_check_tags(); } }; template struct Segment_Voronoi_diagram_filtered_traits_2 : public Segment_Voronoi_diagram_filtered_traits_base_2 { public: Segment_Voronoi_diagram_filtered_traits_2() { CGALi::SVD_Concept_check_tags(); CGALi::SVD_Concept_check_tags(); } }; template struct Segment_Voronoi_diagram_filtered_traits_2 : public Segment_Voronoi_diagram_filtered_traits_base_2 { public: Segment_Voronoi_diagram_filtered_traits_2() { CGALi::SVD_Concept_check_tags(); CGALi::SVD_Concept_check_tags(); } }; template struct Segment_Voronoi_diagram_filtered_traits_2 : public Segment_Voronoi_diagram_filtered_traits_base_2 { public: Segment_Voronoi_diagram_filtered_traits_2() { CGALi::SVD_Concept_check_tags(); CGALi::SVD_Concept_check_tags(); } }; template struct Segment_Voronoi_diagram_filtered_traits_2 : public Segment_Voronoi_diagram_filtered_traits_base_2 { public: Segment_Voronoi_diagram_filtered_traits_2() { CGALi::SVD_Concept_check_tags(); } }; template struct Segment_Voronoi_diagram_filtered_traits_2 : public Segment_Voronoi_diagram_filtered_traits_base_2 { public: Segment_Voronoi_diagram_filtered_traits_2() { CGALi::SVD_Concept_check_tags(); } }; template struct Segment_Voronoi_diagram_filtered_traits_2 : public Segment_Voronoi_diagram_filtered_traits_base_2 { public: Segment_Voronoi_diagram_filtered_traits_2() { CGALi::SVD_Concept_check_tags(); } }; template struct Segment_Voronoi_diagram_filtered_traits_2 : public Segment_Voronoi_diagram_filtered_traits_base_2 {}; //========================================================================= // this traits class does NOT support intersecting segments template, #else class EK = Simple_cartesian< MP_Float >, #endif class EK_MTag = Ring_tag, class FK = Simple_cartesian< Interval_nt >, class FK_MTag = Sqrt_field_tag, class C2E = Cartesian_converter, #if defined(__sun) && defined(__SUNPRO_CC) class C2F = CGALi::SVD_SUNPRO_CC_Interval_converter > #else class C2F = Cartesian_converter > > #endif struct Segment_Voronoi_diagram_filtered_traits_without_intersections_2 : public Segment_Voronoi_diagram_filtered_traits_base_2 { Segment_Voronoi_diagram_filtered_traits_without_intersections_2() { CGALi::SVD_Concept_check_tags_wi(); CGALi::SVD_Concept_check_tags_wi(); CGALi::SVD_Concept_check_tags_wi(); } }; CGAL_END_NAMESPACE #endif // CGAL_SEGMENT_VORONOI_DIAGRAM_FILTERED_TRAITS_2_H