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.h | |
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.h')
-rw-r--r-- | algparam.h | 27 |
1 files changed, 5 insertions, 22 deletions
@@ -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 |