BWAPI
SPAR/AIModule/BWTA/vendors/CGAL/CGAL/Cartesian/Cartesian_base.h
Go to the documentation of this file.
00001 // Copyright (c) 2000-2004  Utrecht University (The Netherlands),
00002 // ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany),
00003 // INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg
00004 // (Germany), Max-Planck-Institute Saarbruecken (Germany), RISC Linz (Austria),
00005 // and Tel-Aviv University (Israel).  All rights reserved.
00006 //
00007 // This file is part of CGAL (www.cgal.org); you can redistribute it and/or
00008 // modify it under the terms of the GNU Lesser General Public License as
00009 // published by the Free Software Foundation; version 2.1 of the License.
00010 // See the file LICENSE.LGPL distributed with CGAL.
00011 //
00012 // Licensees holding a valid commercial license may use this file in
00013 // accordance with the commercial license agreement provided with the software.
00014 //
00015 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00016 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00017 //
00018 // $URL: svn+ssh://scm.gforge.inria.fr/svn/cgal/branches/CGAL-3.5-branch/Cartesian_kernel/include/CGAL/Cartesian/Cartesian_base.h $
00019 // $Id: Cartesian_base.h 45156 2008-08-26 13:40:26Z spion $
00020 // 
00021 //
00022 // Author(s)     : Sylvain Pion
00023 
00024 #ifndef CGAL_CARTESIAN_BASE_H
00025 #define CGAL_CARTESIAN_BASE_H
00026 
00027 #include <CGAL/basic.h>
00028 #include <CGAL/basic_classes.h>
00029 #include <CGAL/Kernel/global_functions.h>
00030 
00031 #include <CGAL/Cartesian/Point_2.h>
00032 #include <CGAL/Cartesian/Vector_2.h>
00033 #include <CGAL/Cartesian/Direction_2.h>
00034 #include <CGAL/Cartesian/Line_2.h>
00035 #include <CGAL/Cartesian/Ray_2.h>
00036 #include <CGAL/Cartesian/Segment_2.h>
00037 #include <CGAL/Cartesian/Triangle_2.h>
00038 #include <CGAL/Cartesian/Circle_2.h>
00039 #include <CGAL/Cartesian/Iso_rectangle_2.h>
00040 #include <CGAL/Cartesian/Aff_transformation_2.h>
00041 #include <CGAL/Cartesian/Data_accessor_2.h>
00042 #include <CGAL/ConicCPA2.h>
00043 
00044 #include <CGAL/Cartesian/predicates_on_points_2.h>
00045 #include <CGAL/Cartesian/predicates_on_directions_2.h>
00046 #include <CGAL/Cartesian/basic_constructions_2.h>
00047 
00048 #include <CGAL/Cartesian/Point_3.h>
00049 #include <CGAL/Cartesian/Vector_3.h>
00050 #include <CGAL/Cartesian/Direction_3.h>
00051 #include <CGAL/Cartesian/Line_3.h>
00052 #include <CGAL/Cartesian/Plane_3.h>
00053 #include <CGAL/Cartesian/Ray_3.h>
00054 #include <CGAL/Cartesian/Segment_3.h>
00055 #include <CGAL/Cartesian/Triangle_3.h>
00056 #include <CGAL/Cartesian/Tetrahedron_3.h>
00057 #include <CGAL/Cartesian/Iso_cuboid_3.h>
00058 #include <CGAL/Cartesian/Sphere_3.h>
00059 #include <CGAL/Cartesian/Circle_3.h>
00060 #include <CGAL/Cartesian/Aff_transformation_3.h>
00061 
00062 #include <CGAL/Cartesian/predicates_on_points_3.h>
00063 #include <CGAL/Cartesian/predicates_on_planes_3.h>
00064 #include <CGAL/Cartesian/basic_constructions_3.h>
00065 
00066 #include <CGAL/representation_tags.h>
00067 #include <CGAL/Cartesian/function_objects.h>
00068 #include <CGAL/Uncertain.h>
00069 
00070 CGAL_BEGIN_NAMESPACE
00071 
00072 template < typename K_, typename FT_>
00073 struct Cartesian_base
00074 {
00075     typedef K_                                          Kernel;
00076     typedef FT_                                         FT;
00077     typedef Cartesian_base<K_,FT_>                      Self;
00078     typedef Cartesian_tag                               Rep_tag;
00079     typedef Cartesian_tag                               Kernel_tag;
00080 
00081     typedef CGAL::Object                                Object_2;
00082     typedef CGAL::Object                                Object_3;
00083 
00084     // Boolean   had originally been Bool. It was renamed to avoid a conflict
00085     // between a macro defined in Xlib.h poorly chosen to have the same name,
00086     // that is 'Bool'.
00087     typedef typename Same_uncertainty_nt<bool, FT>::type
00088                                                         Boolean;
00089     typedef typename Same_uncertainty_nt<CGAL::Sign, FT>::type
00090                                                         Sign;
00091     typedef typename Same_uncertainty_nt<CGAL::Comparison_result, FT>::type
00092                                                         Comparison_result;
00093     typedef typename Same_uncertainty_nt<CGAL::Orientation, FT>::type
00094                                                         Orientation;
00095     typedef typename Same_uncertainty_nt<CGAL::Oriented_side, FT>::type
00096                                                         Oriented_side;
00097     typedef typename Same_uncertainty_nt<CGAL::Bounded_side, FT>::type
00098                                                         Bounded_side;
00099     typedef typename Same_uncertainty_nt<CGAL::Angle, FT>::type
00100                                                         Angle;
00101 
00102     template <typename T>
00103     struct Ambient_dimension {
00104       typedef typename T::Ambient_dimension type;
00105     };
00106 
00107     template <typename T>
00108     struct Feature_dimension {
00109       typedef typename T::Feature_dimension type;
00110     };
00111 
00112     typedef PointC2<Kernel>                             Point_2;
00113     typedef VectorC2<Kernel>                            Vector_2;
00114     typedef DirectionC2<Kernel>                         Direction_2;
00115     typedef SegmentC2<Kernel>                           Segment_2;
00116     typedef LineC2<Kernel>                              Line_2;
00117     typedef RayC2<Kernel>                               Ray_2;
00118     typedef TriangleC2<Kernel>                          Triangle_2;
00119     typedef CircleC2<Kernel>                            Circle_2;
00120     typedef Iso_rectangleC2<Kernel>                     Iso_rectangle_2;
00121     typedef Aff_transformationC2<Kernel>                Aff_transformation_2;
00122 
00123     typedef PointC3<Kernel>                             Point_3;
00124     typedef VectorC3<Kernel>                            Vector_3;
00125     typedef DirectionC3<Kernel>                         Direction_3;
00126     typedef LineC3<Kernel>                              Line_3;
00127     typedef PlaneC3<Kernel>                             Plane_3;
00128     typedef RayC3<Kernel>                               Ray_3;
00129     typedef SegmentC3<Kernel>                           Segment_3;
00130     typedef TriangleC3<Kernel>                          Triangle_3;
00131     typedef TetrahedronC3<Kernel>                       Tetrahedron_3;
00132     typedef Iso_cuboidC3<Kernel>                        Iso_cuboid_3;
00133     typedef SphereC3<Kernel>                            Sphere_3;
00134     typedef CircleC3<Kernel>                            Circle_3;
00135     typedef Aff_transformationC3<Kernel>                Aff_transformation_3;
00136 
00137     typedef const FT_*                                  Cartesian_const_iterator_2;
00138     typedef const FT_*                                  Cartesian_const_iterator_3;
00139 
00140     // Undocumented stuff.
00141     typedef Data_accessorC2<Kernel>                     Data_accessor_2;
00142     typedef ConicCPA2<Point_2,Data_accessor_2>          Conic_2;
00143 };
00144 
00145 CGAL_END_NAMESPACE
00146 
00147 #endif // CGAL_CARTESIAN_BASE_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines