merge next

This commit is contained in:
Olivier Devillers 2011-10-11 14:18:14 +00:00
commit b874d0e36f
407 changed files with 6442 additions and 3894 deletions

20
.gitattributes vendored
View File

@ -1248,6 +1248,7 @@ Circular_kernel_2/examples/Circular_kernel_2/functor_has_on_2.cpp -text
Circular_kernel_2/include/CGAL/Circular_kernel_intersections.h -text
Circular_kernel_2/include/CGAL/Filtered_bbox_circular_kernel_2/interface_macros.h -text
Circular_kernel_2/include/CGAL/global_functions_circular_kernel_2.h -text
Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt -text
Circular_kernel_2/test/Circular_kernel_2/test_Circular_kernel_basic.cpp -text
Circular_kernel_2/test/Circular_kernel_2/test_Exact_circular_kernel_basic.cpp -text
Circular_kernel_3/changes -text
@ -1268,6 +1269,7 @@ Circular_kernel_3/include/CGAL/Circle_type.h -text
Circular_kernel_3/include/CGAL/Circular_kernel_3/internal_function_compare_to_right_spherical_kernel.h -text
Circular_kernel_3/include/CGAL/Spherical_kernel_intersections.h -text
Circular_kernel_3/include/CGAL/global_functions_spherical_kernel_3.h -text
Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt -text
Circular_kernel_3/test/Circular_kernel_3/include/CGAL/_test_functionalities_on_sphere.h -text
Circular_kernel_3/test/Circular_kernel_3/test_Lazy_Spherical_kernel.cpp -text
Circular_kernel_3/test/Circular_kernel_3/test_Lazy_spherical_kernel_basics.cpp -text
@ -1385,6 +1387,7 @@ Combinatorial_map/include/CGAL/Cell_iterators.h -text
Combinatorial_map/include/CGAL/Combinatorial_map.h -text
Combinatorial_map/include/CGAL/Combinatorial_map_basic_operations.h -text
Combinatorial_map/include/CGAL/Combinatorial_map_constructors.h -text
Combinatorial_map/include/CGAL/Combinatorial_map_iterators_base.h -text
Combinatorial_map/include/CGAL/Combinatorial_map_min_items.h -text
Combinatorial_map/include/CGAL/Combinatorial_map_operations.h -text
Combinatorial_map/include/CGAL/Dart.h -text
@ -1392,6 +1395,7 @@ Combinatorial_map/include/CGAL/Dart_const_iterators.h -text
Combinatorial_map/include/CGAL/Dart_iterators.h -text
Combinatorial_map/include/CGAL/internal/Combinatorial_map_functors.h -text
Combinatorial_map/include/CGAL/internal/Combinatorial_map_utility.h -text
Combinatorial_map/include/CGAL/internal/Combinatorial_map_utility_novariadic.h -text
Combinatorial_map/package_info/Combinatorial_map/description.txt -text
Combinatorial_map/package_info/Combinatorial_map/long_description.txt -text
Combinatorial_map/package_info/Combinatorial_map/maintainer -text
@ -1956,10 +1960,11 @@ Maintenance/deb/sid/debian/control -text
Maintenance/deb/sid/debian/libcgal-demo.install -text
Maintenance/deb/sid/debian/libcgal-dev.install -text
Maintenance/deb/sid/debian/libcgal-ipelets.install -text
Maintenance/deb/sid/debian/libcgal7.install -text
Maintenance/deb/sid/debian/libcgal7.shlibs -text
Maintenance/deb/sid/debian/libcgal8.install -text
Maintenance/deb/sid/debian/libcgal8.shlibs -text
Maintenance/deb/sid/debian/patches/00list -text
Maintenance/deb/sid/debian/rules -text
Maintenance/deb/sid/debian/source/format -text
Maintenance/deb/sid/debian/watch -text
Maintenance/deb/squeeze/debian/README.Debian -text
Maintenance/deb/squeeze/debian/README.source -text
@ -1969,10 +1974,11 @@ Maintenance/deb/squeeze/debian/control -text
Maintenance/deb/squeeze/debian/libcgal-demo.install -text
Maintenance/deb/squeeze/debian/libcgal-dev.install -text
Maintenance/deb/squeeze/debian/libcgal-ipelets.install -text
Maintenance/deb/squeeze/debian/libcgal7.install -text
Maintenance/deb/squeeze/debian/libcgal7.shlibs -text
Maintenance/deb/squeeze/debian/libcgal8.install -text
Maintenance/deb/squeeze/debian/libcgal8.shlibs -text
Maintenance/deb/squeeze/debian/patches/00list -text
Maintenance/deb/squeeze/debian/rules -text
Maintenance/deb/squeeze/debian/source/format -text
Maintenance/deb/squeeze/debian/watch -text
Maintenance/deb/wheezy/debian/README.Debian -text
Maintenance/deb/wheezy/debian/README.source -text
@ -1982,10 +1988,11 @@ Maintenance/deb/wheezy/debian/control -text
Maintenance/deb/wheezy/debian/libcgal-demo.install -text
Maintenance/deb/wheezy/debian/libcgal-dev.install -text
Maintenance/deb/wheezy/debian/libcgal-ipelets.install -text
Maintenance/deb/wheezy/debian/libcgal7.install -text
Maintenance/deb/wheezy/debian/libcgal7.shlibs -text
Maintenance/deb/wheezy/debian/libcgal8.install -text
Maintenance/deb/wheezy/debian/libcgal8.shlibs -text
Maintenance/deb/wheezy/debian/patches/00list -text
Maintenance/deb/wheezy/debian/rules -text
Maintenance/deb/wheezy/debian/source/format -text
Maintenance/deb/wheezy/debian/watch -text
Maintenance/infrastructure/cgal.geometryfactory.com/.autocgal_with_cmake_rc -text
Maintenance/infrastructure/cgal.geometryfactory.com/.autocgalrc -text
@ -2554,7 +2561,6 @@ Mesh_3/doc_tex/Mesh_3_ref/Polyhedral_mesh_domain_3.tex -text
Mesh_3/doc_tex/Mesh_3_ref/WSE/MeshWSETraits_3.tex -text
Mesh_3/doc_tex/Mesh_3_ref/WSE/MeshWSEVertexBase_3.tex -text
Mesh_3/doc_tex/Mesh_3_ref/WSE/make_mesh_3_with_sharp_edges.tex -text
Mesh_3/examples/Mesh_3/cgal_test_with_cmake eol=lf
Mesh_3/examples/Mesh_3/data/elephant.off -text svneol=unset#application/octet-stream
Mesh_3/examples/Mesh_3/data/fandisk.off -text svneol=unset#application/octet-stream
Mesh_3/examples/Mesh_3/data/liver.inr.gz -text svneol=unset#application/gzip

View File

@ -1,7 +1,7 @@
\begin{ccPkgDescription}{3D Fast Intersection and Distance Computation (AABB Tree)\label{Pkg:AABB_tree}}
\ccPkgSummary{The AABB (axis-aligned bounding box) tree component offers a static data structure and algorithms to perform efficient intersection and distance queries on sets of finite 3D geometric objects.}
\ccPkgHowToCiteCgal{cgal:atw-aabb-11b}
\ccPkgHowToCiteCgal{cgal:atw-aabb-12}
\ccPkgIntroducedInCGAL{3.5}
\ccPkgDemo{AABB Tree}{AABB_demo.zip}
\ccPkgIllustration{AABB_tree/figs/teaser-thumb.png}{AABB_tree/figs/teaser.png}

View File

@ -1,4 +1,4 @@
// Copyright (c) 2008-2009 INRIA Sophia-Antipolis (France), ETH Zurich (Switzerland).
// Copyright (c) 2008-2009 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you may redistribute it under

View File

@ -1,4 +1,4 @@
// Copyright (c) 2008,2011 INRIA Sophia-Antipolis (France), ETH Zurich (Switzerland).
// Copyright (c) 2008,2011 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you may redistribute it under

View File

@ -1,4 +1,4 @@
// Copyright (c) 2008 INRIA Sophia-Antipolis (France), ETH Zurich (Switzerland).
// Copyright (c) 2008 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you may redistribute it under

View File

@ -1,4 +1,4 @@
// Copyright (c) 2008 INRIA Sophia-Antipolis (France), ETH Zurich (Switzerland).
// Copyright (c) 2008 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you may redistribute it under

View File

@ -1,4 +1,4 @@
// Copyright (c) 2008-2009 INRIA Sophia-Antipolis (France), ETH Zurich (Switzerland).
// Copyright (c) 2008-2009 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you may redistribute it under

View File

@ -0,0 +1,2 @@
INRIA Sophia-Antipolis (France)

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{Algebraic Foundations\label{Pkg:AlgebraicFoundations}}
\ccPkgHowToCiteCgal{cgal:h-af-11b}
\ccPkgHowToCiteCgal{cgal:h-af-12}
\ccPkgSummary{
This package defines what algebra means for \cgal, in terms of
concepts, classes and functions. The main features are:

View File

@ -0,0 +1,5 @@
Utrecht University (The Netherlands)
ETH Zurich (Switzerland)
INRIA Sophia-Antipolis (France)
Max-Planck-Institute Saarbruecken (Germany)
Tel-Aviv University (Israel)

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{Algebraic Kernel \label{Pkg:AlgebraicKerneld}}
\ccPkgHowToCiteCgal{cgal:bht-ak-11b}
\ccPkgHowToCiteCgal{cgal:bht-ak-12}
\ccPkgSummary{
Real solving of polynomials is a fundamental problem with a wide application range.
This package is targeted to provide black-box implementations of state-of-the-art

View File

@ -0,0 +1,2 @@
INRIA Sophia-Antipolis (France),
Max-Planck-Institute Saarbruecken (Germany).

View File

@ -0,0 +1,2 @@
INRIA Sophia-Antipolis (France)

View File

@ -0,0 +1,2 @@
INRIA Sophia-Antipolis (France)

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{2D Alpha Shapes\label{Pkg:AlphaShape2}}
\ccPkgHowToCiteCgal{cgal:d-as2-11b}
\ccPkgHowToCiteCgal{cgal:d-as2-12}
\ccPkgSummary{
This package offers a data structure encoding the whole family of alpha-complexes
related to a given 2D Delaunay or regular triangulation. In particular, the data structure

View File

@ -67,7 +67,6 @@ public:
typedef typename Gt::FT FT;
typedef typename Gt::Point_2 Point;
typedef typename Gt::Segment_2 Segment;
typedef typename Gt::Ray_2 Ray;
typedef typename Gt::Line_2 Line;
typedef typename Dt::Face_handle Face_handle;

View File

@ -47,7 +47,6 @@ public:
typedef typename Gt::Point Point;
typedef typename Gt::Distance Distance;
typedef typename Gt::Ray Ray;
typedef typename Gt::Line Line;
typedef typename Alpha_shape_2<Rt>::Face_handle Face_handle;

View File

@ -0,0 +1,2 @@
INRIA Sophia-Antipolis (France)

View File

@ -19,7 +19,6 @@ typedef CGAL::Filtered_kernel<SC> K;
typedef K::Point_2 Point;
typedef K::Segment_2 Segment;
typedef K::Ray_2 Ray;
typedef K::Line_2 Line;
typedef K::Triangle_2 Triangle;

View File

@ -27,7 +27,6 @@ typedef CGAL::Filtered_kernel<SC> K;
typedef K::Point_2 Point_base;
typedef CGAL::Weighted_point<Point_base,coord_type> Point;
typedef K::Segment_2 Segment;
typedef K::Ray_2 Ray;
typedef K::Line_2 Line;
typedef K::Triangle_2 Triangle;

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{3D Alpha Shapes\label{Pkg:AlphaShapes3}}
\ccPkgHowToCiteCgal{cgal:dy-as3-11b}
\ccPkgHowToCiteCgal{cgal:dy-as3-12}
\ccPkgSummary{
This package offers a data structure encoding
either one alpha-complex or

View File

@ -0,0 +1,2 @@
INRIA Sophia-Antipolis (France)

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{2D Apollonius Graphs (Delaunay Graphs of Disks)\label{Pkg:ApolloniusGraph2}}
\ccPkgHowToCiteCgal{cgal:ky-ag2-11b}
\ccPkgHowToCiteCgal{cgal:ky-ag2-12}
\ccPkgSummary{
Algorithms for computing the Apollonius
graph in two dimensions. The Apollonius graph is the dual of the

View File

@ -0,0 +1,2 @@
INRIA Sophia-Antipolis (France)

View File

@ -0,0 +1 @@
ETH Zurich (Switzerland).

View File

@ -1,4 +1,3 @@
// Copyright (c) 2009 Max-Planck-Institute Saarbruecken (Germany).
// All rights reserved.
//

View File

@ -1,4 +1,4 @@
// Copyright (c) 2010 GeometryFactory (France).
// Copyright (c) 2010 Max-Planck-Institute Saarbruecken (Germany).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or

View File

@ -0,0 +1 @@
Max-Planck-Institute Saarbruecken (Germany).

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{2D Arrangement\label{Pkg:Arrangement2}}
\ccPkgHowToCiteCgal{cgal:wfzh-a2-11b}
\ccPkgHowToCiteCgal{cgal:wfzh-a2-12}
\ccPkgSummary{
This package can be used to construct, maintain, alter, and display
arrangements in the plane. Once an arrangement is constructed, the

View File

@ -9,7 +9,7 @@
\label{chapterArrangement_on_surface_2}
\ccChapterRelease{\ArrangementOnSurfaceRev. \ \ArrangementOnSurfaceDate}
\ccChapterAuthor{Ron Wein, Efi Fogel, Baruch Zukerman, Dan Halperin, Eric Berberich, and Oren Zalzman}
\ccChapterAuthor{Ron Wein \and Eric Berberich \and Efi Fogel \and Dan Halperin \and Michael Hemmer \and Oren Salzman \and Baruch Zukerman}
\input{Arrangement_on_surface_2/PkgDescription.tex}

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{2D Intersection of Curves\label{Pkg:IntersectionOfCurves2}}
\ccPkgHowToCiteCgal{cgal:wfz-ic2-11b}
\ccPkgHowToCiteCgal{cgal:wfz-ic2-12}
\ccPkgSummary{This package provides three free functions implemented
based on the sweep-line paradigm: given a collection of input curves,
compute all intersection points, compute the set of subcurves that are

View File

@ -0,0 +1 @@
Tel-Aviv University (Israel).

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{CGAL and the Boost Graph Library\label{Pkg:BGL}}
\ccPkgHowToCiteCgal{cgal:cfw-cbgl-11b}
\ccPkgHowToCiteCgal{cgal:cfw-cbgl-12}
\ccPkgSummary{This package provides a framework for interfacing \cgal\
data structures with the algorithms of the {\sc BGL}. It allows to run

View File

@ -0,0 +1 @@
GeometryFactory (France)

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{2D Regularized Boolean Set-Operations\label{Pkg:BooleanSetOperations2}}
\ccPkgHowToCiteCgal{cgal:fwzh-rbso2-11b}
\ccPkgHowToCiteCgal{cgal:fwzh-rbso2-12}
\ccPkgSummary{
This package consists of the implementation of Boolean set-operations
on point sets bounded by weakly x-monotone curves in 2-dimensional

View File

@ -0,0 +1 @@
Tel-Aviv University (Israel).

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{Intersecting Sequences of dD Iso-oriented Boxes\label{Pkg:BoxIntersectionD}}
\ccPkgHowToCiteCgal{cgal:kmz-isiobd-11b}
\ccPkgHowToCiteCgal{cgal:kmz-isiobd-12}
\ccPkgSummary{
An efficient algorithm for finding all intersecting pairs for large
numbers of iso-oriented boxes, in order to apply a user defined callback

View File

@ -0,0 +1,2 @@
Max-Planck-Institute Saarbruecken (Germany).

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{CGAL Ipelets \label{Pkg:CGALIpelets}}
\ccPkgHowToCiteCgal{cgal:lp-gi-11b}
\ccPkgHowToCiteCgal{cgal:lp-gi-12}
\ccPkgSummary{This package provides
a generic framework to easily write ipelets (plug-in's) using \cgal{} for the
the Ipe extensible drawing editor.}

View File

@ -0,0 +1,2 @@
INRIA Sophia-Antipolis (France)

View File

@ -0,0 +1,5 @@
Utrecht University (The Netherlands),
ETH Zurich (Switzerland),
INRIA Sophia-Antipolis (France),
Max-Planck-Institute Saarbruecken (Germany),
Tel-Aviv University (Israel).

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{2D Circular Geometry Kernel \label{Pkg:CircularKernel2}}
\ccPkgHowToCiteCgal{cgal:cpt-cgk2-11b}
\ccPkgHowToCiteCgal{cgal:cpt-cgk2-12}
\ccPkgSummary{
This package is an extension of the linear \cgal\ kernel. It offers
functionalities on circles, circular arcs and line segments in the

View File

@ -0,0 +1,2 @@
INRIA Sophia-Antipolis (France)

View File

@ -0,0 +1,43 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
project( Circular_kernel_2_test )
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.5)
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
if ( COMMAND cmake_policy )
cmake_policy( SET CMP0003 NEW )
endif()
find_package(CGAL QUIET COMPONENTS Core )
if ( CGAL_FOUND )
include( ${CGAL_USE_FILE} )
include( CGAL_CreateSingleSourceCGALProgram )
include_directories (BEFORE include)
include_directories (BEFORE ../../include)
include_directories (BEFORE ../../../Kernel_23/test/Kernel_23/include)
include_directories (BEFORE ../Kernel_23/include)
include_directories (BEFORE ../Cartesian_kernel/include)
include_directories (BEFORE ../Homogeneous_kernel/include)
include_directories (BEFORE ../Intersections_2/include)
create_single_source_cgal_program( "test_Circular_kernel.cpp" )
create_single_source_cgal_program( "test_Exact_circular_kernel.cpp" )
create_single_source_cgal_program( "test_Filtered_bbox_circular_kernel.cpp" )
create_single_source_cgal_program( "test_Line_arc.cpp" )
create_single_source_cgal_program( "test_Circular_kernel_basic.cpp" )
create_single_source_cgal_program( "test_Exact_circular_kernel_basic.cpp" )
else()
message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.")
endif()

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{3D Spherical Geometry Kernel \label{Pkg:SphericalKernel3}}
\ccPkgHowToCiteCgal{cgal:cclt-sgk3-11b}
\ccPkgHowToCiteCgal{cgal:cclt-sgk3-12}
\ccPkgSummary{
This package is an extension of the linear \cgal\ Kernel. It offers
functionalities on spheres, circles, circular arcs and line segments,

View File

@ -0,0 +1,2 @@
INRIA Sophia-Antipolis (France)

View File

@ -0,0 +1,46 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
project( Circular_kernel_3_test )
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.5)
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
if ( COMMAND cmake_policy )
cmake_policy( SET CMP0003 NEW )
endif()
find_package(CGAL QUIET COMPONENTS Core )
if ( CGAL_FOUND )
include( ${CGAL_USE_FILE} )
include( CGAL_CreateSingleSourceCGALProgram )
include_directories (BEFORE include)
include_directories (BEFORE ../../include)
include_directories (BEFORE ../../../Kernel_23/test/Kernel_23/include)
include_directories (BEFORE ../Kernel_23/include)
include_directories (BEFORE ../Cartesian_kernel/include)
include_directories (BEFORE ../Homogeneous_kernel/include)
include_directories (BEFORE ../../../Intersections_3/include)
include_directories (BEFORE ../../../Algebraic_kernel_for_spheres/include)
include_directories (BEFORE ../../../Kernel_23/include)
include_directories (BEFORE ../../../Cartesian_kernel/include)
create_single_source_cgal_program( "test_Spherical_kernel.cpp" )
create_single_source_cgal_program( "test_Spherical_kernel_basics.cpp" )
create_single_source_cgal_program( "test_Exact_spherical_kernel.cpp" )
create_single_source_cgal_program( "test_Lazy_Spherical_kernel.cpp" )
create_single_source_cgal_program( "test_Lazy_spherical_kernel_basics.cpp" )
create_single_source_cgal_program( "test_Spherical_kernel_with_core.cpp" )
else()
message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.")
endif()

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{Handles and Circulators\label{Pkg:HandlesAndCirculators}}
\ccPkgHowToCiteCgal{cgal:dksy-hc-11b}
\ccPkgHowToCiteCgal{cgal:dksy-hc-12}
\ccPkgSummary{This package descibes handles and circulators. They are related to
iterators. Handles allow to dereference but neither to increment nor to decrement.

View File

@ -0,0 +1,5 @@
Utrecht University (The Netherlands),
ETH Zurich (Switzerland),
INRIA Sophia-Antipolis (France),
Max-Planck-Institute Saarbruecken (Germany),
Tel-Aviv University (Israel).

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{Combinatorial Maps\label{Pkg:CombinatorialMaps}}
\ccPkgHowToCiteCgal{cgal:d-cm-11b} \ccPkgSummary{This package
\ccPkgHowToCiteCgal{cgal:d-cm-12} \ccPkgSummary{This package
implements Combinatorial Maps in \emph{d}-dimension. A combinatorial
map is a data structure allowing to represent an orientable
subdivided object by describing all the cells of the subdivision

View File

@ -31,9 +31,10 @@ namespace CGAL {
* All the cell iterators. Not commented in doxygen to avoid too much
* classes in the documentation.
* There are 3 classes:
* - CMap_cell_iterator<Map,Ite,i,dim>
* - CMap_one_dart_per_incident_cell_iterator<Map,Ite,i,dim>
* - CMap_one_dart_per_cell_iterator<Map,Ite,i,dim>
* - CMap_cell_iterator<Map,Ite,i,dim>: "tools" class used for the
* two following iterators.
* * - CMap_one_dart_per_incident_cell_iterator<Map,Ite,i,dim>
* * - CMap_one_dart_per_cell_iterator<Map,Ite,i,dim>
*/
//****************************************************************************
@ -88,7 +89,8 @@ namespace CGAL {
Ite(amap, adart, amap.get_new_mark()),
mcell_mark_number(amap.get_new_mark())
{
CGAL_assertion( Ite::is_basic_iterator() );
CGAL_static_assertion( (boost::is_same<typename Ite::Basic_iterator,
Tag_true>::value) );
CGAL_assertion(amap.is_whole_map_unmarked(mcell_mark_number));
mark_cell<Map,i,dim>(amap, adart, mcell_mark_number);
@ -196,7 +198,8 @@ namespace CGAL {
Ite(amap, adart),
mmark_number(amap.get_new_mark())
{
CGAL_assertion( Ite::is_basic_iterator() );
CGAL_static_assertion( (boost::is_same<typename Ite::Basic_iterator,
Tag_true>::value) );
CGAL_assertion(amap.is_whole_map_unmarked(mmark_number));
mark_cell<Map,i,dim>(amap, adart, mmark_number);
}
@ -298,7 +301,8 @@ namespace CGAL {
Base(amap),
mmark_number(amap.get_new_mark())
{
CGAL_assertion( Base::is_basic_iterator() );
CGAL_static_assertion( (boost::is_same<typename Base::Basic_iterator,
Tag_true>::value) );
CGAL_assertion(amap.is_whole_map_unmarked(mmark_number));
mark_cell<Map,i,dim>(amap, (*this), mmark_number);
}
@ -379,6 +383,9 @@ namespace CGAL {
typedef typename Base::Dart_handle Dart_handle;
typedef typename Base::Map Map;
typedef Tag_false Use_mark;
typedef Tag_false Basic_iterator;
/// Main constructor.
CMap_one_dart_per_incident_cell_iterator(Map& amap, Dart_handle adart):
Base(amap, adart)
@ -403,6 +410,9 @@ namespace CGAL {
typedef typename Base::Dart_handle Dart_handle;
typedef typename Base::Map Map;
typedef Tag_false Use_mark;
typedef Tag_false Basic_iterator;
/// Main constructor.
CMap_one_dart_per_cell_iterator(Map& amap): Base(amap)
{}

File diff suppressed because it is too large Load Diff

View File

@ -37,7 +37,8 @@ bool belong_to_same_orbit(const Map & amap,
typename Map::Dart_const_handle adart1,
typename Map::Dart_const_handle adart2)
{
CGAL_assertion( (!Iterator::is_basic_iterator()) );
CGAL_static_assertion( (boost::is_same<typename Iterator::Basic_iterator,
Tag_false>::value) );
bool found = false;
for (Iterator it(amap, adart1); !found && it.cont(); ++it)
@ -59,7 +60,8 @@ bool is_whole_orbit_marked(const Map & amap,
typename Map::Dart_const_handle adart,
int amark)
{
CGAL_assertion( !Iterator::is_basic_iterator() );
CGAL_static_assertion( (boost::is_same<typename Iterator::Basic_iterator,
Tag_false>::value) );
bool res = true;
for ( Iterator it(amap, adart); res && it.cont(); ++it )
@ -99,7 +101,8 @@ typename Map::size_type mark_orbit(const Map & amap,
typename Map::Dart_const_handle adart,
unsigned int amark)
{
CGAL_assertion( Iterator::is_basic_iterator() );
CGAL_static_assertion( (boost::is_same<typename Iterator::Basic_iterator,
Tag_true>::value) );
CGAL_assertion( (is_whole_orbit_unmarked<Map,
CMap_non_basic_iterator<Map,Iterator> >
(amap, adart, amark)) );
@ -143,7 +146,9 @@ typename Map::size_type unmark_orbit(const Map & amap,
typename Map::Dart_const_handle adart1,
typename Map::Dart_const_handle adart2)
{
return belong_to_same_orbit<Map,CMap_dart_const_iterator_of_cell<Map,i,d> >
return belong_to_same_orbit<Map,
typename Map::template
Dart_of_cell_range<i,d>::const_iterator>
(amap, adart1, adart2);
}
@ -167,7 +172,9 @@ bool is_whole_cell_marked(const Map & amap,
typename Map::Dart_const_handle adart,
unsigned int amark)
{
return is_whole_orbit_marked<Map,CMap_dart_const_iterator_of_cell<Map,i,d> >
return is_whole_orbit_marked<Map,
typename Map::template
Dart_of_cell_range<i,d>::const_iterator>
(amap, adart, amark);
}
@ -190,7 +197,9 @@ bool is_whole_cell_unmarked(const Map & amap,
typename Map::Dart_const_handle adart,
unsigned int amark)
{
return is_whole_orbit_unmarked<Map,CMap_dart_const_iterator_of_cell<Map,i,d> >
return is_whole_orbit_unmarked<Map,
typename Map::template
Dart_of_cell_range<i,d>::iterator>
(amap, adart, amark);
}
@ -213,7 +222,9 @@ template < class Map, unsigned int i, unsigned int d >
typename Map::size_type mark_cell(const Map & amap,
typename Map::Dart_const_handle adart,
int amark)
{ return mark_orbit<Map,CMap_dart_const_iterator_basic_of_cell<Map,i,d> >
{ return mark_orbit<Map,
typename Map::template
Dart_of_cell_basic_range<i,d>::const_iterator>
(amap, adart, amark); }
template < class Map, unsigned int i>
@ -233,7 +244,9 @@ template < class Map, unsigned int i, unsigned int d >
typename Map::size_type unmark_cell(const Map & amap,
typename Map::Dart_handle adart,
int amark)
{ return unmark_orbit<Map,CMap_dart_const_iterator_basic_of_cell<Map,i,d> >
{ return unmark_orbit<Map,
typename Map::template
Dart_of_cell_basic_range<i,d>::const_iterator>
(amap, adart, amark);}
template < class Map, unsigned int i >
@ -258,7 +271,8 @@ typename Map::size_type degree( const Map & amap,
int mark = amap.get_new_mark();
int treated = amap.get_new_mark();
CMap_dart_const_iterator_basic_of_cell<Map,i> it(amap, adart, mark);
typename Map::template
Dart_of_cell_basic_range<i>::const_iterator it(amap, adart, mark);
for ( ;it.cont(); ++it )
{
if (!amap.is_marked(*it, treated))
@ -304,7 +318,8 @@ typename Map::size_type codegree(const Map & amap,
int mark = amap.get_new_mark();
int treated = amap.get_new_mark();
CMap_dart_const_iterator_basic_of_cell<Map,i> it(amap, adart, mark);
typename Map::template
Dart_of_cell_basic_range<i>::const_iterator it(amap, adart, mark);
for ( ; it.cont(); ++it)
{
if (!amap.is_marked(*it, treated))

View File

@ -0,0 +1,550 @@
// Copyright (c) 2010-2011 CNRS and LIRIS' Establishments (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; version 2.1 of the License.
// See the file LICENSE.LGPL distributed with CGAL.
//
// 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) : Guillaume Damiand <guillaume.damiand@liris.cnrs.fr>
//
#ifndef CGAL_COMBINATORIAL_MAP_ITERATORS_BASE_HH
#define CGAL_COMBINATORIAL_MAP_ITERATORS_BASE_HH 1
#include <queue>
namespace CGAL {
/** @file Combinatorial_map_iterators_base.h
* Basic classes that serve as tools for definition of iterators.
There are 3 classes:
* - CMap_dart_iterator<Map,Const> is the basic generic class defining
* what is an interator on darts.
* - CMap_extend_iterator<Map,Ite,Bi> to extend the given iterator by adding
* the involution Bi.
* - CMap_non_basic_iterator<Map_,Ite> to transform the basic iterator Ite
* into the corresponding non basic iterator.
*/
//****************************************************************************
/// OperationState: type to keep the last operation used by the previous ++.
typedef char OperationState;
/// Enum of all the possible operations used by the ++ operator.
enum
{
OP_NONE = -1, ///< Beginning of the iterator (there is not yet operator++).
OP_BETAI, ///< Previous op was the first beta.
OP_BETAI_INV, ///< Previous op was the inverse of the first beta.
OP_BETAJ, ///< Previous op was the second beta.
OP_BETAK, ///< Previous op was the third beta.
OP_BETA0I, ///< Previous op was beta0 o the first beta.
OP_BETAI1, ///< Previous op was the first beta o beta1.
OP_BETAIJ, ///< Previous op was the composition of two beta.
OP_BETAJI, ///< Previous op was the composition of two beta.
OP_BETA21, ///< Previous op was beta21.
OP_JUMP, ///< Previous op was a jump .
OP_POP, ///< Previous op pop a dart from a stack or a queue.
OP_END ///< Previous op go out of the iterator.
};
//****************************************************************************
/** Generic class of iterator onto darts.
* Class CMap_dart_iterator is a generic iterator. All the combinatorial
* map iterator classes inherit from this class (or one of its subclass).
*/
template < typename Map_,bool Const=false >
class CMap_dart_iterator:
public internal::CC_iterator<typename Map_::Dart_container,Const>
{
public:
typedef CMap_dart_iterator<Map_,Const> Self;
typedef internal::CC_iterator<typename Map_::Dart_container,Const> Base;
typedef Base Dart_handle;
typedef typename boost::mpl::if_c< Const, const Map_,
Map_>::type Map;
typedef std::input_iterator_tag iterator_category;
typedef typename Base::value_type value_type;
typedef typename Base::difference_type difference_type;
typedef typename Base::pointer pointer;
typedef typename Base::reference reference;
/// true iff this iterator is basic
typedef Tag_true Basic_iterator;
public:
/// Main constructor.
CMap_dart_iterator(Map& amap, Dart_handle adart):
Base(adart),
mmap(&amap),
mfirst_dart(adart),
mprev_op(OP_NONE)
{}
/// == operator.
bool operator==(const Self& aiterator) const
{
return ( ((*this==NULL) && (aiterator==NULL)) ||
(mfirst_dart == aiterator.mfirst_dart &&
((const Base&)*this==(const Base&)aiterator)) );
}
/// != operator.
bool operator!=(const Self& aiterator) const
{ return !operator==(aiterator); }
/// Accessor to the initial dart of the iterator.
Dart_handle get_first_dart() const { return mfirst_dart; }
/// Accessor to the combinatorial map.
Map* get_combinatorial_map() const { return mmap; }
/// Rewind of the iterator to its beginning.
void rewind()
{ set_current_dart(mfirst_dart); mprev_op = OP_NONE; }
/// Test if the iterator is at its end.
bool cont() const { return *this != NULL; }
/// Get the previous operation used for the last ++.
OperationState prev_operation() const { return mprev_op; }
protected:
/// Set the current dart to a given dart
void set_current_dart(Dart_handle adart)
{ Base::operator=(adart); }
private:
/// operator -- in private to invalidate the base operator.
Self& operator--()
{ return *this; }
/// operator -- in private to invalidate the base operator.
void operator--(int)
{}
protected:
/// test if adart->beta(ai) exists and is not marked for amark
bool is_unmarked(Dart_handle adart, unsigned int ai, unsigned amark) const
{ return !adart->is_free(ai) &&
!mmap->is_marked(adart->beta(ai), amark); }
/// test if adart->beta(ai)->beta(aj) exists
bool exist_betaij(Dart_handle adart, unsigned int ai, unsigned int aj) const
{ return !adart->is_free(ai) && !adart->beta(ai)->is_free(aj); }
/// test if adart->beta(ai)->beta(aj) exists and is not marked for amark
bool is_unmarked2(Dart_handle adart, unsigned int ai, unsigned int aj,
unsigned amark) const
{ return exist_betaij(adart,ai,aj) &&
!mmap->is_marked(adart->beta(ai)->beta(aj), amark); }
protected:
/// The map containing the darts to iterate on.
Map* mmap;
/// The initial dart of the iterator.
Dart_handle mfirst_dart;
/// The last operation used for the ++ operator.
OperationState mprev_op;
};
//****************************************************************************
/* Class CMap_extend_iterator<Map,Ite,Bi> which extend a given iterator by
* adding Bi and by using a stack and a mark.
* General case when Ite does not have already a stack.
*/
template <typename Map_,typename Ite,int Bi,
typename Ite_has_stack=typename Ite::Use_mark>
class CMap_extend_iterator: public Ite
{
public:
typedef CMap_extend_iterator<Map_,Ite,Bi, Ite_has_stack> Self;
typedef Ite Base;
typedef typename Base::Dart_handle Dart_handle;
typedef typename Base::Map Map;
typedef Tag_true Use_mark;
CGAL_static_assertion( (Bi<=Map::dimension &&
boost::is_same<Ite_has_stack,Tag_false>::value) );
public:
/// Main constructor.
CMap_extend_iterator(Map& amap, Dart_handle adart, int amark):
Base(amap, adart),
mmark_number(amark),
minitial_dart(adart)
{
if ( adart!=NULL )
{
this->mmap->mark(adart, mmark_number);
if (!(*this)->is_free(Bi))
mto_treat.push((*this)->beta(Bi));
}
}
/// Rewind of the iterator to its beginning.
void rewind()
{
CGAL_assertion(mmark_number != -1);
Base::operator= ( Base(*this->mmap,minitial_dart) );
mto_treat = std::queue<Dart_handle>();
this->mmap->mark((*this), mmark_number);
if (!(*this)->is_free(Bi))
mto_treat.push((*this)->beta(Bi));
}
/// Prefix ++ operator.
Self& operator++()
{
CGAL_assertion(mmark_number != -1);
CGAL_assertion(this->cont());
Base::operator++();
if ( !this->cont() )
{
if ( !mto_treat.empty() )
{
Dart_handle res=NULL;
do
{
res = mto_treat.front();
mto_treat.pop();
}
while (!mto_treat.empty() &&
this->mmap->is_marked(res, mmark_number));
if (!this->mmap->is_marked(res, mmark_number))
{
Base::operator= ( Base(*this->mmap,res) );
this->mprev_op = OP_POP;
}
}
}
if ( this->cont() )
{
CGAL_assertion( !this->mmap->is_marked((*this),
mmark_number) );
this->mmap->mark((*this), mmark_number);
if (!(*this)->is_free(Bi) &&
!this->mmap->is_marked((*this)->beta(Bi),
mmark_number))
mto_treat.push((*this)->beta(Bi));
}
return *this;
}
/// Postfix ++ operator.
Self operator++(int)
{ Self res=*this; operator ++(); return res; }
protected:
/// Queue of darts to process.
std::queue<Dart_handle> mto_treat;
/// Index of the used mark.
int mmark_number;
/// Initial dart
Dart_handle minitial_dart;
};
//****************************************************************************
/* Class CMap_extend_iterator<Map,Ite,Bi> which extend a given iterator by
* adding Bi and by using a stack and a mark.
* Specialization when Ite has already a stack.
*/
template <typename Map_,typename Ite,int Bi>
class CMap_extend_iterator<Map_,Ite,Bi,Tag_true>: public Ite
{
public:
typedef CMap_extend_iterator<Map_,Ite,Bi,Tag_true> Self;
typedef Ite Base;
typedef typename Base::Dart_handle Dart_handle;
typedef typename Base::Map Map;
typedef Tag_true Use_mark;
/// Main constructor.
CMap_extend_iterator(Map& amap, Dart_handle adart, int amark):
Base(amap, adart, amark)
{
if (adart!=NULL)
{
if (!adart->is_free(Bi) &&
!this->mmap->is_marked(adart->beta(Bi), this->mmark_number))
this->mto_treat.push(adart->beta(Bi));
}
}
/// Rewind of the iterator to its beginning.
void rewind()
{
CGAL_assertion(this->mmark_number != -1);
Base::rewind();
if (!(*this)->is_free(Bi) &&
!this->mmap->is_marked((*this)->beta(Bi),
this->mmark_number))
this->mto_treat.push((*this)->beta(Bi));
}
/// Prefix ++ operator.
Self& operator++()
{
Base::operator++();
if ( this->cont() )
{
if (!(*this)->is_free(Bi) &&
!this->mmap->is_marked((*this)->beta(Bi),
this->mmark_number))
this->mto_treat.push((*this)->beta(Bi));
}
return *this;
}
/// Postfix ++ operator.
Self operator++(int)
{ Self res=*this; operator ++(); return res; }
};
//****************************************************************************
//* Class CMap_non_basic_iterator allows to transform a basic_iterator onto
//* a non basic one, depending if the basic iterator uses mark or not.
template <typename Map_,typename Basic_iterator,
typename Use_mark=typename Basic_iterator::Use_mark>
class CMap_non_basic_iterator;
//****************************************************************************
template <typename Map_,typename Base_>
class CMap_non_basic_iterator<Map_,Base_,Tag_true>:
public Base_
{
public:
typedef CMap_non_basic_iterator<Map_,Base_,Tag_true> Self;
typedef Base_ Base;
typedef typename Base::Map Map;
typedef typename Base::Dart_handle Dart_handle;
/// True iff this iterator is basic
typedef Tag_false Basic_iterator;
CGAL_static_assertion( (boost::is_same<typename Base::Basic_iterator,
Tag_true>::value) );
/// Main constructor.
CMap_non_basic_iterator(Map& amap, Dart_handle adart1):
Base(amap, adart1, amap.get_new_mark())
{}
/// Destructor.
~CMap_non_basic_iterator()
{
if (this->mmark_number != -1)
{
unmark_treated_darts();
CGAL_assertion( this->mmap->is_whole_map_unmarked
(this->mmark_number) );
this->mmap->free_mark(this->mmark_number);
}
}
/// Copy constructor.
CMap_non_basic_iterator(const Self& aiterator):
Base(aiterator)
{ this->mmark_number = -1; }
/// Assignment operator.
Self& operator=(const Self& aiterator)
{
if (this != &aiterator)
{
Base::operator=(aiterator);
this->mmark_number = -1;
}
return *this;
}
/// Rewind of the iterator to its beginning.
void rewind()
{
CGAL_assertion(this->mmark_number != -1);
unmark_treated_darts();
Base::rewind();
}
using Base::operator++;
/// Postfix ++ operator.
void operator++(int)
{ operator ++(); }
protected:
/// Unmark all the marked darts during the iterator.
void unmark_treated_darts()
{
CGAL_assertion(this->mmark_number != -1);
if (this->mmap->is_whole_map_unmarked(this->mmark_number)) return;
this->mmap->negate_mark(this->mmark_number);
if (this->mmap->is_whole_map_unmarked(this->mmark_number)) return;
Base::rewind();
while (this->mmap->number_of_unmarked_darts(this->mmark_number) > 0)
this->operator++();
this->mmap->negate_mark(this->mmark_number);
CGAL_assertion(this->mmap->is_whole_map_unmarked(this->mmark_number));
}
};
//****************************************************************************
template <typename Map_,typename Base_>
class CMap_non_basic_iterator<Map_,Base_,Tag_false>:
public Base_
{
public:
typedef CMap_non_basic_iterator<Map_,Base_,Tag_false> Self;
typedef Base_ Base;
typedef typename Base::Map Map;
typedef typename Base::Dart_handle Dart_handle;
/// True iff this iterator is basic
typedef Tag_false Basic_iterator;
CGAL_static_assertion( (boost::is_same<typename Base::Basic_iterator,
Tag_true>::value) );
/// Main constructor.
CMap_non_basic_iterator(Map& amap, Dart_handle adart):
Base(amap, adart,-1)
{}
};
//****************************************************************************
template <typename Map_, typename It, typename Const_it,
typename Basic_iterator=typename It::Basic_iterator>
struct CMap_range
{
typedef It iterator;
typedef Const_it const_iterator;
CMap_range(Map_ &amap, typename Map_::Dart_handle adart) :
mmap(amap), mdart(adart), msize(0)
{}
iterator begin() { return iterator(mmap,mdart); }
iterator end() { return iterator(mmap,NULL); }
const_iterator begin() const { return const_iterator(mmap,mdart); }
const_iterator end() const { return const_iterator(mmap,NULL); }
typename Map_::size_type size()
{
if (msize==0)
for (const_iterator it=begin(); it!=end(); ++it)
++msize;
return msize;
}
bool empty() const
{ return mmap.is_empty(); }
private:
Map_ & mmap;
typename Map_::Dart_handle mdart;
typename Map_::size_type msize;
};
//****************************************************************************
template <typename Map_, typename It, typename Const_it>
struct CMap_range<Map_,It,Const_it,Tag_true>
{
typedef CMap_range<Map_,It,Const_it,Tag_true> Base_cmap_range;
typedef It iterator;
typedef Const_it const_iterator;
CMap_range(Map_ &amap, typename Map_::Dart_handle adart, int amark=-1):
mmap(amap), mdart(adart), msize(0), mmark(amark)
{}
iterator begin() { return iterator(mmap,mdart,mmark); }
iterator end() { return iterator(mmap,NULL,mmark); }
const_iterator begin() const { return const_iterator(mmap,mdart,mmark); }
const_iterator end() const { return const_iterator(mmap,NULL,mmark); }
typename Map_::size_type size()
{
if (msize==0)
for ( CMap_non_basic_iterator<Map_,const_iterator> it(mmap,mdart);
it.cont(); ++it )
++msize;
return msize;
}
bool empty() const
{ return mmap.is_empty(); }
private:
Map_ & mmap;
typename Map_::Dart_handle mdart;
typename Map_::size_type msize;
int mmark;
};
//****************************************************************************
template <typename Map_, typename Const_it,
typename Basic_iterator=typename Const_it::Basic_iterator>
struct CMap_const_range
{
typedef Const_it const_iterator;
CMap_const_range(const Map_ &amap, typename Map_::Dart_const_handle adart):
mmap(amap), mdart(adart), msize(0)
{}
const_iterator begin() const { return const_iterator(mmap,mdart); }
const_iterator end() const { return const_iterator(mmap,NULL); }
typename Map_::size_type size()
{
if (msize==0)
for (const_iterator it=begin(); it!=end(); ++it)
++msize;
return msize;
}
bool empty() const
{ return mmap.is_empty(); }
private:
const Map_ & mmap;
typename Map_::Dart_const_handle mdart;
typename Map_::size_type msize;
};
//****************************************************************************
template <typename Map_, typename Const_it>
struct CMap_const_range<Map_,Const_it,Tag_true>
{
typedef Const_it const_iterator;
CMap_const_range(const Map_ &amap, typename Map_::Dart_const_handle adart,
int amark=-1):
mmap(amap), mdart(adart), msize(0), mmark(amark)
{}
const_iterator begin() const { return const_iterator(mmap,mdart,mmark); }
const_iterator end() const { return const_iterator(mmap,NULL,mmark); }
typename Map_::size_type size()
{
if (msize==0)
for ( CMap_non_basic_iterator<Map_,const_iterator> it(mmap,mdart);
it.cont(); ++it )
++msize;
return msize;
}
bool empty() const
{ return mmap.is_empty(); }
private:
const Map_ & mmap;
typename Map_::Dart_const_handle mdart;
typename Map_::size_type msize;
int mmark;
};
//****************************************************************************
} // namespace CGAL
//******************************************************************************
#endif // CGAL_COMBINATORIAL_MAP_ITERATORS_BASE_HH
//******************************************************************************

View File

@ -156,7 +156,7 @@ namespace CGAL {
bool is_removable(const Map& amap, typename Map::Dart_const_handle adart)
{
CGAL_assertion(adart != NULL);
CGAL_assertion(0<=i && i<=Map::dimension);
CGAL_static_assertion(0<=i && i<=Map::dimension);
if ( i==Map::dimension ) return true;
if ( i==Map::dimension-1 ) return true;
@ -183,7 +183,7 @@ namespace CGAL {
{
static size_t run(Map& amap, typename Map::Dart_handle adart)
{
CGAL_assertion ( 1<=i && i<Map::dimension );
CGAL_static_assertion ( 1<=i && i<Map::dimension );
CGAL_assertion( (is_removable<Map,i>(amap, adart)) );
size_t res = 0;
@ -504,7 +504,7 @@ namespace CGAL {
InputIterator afirst,
InputIterator alast)
{
CGAL_assertion( Map::dimension>= 3 );
CGAL_static_assertion( Map::dimension>= 3 );
// The path must have at least one dart.
if (afirst==alast) return false;

View File

@ -25,15 +25,16 @@
namespace CGAL {
/** @file Dart_const_iterators.h
* Definition of dart const iterators. There are 8 iterators:
* Definition of dart const iterators. There are 9 iterators:
* - CMap_dart_const_iterator_basic_of_orbit<Map,Beta...>
* - CMap_dart_const_iterator_basic_of_cell<Map,i,d>
* - CMap_dart_const_iterator_basic_of_all<Map>
* - CMap_dart_const_iterator_basic_of_involution<Map,i,d>
* - CMap_dart_const_iterator_of_involution_inv<Map,i,d>
* - CMap_dart_const_iterator_of_orbit<Map,Beta...>
* - CMap_dart_const_iterator_of_cell<Map,i,d>
* - CMap_dart_const_iterator_basic_of_involution<Map,i,d>
* - CMap_dart_const_iterator_of_involution<Map,i,d>
* - CMap_dart_const_iterator_basic_of_involution_inv<Map,i,d>
* - CMap_dart_const_iterator_of_involution_inv<Map,i,d>
*/
//****************************************************************************
#ifndef CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES
@ -58,6 +59,13 @@ namespace CGAL {
int amark):
Base(amap,adart,amark)
{}
/// Constructor from non const version.
CMap_dart_const_iterator_basic_of_orbit
(const CMap_dart_iterator_basic_of_orbit<Map_,Beta...>& it):
Base(*const_cast<const Map_*>(it.get_combinatorial_map()),
it.get_first_dart(),
it.mmark_number)
{}
};
//****************************************************************************
template<typename Map_,unsigned int...Beta>
@ -109,6 +117,14 @@ namespace CGAL {
int amark):
Base(amap,adart,amark)
{}
/// Constructor from non const version.
CMap_dart_const_iterator_basic_of_orbit
(const CMap_dart_iterator_basic_of_orbit<Map_,B1,B2,B3,B4,B5,B6,
B7,B8,B9>& it):
Base(*const_cast<const Map_*>(it.get_combinatorial_map()),
it.get_first_dart(),
it.mmark_number)
{}
};
//****************************************************************************
template<typename Map_,int B1=-1,int B2=-1,int B3=-1,int B4=-1,int B5=-1,
@ -139,6 +155,33 @@ namespace CGAL {
};
#endif // CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES
//****************************************************************************
template<typename Map_>
class CMap_dart_const_iterator_basic_of_all:
public CMap_dart_iterator_basic_of_all<Map_,true>
{
public:
typedef CMap_dart_iterator_basic_of_all<Map_,true> Base;
typedef typename Map_::Dart_const_handle Dart_const_handle;
/* Main constructor. */
CMap_dart_const_iterator_basic_of_all(const Map_& amap,
Dart_const_handle adart):
Base(amap,adart)
{}
/* Main constructor. */
CMap_dart_const_iterator_basic_of_all(const Map_& amap,
Dart_const_handle adart,
int /*amark*/):
Base(amap,adart)
{}
/// Constructor from non const version.
CMap_dart_const_iterator_basic_of_all
(const CMap_dart_iterator_basic_of_all<Map_,false>& it):
Base(*const_cast<const Map_*>(it.get_combinatorial_map()),
it.get_first_dart())
{}
};
//****************************************************************************
template<typename Map_,int i,int d=Map_::dimension>
class CMap_dart_const_iterator_basic_of_cell:
public CMap_dart_iterator_basic_of_cell<Map_,i,d,true>

File diff suppressed because it is too large Load Diff

View File

@ -51,7 +51,7 @@ namespace CGAL {
typename Map::Dart_const_handle adart1,
typename Map::Dart_const_handle adart2)
{
CGAL_assertion(2<=i && i<=Map::dimension);
CGAL_static_assertion(2<=i && i<=Map::dimension);
CGAL_assertion(adart1!=NULL && adart2!=NULL);
if ( !adart1->is_free(i) || !adart2->is_free(i) || adart1==adart2 )
@ -144,7 +144,7 @@ namespace CGAL {
static void run(Map& amap,typename Map::Dart_handle adart1,
typename Map::Dart_handle adart2)
{
CGAL_assertion(2<=i && i<=Map::dimension);
CGAL_static_assertion(2<=i && i<=Map::dimension);
CGAL_assertion( (is_sewable_functor<Map,i>::run(amap,adart1,adart2)) );
CMap_dart_iterator_of_involution<Map,i> I1(amap, adart1);
@ -205,7 +205,7 @@ namespace CGAL {
static void run(Map& amap,typename Map::Dart_handle adart1,
typename Map::Dart_handle adart2)
{
CGAL_assertion(2<=i && i<=Map::dimension);
CGAL_static_assertion(2<=i && i<=Map::dimension);
CGAL_assertion( (is_sewable_functor<Map,i>::run(amap,adart1,adart2)) );
CMap_dart_iterator_of_involution<Map,i> I1(amap, adart1);
@ -312,7 +312,7 @@ namespace CGAL {
static void run(Map& amap,typename Map::Dart_handle adart)
{
CGAL_assertion( adart!=NULL && !adart->is_free(i) );
CGAL_assertion(2<=i && i<=Map::dimension);
CGAL_static_assertion(2<=i && i<=Map::dimension);
CMap_dart_iterator_of_involution<Map,i> it(amap, adart);
while ( it.cont() )
@ -372,7 +372,7 @@ namespace CGAL {
struct unsew_functor{
static void run(Map& amap,typename Map::Dart_handle adart)
{
CGAL_assertion(2<=i && i<=Map::dimension);
CGAL_static_assertion(2<=i && i<=Map::dimension);
CGAL_assertion( adart!=NULL && !adart->is_free(i) );
std::stack<Couple_dart_and_dim<typename Map::Dart_handle> > todegroup;
@ -478,7 +478,7 @@ namespace CGAL {
typename Map::Dart_handle adart2)
{
CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2);
CGAL_assertion( i>=2 && i<=Map::dimension );
CGAL_static_assertion( i>=2 && i<=Map::dimension );
adart1->basic_link_beta(adart2, i);
adart2->basic_link_beta(adart1, i);
}
@ -514,7 +514,7 @@ namespace CGAL {
static void run(Map&,typename Map::Dart_handle adart)
{
CGAL_assertion(adart != NULL && !adart->is_free(i));
CGAL_assertion(2<=i && i<=Map::dimension);
CGAL_static_assertion(2<=i && i<=Map::dimension);
adart->beta(i)->unlink_beta(i);
adart->unlink_beta(i);
}
@ -889,7 +889,7 @@ namespace CGAL {
typename CMap::Dart_handle adart2)
{
CGAL_assertion(adart1 != NULL && adart2 != NULL && adart1!=adart2 );
CGAL_assertion( 2<=i && i<=CMap::dimension );
CGAL_static_assertion( 2<=i && i<=CMap::dimension );
adart1->basic_link_beta(adart2, i);
adart2->basic_link_beta(adart1, i);
CMap::Helper::template Foreach_enabled_attributes

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5 @@
Utrecht University (The Netherlands),
ETH Zurich (Switzerland),
INRIA Sophia-Antipolis (France),
Max-Planck-Institute Saarbruecken (Germany),
Tel-Aviv University (Israel).

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{Convex Decomposition of Polyhedra\label{Pkg:ConvexDecomposition3}}
\ccPkgHowToCiteCgal{cgal:h-emspe-11b}
\ccPkgHowToCiteCgal{cgal:h-emspe-12}
\ccPkgSummary{
This packages provides a function for decomposing a bounded polyhedron
into convex sub-polyhedra. The decomposition yields $O(r^2)$ convex

View File

@ -0,0 +1,2 @@
Max-Planck-Institute Saarbruecken (Germany).

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{2D Convex Hulls and Extreme Points \label{Pkg:ConvexHull2}}
\ccPkgHowToCiteCgal{cgal:hs-chep2-11b}
\ccPkgHowToCiteCgal{cgal:hs-chep2-12}
\ccPkgSummary{This package provides functions
for computing convex hulls in two dimensions as well as functions for
checking if sets of points are strongly convex are not. There are also

View File

@ -0,0 +1,2 @@
Max-Planck-Institute Saarbruecken (Germany).

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{3D Convex Hulls\label{Pkg:ConvexHull3}}
\ccPkgHowToCiteCgal{cgal:hs-ch3-11b}
\ccPkgHowToCiteCgal{cgal:hs-ch3-12}
\ccPkgSummary{This package provides functions
for computing convex hulls in three dimensions as well as functions
for checking if sets of points are strongly convex or not. One can

View File

@ -1,4 +1,4 @@
// Copyright (c) 2003,2011 INRIA Sophia-Antipolis (France).
// Copyright (c) 2011 Max-Planck-Institute Saarbruecken (Germany).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you may redistribute it under
@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Mariette Yvinec,Sylvain Pion
// Author(s) : Andreas Fabri
// face of a triangulation of any dimension <=3

View File

@ -0,0 +1,2 @@
Max-Planck-Institute Saarbruecken (Germany).

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{dD Convex Hulls and Delaunay Triangulations\label{Pkg:ConvexHullD}}
\ccPkgHowToCiteCgal{cgal:hs-chdt3-11b}
\ccPkgHowToCiteCgal{cgal:hs-chdt3-12}
\ccPkgSummary{This package provides functions for computing convex hulls and
Delaunay triangulations in $d$-dimensional Euclidean space.}

View File

@ -0,0 +1,2 @@
Max-Planck-Institute Saarbruecken (Germany).

View File

@ -0,0 +1,6 @@
Utrecht University (The Netherlands),
ETH Zurich (Switzerland),
INRIA Sophia-Antipolis (France),
Max-Planck-Institute Saarbruecken (Germany),
Tel-Aviv University (Israel),
GeometryFactory (France).

View File

@ -0,0 +1,5 @@
Utrecht University (The Netherlands),
ETH Zurich (Switzerland),
INRIA Sophia-Antipolis (France),
Max-Planck-Institute Saarbruecken (Germany),
Tel-Aviv University (Israel).

View File

@ -0,0 +1,5 @@
Utrecht University (The Netherlands),
ETH Zurich (Switzerland),
INRIA Sophia-Antipolis (France),
Max-Planck-Institute Saarbruecken (Germany),
Tel-Aviv University (Israel).

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{2D Envelopes\label{Pkg:Envelope2}}
\ccPkgHowToCiteCgal{cgal:w-e2-11b}
\ccPkgHowToCiteCgal{cgal:w-e2-12}
\ccPkgSummary{
This package consits of functions that computes the lower (or upper)
envelope of a set of arbitrary curves in 2D. The output is

View File

@ -0,0 +1 @@
Tel-Aviv University (Israel).

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{3D Envelopes\label{Pkg:Envelope3}}
\ccPkgHowToCiteCgal{cgal:mwz-e3-11b}
\ccPkgHowToCiteCgal{cgal:mwz-e3-12}
\ccPkgSummary{
This package consits of functions that compute the lower (or upper)
envelope of a set of arbitrary surfaces in 3D. The output is

View File

@ -0,0 +1 @@
Tel-Aviv University (Israel).

View File

@ -0,0 +1,2 @@
INRIA Sophia-Antipolis (France)

View File

@ -1,5 +1,5 @@
\begin{ccPkgDescription}{Geometric Object Generators\label{Pkg:Generators}}
\ccPkgHowToCiteCgal{cgal:hhk-gog-11b}
\ccPkgHowToCiteCgal{cgal:hhk-gog-12}
\ccPkgSummary{This package provides a variety of generators for geometric objects.
They are useful as synthetic test data sets, e.g.~for testing
@ -8,5 +8,6 @@ algorithms on degenerate object sets and for performance analysis.
\ccPkgIntroducedInCGAL{1.0}
\ccPkgLicense{\ccLicenseLGPL}
\ccPkgDemo{Generators}{generator.zip}
\ccPkgIllustration{Generator/dice.png}{Generator/dice.png}
\end{ccPkgDescription}

View File

@ -0,0 +1,5 @@
Utrecht University (The Netherlands),
ETH Zurich (Switzerland),
INRIA Sophia-Antipolis (France),
Max-Planck-Institute Saarbruecken (Germany),
Tel-Aviv University (Israel).

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{Geomview\label{Pkg:Geomview}}
\ccPkgHowToCiteCgal{cgal:fp-gv-11b}
\ccPkgHowToCiteCgal{cgal:fp-gv-12}
\ccPkgSummary{
This package implements an interface to Geomview, an interactive 3D viewing program,

View File

@ -0,0 +1,5 @@
Utrecht University (The Netherlands),
ETH Zurich (Switzerland),
INRIA Sophia-Antipolis (France),
Max-Planck-Institute Saarbruecken (Germany),
Tel-Aviv University (Israel).

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

0
GraphicsView/demo/Bounding_volumes/icons/p_center.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

0
GraphicsView/demo/Snap_rounding_2/icons/snapped.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 484 B

After

Width:  |  Height:  |  Size: 484 B

0
GraphicsView/demo/Snap_rounding_2/icons/unsnapped.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 443 B

After

Width:  |  Height:  |  Size: 443 B

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{CGAL and the Qt Graphics View Framework \label{Pkg:GraphicsView}}
\ccPkgHowToCiteCgal{cgal:fr-cqgvf-11b}
\ccPkgHowToCiteCgal{cgal:fr-cqgvf-12}
\ccPkgSummary{This package provides classes for displaying \cgal\ objects
and data structures in the \ccAnchor{http://doc.qt.nokia.com/latest/graphicsview.html}{Qt 4 Graphics View Framework}.}

View File

@ -0,0 +1 @@
GeometryFactory (France)

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{Halfedge Data Structures \label{Pkg:HDS}}
\ccPkgHowToCiteCgal{cgal:k-hds-11b}
\ccPkgHowToCiteCgal{cgal:k-hds-12}
\ccPkgSummary{A halfedge data structure is an edge-centered data structure
capable of maintaining incidence information of vertices, edges and
faces, for example for planar maps, polyhedra, or other orientable,

View File

@ -0,0 +1,5 @@
Utrecht University (The Netherlands),
ETH Zurich (Switzerland),
INRIA Sophia-Antipolis (France),
Max-Planck-Institute Saarbruecken (Germany),
Tel-Aviv University (Israel).

View File

@ -0,0 +1,2 @@
Max-Planck-Institute Saarbruecken (Germany).

View File

@ -0,0 +1,5 @@
Utrecht University (The Netherlands),
ETH Zurich (Switzerland),
INRIA Sophia-Antipolis (France),
Max-Planck-Institute Saarbruecken (Germany),
Tel-Aviv University (Israel).

View File

@ -112,6 +112,15 @@ CGAL 3.10 offers the following improvements and new functionality : </p>
this small overhead introduced for thread-safety can be deactivated by defining CGAL_HAS_NO_THREADS.</li>
</ul>
<h3>Spatial Searching</h3>
<ul>
<li>The const-correctness of this package have been worked out. The transition for users should be smooth in
general, however adding few const in user code might be needed in some cases.
</li>
<li>The class Kd_tree is now guaranteed to be read-only thread-safe. As usual in CGAL,
this small overhead introduced for thread-safety can be deactivated by defining CGAL_HAS_NO_THREADS.</li>
</ul>
<h3>STL extension</h3>
<ul>
<li>CGAL::copy_n is now deprecated for CGAL::cpp0x::copy_n which uses std::copy_n, if available on the platform.</li>

View File

@ -7,6 +7,16 @@
# WITH_IPE_7 - indicates if the compatibility with the version 7 of IPE must be used
#
macro( remove_leading_zero var )
string(SUBSTRING "${${var}}" 0 1 ONECHAR)
string(COMPARE EQUAL "${ONECHAR}" "0" ISZERO)
if (${ISZERO})
string(SUBSTRING "${${var}}" 1 1 ONECHAR)
set(${var} ${ONECHAR})
endif()
endmacro()
# Is it already configured?
if (IPE_INCLUDE_DIR AND IPE_LIBRARY_DIR )
set(IPE_FOUND TRUE)
@ -29,9 +39,11 @@ else()
set(IPE_FOUND TRUE)
if (${IPE_VERSION} STREQUAL "AUTODETECT")
FILE(READ "${IPE_INCLUDE_DIR}/ipebase.h" IPEBASE_H)
STRING(REGEX MATCH "IPELIB_VERSION[ ]*=[ ]*([67])[0-9]+;" found_ipe_version "${IPEBASE_H}")
STRING(REGEX MATCH "IPELIB_VERSION[ ]*=[ ]*([67])([0-9][0-9])([0-9][0-9]);" found_ipe_version "${IPEBASE_H}")
if (found_ipe_version)
set(IPE_VERSION ${CMAKE_MATCH_1})
set(IPE_MINOR_VERSION_1 ${CMAKE_MATCH_2})
set(IPE_MINOR_VERSION_2 ${CMAKE_MATCH_3})
endif()
endif()
if (${IPE_VERSION} EQUAL "7")
@ -49,10 +61,9 @@ endif()
if (IPE_FOUND AND NOT IPELET_INSTALL_DIR)
message("-- Using IPE version ${IPE_VERSION} compatibility.")
if (WITH_IPE_7)
foreach (VER RANGE 0 30)
string(REPLACE XX ${VER} PATHC "${IPE_LIBRARY_DIR}/ipe/7.0.XX/ipelets/" )
set(INSTALL_PATHS ${INSTALL_PATHS} ${PATHC})
endforeach()
remove_leading_zero(IPE_MINOR_VERSION_1)
remove_leading_zero(IPE_MINOR_VERSION_2)
set(INSTALL_PATHS ${INSTALL_PATHS} "${IPE_LIBRARY_DIR}/ipe/7.${IPE_MINOR_VERSION_1}.${IPE_MINOR_VERSION_2}/ipelets/")
find_path(IPELET_INSTALL_DIR
NAMES libgoodies.lua goodies.lua
PATHS ${INSTALL_PATHS}

View File

@ -1,6 +1,6 @@
\begin{ccPkgDescription}{Installation\label{Pkg:Installation}}
\ccPkgHowToCiteCgal{cgal:cr-i-11b}
\ccPkgHowToCiteCgal{cgal:cr-i-12}
\ccPkgSummary{
This chapter describes how to install \cgal, and lists the third party libraries
on which \cgal\ depends, or for which \cgal\ provides interfaces.

0
Installation/doc_tex/Installation/cmakelogo.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -307,7 +307,7 @@ CGAL_LIB_RT_OPT: A suffix that indicates the runtime library used,
#pragma comment(lib, CGAL_LIB_FULL_NAME )
#ifdef CGAL_LIB_DIAGNOSTIC
# pragma message ("Linking to lib file: " CGAL_LIB_FULL_NAME )
# pragma message ("(CGAL auto-link diagnostic) Linking to lib file: " CGAL_LIB_FULL_NAME )
#endif
#else

Some files were not shown because too many files have changed in this diff Show More