1 // Copyright (c) 1997-2002 Max-Planck-Institute Saarbruecken (Germany). 2 // All rights reserved. 3 // 4 // This file is part of CGAL (www.cgal.org). 5 // 6 // $URL: https://github.com/CGAL/cgal/blob/v5.3/Nef_3/include/CGAL/Nef_3/Volume.h $ 7 // $Id: Volume.h 0779373 2020-03-26T13:31:46+01:00 Sébastien Loriot 8 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial 9 // 10 // 11 // Author(s) : Michael Seel <seel@mpi-sb.mpg.de> 12 // Miguel Granados <granados@mpi-sb.mpg.de> 13 // Susan Hert <hert@mpi-sb.mpg.de> 14 // Lutz Kettner <kettner@mpi-sb.mpg.de> 15 // Peter Hachenberger <hachenberger@mpi-sb.mpg.de> 16 #ifndef CGAL_NEF_VOLUME_H 17 #define CGAL_NEF_VOLUME_H 18 19 #include <CGAL/license/Nef_3.h> 20 21 22 #include <string> 23 #include <sstream> 24 #include <CGAL/IO/Verbose_ostream.h> 25 #include <CGAL/Nef_3/SNC_iteration.h> 26 27 #undef CGAL_NEF_DEBUG 28 #define CGAL_NEF_DEBUG 83 29 #include <CGAL/Nef_2/debug.h> 30 31 namespace CGAL { 32 33 template <typename Refs> 34 class Volume_base { 35 36 typedef typename Refs::Mark Mark; 37 typedef typename Refs::Volume_handle Volume_handle; 38 typedef typename Refs::Volume_const_handle Volume_const_handle; 39 typedef typename Refs::Object_list Object_list; 40 typedef typename Refs::Shell_entry_iterator 41 Shell_entry_iterator; 42 typedef typename Refs::Shell_entry_const_iterator 43 Shell_entry_const_iterator; 44 45 Mark mark_; 46 Object_list shell_entry_objects_; // SFaces 47 48 public: 49 Volume_base()50 Volume_base() {} 51 Volume_base(Mark m)52 Volume_base(Mark m) : mark_(m) {} 53 ~Volume_base()54 ~Volume_base() { 55 CGAL_NEF_TRACEN(" destroying Volume_base item "<<&*this); 56 } 57 Volume_base(const Volume_base<Refs> & v)58 Volume_base(const Volume_base<Refs>& v) 59 { mark_ = v.mark_; 60 shell_entry_objects_ = v.shell_entry_objects_; 61 } 62 63 Volume_base<Refs>& operator=(const Volume_base<Refs>& v) 64 { if (this == &v) return *this; 65 mark_ = v.mark_; 66 shell_entry_objects_ = v.shell_entry_objects_; 67 return *this; 68 } 69 mark()70 Mark& mark() { return mark_; } mark()71 const Mark& mark() const { return mark_; } 72 shell_entry_objects()73 Object_list& shell_entry_objects() { return shell_entry_objects_; } shell_entry_objects()74 const Object_list& shell_entry_objects() const { 75 return shell_entry_objects_; 76 } 77 shells_begin()78 Shell_entry_iterator shells_begin() 79 { return shell_entry_objects_.begin(); } shells_end()80 Shell_entry_iterator shells_end() 81 { return shell_entry_objects_.end(); } shells_begin()82 Shell_entry_const_iterator shells_begin() const 83 { return shell_entry_objects_.begin(); } shells_end()84 Shell_entry_const_iterator shells_end() const 85 { return shell_entry_objects_.end(); } 86 87 bool is_valid( bool verb = false, int level = 0) const { 88 89 Verbose_ostream verr(verb); 90 verr << "begin CGAL::SNC_items<...>::Volume_base::is_valid( verb=true, " 91 "level = " << level << "):" << std::endl; 92 93 bool valid = (!shell_entry_objects_.empty()); 94 95 verr << "end of CGAL::SNC_items<...>::Volume_base::is_valid(): structure is " 96 << ( valid ? "valid." : "NOT VALID.") << std::endl; 97 98 return valid; 99 } 100 101 }; // Volume_base 102 103 } //namespace CGAL 104 #endif //CGAL_NEF_VOLUME_H 105