/* 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. */ template ConcreteFortranArray1d:: ConcreteFortranArray1d(Subscript s0) : ConcreteArray1d(SubscriptArray<1>(s0), 0) { setSizeOnHeap(s0); } template ConcreteFortranArray1d:: ConcreteFortranArray1d(const ConcreteFortranArray1d& a) : ConcreteArray1d(SubscriptArray<1>(a.shape(0)), 0) { setSizeOnHeap(a.numElts()); concreteCopy(*this, a); } template ConcreteFortranArray1d:: ConcreteFortranArray1d(ConcreteArray1dConstRef a) : ConcreteArray1d(SubscriptArray<1>(a.shape(0)), 0) { setSizeOnHeap(a.numElts()); concreteCopy(*this, a); } template ConcreteFortranArray1d:: ConcreteFortranArray1d(ConcreteArray1dConstRef::ProjectionT, T> a) : ConcreteArray1d(SubscriptArray<1>(a.shape(0)), 0) { setSizeOnHeap(a.numElts()); concreteCopy(*this, a); } template ConcreteFortranArray1d::~ConcreteFortranArray1d() { delete[] datap; } template ConcreteFortranArray1d& ConcreteFortranArray1d::operator=(const ConcreteFortranArray1d& rhs) { concreteCopy(*this, rhs); return *this; } template ConcreteFortranArray1d& ConcreteFortranArray1d::operator=(ConcreteArray1dConstRef rhs) { concreteCopy(*this, rhs); return *this; } template ConcreteFortranArray1d& ConcreteFortranArray1d::operator=(const T& rhs) { ConcreteArray1d, T>::operator=(rhs); return *this; }