summaryrefslogtreecommitdiffstats
path: root/libdimensionxx/dimensionxx/camera.hpp
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2009-07-11 16:54:58 +0000
committerTavian Barnes <tavianator@gmail.com>2009-07-11 16:54:58 +0000
commit249203127d1ae989785978024ef0ad25bc994384 (patch)
treedf20ef109ae5435b0fa6ccd6219fa03ab2ef1a86 /libdimensionxx/dimensionxx/camera.hpp
parentca84516fa80cfca35da7df71ea04423780028212 (diff)
downloaddimension-249203127d1ae989785978024ef0ad25bc994384.tar.xz
Allow Array's of non-POD types through specialized Array_Element class.
Diffstat (limited to 'libdimensionxx/dimensionxx/camera.hpp')
-rw-r--r--libdimensionxx/dimensionxx/camera.hpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/libdimensionxx/dimensionxx/camera.hpp b/libdimensionxx/dimensionxx/camera.hpp
index 9b717ff..d8743ce 100644
--- a/libdimensionxx/dimensionxx/camera.hpp
+++ b/libdimensionxx/dimensionxx/camera.hpp
@@ -72,6 +72,25 @@ namespace Dimension
virtual Line ray(const Canvas& canvas, unsigned int x, unsigned int y) = 0;
};
+
+ // Array_Element specialization
+ template <>
+ class Array_Element<Camera>
+ : public Polymorphic_Array_Element<Camera, dmnsn_camera*>
+ {
+ public:
+ typedef dmnsn_camera* C_Type;
+
+ Array_Element() { }
+ Array_Element(Camera& camera)
+ : Polymorphic_Array_Element<Camera, dmnsn_camera*>(camera) { }
+ Array_Element(C_Type c)
+ : Polymorphic_Array_Element<Camera, dmnsn_camera*>(c) { }
+ // Array_Element(const Array_Element& ae);
+ // ~Array_Element();
+
+ // Array_Element& operator=(const Array_Element& ae);
+ };
}
#endif /* DIMENSIONXX_CAMERA_HPP */