//# Copyright (C) 1996,1998,1999,2002 //# Associated Universities, Inc. Washington DC, USA. //# //# This library is free software; you can redistribute it and/or modify it //# under the terms of the GNU Library General Public License as published by //# the Free Software Foundation; either version 2 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 Library General Public //# License for more details. //# //# You should have received a copy of the GNU Library General Public License //# along with this library; if not, write to the Free Software Foundation, //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. //# //# Correspondence concerning AIPS++ should be addressed as follows: //# Internet email: aips2-request@nrao.edu. //# Postal address: AIPS++ Project Office //# National Radio Astronomy Observatory //# 520 Edgemont Road //# Charlottesville, VA 22903-2475 USA //# //# $Id: Array.h 21545 2015-01-22 19:36:35Z gervandiepen $ #ifndef CASA_QVECTOR_TCC #define CASA_QVECTOR_TCC #include #include namespace casacore { //# NAMESPACE CASACORE - BEGIN template QVector::QVector() : Quantum >() {} template QVector::QVector(const Vector& v, const Unit& u) : Quantum >(v, u) {} template QVector::QVector(const Vector >& q) : Quantum >(Vector(q.size()), "") { uInt n = q.size(); if (n == 0) { return; } Unit u(q[0].getFullUnit()); this->setUnit(u); Vector copy(n); typename Vector::iterator iter = copy.begin(); typename Vector::iterator end = copy.end(); typename Vector >::const_iterator qiter = q.begin(); while (iter != end) { *iter = qiter->getValue(u, True); ++iter; ++qiter; } this->setValue(copy); } template Quantum QVector::operator[](uInt index) const { return Quantum(this->getValue()[index], this->getUnit()); } template size_t QVector::size() const { return this->getValue().size(); } template size_t QVector::nelements() const { return this->getValue().nelements(); } template void QVector::scale(T d) { this->setValue(d*this->getValue()); } template QVector QVector::operator+(const QVector& that) const { return QVector(this->getValue() + that.getValue(this->getFullUnit()), this->getFullUnit()); } template QVector QVector::operator-(const QVector& that) const { return QVector(this->getValue() - that.getValue(this->getFullUnit()), this->getFullUnit()); } template QVector QVector::operator/(const T d) const { return QVector((Vector)(this->getValue()/d), this->getFullUnit()); } template Quantum QVector::min() const { return Quantum(casacore::min(this->getValue()), this->getFullUnit()); } template Quantum QVector::max() const { return Quantum(casacore::max(this->getValue()), this->getFullUnit()); } } //# NAMESPACE CASACORE - END #endif