#ifndef FILL_NONFINITE_5_25_2007 #define FILL_NONFINITE_5_25_2007 /** @class FillNonFinite.hpp @author Brian Magill @creation date 5/25/2007 $Date:$ $Revision:$ @copyright (©) Copyright 2006 by GATS Inc. 11864 Canon Blvd., Suite 101, Newport News, VA 23606 All Rights Reserved. No part of this software or publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise without the prior written permission of GATS Inc. @brief Replaces nonfinite values with missing value */ #include #include #include "SOFIE_namespace.h" template class CONT = std::valarray> class FillNonFinite { private: const double missingValue; public: FillNonFinite(double m = SOFIE::MISSING_VALUE): missingValue(m){ } FillNonFinite(const FillNonFinite &rhs): missingValue(rhs.missingValue) { } FillNonFinite const & operator = (const FillNonFinite &rhs); ~FillNonFinite() { }; void operator()(T &array) const; }; // template class CONT > // const & FillNonFinite::operator = (const FillNonFinite &rhs) template class CONT> const FillNonFinite& FillNonFinite::operator=(const FillNonFinite& rhs) { if (this == &rhs) return *this; missingValue = rhs.missingValue; return *this; } template class CONT > void FillNonFinite::operator()(T &array) const { unsigned long i; for(i = 0; i < array.size(); i++) if (!isfinite(array[i]) ) array[i] = missingValue; }; #endif