Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
K
KWSys
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container Registry
Model registry
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Kevin Fitch
KWSys
Commits
ad44e66c
Commit
ad44e66c
authored
19 years ago
by
Brad King
Browse files
Options
Downloads
Patches
Plain Diff
ENH: Adding auto_ptr to KWSys to provide a conforming version everywhere.
parent
297ffd82
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
CMakeLists.txt
+4
-1
4 additions, 1 deletion
CMakeLists.txt
auto_ptr.hxx.in
+78
-0
78 additions, 0 deletions
auto_ptr.hxx.in
with
82 additions
and
1 deletion
CMakeLists.txt
+
4
−
1
View file @
ad44e66c
...
...
@@ -412,7 +412,10 @@ ENDFOREACH(header)
# selected components. Initialize with required components.
SET
(
KWSYS_CLASSES
)
SET
(
KWSYS_H_FILES Configure SharedForward
)
SET
(
KWSYS_HXX_FILES Configure String hashtable hash_fun hash_map hash_set
)
SET
(
KWSYS_HXX_FILES Configure String
hashtable hash_fun hash_map hash_set
auto_ptr
)
# Enforce component dependencies.
IF
(
KWSYS_USE_SystemTools
)
...
...
This diff is collapsed.
Click to expand it.
auto_ptr.hxx.in
0 → 100644
+
78
−
0
View file @
ad44e66c
/*=========================================================================
Program: KWSys - Kitware System Library
Module: auto_ptr.hxx.in
Copyright (c) Kitware, Inc., Insight Consortium. All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef @KWSYS_NAMESPACE@_auto_ptr_hxx
#define @KWSYS_NAMESPACE@_auto_ptr_hxx
#if !((defined(_MSC_VER) && _MSC_VER < 1300) || defined(__BORLANDC__))
// Use the conforming implementation provided by the compiler.
#include <@KWSYS_NAMESPACE@/stl/memory>
namespace @KWSYS_NAMESPACE@
{
using @KWSYS_NAMESPACE@_stl::auto_ptr;
}
#else
// This compiler does not have a conforming implementation. Use our
// own.
namespace @KWSYS_NAMESPACE@
{
// C++98 Standard Section 20.4.5 - Template class auto_ptr.
template <class X>
class auto_ptr
{
template <class Y> struct auto_ptr_ref
{
auto_ptr<Y>& p_;
explicit auto_ptr_ref(auto_ptr<Y>& p): p_(p) {}
};
X* x_;
public:
typedef X element_type;
template <class Y>
auto_ptr(auto_ptr<Y>& a) throw(): x_(a.release()) {}
template <class Y>
auto_ptr& operator=(auto_ptr<Y>& a) throw()
{ reset(a.release()); return *this; }
explicit auto_ptr(X* p=0) throw(): x_(p) {}
auto_ptr(auto_ptr& a) throw(): x_(a.release()) {}
auto_ptr& operator=(auto_ptr& a) throw() { reset(a.release()); return *this; }
~auto_ptr() throw() { delete get(); }
X& operator*() const throw() { return *get(); }
X* operator->() const throw() { return get(); }
X* get() const throw() { return x_; }
X* release() throw() { X* x = x_; x_ = 0; return x; }
void reset(X* p=0) throw() { if(get() != p) { delete get(); x_ = p; } }
auto_ptr(auto_ptr_ref<X> r) throw(): x_(r.p_.release()) {}
template <class Y> operator auto_ptr_ref<Y>() throw() { return *this; }
template <class Y> operator auto_ptr<Y>() throw() { return release(); }
auto_ptr& operator=(auto_ptr_ref<X> r) throw() { x_ = r.p_.release(); return *this; }
};
} // namespace @KWSYS_NAMESPACE@
#endif
#endif
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment