diff --git a/Old_Packages/Kernel_basic/changes.txt b/Old_Packages/Kernel_basic/changes.txt index 716f075bda0..0059d787495 100644 --- a/Old_Packages/Kernel_basic/changes.txt +++ b/Old_Packages/Kernel_basic/changes.txt @@ -1,3 +1,6 @@ +3.58 (3 October 2001) +- [Simple_]Handle_for<> protection cleanup, non-const Ptr() added. + 3.57 (12 September 2001) - Fixes for SunPro. diff --git a/Old_Packages/Kernel_basic/include/CGAL/Handle_for.h b/Old_Packages/Kernel_basic/include/CGAL/Handle_for.h index b738fb64406..0ce78f8e4c1 100644 --- a/Old_Packages/Kernel_basic/include/CGAL/Handle_for.h +++ b/Old_Packages/Kernel_basic/include/CGAL/Handle_for.h @@ -62,8 +62,6 @@ class Handle_for { public: - typedef RefCounted element_type; - Handle_for(const RefCounted& rc) { ptr = allocator.allocate(1); @@ -105,12 +103,35 @@ class Handle_for return *this; } +protected: + typedef RefCounted element_type; + void initialize_with( const RefCounted& rc) { allocator.construct(ptr, rc); } + bool + identical( const Handle_for& h) const + { return ptr == h.ptr; } + + long int + id() const + { return reinterpret_cast(&*ptr); } + + typename Allocator::const_pointer + Ptr() const + { return ptr; } + + typename Allocator::pointer + Ptr() + { + copy_on_write(); + return ptr; + } + +// private: void copy_on_write() { @@ -123,19 +144,6 @@ class Handle_for } } - bool - identical( const Handle_for& h) const - { return ptr == h.ptr; } - - long int - id() const - { return reinterpret_cast( &(*ptr)); } - - const typename Allocator::pointer - Ptr() const - { return ptr; } - - protected: static Allocator allocator; typename Allocator::pointer ptr; }; diff --git a/Old_Packages/Kernel_basic/include/CGAL/Simple_Handle_for.h b/Old_Packages/Kernel_basic/include/CGAL/Simple_Handle_for.h index 6a9ed2df6ba..3ea60d65540 100644 --- a/Old_Packages/Kernel_basic/include/CGAL/Simple_Handle_for.h +++ b/Old_Packages/Kernel_basic/include/CGAL/Simple_Handle_for.h @@ -29,13 +29,14 @@ class Simple_Handle_for { public: - typedef Stored element_type; + Simple_Handle_for() + {} Simple_Handle_for(const Stored& rc) : _s(rc) {} - Simple_Handle_for() - {} +protected: + typedef Stored element_type; void initialize_with(const Stored& rc) @@ -43,10 +44,6 @@ public: _s = rc; } - void - copy_on_write() - {} - long int id() const { return reinterpret_cast(&_s); } @@ -58,7 +55,14 @@ public: const Stored * Ptr() const { return &_s; } + Stored * Ptr() + { return &_s; } + private: + void + copy_on_write() + {} + Stored _s; }; diff --git a/Packages/Kernel_23/include/CGAL/Handle_for.h b/Packages/Kernel_23/include/CGAL/Handle_for.h index b738fb64406..0ce78f8e4c1 100644 --- a/Packages/Kernel_23/include/CGAL/Handle_for.h +++ b/Packages/Kernel_23/include/CGAL/Handle_for.h @@ -62,8 +62,6 @@ class Handle_for { public: - typedef RefCounted element_type; - Handle_for(const RefCounted& rc) { ptr = allocator.allocate(1); @@ -105,12 +103,35 @@ class Handle_for return *this; } +protected: + typedef RefCounted element_type; + void initialize_with( const RefCounted& rc) { allocator.construct(ptr, rc); } + bool + identical( const Handle_for& h) const + { return ptr == h.ptr; } + + long int + id() const + { return reinterpret_cast(&*ptr); } + + typename Allocator::const_pointer + Ptr() const + { return ptr; } + + typename Allocator::pointer + Ptr() + { + copy_on_write(); + return ptr; + } + +// private: void copy_on_write() { @@ -123,19 +144,6 @@ class Handle_for } } - bool - identical( const Handle_for& h) const - { return ptr == h.ptr; } - - long int - id() const - { return reinterpret_cast( &(*ptr)); } - - const typename Allocator::pointer - Ptr() const - { return ptr; } - - protected: static Allocator allocator; typename Allocator::pointer ptr; }; diff --git a/Packages/Kernel_23/include/CGAL/Simple_Handle_for.h b/Packages/Kernel_23/include/CGAL/Simple_Handle_for.h index 6a9ed2df6ba..3ea60d65540 100644 --- a/Packages/Kernel_23/include/CGAL/Simple_Handle_for.h +++ b/Packages/Kernel_23/include/CGAL/Simple_Handle_for.h @@ -29,13 +29,14 @@ class Simple_Handle_for { public: - typedef Stored element_type; + Simple_Handle_for() + {} Simple_Handle_for(const Stored& rc) : _s(rc) {} - Simple_Handle_for() - {} +protected: + typedef Stored element_type; void initialize_with(const Stored& rc) @@ -43,10 +44,6 @@ public: _s = rc; } - void - copy_on_write() - {} - long int id() const { return reinterpret_cast(&_s); } @@ -58,7 +55,14 @@ public: const Stored * Ptr() const { return &_s; } + Stored * Ptr() + { return &_s; } + private: + void + copy_on_write() + {} + Stored _s; };