fixed compile errors, removed tabs as required.

[SVN r44114]
This commit is contained in:
Emil Dotchevski
2008-04-08 21:29:37 +00:00
parent e0881a603d
commit 0fbc4dc974
33 changed files with 1402 additions and 1404 deletions

View File

@ -14,135 +14,135 @@
namespace
boost
{
namespace
exception_detail
{
class
clone_base:
public counted_base
{
public:
{
namespace
exception_detail
{
class
clone_base:
public counted_base
{
public:
virtual void rethrow() const=0;
};
virtual void rethrow() const=0;
};
struct
bad_alloc_impl:
public clone_base,
public std::bad_alloc
{
void
add_ref() const
{
}
struct
bad_alloc_impl:
public clone_base,
public std::bad_alloc
{
void
add_ref() const
{
}
void
release() const
{
}
void
release() const
{
}
void
rethrow() const
{
throw *this;
}
};
void
rethrow() const
{
throw *this;
}
};
template <class T>
clone_base * make_clone( T const & );
template <class T>
clone_base * make_clone( T const & );
template <class T>
class
clone_impl:
public T,
public cloning_base
{
public:
template <class T>
class
clone_impl:
public T,
public cloning_base
{
public:
explicit
clone_impl( T const & x ):
T(x)
{
}
explicit
clone_impl( T const & x ):
T(x)
{
}
private:
private:
clone_base const *
clone() const
{
return make_clone<T>(*this);
}
};
clone_base const *
clone() const
{
return make_clone<T>(*this);
}
};
template <class T>
class
exception_clone:
public T,
public clone_base
{
public:
template <class T>
class
exception_clone:
public T,
public clone_base
{
public:
explicit
exception_clone( T const & x ):
T(x),
count_(0)
{
}
explicit
exception_clone( T const & x ):
T(x),
count_(0)
{
}
private:
private:
detail::atomic_count mutable count_;
detail::atomic_count mutable count_;
void
add_ref() const
{
++count_;
}
void
add_ref() const
{
++count_;
}
void
release() const
{
if( !--count_ )
delete this;
}
void
release() const
{
if( !--count_ )
delete this;
}
void
rethrow() const
{
throw clone_impl<T>(*this);
}
};
void
rethrow() const
{
throw clone_impl<T>(*this);
}
};
template <class T>
clone_base *
make_clone( T const & x )
{
try
{
return new exception_clone<T>(x);
}
catch(
std::bad_alloc & )
{
static bad_alloc_impl bad_alloc;
return &bad_alloc;
}
catch(
... )
{
BOOST_ASSERT(0);
return 0;
}
}
}
template <class T>
clone_base *
make_clone( T const & x )
{
try
{
return new exception_clone<T>(x);
}
catch(
std::bad_alloc & )
{
static bad_alloc_impl bad_alloc;
return &bad_alloc;
}
catch(
... )
{
BOOST_ASSERT(0);
return 0;
}
}
}
template <class T>
exception_detail::clone_impl<T>
enable_exception_cloning( T const & x )
{
return exception_detail::clone_impl<T>(x);
}
}
template <class T>
exception_detail::clone_impl<T>
enable_exception_cloning( T const & x )
{
return exception_detail::clone_impl<T>(x);
}
}
#endif