📄 snc_list.h
字号:
// Copyright (c) 1997-2000 Max-Planck-Institute Saarbruecken (Germany).// All rights reserved.//// This file is part of CGAL (www.cgal.org); you may redistribute it under// the terms of the Q Public License version 1.0.// See the file LICENSE.QPL 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: svn+ssh://scm.gforge.inria.fr/svn/cgal/branches/CGAL-3.3-branch/Nef_3/include/CGAL/Nef_3/SNC_list.h $// $Id: SNC_list.h 28567 2006-02-16 14:30:13Z lsaboret $// //// Author(s) : Peter Hachenberger <hachenberger@mpi-sb.mpg.de>#ifndef CGAL_SNC_LIST_H#define CGAL_SNC_LIST_H#include <CGAL/Nef_S2/SM_list.h>#include <CGAL/Unique_hash_map.h>CGAL_BEGIN_NAMESPACEtemplate < class Sphere_map>class SNC_in_place_list_sm : public Sphere_map, public In_place_list_base<SNC_in_place_list_sm<Sphere_map> > {public: typedef SNC_in_place_list_sm<Sphere_map> Self; // typedef typename Vertex::Vertex_handle Vertex_handle; // typedef typename Vertex::Vertex_const_handle Vertex_const_handle; SNC_in_place_list_sm() {} SNC_in_place_list_sm(const Sphere_map& sm) // down cast : Sphere_map(sm) {} Self& operator=( const Self& sm) { // This self written assignment avoids that assigning vertices will // overwrite the list linking of the target vertex. *((Sphere_map*)this) = ((const Sphere_map&)sm); return *this; }};template < class Halffacet>class SNC_in_place_list_halffacet : public Halffacet, public In_place_list_base<SNC_in_place_list_halffacet<Halffacet> > {public: typedef SNC_in_place_list_halffacet<Halffacet> Self; // typedef typename Halffacet::Halffacet_handle Halffacet_handle; // typedef typename Halffacet::Halffacet_const_handle Halffacet_const_handle; SNC_in_place_list_halffacet() {} SNC_in_place_list_halffacet(const Halffacet& v) // down cast : Halffacet(v) {} Self& operator=( const Self& v) { // This self written assignment avoids that assigning vertices will // overwrite the list linking of the target vertex. *((Halffacet*)this) = ((const Halffacet&)v); return *this; }};template < class Volume>class SNC_in_place_list_volume : public Volume, public In_place_list_base<SNC_in_place_list_volume<Volume> > {public: typedef SNC_in_place_list_volume<Volume> Self; // typedef typename Volume::Volume_handle Volume_handle; // typedef typename Volume::Volume_const_handle Volume_const_handle; SNC_in_place_list_volume() {} SNC_in_place_list_volume(const Volume& v) // down cast : Volume(v) {} Self& operator=( const Self& v) { // This self written assignment avoids that assigning vertices will // overwrite the list linking of the target vertex. *((Volume*)this) = ((const Volume&)v); return *this; }};template < class SHalfloop>class SNC_in_place_list_shalfloop : public SHalfloop, public In_place_list_base<SNC_in_place_list_shalfloop<SHalfloop> > {public: typedef SNC_in_place_list_shalfloop<SHalfloop> Self; // typedef typename SHalfloop::SHalfloop_handle SHalfloop_handle; // typedef typename SHalfloop::SHalfloop_const_handle SHalfloop_const_handle; SNC_in_place_list_shalfloop() {} SNC_in_place_list_shalfloop(const SHalfloop& v) // down cast : SHalfloop(v) {} Self& operator=( const Self& v) { // This self written assignment avoids that assigning vertices will // overwrite the list linking of the target vertex. *((SHalfloop*)this) = ((const SHalfloop&)v); return *this; }};/*template <typename K, typename I> class SNC_sphere_map;template <typename S> class SM_decorator;template<typename Kernel_,typename Items_>class SNC_list : public SM_list<CGAL::Sphere_geometry<Kernel_>,Items_> { public: typedef Kernel_ Kernel; typedef Items_ Items; typedef CGAL::Sphere_geometry<Kernel> Sphere_kernel; typedef CGAL::SNC_list<Kernel,Items> Self; typedef CGAL::SM_list<Sphere_kernel,Items> Base; typedef CGAL::SNC_sphere_map<Kernel, Items> Sphere_map; typedef CGAL::SM_decorator<Sphere_map> SM_decorator; typedef typename Base::Mark Mark; typedef typename Base::Size_type Size_type; typedef typename Kernel::Point_3 Point_3; typedef typename Kernel::Plane_3 Plane_3; typedef typename Kernel::Vector_3 Vector_3; typedef typename Kernel::Direction_3 Direction_3; typedef typename Kernel::Segment_3 Segment_3; typedef typename Kernel::Line_3 Line_3; typedef typename Kernel::Ray_3 Ray_3; typedef typename Kernel::Triangle_3 Triangle_3; typedef typename Kernel::Aff_transformation_3 Aff_transformation_3; typedef typename Sphere_kernel::Sphere_point Sphere_point; typedef typename Sphere_kernel::Sphere_segment Sphere_segment; typedef typename Sphere_kernel::Sphere_circle Sphere_circle; typedef typename Sphere_kernel::Sphere_direction Sphere_direction; typedef Sphere_map Vertex_base; typedef SNC_in_place_list_sm<Vertex_base> Vertex; typedef CGAL::In_place_list<Vertex,false> Vertex_list; typedef CGAL_ALLOCATOR(Vertex) Vertex_alloc; typedef typename Vertex_list::iterator Vertex_handle; typedef typename Vertex_list::const_iterator Vertex_const_handle; typedef typename Vertex_list::iterator Vertex_iterator; typedef typename Vertex_list::const_iterator Vertex_const_iterator; typedef typename Items::template Halffacet<Self> Halffacet_base; typedef SNC_in_place_list_halffacet<Halffacet_base> Halffacet; typedef CGAL::In_place_list<Halffacet,false> Halffacet_list; typedef CGAL_ALLOCATOR(Halffacet) Halffacet_alloc; typedef typename Halffacet_list::iterator Halffacet_handle; typedef typename Halffacet_list::const_iterator Halffacet_const_handle; typedef typename Halffacet_list::iterator Halffacet_iterator; typedef typename Halffacet_list::const_iterator Halffacet_const_iterator; typedef typename Items::template Volume<Self> Volume_base; typedef SNC_in_place_list_volume<Volume_base> Volume; typedef CGAL::In_place_list<Volume,false> Volume_list; typedef CGAL_ALLOCATOR(Volume) Volume_alloc; typedef typename Volume_list::iterator Volume_handle; typedef typename Volume_list::const_iterator Volume_const_handle; typedef typename Volume_list::iterator Volume_iterator; typedef typename Volume_list::const_iterator Volume_const_iterator; typedef typename Items::template SVertex<Self> SVertex_base; typedef SNC_in_place_list_svertex<SVertex_base> SVertex; typedef CGAL::In_place_list<SVertex,false> SVertex_list; typedef CGAL_ALLOCATOR(SVertex) SVertex_alloc; typedef typename SVertex_list::iterator SVertex_handle; typedef typename SVertex_list::const_iterator SVertex_const_handle; typedef typename SVertex_list::iterator SVertex_iterator; typedef typename SVertex_list::const_iterator SVertex_const_iterator; typedef typename Items::template SVertex<Self> Halfedge_base; typedef SNC_in_place_list_svertex<SVertex_base> Halfedge; typedef CGAL::In_place_list<SVertex,false> Halfedge_list; typedef CGAL_ALLOCATOR(SVertex) Halfedge_alloc; typedef typename SVertex_list::iterator Halfedge_handle; typedef typename SVertex_list::const_iterator Halfedge_const_handle; typedef typename SVertex_list::iterator Halfedge_iterator; typedef typename SVertex_list::const_iterator Halfedge_const_iterator; typedef typename Items::template SHalfedge<Self> SHalfedge_base; typedef SNC_in_place_list_shalfedge<SHalfedge_base> SHalfedge; typedef CGAL::In_place_list<SHalfedge,false> SHalfedge_list; typedef CGAL_ALLOCATOR(SHalfedge) SHalfedge_alloc; typedef typename SHalfedge_list::iterator SHalfedge_handle; typedef typename SHalfedge_list::const_iterator SHalfedge_const_handle; typedef typename SHalfedge_list::iterator SHalfedge_iterator; typedef typename SHalfedge_list::const_iterator SHalfedge_const_iterator; typedef typename Items::template SHalfloop<Self> SHalfloop_base; typedef SNC_in_place_list_shalfloop<SHalfloop_base> SHalfloop; typedef CGAL::In_place_list<SHalfloop,false> SHalfloop_list; typedef CGAL_ALLOCATOR(SHalfloop) SHalfloop_alloc; typedef typename SHalfloop_list::iterator SHalfloop_handle; typedef typename SHalfloop_list::const_iterator SHalfloop_const_handle; typedef typename SHalfloop_list::iterator SHalfloop_iterator; typedef typename SHalfloop_list::const_iterator SHalfloop_const_iterator; typedef typename Items::template SFace<Self> SFace_base; typedef SNC_in_place_list_sface<SFace_base> SFace; typedef CGAL::In_place_list<SFace,false> SFace_list; typedef CGAL_ALLOCATOR(SFace) SFace_alloc; typedef typename SFace_list::iterator SFace_handle; typedef typename SFace_list::const_iterator SFace_const_handle; typedef typename SFace_list::iterator SFace_iterator; typedef typename SFace_list::const_iterator SFace_const_iterator; typedef typename Base::SVertex Halfedge; typedef typename Base::SVertex_handle Halfedge_handle; typedef typename Base::SVertex_iterator Halfedge_iterator; typedef typename Base::SVertex_const_handle Halfedge_const_handle; typedef typename Base::SVertex_const_iterator Halfedge_const_iterator; typedef typename Base::SVertex SVertex; typedef typename Base::SVertex_handle SVertex_handle; typedef typename Base::SVertex_iterator SVertex_iterator; typedef typename Base::SVertex_const_handle SVertex_const_handle; typedef typename Base::SVertex_const_iterator SVertex_const_iterator; typedef typename Base::SHalfedge SHalfedge; typedef typename Base::SHalfedge_handle SHalfedge_handle; typedef typename Base::SHalfedge_iterator SHalfedge_iterator; typedef typename Base::SHalfedge_const_handle SHalfedge_const_handle; typedef typename Base::SHalfedge_const_iterator SHalfedge_const_iterator; typedef typename Base::SFace SFace; typedef typename Base::SFace_handle SFace_handle; typedef typename Base::SFace_iterator SFace_iterator; typedef typename Base::SFace_const_handle SFace_const_handle; typedef typename Base::SFace_const_iterator SFace_const_iterator; typedef typename Base::SHalfloop SHalfloop; typedef typename Base::SHalfloop_handle SHalfloop_handle; typedef typename Base::SHalfloop_iterator SHalfloop_iterator; typedef typename Base::SHalfloop_const_handle SHalfloop_const_handle; typedef typename Base::SHalfloop_const_iterator SHalfloop_const_iterator; typedef typename Base::Object_handle Object_handle; typedef typename Base::Object_list Object_list; typedef typename Base::Object_iterator Object_iterator; typedef typename Base::Object_const_iterator Object_const_iterator; typedef typename Base::SHalfedge_around_svertex_circulator SHalfedge_around_svertex_circulator; typedef typename Base::SHalfedge_around_sface_circulator SHalfedge_around_sface_circulator; typedef typename Base::SHalfedge_around_svertex_const_circulator SHalfedge_around_svertex_const_circulator; typedef typename Base::SHalfedge_around_sface_const_circulator SHalfedge_around_sface_const_circulator; typedef typename Base::SFace_cycle_iterator SFace_cycle_iterator; typedef typename Base::SFace_cycle_const_iterator SFace_cycle_const_iterator; typedef CircFromIt<SHalfedge_const_iterator, move_shalfedge_around_facet<SHalfedge_const_iterator> > SHalfedge_around_facet_const_circulator;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -