/usr/include/CGAL/Kernel/Dimension_utils.h is in libcgal-dev 4.2-5ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | // Copyright (c) 2005,2008 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 3 of the License,
// or (at your option) any later version.
//
// 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.
//
// $URL$
// $Id$
//
// Author(s) : Sylvain Pion
#ifndef CGAL_KERNEL_DIMENSION_UTILS_H
#define CGAL_KERNEL_DIMENSION_UTILS_H
#include <CGAL/Kernel_traits.h>
#include <CGAL/Dimension.h>
namespace CGAL {
namespace Access {
// Some tools to find the type of a kernel object given its dimension.
// E.g. : Vector<K, 2>::type is K::Vector_2.
//
// Currently undocumented => for CGAL internal use only.
// TODO :
// - What about functors ?
// At least those with a dimensional-independent interface.
// - Another thing which would be nice would be to make d-dimensional
// algorithms use the 2d-3d kernel interface with a smaller wrapper.
// (again, this forces a full kernel, not a sub-set traits, but at least...)
// Then, based on Dimension<>, it's possible to automatically use it.
template < typename K, typename Dim_tag = typename K::Dimension> struct Point;
template < typename K, typename Dim_tag = typename K::Dimension> struct Vector;
template < typename K, typename Dim_tag = typename K::Dimension> struct Iso_box;
template < typename K, typename Dim_tag = typename K::Dimension> struct Direction;
template < typename K, typename Dim_tag = typename K::Dimension> struct Line;
template < typename K, typename Dim_tag = typename K::Dimension> struct Ray;
template < typename K, typename Dim_tag = typename K::Dimension> struct Segment;
template < typename K, typename Dim_tag = typename K::Dimension> struct Triangle;
template < typename K, typename Dim_tag = typename K::Dimension> struct Hypersphere;
template < typename K, typename Dim_tag = typename K::Dimension> struct Hyperplane;
template < typename K, typename Dim_tag = typename K::Dimension> struct Aff_transformation;
// Not-so generalizable stuff : Conic_2, Tetrahedron_3.
template < typename K, typename Dim_tag = typename K::Dimension> struct Tetrahedron;
template < typename K >
struct Point <K, Dimension_tag<2> > { typedef typename K::Point_2 type; };
template < typename K >
struct Point <K, Dimension_tag<3> > { typedef typename K::Point_3 type; };
template < typename K >
struct Point <K, Dynamic_dimension_tag> { typedef typename K::Point_d type; };
template < typename K >
struct Vector <K, Dimension_tag<2> > { typedef typename K::Vector_2 type; };
template < typename K >
struct Vector <K, Dimension_tag<3> > { typedef typename K::Vector_3 type; };
template < typename K >
struct Vector <K, Dynamic_dimension_tag> { typedef typename K::Vector_d type; };
template < typename K >
struct Iso_box <K, Dimension_tag<2> > { typedef typename K::Iso_rectangle_2 type; };
template < typename K >
struct Iso_box <K, Dimension_tag<3> > { typedef typename K::Iso_cuboid_3 type; };
template < typename K >
struct Iso_box <K, Dynamic_dimension_tag> { typedef typename K::Iso_box_d type; };
template < typename K >
struct Direction <K, Dimension_tag<2> > { typedef typename K::Direction_2 type; };
template < typename K >
struct Direction <K, Dimension_tag<3> > { typedef typename K::Direction_3 type; };
template < typename K >
struct Direction <K, Dynamic_dimension_tag> { typedef typename K::Direction_d type; };
template < typename K >
struct Line <K, Dimension_tag<2> > { typedef typename K::Line_2 type; };
template < typename K >
struct Line <K, Dimension_tag<3> > { typedef typename K::Line_3 type; };
template < typename K >
struct Line <K, Dynamic_dimension_tag> { typedef typename K::Line_d type; };
template < typename K >
struct Ray <K, Dimension_tag<2> > { typedef typename K::Ray_2 type; };
template < typename K >
struct Ray <K, Dimension_tag<3> > { typedef typename K::Ray_3 type; };
template < typename K >
struct Ray <K, Dynamic_dimension_tag> { typedef typename K::Ray_d type; };
template < typename K >
struct Segment <K, Dimension_tag<2> > { typedef typename K::Segment_2 type; };
template < typename K >
struct Segment <K, Dimension_tag<3> > { typedef typename K::Segment_3 type; };
template < typename K >
struct Segment <K, Dynamic_dimension_tag> { typedef typename K::Segment_d type; };
template < typename K >
struct Triangle <K, Dimension_tag<2> > { typedef typename K::Triangle_2 type; };
template < typename K >
struct Triangle <K, Dimension_tag<3> > { typedef typename K::Triangle_3 type; };
template < typename K >
struct Triangle <K, Dynamic_dimension_tag> { typedef typename K::Triangle_d type; };
template < typename K >
struct Tetrahedron <K, Dimension_tag<3> > { typedef typename K::Tetrahedron_3 type; };
template < typename K >
struct Tetrahedron <K, Dynamic_dimension_tag> { typedef typename K::Tetrahedron_d type; };
template < typename K >
struct Hypersphere <K, Dimension_tag<2> > { typedef typename K::Circle_2 type; };
template < typename K >
struct Hypersphere <K, Dimension_tag<3> > { typedef typename K::Sphere_3 type; };
template < typename K >
struct Hypersphere <K, Dynamic_dimension_tag> { typedef typename K::Sphere_d type; };
template < typename K >
struct Hyperplane <K, Dimension_tag<2> > { typedef typename K::Line_2 type; };
template < typename K >
struct Hyperplane <K, Dimension_tag<3> > { typedef typename K::Plane_3 type; };
template < typename K >
struct Hyperplane <K, Dynamic_dimension_tag> { typedef typename K::Hyperplane_d type; };
template < typename K >
struct Aff_transformation <K, Dimension_tag<2> >
{ typedef typename K::Aff_transformation_2 type; };
template < typename K >
struct Aff_transformation <K, Dimension_tag<3> >
{ typedef typename K::Aff_transformation_3 type; };
template < typename K >
struct Aff_transformation <K, Dynamic_dimension_tag>
{ typedef typename K::Aff_transformation_d type; };
} // namespace Access
} //namespace CGAL
#endif // CGAL_KERNEL_DIMENSION_UTILS_H
|