diff options
author | weidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0> | 2009-03-13 11:16:28 +0000 |
---|---|---|
committer | weidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0> | 2009-03-13 11:16:28 +0000 |
commit | b1d5c9a600e07a434b21353afe86374940e95bc8 (patch) | |
tree | 7af35b495d4e9fddfff4b173d2a7688ed3b3231c /algparam.cpp | |
parent | 1c7bd8499b4eb0f5d0362661c86d9412f7c1bafc (diff) | |
download | cryptopp-b1d5c9a600e07a434b21353afe86374940e95bc8.tar.gz |
fix compile on gcc 4.1.2, armv5tel
git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@451 57ff6487-cd31-0410-9ec3-f628ee90f5f0
Diffstat (limited to 'algparam.cpp')
-rw-r--r-- | algparam.cpp | 45 |
1 files changed, 6 insertions, 39 deletions
diff --git a/algparam.cpp b/algparam.cpp index 89eacfe..a70d5dd 100644 --- a/algparam.cpp +++ b/algparam.cpp @@ -46,63 +46,30 @@ bool AlgorithmParametersBase::GetVoidValue(const char *name, const std::type_inf } AlgorithmParameters::AlgorithmParameters() - : m_constructed(false), m_defaultThrowIfNotUsed(true) + : m_defaultThrowIfNotUsed(true) { - new(m_first) member_ptr<AlgorithmParametersBase>; } AlgorithmParameters::AlgorithmParameters(const AlgorithmParameters &x) - : m_constructed(false), m_defaultThrowIfNotUsed(x.m_defaultThrowIfNotUsed) + : m_defaultThrowIfNotUsed(x.m_defaultThrowIfNotUsed) { - if (x.m_constructed) - { - x.First().MoveInto(m_first); - m_constructed = true; - } - else - new(m_first) member_ptr<AlgorithmParametersBase>(x.Next().release()); -} - -AlgorithmParameters::~AlgorithmParameters() -{ - if (m_constructed) - First().~AlgorithmParametersBase(); - else - Next().~member_ptr<AlgorithmParametersBase>(); + m_next.reset(const_cast<AlgorithmParameters &>(x).m_next.release()); } AlgorithmParameters & AlgorithmParameters::operator=(const AlgorithmParameters &x) { - if (this == &x) - return *this; - this->~AlgorithmParameters(); - new (this) AlgorithmParameters(x); + m_next.reset(const_cast<AlgorithmParameters &>(x).m_next.release()); return *this; } bool AlgorithmParameters::GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const { - if (m_constructed) - return First().GetVoidValue(name, valueType, pValue); - else if (Next().get()) - return Next()->GetVoidValue(name, valueType, pValue); + if (m_next.get()) + return m_next->GetVoidValue(name, valueType, pValue); else return false; } -AlgorithmParametersBase & AlgorithmParameters::First() -{ - return *reinterpret_cast<AlgorithmParametersBase *>(m_first); -} - -member_ptr<AlgorithmParametersBase> & AlgorithmParameters::Next() -{ - if (m_constructed) - return First().m_next; - else - return *reinterpret_cast<member_ptr<AlgorithmParametersBase> *>(m_first); -} - NAMESPACE_END #endif |