#ifndef CGAL_KERNEL_D_CARTESIAN_LA_BASE_H #define CGAL_KERNEL_D_CARTESIAN_LA_BASE_H #include #include #include #include #include #include #ifdef CGAL_USE_EIGEN #include #else #include #endif namespace CGAL { template < typename FT_, typename Dim_> struct Cartesian_LA_base_d : public Dimension_base { typedef FT_ FT; typedef Cartesian_LA_base_d Self; typedef Cartesian_tag Rep_tag; typedef Cartesian_tag Kernel_tag; typedef Dim_ Default_ambient_dimension; typedef Dim_ Max_ambient_dimension; #ifdef CGAL_USE_EIGEN typedef CGAL::LA_eigen LA; #else typedef CGAL::LA_default LA; #endif 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; typedef typename LA::template Vector LA_vector_selector; typedef typename LA_vector_selector::type LA_vector; typedef typename LA_vector_selector::Constructor Constructor; typedef typename LA_vector_selector::const_iterator Cartesian_const_iterator; // convert types to the new way? painful to use... typedef LA_vector Point; typedef LA_vector Vector; #if 0 // old way typedef CartesianDVectorBase::Construct_LA_vector Construct_point; typedef CartesianDVectorBase::Construct_LA_vector Construct_vector; typedef CartesianDVectorBase::Construct_cartesian_const_iterator Construct_cartesian_const_iterator; typedef CartesianDVectorBase::Construct_sum_of_vectors Construct_sum_of_vectors; typedef CartesianDVectorBase::Construct_difference_of_vectors Construct_difference_of_vectors; typedef CartesianDVectorBase::Construct_opposite_vector Construct_opposite_vector; typedef CartesianDVectorBase::Construct_midpoint Construct_midpoint; typedef CartesianDVectorBase::Compute_cartesian_coordinate Compute_cartesian_coordinate; #endif // new way template struct Construct { typedef Null_functor type; }; template struct Construct { typedef CartesianDVectorBase::Construct_LA_vector type; }; template struct Construct { typedef CartesianDVectorBase::Construct_LA_vector type; }; template struct Construct { typedef CartesianDVectorBase::Construct_cartesian_const_iterator type; }; template struct Construct { typedef CartesianDVectorBase::Construct_sum_of_vectors type; }; template struct Construct { typedef CartesianDVectorBase::Construct_difference_of_vectors type; }; template struct Construct { typedef CartesianDVectorBase::Construct_opposite_vector type; }; template struct Construct { typedef CartesianDVectorBase::Construct_midpoint type; }; template struct Compute { typedef Null_functor type; }; template struct Compute { typedef CartesianDVectorBase::Compute_cartesian_coordinate type; }; template struct Predicate { typedef Null_functor type; }; CGAL_CONSTEXPR Cartesian_LA_base_d(){} CGAL_CONSTEXPR Cartesian_LA_base_d(int d):Dimension_base(d){} }; } //namespace CGAL #endif // CGAL_KERNEL_D_CARTESIAN_LA_BASE_H