/* Example programs from the book Scientific and Engineering Programming in C++: An Introduction with Advanced Techniques and Examples, Addison-Wesley, 1994. (c) COPYRIGHT INTERNATIONAL BUSINESS MACHINES CORPORATION 1994. ALL RIGHTS RESERVED. See README file for further details. */ #ifndef RigidArray3dH #define RigidArray3dH #include "Array/ConcreteRigidArray3d.h" #include "Array/InterfacedArray3d.h" class ostream; template class RigidArray3d : public InterfacedArray3d< ConcreteRigidArray3d > { public: RigidArray3d() : InterfacedArray3d< ConcreteRigidArray3d >(n0, n1, n2) {} RigidArray3d(Subscript s0, Subscript s1, Subscript s2) : InterfacedArray3d< ConcreteRigidArray3d >(s0, s1, s2) {} RigidArray3d(const ConstArray3d& a) : InterfacedArray3d< ConcreteRigidArray3d >(a) {} virtual Array3d& operator=(const ConstArray3d& rhs) { return InterfacedArray3d< ConcreteRigidArray3d >::operator=(rhs); } virtual Array3d& operator=(const T& rhs) { return InterfacedArray3d< ConcreteRigidArray3d >::operator=(rhs); } virtual const T* firstDatum() const { return the_concrete.firstDatum(); } virtual T* firstDatum() { return the_concrete.firstDatum(); } }; #endif