Browse Source

SceneGraph: need to mark the instances with extern template on Windows.

Otherwise they don't get properly imported from the DLL. Also the
instantiations don't have to be marked, so mark them as such only on
non-Windows.
pull/34/head
Vladimír Vondruš 13 years ago
parent
commit
e38be052a0
  1. 5
      src/SceneGraph/AbstractCamera.h
  2. 5
      src/SceneGraph/AbstractFeature.h
  3. 5
      src/SceneGraph/AbstractObject.h
  4. 5
      src/SceneGraph/AbstractTransformation.h
  5. 5
      src/SceneGraph/Animable.h
  6. 5
      src/SceneGraph/AnimableGroup.h
  7. 4
      src/SceneGraph/Camera2D.h
  8. 4
      src/SceneGraph/Camera3D.h
  9. 4
      src/SceneGraph/DualComplexTransformation.h
  10. 4
      src/SceneGraph/DualQuaternionTransformation.h
  11. 5
      src/SceneGraph/FeatureGroup.h
  12. 4
      src/SceneGraph/MatrixTransformation2D.h
  13. 4
      src/SceneGraph/MatrixTransformation3D.h
  14. 4
      src/SceneGraph/RigidMatrixTransformation2D.h
  15. 4
      src/SceneGraph/RigidMatrixTransformation3D.h
  16. 7
      src/SceneGraph/TranslationTransformation.h
  17. 59
      src/SceneGraph/instantiation.cpp

5
src/SceneGraph/AbstractCamera.h

@ -209,6 +209,11 @@ typedef AbstractBasicCamera3D<Float> AbstractCamera3D;
typedef AbstractCamera<3, Float> AbstractCamera3D; typedef AbstractCamera<3, Float> AbstractCamera3D;
#endif #endif
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractCamera<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractCamera<3, Float>;
#endif
}} }}
#endif #endif

5
src/SceneGraph/AbstractFeature.h

@ -341,6 +341,11 @@ typedef AbstractBasicFeature3D<Float> AbstractFeature3D;
typedef AbstractFeature<3, Float> AbstractFeature3D; typedef AbstractFeature<3, Float> AbstractFeature3D;
#endif #endif
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeature<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeature<3, Float>;
#endif
}} }}
#endif #endif

5
src/SceneGraph/AbstractObject.h

@ -277,6 +277,11 @@ typedef AbstractBasicObject3D<Float> AbstractObject3D;
typedef AbstractObject<3, Float> AbstractObject3D; typedef AbstractObject<3, Float> AbstractObject3D;
#endif #endif
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractObject<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractObject<3, Float>;
#endif
}} }}
#endif #endif

5
src/SceneGraph/AbstractTransformation.h

@ -144,6 +144,11 @@ typedef AbstractBasicTransformation3D<Float> AbstractTransformation3D;
typedef AbstractTransformation<3, Float> AbstractTransformation3D; typedef AbstractTransformation<3, Float> AbstractTransformation3D;
#endif #endif
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractTransformation<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractTransformation<3, Float>;
#endif
}} }}
#endif #endif

5
src/SceneGraph/Animable.h

@ -380,6 +380,11 @@ typedef BasicAnimable3D<Float> Animable3D;
typedef Animable<3, Float> Animable3D; typedef Animable<3, Float> Animable3D;
#endif #endif
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT Animable<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT Animable<3, Float>;
#endif
}} }}
#endif #endif

5
src/SceneGraph/AnimableGroup.h

@ -118,6 +118,11 @@ typedef BasicAnimableGroup3D<Float> AnimableGroup3D;
typedef AnimableGroup<3, Float> AnimableGroup3D; typedef AnimableGroup<3, Float> AnimableGroup3D;
#endif #endif
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT AnimableGroup<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AnimableGroup<3, Float>;
#endif
}} }}
#endif #endif

4
src/SceneGraph/Camera2D.h

@ -105,6 +105,10 @@ template<class T> class BasicCamera2D: public AbstractCamera<2, T> {
*/ */
typedef BasicCamera2D<Float> Camera2D; typedef BasicCamera2D<Float> Camera2D;
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT BasicCamera2D<Float>;
#endif
}} }}
#endif #endif

4
src/SceneGraph/Camera3D.h

@ -141,6 +141,10 @@ template<class T> class BasicCamera3D: public AbstractCamera<3, T> {
*/ */
typedef BasicCamera3D<Float> Camera3D; typedef BasicCamera3D<Float> Camera3D;
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT BasicCamera3D<Float>;
#endif
}} }}
#endif #endif

4
src/SceneGraph/DualComplexTransformation.h

@ -183,6 +183,10 @@ template<class T> struct Transformation<BasicDualComplexTransformation<T>> {
} }
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicDualComplexTransformation<Float>>;
#endif
}} }}
#endif #endif

4
src/SceneGraph/DualQuaternionTransformation.h

@ -200,6 +200,10 @@ template<class T> struct Transformation<BasicDualQuaternionTransformation<T>> {
} }
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicDualQuaternionTransformation<Float>>;
#endif
}} }}
#endif #endif

