radarlib 1.4.6
odimh5v20_utils.hpp
Go to the documentation of this file.
1/*
2 * odimh5v20_utils - odim5hv20 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_ODIMH5V20_UTILS_HPP__
23#define __RADAR_ODIMH5V20_UTILS_HPP__
30
31namespace OdimH5v20 {
33namespace utils {
34
56 public:
70 protected:
72 virtual void visitDefault(OdimH5v20::OdimObject& obj) {}
74 virtual void visit(OdimH5v20::PolarVolume& obj) {}
76 virtual void visit(OdimH5v20::ImageObject& obj) {}
78 virtual void visit(OdimH5v20::CompObject& obj) {}
80 virtual void visit(OdimH5v20::XsecObject& obj) {}
81
82 private:
84 template <class T>
85 void castAndVisitObject(OdimH5v20::OdimObject& obj) {
86 T& x = dynamic_cast<T&>(obj);
87 this->visit(x);
88 }
89};
99 public:
113 protected:
115 virtual void visitDefault(OdimH5v20::Product_2D& prod) {}
117 virtual void visit(OdimH5v20::Product_PPI& prod) {}
119 virtual void visit(OdimH5v20::Product_CAPPI& prod) {}
121 virtual void visit(OdimH5v20::Product_PCAPPI& prod) {}
123 virtual void visit(OdimH5v20::Product_ETOP& prod) {}
125 virtual void visit(OdimH5v20::Product_MAX& prod) {}
127 virtual void visit(OdimH5v20::Product_RR& prod) {}
129 virtual void visit(OdimH5v20::Product_VIL& prod) {}
131 virtual void visit(OdimH5v20::Product_LBM& prod) {}
133 virtual void visit(OdimH5v20::Product_COMP& prod) {}
135 virtual void visit(OdimH5v20::Product_XSEC& prod) {}
137 virtual void visit(OdimH5v20::Product_RHI& prod) {}
139 virtual void visit(OdimH5v20::Product_VSP& prod) {}
141 virtual void visit(OdimH5v20::Product_HSP& prod) {}
142 private:
143 template<class T>
144 void castAndVisitProduct2D(OdimH5v20::Product_2D& prod) {
145 T&x = dynamic_cast<T&>(prod);
146 this->visit(x);
147 }
148};
149
150}
151}
152#endif
OdimH5 v2.0 CompObject.
Definition odimh5v20_classes.hpp:1698
OdimH5 v2.0 ImageObject.
Definition odimh5v20_classes.hpp:1671
Generic OdimH5 v2.0 object.
Definition odimh5v20_classes.hpp:95
OdimH5 v2.0 Polar Volume.
Definition odimh5v20_classes.hpp:846
OdimH5 v2.0 Product_2D Dataset.
Definition odimh5v20_classes.hpp:1786
OdimH5 v2.0 CAPPI Product Dataset.
Definition odimh5v20_classes.hpp:2141
OdimH5 v2.0 COMP Product Dataset.
Definition odimh5v20_classes.hpp:2325
OdimH5 v2.0 ETOP Product Dataset.
Definition odimh5v20_classes.hpp:2193
OdimH5 v2.0 HSP Product Dataset.
Definition odimh5v20_classes.hpp:2490
OdimH5 v2.0 PPI Product Dataset.
Definition odimh5v20_classes.hpp:2298
OdimH5 v2.0 MAX Product Dataset.
Definition odimh5v20_classes.hpp:2219
OdimH5 v2.0 PCAPPI Product Dataset.
Definition odimh5v20_classes.hpp:2167
OdimH5 v2.0 PPI Product Dataset.
Definition odimh5v20_classes.hpp:2115
OdimH5 v2.0 RHI Product Dataset.
Definition odimh5v20_classes.hpp:2417
OdimH5 v2.0 RR Product Dataset.
Definition odimh5v20_classes.hpp:2246
OdimH5 v2.0 VIL Product Dataset.
Definition odimh5v20_classes.hpp:2272
OdimH5 v2.0 VSP Product Dataset.
Definition odimh5v20_classes.hpp:2517
OdimH5 v2.0 XSEC Product Dataset.
Definition odimh5v20_classes.hpp:2390
OdimH5 v2.0 XsecObject.
Definition odimh5v20_classes.hpp:1725
Generic OdimObject visitor.
Definition odimh5v20_utils.hpp:55
void visitObject(OdimH5v20::OdimObject &obj)
Visit a generic object and call the proper method visit()
Definition odimh5v20_utils.cpp:26
virtual void visitDefault(OdimH5v20::OdimObject &obj)
Called when the visited OdimObject is not supported (noop)
Definition odimh5v20_utils.hpp:72
virtual void visit(OdimH5v20::ImageObject &obj)
Called when the visited OdimObject is a ImageObject (noop)
Definition odimh5v20_utils.hpp:76
virtual void visit(OdimH5v20::XsecObject &obj)
Called when the visited OdimObject is a XsecObject (noop)
Definition odimh5v20_utils.hpp:80
virtual void visit(OdimH5v20::CompObject &obj)
Called when the visited OdimObject is a CompObject (noop)
Definition odimh5v20_utils.hpp:78
virtual void visit(OdimH5v20::PolarVolume &obj)
Called when the visited OdimObject is a PolarVolume (noop)
Definition odimh5v20_utils.hpp:74
Generic 2D product visitor.
Definition odimh5v20_utils.hpp:98
virtual void visit(OdimH5v20::Product_ETOP &prod)
Called when the visited Product_2D is a ETOP product (noop)
Definition odimh5v20_utils.hpp:123
virtual void visit(OdimH5v20::Product_COMP &prod)
Called when the visited Product_2D is a COMP product (noop)
Definition odimh5v20_utils.hpp:133
virtual void visit(OdimH5v20::Product_PPI &prod)
Called when the visited Product_2D is a PPI product (noop)
Definition odimh5v20_utils.hpp:117
virtual void visit(OdimH5v20::Product_RR &prod)
Called when the visited Product_2D is a RR product (noop)
Definition odimh5v20_utils.hpp:127
virtual void visit(OdimH5v20::Product_PCAPPI &prod)
Called when the visited Product_2D is a PCAPPI product (noop)
Definition odimh5v20_utils.hpp:121
virtual void visit(OdimH5v20::Product_XSEC &prod)
Called when the visited Product_2D is a XSEC product (noop)
Definition odimh5v20_utils.hpp:135
virtual void visit(OdimH5v20::Product_VSP &prod)
Called when the visited Product_2D is a VSP product (noop)
Definition odimh5v20_utils.hpp:139
virtual void visit(OdimH5v20::Product_HSP &prod)
Called when the visited Product_2D is a HSP product (noop)
Definition odimh5v20_utils.hpp:141
virtual void visit(OdimH5v20::Product_LBM &prod)
Called when the visited Product_2D is a LBM product (noop)
Definition odimh5v20_utils.hpp:131
void visitProduct2D(OdimH5v20::Product_2D &prod)
Visit a generic 2D product and call the proper method visit()
Definition odimh5v20_utils.cpp:40
virtual void visit(OdimH5v20::Product_RHI &prod)
Called when the visited Product_2D is a RHI product (noop)
Definition odimh5v20_utils.hpp:137
virtual void visitDefault(OdimH5v20::Product_2D &prod)
Called when the visited Product_2D is not supported (noop)
Definition odimh5v20_utils.hpp:115
virtual void visit(OdimH5v20::Product_VIL &prod)
Called when the visited Product_2D is a VIL product (noop)
Definition odimh5v20_utils.hpp:129
virtual void visit(OdimH5v20::Product_CAPPI &prod)
Called when the visited Product_2D is a CAPPI product (noop)
Definition odimh5v20_utils.hpp:119
virtual void visit(OdimH5v20::Product_MAX &prod)
Called when the visited Product_2D is a MAX product (noop)
Definition odimh5v20_utils.hpp:125
Namespace related to ODIMH5 version 2.0.
Definition odimh5v20.hpp:46
Main library classes (generic objects, polar volumes etc.)