XIOS  1.0
Xml I/O Server
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros
accumulate.cpp
Aller à la documentation de ce fichier.
1 #include "accumulate.hpp"
2 #include "array_new.hpp"
3 #include "utils.hpp"
4 
5 namespace xios
6 {
7  namespace func
8  {
10 
12  : SuperClass(StdString("accumulate"), doutput)
13  { /* Ne rien faire de plus */ }
14 
15  CAccumulate::CAccumulate(CArray<double,1>& doutput, double missingValue)
16  : SuperClass(StdString("accumulate"), doutput, missingValue)
17  { /* Ne rien faire de plus */ }
18 
20  { /* Ne rien faire de plus */ }
21 
22  //---------------------------------------------------------------
23 
24  void CAccumulate::apply(const CArray<double,1>& _dinput,
25  CArray<double,1>& _doutput)
26  {
27  if (this->nbcall == 1) _doutput=_dinput ;
28  else
29  {
30  if (hasMissingValue)
31  {
32  int i, n =_dinput.numElements() ;
33  const double * in=_dinput.dataFirst() ;
34  double* out=_doutput.dataFirst();
35  for (i=0; i<n; ++i,++in,++out)
36  if (!NumTraits<double>::isNan(*in))
37  {
38  if(!NumTraits<double>::isNan(*out)) *out += *in;
39  else *out=*in ;
40  }
41  }
42  else _doutput+=_dinput ;
43  }
44  }
45 
46 
47  void CAccumulate::final(void)
48  {
49  this->nbcall = 0;
50  }
51  } // namespace func
52 } // namespace xios
int nbcall
Propriétés protégées ///.
Definition: functor.hpp:52
Some utils for Xios.
std::string StdString
Definition: xios_spl.hpp:48
#define xios(arg)
virtual ~CAccumulate(void)
Destructeur ///.
Definition: accumulate.cpp:19
virtual void final(void)
Definition: accumulate.cpp:47
////////////////////// Déclarations ////////////////////// ///
Definition: functor.hpp:14
CAccumulate(CArray< double, 1 > &doutput)
Constructeurs ///.
Definition: accumulate.cpp:11
virtual void apply(const CArray< double, 1 > &dinput, CArray< double, 1 > &doutput)
Traitement ///.
Definition: accumulate.cpp:24