8 #ifndef OOPS_INTERFACE_OBSDATAVECTOR_H_
9 #define OOPS_INTERFACE_OBSDATAVECTOR_H_
17 #include "oops/util/Logger.h"
18 #include "oops/util/ObjectCounter.h"
19 #include "oops/util/Printable.h"
20 #include "oops/util/Timer.h"
26 template <
typename OBS,
typename DATATYPE>
28 private util::ObjectCounter<ObsDataVector<OBS, DATATYPE> > {
32 static const std::string
classname() {
return "oops::ObsDataVector";}
52 void save(
const std::string &)
const;
55 void print(std::ostream &)
const;
56 std::shared_ptr<ObsDataVec_>
data_;
60 template <
typename OBS,
typename DATATYPE>
62 const Variables & vars,
const std::string name)
65 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::ObsDataVector starting" << std::endl;
66 util::Timer timer(
classname(),
"ObsDataVector");
68 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::ObsDataVector done" << std::endl;
71 template <
typename OBS,
typename DATATYPE>
73 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::ObsDataVector starting" << std::endl;
74 util::Timer timer(
classname(),
"ObsDataVector");
76 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::ObsDataVector done" << std::endl;
79 template <
typename OBS,
typename DATATYPE>
81 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::~ObsDataVector starting" << std::endl;
82 util::Timer timer(classname(),
"~ObsDataVector");
84 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::~ObsDataVector done" << std::endl;
89 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::operator= starting" << std::endl;
90 util::Timer timer(classname(),
"operator=");
92 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::operator= done" << std::endl;
96 template <
typename OBS,
typename DATATYPE>
98 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::zero starting" << std::endl;
99 util::Timer timer(classname(),
"zero");
101 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::zero done" << std::endl;
104 template <
typename OBS,
typename DATATYPE>
106 Log::trace() <<
"ObsDataVector<OBS>::mask starting" << std::endl;
107 util::Timer timer(classname(),
"mask");
109 Log::trace() <<
"ObsDataVector<OBS>::mask done" << std::endl;
112 template <
typename OBS,
typename DATATYPE>
114 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::print starting" << std::endl;
115 util::Timer timer(classname(),
"print");
117 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::print done" << std::endl;
120 template <
typename OBS,
typename DATATYPE>
122 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::save starting " << name << std::endl;
123 util::Timer timer(classname(),
"save");
125 Log::trace() <<
"ObsDataVector<OBS, DATATYPE>::save done" << std::endl;
131 #endif // OOPS_INTERFACE_OBSDATAVECTOR_H_