radarlib  1.4.4
odimh5v21_utils.hpp
Go to the documentation of this file.
1 /*
2  * odimh5v21_utils - odimh5v21 utilities
3  *
4  * Copyright (C) 2013 ARPA-SIM <urpsim@smr.arpa.emr.it>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program; if not, write to the Free Software Foundation, Inc.,
18  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19  *
20  * Author: Emanuele Di Giacomo <edigiacomo@arpa.emr.it>
21  */
22 #ifndef __RADAR_ODIMH5V21_UTILS_HPP__
23 #define __RADAR_ODIMH5V21_UTILS_HPP__
24 
30 
31 namespace OdimH5v21 {
33 namespace utils {
34 
56  public:
70  protected:
72  virtual void visitDefault(OdimH5v21::OdimObject& obj) {}
74  virtual void visit(OdimH5v21::PolarVolume& obj) {}
76  virtual void visit(OdimH5v21::ImageObject& obj) {}
78  virtual void visit(OdimH5v21::CompObject& obj) {}
80  virtual void visit(OdimH5v21::XsecObject& obj) {}
81 
82  private:
84  template <class T>
85  void castAndVisitObject(OdimH5v21::OdimObject& obj) {
86  T& x = dynamic_cast<T&>(obj);
87  this->visit(x);
88  }
89 };
99  public:
113  protected:
115  virtual void visitDefault(OdimH5v21::Product_2D& prod) {}
117  virtual void visit(OdimH5v21::Product_PPI& prod) {}
119  virtual void visit(OdimH5v21::Product_CAPPI& prod) {}
121  virtual void visit(OdimH5v21::Product_PCAPPI& prod) {}
123  virtual void visit(OdimH5v21::Product_ETOP& prod) {}
125  virtual void visit(OdimH5v21::Product_MAX& prod) {}
127  virtual void visit(OdimH5v21::Product_RR& prod) {}
129  virtual void visit(OdimH5v21::Product_VIL& prod) {}
131  virtual void visit(OdimH5v21::Product_LBM& prod) {}
133  virtual void visit(OdimH5v21::Product_POH& prod) {}
135  virtual void visit(OdimH5v21::Product_COMP& prod) {}
137  virtual void visit(OdimH5v21::Product_XSEC& prod) {}
139  virtual void visit(OdimH5v21::Product_RHI& prod) {}
141  virtual void visit(OdimH5v21::Product_VSP& prod) {}
143  virtual void visit(OdimH5v21::Product_HSP& prod) {}
144  private:
145  template<class T>
146  void castAndVisitProduct2D(OdimH5v21::Product_2D& prod) {
147  T&x = dynamic_cast<T&>(prod);
148  this->visit(x);
149  }
150 };
151 
152 }
153 }
154 #endif
OdimH5 v2.1 CAPPI Product Dataset.
Definition: odimh5v21_classes.hpp:2300
void visitObject(OdimH5v21::OdimObject &obj)
Visit a generic object and call the proper method visit()
Definition: odimh5v21_utils.cpp:26
void visitProduct2D(OdimH5v21::Product_2D &prod)
Visit a generic 2D product and call the proper method visit()
Definition: odimh5v21_utils.cpp:40
virtual void visit(OdimH5v21::Product_POH &prod)
Called when the visited Product_2D is a POH product (noop)
Definition: odimh5v21_utils.hpp:133
virtual void visitDefault(OdimH5v21::Product_2D &prod)
Called when the visited Product_2D is not supported (noop)
Definition: odimh5v21_utils.hpp:115
virtual void visit(OdimH5v21::Product_HSP &prod)
Called when the visited Product_2D is a HSP product (noop)
Definition: odimh5v21_utils.hpp:143
OdimH5 v2.1 RR Product Dataset.
Definition: odimh5v21_classes.hpp:2405
virtual void visit(OdimH5v21::ImageObject &obj)
Called when the visited OdimObject is a ImageObject (noop)
Definition: odimh5v21_utils.hpp:76
virtual void visit(OdimH5v21::PolarVolume &obj)
Called when the visited OdimObject is a PolarVolume (noop)
Definition: odimh5v21_utils.hpp:74
OdimH5 v2.1 RHI Product Dataset.
Definition: odimh5v21_classes.hpp:2603
Generic OdimObject visitor.
Definition: odimh5v21_utils.hpp:55
OdimH5 v2.1 MAX Product Dataset.
Definition: odimh5v21_classes.hpp:2378
Generic OdimH5 v2.1 object.
Definition: odimh5v21_classes.hpp:95
OdimH5 v2.1 PCAPPI Product Dataset.
Definition: odimh5v21_classes.hpp:2326
OdimH5 v2.1 COMP Product Dataset.
Definition: odimh5v21_classes.hpp:2511
virtual void visit(OdimH5v21::Product_RHI &prod)
Called when the visited Product_2D is a RHI product (noop)
Definition: odimh5v21_utils.hpp:139
virtual void visit(OdimH5v21::Product_PPI &prod)
Called when the visited Product_2D is a PPI product (noop)
Definition: odimh5v21_utils.hpp:117
virtual void visit(OdimH5v21::Product_MAX &prod)
Called when the visited Product_2D is a MAX product (noop)
Definition: odimh5v21_utils.hpp:125
OdimH5 v2.1 PPI Product Dataset.
Definition: odimh5v21_classes.hpp:2484
virtual void visit(OdimH5v21::Product_VSP &prod)
Called when the visited Product_2D is a VSP product (noop)
Definition: odimh5v21_utils.hpp:141
virtual void visit(OdimH5v21::Product_COMP &prod)
Called when the visited Product_2D is a COMP product (noop)
Definition: odimh5v21_utils.hpp:135
OdimH5 v2.1 PPI Product Dataset.
Definition: odimh5v21_classes.hpp:2274
virtual void visit(OdimH5v21::Product_VIL &prod)
Called when the visited Product_2D is a VIL product (noop)
Definition: odimh5v21_utils.hpp:129
virtual void visit(OdimH5v21::Product_CAPPI &prod)
Called when the visited Product_2D is a CAPPI product (noop)
Definition: odimh5v21_utils.hpp:119
OdimH5 v2.1 ETOP Product Dataset.
Definition: odimh5v21_classes.hpp:2352
OdimH5 v2.1 Polar Volume.
Definition: odimh5v21_classes.hpp:882
virtual void visit(OdimH5v21::Product_ETOP &prod)
Called when the visited Product_2D is a ETOP product (noop)
Definition: odimh5v21_utils.hpp:123
virtual void visit(OdimH5v21::Product_PCAPPI &prod)
Called when the visited Product_2D is a PCAPPI product (noop)
Definition: odimh5v21_utils.hpp:121
OdimH5 v2.1 CompObject.
Definition: odimh5v21_classes.hpp:1799
OdimH5 v2.1 PPI Product Dataset.
Definition: odimh5v21_classes.hpp:2457
virtual void visit(OdimH5v21::XsecObject &obj)
Called when the visited OdimObject is a XsecObject (noop)
Definition: odimh5v21_utils.hpp:80
virtual void visit(OdimH5v21::CompObject &obj)
Called when the visited OdimObject is a CompObject (noop)
Definition: odimh5v21_utils.hpp:78
OdimH5 v2.1 VSP Product Dataset.
Definition: odimh5v21_classes.hpp:2703
virtual void visitDefault(OdimH5v21::OdimObject &obj)
Called when the visited OdimObject is not supported (noop)
Definition: odimh5v21_utils.hpp:72
virtual void visit(OdimH5v21::Product_LBM &prod)
Called when the visited Product_2D is a LBM product (noop)
Definition: odimh5v21_utils.hpp:131
virtual void visit(OdimH5v21::Product_XSEC &prod)
Called when the visited Product_2D is a XSEC product (noop)
Definition: odimh5v21_utils.hpp:137
Main library classes (generic objects, polar volumes etc.)
OdimH5 v2.1 HSP Product Dataset.
Definition: odimh5v21_classes.hpp:2676
OdimH5 v2.1 VIL Product Dataset.
Definition: odimh5v21_classes.hpp:2431
virtual void visit(OdimH5v21::Product_RR &prod)
Called when the visited Product_2D is a RR product (noop)
Definition: odimh5v21_utils.hpp:127
OdimH5 v2.1 XsecObject.
Definition: odimh5v21_classes.hpp:1826
OdimH5 v2.1 Product_2D Dataset.
Definition: odimh5v21_classes.hpp:1887
OdimH5 v2.1 XSEC Product Dataset.
Definition: odimh5v21_classes.hpp:2576
OdimH5 v2.1 ImageObject.
Definition: odimh5v21_classes.hpp:1772
Generic 2D product visitor.
Definition: odimh5v21_utils.hpp:98