summaryrefslogtreecommitdiff
path: root/algparam.h
diff options
context:
space:
mode:
authorweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2009-03-13 11:16:28 +0000
committerweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2009-03-13 11:16:28 +0000
commitb1d5c9a600e07a434b21353afe86374940e95bc8 (patch)
tree7af35b495d4e9fddfff4b173d2a7688ed3b3231c /algparam.h
parent1c7bd8499b4eb0f5d0362661c86d9412f7c1bafc (diff)
downloadcryptopp-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.h')
-rw-r--r--algparam.h27
1 files changed, 5 insertions, 22 deletions
diff --git a/algparam.h b/algparam.h
index f87c93d..140f579 100644
--- a/algparam.h
+++ b/algparam.h
@@ -337,26 +337,14 @@ public:
AlgorithmParameters(const AlgorithmParameters &x);
- ~AlgorithmParameters();
-
AlgorithmParameters & operator=(const AlgorithmParameters &x);
template <class T>
AlgorithmParameters & operator()(const char *name, const T &value, bool throwIfNotUsed)
{
- if (m_constructed || sizeof(m_first) < sizeof(AlgorithmParametersTemplate<T>))
- {
- member_ptr<AlgorithmParametersBase> p(new AlgorithmParametersTemplate<T>(name, value, throwIfNotUsed));
- p->m_next.reset(Next().release());
- Next().reset(p.release());
- }
- else
- {
- member_ptr<AlgorithmParametersBase> temp(Next().release());
- AlgorithmParametersTemplate<T>* p = new(m_first) AlgorithmParametersTemplate<T>(name, value, throwIfNotUsed);
- p->m_next.reset(temp.release());
- m_constructed = true;
- }
+ member_ptr<AlgorithmParametersBase> p(new AlgorithmParametersTemplate<T>(name, value, throwIfNotUsed));
+ p->m_next.reset(m_next.release());
+ m_next.reset(p.release());
m_defaultThrowIfNotUsed = throwIfNotUsed;
return *this;
}
@@ -370,13 +358,8 @@ public:
bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const;
protected:
- AlgorithmParametersBase & First();
- member_ptr<AlgorithmParametersBase> & Next();
- const AlgorithmParametersBase & First() const {return const_cast<AlgorithmParameters *>(this)->First();}
- member_ptr<AlgorithmParametersBase> & Next() const {return const_cast<AlgorithmParameters *>(this)->Next();}
-
- bool m_constructed, m_defaultThrowIfNotUsed;
- size_t m_first[(sizeof(AlgorithmParametersBase) + 19)/sizeof(size_t)];
+ member_ptr<AlgorithmParametersBase> m_next;
+ bool m_defaultThrowIfNotUsed;
};
//! Create an object that implements NameValuePairs for passing parameters