#ifndef CGAL_KERNEL_D_CARTESIAN_LA_BASE_H #define CGAL_KERNEL_D_CARTESIAN_LA_BASE_H #include #include #include #include #include #include #include #include #ifdef CGAL_USE_EIGEN #include #else #include #endif namespace CGAL { template < typename FT_, typename Dim_, typename Vec_=Array_vector, typename LA_=LA_eigen > struct Cartesian_LA_base_d : public Dimension_base { typedef FT_ FT; typedef FT_ RT; 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; typedef LA_ LA; 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 Vec_ Vector_selector; typedef typename Vector_selector::type Vector_; typedef typename Vector_selector::Constructor Constructor; typedef typename Vector_selector::const_iterator Point_cartesian_const_iterator; typedef typename Vector_selector::const_iterator Vector_cartesian_const_iterator; template struct Type {}; template struct Type { typedef Vector_ type; }; template struct Type { typedef Vector_ type; }; template struct Functor { typedef Null_functor type; }; template struct Functor,D> { typedef CartesianDVectorBase::Construct_LA_vector type; }; template struct Functor,D> { typedef CartesianDVectorBase::Construct_LA_vector type; }; template struct Functor { typedef CartesianDVectorBase::Construct_cartesian_const_iterator type; }; template struct Functor { typedef CartesianDVectorBase::Construct_cartesian_const_iterator type; }; #if 0 // Doesn't seem worth the trouble. template struct Functor { typedef CartesianDVectorBase::Construct_sum_of_vectors type; }; template struct Functor { typedef CartesianDVectorBase::Construct_difference_of_vectors type; }; template struct Functor { typedef CartesianDVectorBase::Construct_opposite_vector type; }; template struct Functor { typedef CartesianDVectorBase::Construct_midpoint type; }; #endif template struct Functor { typedef CartesianDVectorBase::Compute_cartesian_coordinate type; }; template struct Functor { typedef CartesianDVectorBase::PV_dimension type; }; template struct Functor { typedef CartesianDVectorBase::PV_dimension 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