#ifndef CGAL_KERNEL_D_LAZY_CARTESIAN_H #define CGAL_KERNEL_D_LAZY_CARTESIAN_H #include #include #include #include namespace CGAL { template struct Lazy_cartesian : Dimension_base { //CGAL_CONSTEXPR Lazy_cartesian(){} //CGAL_CONSTEXPR Lazy_cartesian(int d):Base_(d){} //TODO: store an AK and an EK typedef Lazy_cartesian Self; typedef AK_ Approximate_kernel; typedef EK_ Exact_kernel; typedef E2A_ E2A; typedef Approx_converter C2A; typedef Exact_converter C2E; typedef CGAL::Lazy_exact_nt FT; typedef FT RT; typedef typename Exact_kernel::Rep_tag Rep_tag; typedef typename Exact_kernel::Kernel_tag Kernel_tag; typedef typename Exact_kernel::Default_ambient_dimension Default_ambient_dimension; typedef typename Exact_kernel::Max_ambient_dimension Max_ambient_dimension; typedef typename Same_uncertainty_nt::type Boolean; typedef typename Same_uncertainty_nt::type Sign; typedef typename Same_uncertainty_nt::type Comparison_result; typedef typename Same_uncertainty_nt::type Orientation; typedef typename Same_uncertainty_nt::type Oriented_side; typedef typename Same_uncertainty_nt::type Bounded_side; typedef typename Same_uncertainty_nt::type Angle; #define CGAL_Kernel_obj(X) \ typedef Lazy X; #include template struct Predicate { typedef typename Approximate_kernel::template Predicate::type FA; typedef typename Exact_kernel::template Predicate::type FE; typedef Filtered_predicate type; }; template struct Compute { typedef typename Approximate_kernel::template Compute::type FA; typedef typename Exact_kernel::template Compute::type FE; typedef Lazy_construction_nt type; }; template struct Construct { typedef typename Approximate_kernel::template Construct::type FA; typedef typename Exact_kernel::template Construct::type FE; typedef Lazy_construction type; }; typedef Iterator_from_indices::type> Point_cartesian_const_iterator; typedef Iterator_from_indices::type> Vector_cartesian_const_iterator; //TODO: //typedef ????????? Cartesian_const_iterator; //typedef ????????? Construct_cartesian_const_iterator template struct Construct_iter { typedef U result_type; template result_type begin(T const& t)const{ return result_type(t,0); } template result_type end(T const& t)const{ return result_type(t,Self().dimension()); } }; template struct Construct { typedef Construct_iter type; }; template struct Construct { typedef Construct_iter type; }; }; } //namespace CGAL #endif // CGAL_KERNEL_D_LAZY_CARTESIAN_H