diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2011-08-06 23:13:56 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:17:09 -0300 |
commit | 6f46f59f67c0d90fa184d9baf0c7a3f29d9e9865 (patch) | |
tree | be1deb7024261d94bb26e61b7056382b40094686 /tests/libsample | |
parent | 714ddb6c74b4db4853ca2e34bb50f2888e75ec8d (diff) |
Added tests for classes that are typedefs that implement a template class.
This simulates the situation found in Qt's phonon module.
Diffstat (limited to 'tests/libsample')
-rw-r--r-- | tests/libsample/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/libsample/photon.cpp | 35 | ||||
-rw-r--r-- | tests/libsample/photon.h | 67 |
3 files changed, 103 insertions, 0 deletions
diff --git a/tests/libsample/CMakeLists.txt b/tests/libsample/CMakeLists.txt index cc568c986..9148281ef 100644 --- a/tests/libsample/CMakeLists.txt +++ b/tests/libsample/CMakeLists.txt @@ -26,6 +26,7 @@ objectview.cpp overload.cpp overloadsort.cpp pairuser.cpp +photon.cpp point.cpp pointf.cpp polygon.cpp diff --git a/tests/libsample/photon.cpp b/tests/libsample/photon.cpp new file mode 100644 index 000000000..6467f6cc0 --- /dev/null +++ b/tests/libsample/photon.cpp @@ -0,0 +1,35 @@ +/* + * This file is part of the Shiboken Python Binding Generator project. + * + * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). + * + * Contact: PySide team <contact@pyside.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "photon.h" + +namespace Photon +{ +int callCalculateForValueDuplicatorPointer(ValueDuplicator* value) +{ + return value->calculate(); +} +int callCalculateForValueDuplicatorReference(ValueDuplicator& value) +{ + return value.calculate(); +} +} // namespace Photon diff --git a/tests/libsample/photon.h b/tests/libsample/photon.h new file mode 100644 index 000000000..8707c71af --- /dev/null +++ b/tests/libsample/photon.h @@ -0,0 +1,67 @@ +/* + * This file is part of the Shiboken Python Binding Generator project. + * + * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). + * + * Contact: PySide team <contact@pyside.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef PHOTON_H +#define PHOTON_H + +#include "libsamplemacros.h" + +// This namespace and classes simulate +// situations found in Qt's phonon module. + +namespace Photon +{ + +enum ClassType { + IdentityType = 1, + DuplicatorType = 2 +}; + +template<ClassType CLASS_TYPE> +class LIBSAMPLE_API TemplateBase +{ +public: + explicit TemplateBase(int value) : m_value(value) {} + inline void setValue(int value) { m_value = value; } + inline int value() const { return m_value; } + inline int multiplicator() const { return (int)CLASS_TYPE; } + inline int calculate() const { return m_value * ((int)CLASS_TYPE); } + static inline ClassType classType() { return CLASS_TYPE; } + + inline int sumValueUsingPointer(TemplateBase<CLASS_TYPE>* other) const { return m_value + other->m_value; } + inline int sumValueUsingReference(TemplateBase<CLASS_TYPE>& other) const { return m_value + other.m_value; } + + static inline TemplateBase<CLASS_TYPE>* passPointerThrough(TemplateBase<CLASS_TYPE>* obj) { return obj; } +private: + TemplateBase(const TemplateBase&); + TemplateBase& operator=(const TemplateBase&); + int m_value; +}; + +typedef TemplateBase<IdentityType> ValueIdentity; +typedef TemplateBase<DuplicatorType> ValueDuplicator; +LIBSAMPLE_API int callCalculateForValueDuplicatorPointer(ValueDuplicator* value); +LIBSAMPLE_API int callCalculateForValueDuplicatorReference(ValueDuplicator& value); + +} // namespace Photon + +#endif // PHOTON_H |