5
src/SceneGraph/FeatureGroup.h

@ -182,6 +182,11 @@ template<UnsignedInt dimensions, class Feature, class T> FeatureGroup<dimensions
return *this; return *this;
} }
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeatureGroup<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeatureGroup<3, Float>;
#endif
}} }}
#endif #endif

4
src/SceneGraph/MatrixTransformation2D.h

@ -168,6 +168,10 @@ template<class T> struct Transformation<BasicMatrixTransformation2D<T>> {
} }
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicMatrixTransformation2D<Float>>;
#endif
}} }}
#endif #endif

4
src/SceneGraph/MatrixTransformation3D.h

@ -216,6 +216,10 @@ template<class T> struct Transformation<BasicMatrixTransformation3D<T>> {
} }
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicMatrixTransformation3D<Float>>;
#endif
}} }}
#endif #endif

4
src/SceneGraph/RigidMatrixTransformation2D.h

@ -202,6 +202,10 @@ template<class T> struct Transformation<BasicRigidMatrixTransformation2D<T>> {
} }
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicRigidMatrixTransformation2D<Float>>;
#endif
}} }}
#endif #endif

4
src/SceneGraph/RigidMatrixTransformation3D.h

@ -255,6 +255,10 @@ template<class T> struct Transformation<BasicRigidMatrixTransformation3D<T>> {
} }
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicRigidMatrixTransformation3D<Float>>;
#endif
}} }}
#endif #endif

7
src/SceneGraph/TranslationTransformation.h

@ -206,6 +206,13 @@ template<UnsignedInt dimensions, class T, class TranslationType> struct Transfor
} }
#ifdef _WIN32
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<TranslationTransformation<2, Float>>;
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<TranslationTransformation<3, Float>>;
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<TranslationTransformation<2, Float, Int>>;
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<TranslationTransformation<3, Float, Int>>;
#endif
}} }}
#endif #endif

59
src/SceneGraph/instantiation.cpp

@ -38,37 +38,44 @@
namespace Magnum { namespace SceneGraph { namespace Magnum { namespace SceneGraph {
/* On Windows the instantiations are already marked with extern template */
#ifndef _WIN32
#define MAGNUM_SCENEGRAPH_EXPORT_HPP MAGNUM_SCENEGRAPH_EXPORT
#else
#define MAGNUM_SCENEGRAPH_EXPORT_HPP
#endif
#ifndef DOXYGEN_GENERATING_OUTPUT #ifndef DOXYGEN_GENERATING_OUTPUT
template class MAGNUM_SCENEGRAPH_EXPORT AbstractObject<2, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AbstractObject<2, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT AbstractObject<3, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AbstractObject<3, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT AbstractTransformation<2, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AbstractTransformation<2, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT AbstractTransformation<3, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AbstractTransformation<3, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeature<2, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AbstractFeature<2, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeature<3, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AbstractFeature<3, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeatureGroup<2, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AbstractFeatureGroup<2, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeatureGroup<3, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AbstractFeatureGroup<3, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT Animable<2, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Animable<2, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT Animable<3, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Animable<3, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT AnimableGroup<2, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AnimableGroup<2, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT AnimableGroup<3, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AnimableGroup<3, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT AbstractCamera<2, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AbstractCamera<2, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT AbstractCamera<3, Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP AbstractCamera<3, Float>;
template class MAGNUM_SCENEGRAPH_EXPORT BasicCamera2D<Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP BasicCamera2D<Float>;
template class MAGNUM_SCENEGRAPH_EXPORT BasicCamera3D<Float>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP BasicCamera3D<Float>;
template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicDualComplexTransformation<Float>>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Object<BasicDualComplexTransformation<Float>>;
template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicDualQuaternionTransformation<Float>>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Object<BasicDualQuaternionTransformation<Float>>;
template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicMatrixTransformation2D<Float>>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Object<BasicMatrixTransformation2D<Float>>;
template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicMatrixTransformation3D<Float>>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Object<BasicMatrixTransformation3D<Float>>;
template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicRigidMatrixTransformation2D<Float>>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Object<BasicRigidMatrixTransformation2D<Float>>;
template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicRigidMatrixTransformation3D<Float>>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Object<BasicRigidMatrixTransformation3D<Float>>;
template class MAGNUM_SCENEGRAPH_EXPORT Object<TranslationTransformation<2, Float>>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Object<TranslationTransformation<2, Float>>;
template class MAGNUM_SCENEGRAPH_EXPORT Object<TranslationTransformation<3, Float>>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Object<TranslationTransformation<3, Float>>;
template class MAGNUM_SCENEGRAPH_EXPORT Object<TranslationTransformation<2, Float, Int>>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Object<TranslationTransformation<2, Float, Int>>;
template class MAGNUM_SCENEGRAPH_EXPORT Object<TranslationTransformation<3, Float, Int>>; template class MAGNUM_SCENEGRAPH_EXPORT_HPP Object<TranslationTransformation<3, Float, Int>>;
#endif #endif
}} }}

Loading…
Cancel
Save